<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34752372</id><updated>2012-02-16T06:23:19.578-05:00</updated><category term='linux'/><category term='ssh'/><category term='git install'/><category term='commands'/><category term='communication'/><category term='team improvement'/><category term='notes'/><title type='text'>Software In Context</title><subtitle type='html'>Random thoughts on software development...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34752372.post-4103773227610939540</id><published>2009-01-09T11:23:00.004-05:00</published><updated>2009-01-09T11:30:24.713-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>ssh login and key file permissions</title><content type='html'>If your key files are not being used when trying to ssh into a server, set the following permissions on your server account:&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt; chmod 711 /home&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt; chmod 700 /home/.ssh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt; chmod 600 /home/.ssh/*&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-4103773227610939540?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/4103773227610939540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=4103773227610939540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4103773227610939540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4103773227610939540'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2009/01/ssh-login-and-key-file-permissions.html' title='ssh login and key file permissions'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-5746393930333030614</id><published>2009-01-09T11:02:00.004-05:00</published><updated>2009-01-09T11:30:45.824-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='git install'/><title type='text'>Easy git documentation install</title><content type='html'>&lt;span class="Apple-style-span"   style="  line-height: 14px; font-family:Monaco;font-size:11px;"&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font: normal normal normal 115%/normal Monaco, 'Courier New', monospace; line-height: 1.4em; font-family: 'Bitstream Vera Sans Mono', Courier, monospace; font-size: 115%; "&gt;&lt;div class="gi" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; line-height: 1.4em; color: rgb(0, 0, 0); background-color: rgb(221, 255, 221); padding-left: 1em; "&gt;I constantly forget where to get the latest git docs from. &lt;/div&gt;&lt;div class="gi" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; line-height: 1.4em; color: rgb(0, 0, 0); background-color: rgb(221, 255, 221); padding-left: 1em; "&gt;xmlblog &lt;a href="http://gist.github.com/45151"&gt;gist'd&lt;/a&gt; a simple function that does the work for you.&lt;/div&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-5746393930333030614?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/5746393930333030614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=5746393930333030614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/5746393930333030614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/5746393930333030614'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2009/01/easy-git-documentation-install.html' title='Easy git documentation install'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-8566124172336974901</id><published>2009-01-06T15:51:00.004-05:00</published><updated>2009-01-09T11:31:12.568-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='commands'/><title type='text'>How to recursively list the total size of select files in a linux directory</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The command below will list the total size of all jpg's in the foo directory.&lt;br /&gt;&lt;blockquote&gt;$foo&gt; find . -name *.jpg | xargs du -hc&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-8566124172336974901?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/8566124172336974901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=8566124172336974901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8566124172336974901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8566124172336974901'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2009/01/how-to-recursively-list-total-size-of.html' title='How to recursively list the total size of select files in a linux directory'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-8261487949659679174</id><published>2008-12-19T15:56:00.002-05:00</published><updated>2008-12-19T16:10:31.067-05:00</updated><title type='text'>Hoptoad Notifier environment filter</title><content type='html'>&lt;a href="http://www.hoptoadapp.com/"&gt;Hoptoad&lt;/a&gt; is a great tool for collecting error information from your rails app, however, don't forget to filter any environment variables or parameters that contain sensitive information. This is done by adding the following lines to the config/initializers/hoptoad.rb:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;config.params_filters &lt;&lt; 'my_sensitive_param'&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;config.environment_filters &lt;&lt; 'my_sensitive_env'&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Replace the merged values accordingly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also take note that as of 11/25 &lt;a href="http://github.com/thoughtbot/hoptoad_notifier/commit/86e78b1983ac49651884360f608c6573ff44f813"&gt;proxy support has been added&lt;/a&gt; to the HoptoadNotifier thanks to xmlblog.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-8261487949659679174?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/8261487949659679174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=8261487949659679174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8261487949659679174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8261487949659679174'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2008/12/hoptoad-notifier-environment-filter.html' title='Hoptoad Notifier environment filter'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-3226758269765488344</id><published>2008-12-11T13:28:00.003-05:00</published><updated>2008-12-12T12:38:28.204-05:00</updated><title type='text'>Rails multi-param attribute processing for dates</title><content type='html'>If you're manually handling date parameters built using rails date select helper be careful with Date.new since invalid dates (02/31/2008) will raise an exception. &lt;a href="http://blog.springenwerk.com/2008/05/set-date-attribute-from-dateselect.html"&gt;Others&lt;/a&gt; have blogged about this but I haven't come across a post mentioning how to deal with invalid dates the rails way just yet.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;If you let rails do the work, it will try to &lt;a href="http://github.com/rails/rails/tree/master/activerecord/lib/active_record/base.rb#L2902"&gt;convert&lt;/a&gt; the invalid date to a valid date for you. Using that code as inspiration, you can do the following:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;@birthdate = Time.local(params['birthdate(1i)'].to_i, params['birthdate(2i)'].to_i, params['birthdate(3i)'].to_i).to_date&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-3226758269765488344?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/3226758269765488344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=3226758269765488344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/3226758269765488344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/3226758269765488344'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2008/12/if-youre-manually-handling-date.html' title='Rails multi-param attribute processing for dates'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-3083027062487118398</id><published>2008-12-04T00:02:00.004-05:00</published><updated>2008-12-12T12:38:51.718-05:00</updated><title type='text'>CouchDB Peepcode</title><content type='html'>I just downloaded the CouchDB &lt;a href="http://peepcode.com/products/couchdb-with-rails"&gt;PeepCode&lt;/a&gt; and was following the CouchDB installation instructions when I ran into a problem. At the time the screencast was published the erlang macport install supposedly worked, however I ran into a Bus error that has apparently been out there for &lt;a href="http://trac.macports.org/ticket/15459"&gt;sometime&lt;/a&gt;. Fortunately, there is a &lt;a href="http://syntatic.wordpress.com/2008/06/12/macports-erlang-bus-error-due-to-mac-os-x-1053-update/"&gt;simple work around&lt;/a&gt; until the fix is released sometime this month (hopefully).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-3083027062487118398?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/3083027062487118398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=3083027062487118398' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/3083027062487118398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/3083027062487118398'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2008/12/i-just-downloaded-couchdb-peepcode-and.html' title='CouchDB Peepcode'/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-8321361991526113129</id><published>2008-11-11T09:39:00.003-05:00</published><updated>2008-11-11T09:42:34.521-05:00</updated><title type='text'></title><content type='html'>I just got back from rubyconf a few days ago. There were some great talks and I had a great time. I think I enjoyed myself more this time around as well. There is nothing like a great conference to replenish my energy level!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-8321361991526113129?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/8321361991526113129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=8321361991526113129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8321361991526113129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8321361991526113129'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2008/11/i-just-got-back-from-rubyconf-few-days.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-4916166378672541336</id><published>2008-06-18T13:32:00.003-05:00</published><updated>2008-06-18T13:37:53.202-05:00</updated><title type='text'></title><content type='html'>Sometimes, it's the small things that make me happy. Today I found out that the cafe located on the first floor of my client's building started offering free wifi. This is a big deal because it provides myself and the rest of the dev team more flexibility in work location. Unfortunately, our current space is less than adequate, particularly since we have loud neighbors. Although we have tried, we have not been able to procure a more suitable work area.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways, it's little things like this that can improve team morale. I know mine has!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-4916166378672541336?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/4916166378672541336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=4916166378672541336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4916166378672541336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4916166378672541336'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2008/06/sometimes-its-small-things-that-make-me.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-6758086901455005465</id><published>2007-11-08T02:41:00.000-05:00</published><updated>2007-11-08T03:24:53.414-05:00</updated><title type='text'></title><content type='html'>I just got back from RubyConf a few days ago. I was really excited by David Chelimsky's and Dave Astels' talk, 'Behaviour Driven Development with RSpec'. The plain text story runner is a great addition and will be available in the next release which is coming out soon.&lt;br /&gt;&lt;br /&gt;In a nutshell, it allows you to create plain-text, executable stories such as:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;Story: Daily hour calculation&lt;br /&gt;&lt;br /&gt;    As a user&lt;br /&gt;    I want to be able to enter my time in and time out into my time sheet&lt;br /&gt;    So that I can track my hours&lt;br /&gt;   &lt;br /&gt;    Scenario: calculate whole hours&lt;br /&gt;        Given a time in of 2007-07-09 19:00&lt;br /&gt;        And a time out of 2007-07-09 21:00&lt;br /&gt;       &lt;br /&gt;        Then the hours should be 2&lt;br /&gt;       &lt;br /&gt;    Scenario: 0 minutes is 0 hours&lt;br /&gt;        Given a time in of 2007-07-09 19:00&lt;br /&gt;        And a time out of 2007-07-09 19:00&lt;br /&gt;&lt;br /&gt;        Then the hours should be 0&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;The results of running this story looks like this:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;denethor:stories $ruby day.rb&lt;br /&gt;Running 2 scenarios:&lt;br /&gt;Story: Daily hour calculation&lt;br /&gt;As a user&lt;br /&gt;I want to be able to enter my time in and time out into my time sheet&lt;br /&gt;So that I can track my hours&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Scenario: calculate whole hours&lt;br /&gt;&lt;br /&gt;  Given a time in of 2007-07-09 19:00&lt;br /&gt;  And a time out of 2007-07-09 21:00&lt;br /&gt;&lt;br /&gt;  Then the hours should be 2&lt;br /&gt;.&lt;br /&gt;Scenario: 0 minutes is 0 hours&lt;br /&gt;&lt;br /&gt;  Given a time in of 2007-07-09 19:00&lt;br /&gt;  And a time out of 2007-07-09 19:00&lt;br /&gt;&lt;br /&gt;  Then the hours should be 0&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2 scenarios: 2 succeeded, 0 failed, 0 pending&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;A really neat thing is that the output can be saved to a file and executed.&lt;br /&gt;&lt;br /&gt;David and Dave presented some really neat ideas around the story runner. One particularly interesting one was the potential of e-mailing to a remote story runner and getting the results e-mailed back. Lots of interesting possibilities lie here.&lt;br /&gt;&lt;br /&gt;To get more details, check out &lt;a href="http://blog.davidchelimsky.net/"&gt;David Chelimsky's blog.&lt;/a&gt;&lt;br /&gt;Note that at some point the RubyConf talks will be made available online, although I am not sure when and where.&lt;br /&gt;&lt;br /&gt;I recommend pulling the latest code from trunk (&lt;tt&gt;svn checkout http://rspec.rubyforge.org/svn/) &lt;/tt&gt;and giving it a spin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-6758086901455005465?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/6758086901455005465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=6758086901455005465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/6758086901455005465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/6758086901455005465'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/11/i-just-got-back-from-rubyconf-few-days.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-7229181442507506682</id><published>2007-03-11T20:21:00.000-05:00</published><updated>2007-03-11T21:28:17.125-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Set-Based Design and Effective Risk Management&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Set-based design is an empirical approach where a problem space is explored simultaneously through the investigation of various solutions so that the most optimal solution can be chosen at the last moment that the decision needs to be made.&lt;br /&gt;&lt;br /&gt;There are a few benefits to this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; The longer that you can put off make a decision, the more informed the decision will be. Of course, you cannot procrastinate. It is important to first decide when you must absolutely make the decision.&lt;/li&gt;&lt;li&gt; You generate a better understanding of the problem space by tackling it from different angles.&lt;/li&gt;&lt;li&gt; By investigating multiple solutions to a problem in parallel, you are more likely to have something functional and ready to deliver in the end. This is effective risk management.&lt;/li&gt;&lt;/ol&gt;When is it appropriate to exercise set-based design? When you have an irreversible decision to make or when you are facing a deadline which cannot be missed.&lt;br /&gt;&lt;br /&gt;Some may consider this as a wasteful practice. Why invest so many resources in solving a particularly problem. However, in most cases the cost of missing a deadline or making an ill-informed decision is significantly higher. Even then, this may be difficult for some people to grasp when they are deep into the task at hand. When this happens, step back and consider the long term goals of the company and the product being development. I bet you will find the investment will be worth it.&lt;br /&gt;&lt;br /&gt;You may come across customers who are hesitant to compromise on scope even when a deadline is set in stone and it is pretty clear to you that the current scope is not achievable by that deadline. Instead of running for the hills as some have &lt;a href="http://www.agilegamedevelopment.com/2007/01/quote-from-scrum-development-mailing.html"&gt;suggested&lt;/a&gt;, consider set-based design. More often than not, the budget is there for it since the organization is more than willing to bring in as many people as it takes to &lt;span style="font-style: italic;"&gt;get the job done&lt;/span&gt;. It could just be what is needed to get the customer to identify what feature-set is absolutely required to get the product to market.&lt;br /&gt;&lt;br /&gt;To learn more about set-based design, have a look at the following resources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bill Wake's &lt;a href="http://xp123.com/xplor/xp0611/index.shtml"&gt;Xploration&lt;/a&gt; on Set-Based Concurrent Engineering.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.poppendieck.com/ilsd.htm"&gt;Implementing Lean Software Development, From Concept To Cash&lt;/a&gt; by Mary and Tom Poppendieck.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-7229181442507506682?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/7229181442507506682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=7229181442507506682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/7229181442507506682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/7229181442507506682'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/03/set-based-design-and-effective-risk.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-2796675185303327024</id><published>2007-02-28T22:05:00.000-05:00</published><updated>2007-02-28T22:41:47.352-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Mylar...Why should you get it?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar&lt;/a&gt; plug-in allows you to associate a context of work with a particular eclipse task. What does this mean? Well, after 'activating' a task for the first time, you are provided with a clean slate view in terms of classes, configuration files, etc... in your project. As you begin to navigate the code-base while working the task, the classes and methods you interact with become part of the task's context. The benefit of this is that it reduces 'conceptual overload', therefore, making you more productive. The best way to understand this is to see it in action. On top of that, this 'external navigational memory' is constantly changing based on your code interactions.  The context adapts to your current code usage pattern as you are working the task.&lt;br /&gt;&lt;br /&gt;The task context can even be shared between developers on the team and associated with various issue tracking solutions (Bugzilla, Trac, Jira). I have yet to try this since my current project does not use the supported issue tracking implementations, but it seems very cool.&lt;br /&gt;&lt;br /&gt;I have to admit it, I have been putting off installing this plug-in for some time and I regret that. I think it is one of those things that you need to experience to fully appreciate. If you do any development with Eclipse, &lt;a href="http://www.eclipse.org/mylar/"&gt;get Mylar now&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-2796675185303327024?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/2796675185303327024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=2796675185303327024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/2796675185303327024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/2796675185303327024'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/02/mylar.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-4081734738084942999</id><published>2007-02-20T20:29:00.000-05:00</published><updated>2007-03-17T20:34:00.163-05:00</updated><title type='text'></title><content type='html'>I just wanted to let folks now that I will be blogging all future XNA-related content to my new blog &lt;a href="http://xnazengarden.blogspot.com/"&gt;XNA Zen Garden&lt;/a&gt;. Pop on over and you'll find it's inaugural post on C# partial classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I moved my previous XNA-related posts to the new blog as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-4081734738084942999?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/4081734738084942999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=4081734738084942999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4081734738084942999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/4081734738084942999'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/02/i-just-wanted-to-let-folks-now-that-i.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-37244987605388275</id><published>2007-02-07T22:55:00.000-05:00</published><updated>2007-02-08T22:08:13.954-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;But it works...Isn't that good enough?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, it depends. However, more often than not the answer is no, it is not good enough.&lt;br /&gt;&lt;br /&gt;Imagine your working on implementing a 'fix' for a 'show stopper' issue under an 'aggressive' dead line. I bet this does not sound too far fetched?&lt;br /&gt;&lt;br /&gt;I would bet that you are not particularly comfortable cranking out a quick work around solution, yet I am sure that you find the quick fix so damn tempting.&lt;br /&gt;&lt;br /&gt;Why is that? For one thing, the client probably wants this issue fixed yesterday! Deep down, they may not care how it is done. The bottom line is the sooner the better. Of course, &lt;span style="font-style: italic;"&gt;doing it right&lt;/span&gt; is implicitly assumed but, this is usually sacrificed in the spirit of the &lt;span style="font-style: italic;"&gt;Now&lt;/span&gt;. In fact, we are often rewarded for getting things out fast. Perhaps there are financial incentives for getting things done &lt;span style="font-style: italic;"&gt;on schedule&lt;/span&gt;? In my opinion any sort of incentive tied to a schedule is a smell indicating that the schedule is just not right.&lt;br /&gt;&lt;br /&gt;My colleague &lt;a href="http://www.appliedlogic.ca/"&gt;Dmitri Dolguikh&lt;/a&gt; recently pointed me to a &lt;a href="http://blog.objectmentor.com/articles/2007/01/26/going-fast"&gt;great article&lt;/a&gt; concerning how costly quick fixes can be. I found the last two paragraphs particularly interesting:&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;It comes down to a matter of professional ethics. Software developers are often disparaged for being sloppy, slow, and unreliable. Whole IT departments and product develoment teams carry the weight of appearing incompetent and moribund. Why? Because they succumbed to the seductive idea that quick and dirty solutions are faster in the short term.&lt;/p&gt;  &lt;p&gt;True professionals don't work that way. True professionals keep their code clean at all times. True professionals write unit tests that cover close to 100% of their code. True professionals know their code works, and know it can be maintained. &lt;i&gt;True professionals are quick and clean.&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;I whole-heartedly agree with this, however, the reality is that being a &lt;span style="font-style: italic;"&gt;true professional&lt;/span&gt; is not easy and, depending on the environment, may not be realistic 100% of the time. There are too many opportunities lying in wait to distract us from this ideal. In my view, a &lt;span style="font-style: italic;"&gt;true professional&lt;/span&gt; is analogous to the notion of a &lt;span style="font-style: italic;"&gt;responsible developer&lt;/span&gt;.  To quote  a recent post  by Kent Beck on the XP mailing list:&lt;br /&gt;&lt;blockquote&gt;I try to do an excellent technical job but I also work to make sure that what I am doing fits into the larger business...&lt;span style="font-size:100%;"&gt;If the technical concerns and the business concerns appear to conflict, I work to find a mutually beneficial solution but finally I follow business imperatives over technical ones.&lt;/span&gt;&lt;/blockquote&gt;We work within the constraints of our current environment. Although the  &lt;span style="font-style: italic;"&gt;true professional&lt;/span&gt; definition as  put forth by Bob should be an ideal that we  continuously strive for,  it may not always be achievable.  In those cases, does that make you less responsible or professional? I don't think so.&lt;br /&gt;&lt;br /&gt;We cannot solve all the problems of an organization, but we can do our best to help steer them in the right direction. Sometimes this requires a compromise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-37244987605388275?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/37244987605388275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=37244987605388275' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/37244987605388275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/37244987605388275'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/02/but-it-works.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-8253198525689989143</id><published>2007-01-14T13:28:00.000-05:00</published><updated>2007-01-14T13:58:36.315-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='communication'/><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Rules of Engagement&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;    Effective communication is not spontaneous in nature, it takes commitment from&lt;/span&gt;&lt;span style="font-style: italic;"&gt; all contributors.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, you have set aside time for reflection. Now what? How do you proceed? To a degree this depends on the situation, however there are some general principles that can prove beneficial. The key is to explicitly establish rules of engagement that &lt;span style="font-style: italic;"&gt;maintain trust&lt;/span&gt; across all contributors so that they can add effectively to the &lt;a style="font-style: italic;" href="http://www.vitalsmarts.com/glossary.aspx#q12"&gt;pool of shared meaning&lt;/a&gt; while maintaining focus on the overall &lt;span style="font-style: italic;"&gt;goal&lt;/span&gt; in order to generate &lt;span style="font-style: italic;"&gt;actionable results&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Goal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Before beginning any dialogue, it is important that a goal is put forth that is accepted by all contributors. This formally establishes the problem space that people will be thinking within. It also helps the group maintain focus.&lt;br /&gt;&lt;br /&gt; For example, If one of your teams main problems is quality, start the discussion by stating that the purpose of the dialogue is to discuss the quality issue and how quality can be improved. In this particular case, blame has no place in the discussion and this should be made explicitly clear when the goal is communicated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Safety&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; and the &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Pool of Shared Meaning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; During the discussion it is critical to maintain &lt;a href="http://www.vitalsmarts.com/glossary.aspx#q13"&gt;safety&lt;/a&gt; within the group. If people do not feel safe, they will not contribute effectively to the conversation which means the &lt;a href="http://www.vitalsmarts.com/glossary.aspx#q12"&gt;pool of shared meaning&lt;/a&gt; will not be as full as it could be. There are a couple of implications of this. Firstly, detail is lost because the entire group is not sharing their opinions. Secondly, and more importantly, Those who do not contribute because of &lt;a href="http://www.vitalsmarts.com/glossary.aspx#q13"&gt;safety&lt;/a&gt; issues are less likely to be bought in to any decisions that come out of the discussion. This could lead to the second-guessing of decisions and become an obstacle to improvement.&lt;br /&gt;&lt;br /&gt; When is &lt;a href="http://www.vitalsmarts.com/glossary.aspx#q13"&gt;safety&lt;/a&gt; likely to be an issue? Any dialogue that can be classified as a &lt;a href="http://www.vitalsmarts.com/glossary.aspx#q3"&gt;crucial conversation&lt;/a&gt; where stakes are high, there is a difference of opinion and emotions are involved. The safety issue can be further exacerbated when one of the contributors has a strong, aggressive personality.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actionable Results&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Finally, we want to come out of the discussion with actionable items. If not, any feedback that led to the discussion is not feedback but noise. This is a critical concept that has been stated before:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Feedback without action = noise.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;In the end, if the purpose of the discussion is to institute change that will hopefully lead to improvements, then action must be taken. Talking about it is only half the work.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;In Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; As I stated at the beginning of this post, effective communication is hard and takes work. I have been reminded of this many times over throughout my career and I have found these principles to be effective. In a future post, I will bring up some of the practices that can be used to support these principles.&lt;br /&gt;&lt;br /&gt;    If you are interested in becoming a more effective communicator, I highly recommend the book &lt;a href="http://www.vitalsmarts.com/crucialconversations_book.aspx"&gt;Crucial Conversations&lt;/a&gt;. I have found it to be an invaluable resource and it was a major influence of this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-8253198525689989143?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/8253198525689989143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=8253198525689989143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8253198525689989143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/8253198525689989143'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2007/01/rules-of-engagement-effective.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-116372887642814267</id><published>2006-11-19T07:56:00.000-05:00</published><updated>2006-11-21T07:18:04.866-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='team improvement'/><category scheme='http://www.blogger.com/atom/ns#' term='communication'/><title type='text'></title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;"&gt;The Importance of Reflection&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Agile, iterative development. It is a mixture of planning, pragmatism and a healthy dose of common-sense. Simple! Or so it seems...&lt;br /&gt;&lt;br /&gt;One important aspect that seems to be ignored all too often is the importance of reflection.&lt;br /&gt;&lt;br /&gt;Unfortunately, looming deadlines always seem to distract us from this important activity. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Paradoxically&lt;/span&gt;, this is the time I have found we need it the most. Heads-down programming with little communication is unproductive and a sure sign of an inexperienced team.&lt;br /&gt;&lt;br /&gt;Where do you start? How do you do it? In my opinion, the beginning of the iteration, during an iteration, and at the end of an iteration. Each point requires a different focus and level of formalism, however, the end goal is the same: we want a small set of actionable items to come out of the discussion.&lt;br /&gt;&lt;br /&gt;A small investment of time prior to iteration planning goes a long way towards making significant progress. Look at the release plan and see what stories are coming up. Discuss these stories briefly with a teammate. Come to the planning meeting prepared. All too often this does not happen, usually due to the 'lack of time'. This is unfortunate because nothing makes team members more frustrated than a poor iteration transition.&lt;br /&gt;&lt;br /&gt;Frequent informal discussions concerning the state of the story board allows team members to assess the health of the iteration. Use the story board as a conversation starter with your teammates. Ask them how their work is going, what they think of story X not being started at this point of the iteration. Sometimes, emergency action is required... Better to find out sooner rather than later.&lt;br /&gt;&lt;br /&gt;Well planned and facilitated end-of-iteration retrospectives go a long way towards discovering the tweaks that need to be made to allow the team to work more effectively together. The key is to identify a small number of 'improvement opportunities' that can be addressed during the next iteration. The results of these tweaks are analyzed in the following retrospective in order to assess their impact.&lt;br /&gt;&lt;br /&gt;It is clear to me that small investments of time reflecting on feedback throughout product development go a long way towards delivering a product that meets expectations. The first step is to realize this as a collective team so that the time can be made to do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-116372887642814267?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/116372887642814267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=116372887642814267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/116372887642814267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/116372887642814267'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2006/11/importance-of-self-reflection-agile.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34752372.post-116274709380271207</id><published>2006-11-05T12:18:00.000-05:00</published><updated>2006-11-06T20:28:16.406-05:00</updated><title type='text'></title><content type='html'>Under construction. Please excuse my humble beginnings... Come back soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34752372-116274709380271207?l=ddeaguiar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ddeaguiar.blogspot.com/feeds/116274709380271207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34752372&amp;postID=116274709380271207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/116274709380271207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34752372/posts/default/116274709380271207'/><link rel='alternate' type='text/html' href='http://ddeaguiar.blogspot.com/2006/11/under-construction.html' title=''/><author><name>Daniel De Aguiar</name><uri>http://www.blogger.com/profile/14602138136433126776</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
