<?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/"
	>

<channel>
	<title>Managed Chaos</title>
	<atom:link href="http://blogs.agilefaqs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.agilefaqs.com</link>
	<description>Naresh Jain's Random Thoughts on Software Development and Adventure Sports</description>
	<pubDate>Sat, 13 Mar 2010 18:32:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Is Multi-tasking really evil?</title>
		<link>http://blogs.agilefaqs.com/2010/03/13/is-multi-tasking-really-evil/</link>
		<comments>http://blogs.agilefaqs.com/2010/03/13/is-multi-tasking-really-evil/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 17:39:11 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Cognitive Science]]></category>

		<category><![CDATA[cognitive]]></category>

		<category><![CDATA[dual-task interference]]></category>

		<category><![CDATA[long term memory]]></category>

		<category><![CDATA[multi-tasking]]></category>

		<category><![CDATA[pomodoro]]></category>

		<category><![CDATA[prefrontal cortex]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1181</guid>
		<description><![CDATA[By now you must have heard/read numerous people explain the pitfalls of multi-tasking and why its evil.


Jeff Atwood&#8217;s blog on &#8220;The Multi-Tasking Myth&#8220;
John Naish&#8217;s article on &#8220;Is multi-tasking bad for your brain? Experts reveal the hidden perils of juggling too many jobs&#8220;
Clarke Ching&#8217;s blog on &#8220;Multitasking MAKES YOU STUPID&#8220;
Joel Spolsky&#8217;s blog on &#8220;Human Task Switches Considered Harmful&#8220;
Gina [...]]]></description>
			<content:encoded><![CDATA[<p>By now you must have heard/read numerous people explain the pitfalls of multi-tasking and why its evil.</p>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/03/multitaskingevil.jpg"><img class="aligncenter size-full wp-image-1182" title="multitaskingevil" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/03/multitaskingevil.jpg" alt="multitaskingevil" width="440" height="409" /></a></p>
<ul>
<li>Jeff Atwood&#8217;s blog on &#8220;<a href="http://www.codinghorror.com/blog/2006/09/the-multi-tasking-myth.html" target="_blank">The Multi-Tasking Myth</a>&#8220;</li>
<li>John Naish&#8217;s article on &#8220;<a href="http://www.dailymail.co.uk/health/article-1205669/Is-multi-tasking-bad-brain-Experts-reveal-hidden-perils-juggling-jobs.html" target="_blank">Is multi-tasking bad for your brain? Experts reveal the hidden perils of juggling too many jobs</a>&#8220;</li>
<li>Clarke Ching&#8217;s blog on &#8220;<a href="http://www.clarkeching.com/2004/12/multitasking_is.html" target="_blank">Multitasking MAKES YOU STUPID</a>&#8220;</li>
<li>Joel Spolsky&#8217;s blog on &#8220;<a href="http://www.joelonsoftware.com/articles/fog0000000022.html" target="_blank">Human Task Switches Considered Harmful</a>&#8220;</li>
<li>Gina Trapani&#8217;s article on &#8220;<a href="http://www.fastcompany.com/article/work-smart-stop-multi-tasking-and-do-one-thing-at-a-time" target="_blank">Work Smart: Stop Multitasking and Start Doing One Thing Really Well</a>&#8220;</li>
</ul>
<p>Some people offer some decent advice on how to avoid Multi-tasking:</p>
<ul>
<li><a href="http://management.about.com/od/yourself/a/chunking1106.htm" target="_blank">Don&#8217;t Multi-task When You Can Use Chunking</a> by F. John Reh</li>
<li>The <a href="http://www.pomodorotechnique.com/" target="_blank">Pomodoro Technique</a> forces you to focus on 1 task for 25 mins &amp; then take a short break of 5 mins after every 25 mins (and a long break after 4 Pomodoros).</li>
<li><a href="http://www.intent.com/lauraearnest/blog/dangers-multitasking-and-how-stop" target="_blank">The Dangers of Multitasking And How To Stop</a> by Laura Earnest</li>
<li><a href="http://zenhabits.net/2007/02/how-not-to-multitask-work-simpler-and/" target="_blank">How NOT to Multitask – Work Simpler and Saner</a> by Leo Babauta</li>
<li><a href="http://www.wikihow.com/Avoid-Multi-Tasking" target="_blank">How to Avoid Multi Tasking</a> on WikiHow</li>
</ul>
<p>While I agree with everyone here. There are things in my daily life that contradicts (to some extent) what they are claiming to be universally true for all humans. For Ex:</p>
<ul>
<li>I listen to the news on the radio every morning while I brush my teeth</li>
<li>I have interesting, deep conversations with friends/family while driving on Indian roads (driving itself involves multiple tasks. Driving on Indian roads adds a whole new dimension to it)</li>
<li>The Indian Gods had attainted a whole new level of multi-tasking <img src='http://blogs.agilefaqs.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/03/multitasking.jpg"><img class="aligncenter size-full wp-image-1183" title="multitasking" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/03/multitasking.jpg" alt="multitasking" width="411" height="600" /></a></p>
<p>What I&#8217;m trying to highlight here is not all multi-tasking is bad/inefficient. If I take the driving example, I can do other tasks while I&#8217;m driving. My efficiency starts to go down if I&#8217;m driving to new destinations. It further goes down if I&#8217;m driving in a different lane-system and a different car.</p>
<blockquote><p>Its important to note that multi-tasking does not hurt you much if the activities you&#8217;re performing are routine activities (embedded in your long-term memory and is referred to as muscle memory.) Multi-tasking becoming significantly exhausting, error-prone and inefficient if the tasks you are performing requires conscious processing/thought (.i.e. uses your prefrontal cortex intensively.) Five brain functions, understanding, deciding, recalling, memorizing and inhibiting thoughts, make up majority of conscious thought. Activities like planning, problem solving, communication, etc use these functions heavily. Hence multi-tasking on such activities is a bad idea.</p></blockquote>
<p><a href="http://www.pashler.com/" target="_blank">Harold Pashler</a> come up with a phenomenon called <a href="http://www.pashler.com/Articles/index.php?abstractid=87" target="_blank">Dual-Task Interference</a>. Via various experiments he showed that performing 2 cognitive tasks at once can reduce the cognitive capacity drastically. But if an individual performed 2 tasks, out of which only one task required conscious processing, then the cognitive capacity did not see the same drop.</p>
<p>There are <a href="http://dualtask.org/Visible_PRP_2/prp.html" target="_blank">simple activities</a> which illustrates that one cannot normally carry out two tasks completely independently when each of them requires a choice of response.  When we try to do so, substantial delays occur in one or both tasks.  This is true even when neither task is anything that would be described as mentally challenging. Much research in this area argues that one particular mental operation is almost invariably carried out sequentially in tasks like this: the planning of responses.   The same is true of certain types of decision operations and memory retrievals.  On the other hand, the brain seems capable of perceiving stimuli while it is choosing a response, and actually producing motor responses in one task can overlap with the choice of a response in another.</p>
<p>Again, not all tasks requiring a choice of responses are subjected to this sort of processing bottleneck. Tasks that involve extremely “natural” mappings between stimuli and responses appear not to be.  For example, repeating words aloud as you hear them is a task most people can carry out in parallel with other tasks (McLeod &amp; Posner, 1984).  The same is true of moving your eye to look at a spot (Pashler, Carrier &amp; Hoffman, 1993).</p>
<p>Are humans capable of only uni-tasking? Not at all. If one of the tasks does not involve a choice of responses (e.g., if it merely involves repetitive rhythmic tapping, or requires perceiving and identifying stimuli without the need to decide on responses), interference is often reduced or even absent (subsequent demos on this site will illustrate this point).  Laboratory experiments in which response times are analyzed in detail have lent considerable support to the idea of a “central bottleneck” in response planning and indicated that other operations are often processed in parallel between the two tasks (for recent reviews, see H. Pashler, The Psychology of Attention, 1998, MIT Press; P. Jolicoeur, Journal of Experimental Psychology: Human perception and Performance, 1999, 25, 596-616).</p>
<p><em><strong>Summary: Multi-tasking activities which require conscious processing is exhausting, error-prone and inefficient, hence a bad idea.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/03/13/is-multi-tasking-really-evil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Planning Agile Coach Camp India</title>
		<link>http://blogs.agilefaqs.com/2010/03/01/planning-agile-coach-camp-india/</link>
		<comments>http://blogs.agilefaqs.com/2010/03/01/planning-agile-coach-camp-india/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:35:13 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Coaching]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[acc]]></category>

		<category><![CDATA[Agile Coach Camp]]></category>

		<category><![CDATA[agile coaching]]></category>

		<category><![CDATA[agile india]]></category>

		<category><![CDATA[ASCI]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1175</guid>
		<description><![CDATA[At the Agile India 2010 conference, there was a lot of interest for agile coaching in India.
Today, in India, I believe we have many Agile coaches (internal and external, more internal coaches). If you are helping bring Agile/Lean/Light-Weight thinking into your company, you are playing the Agile coach role (you like it or not). You [...]]]></description>
			<content:encoded><![CDATA[<p>At the <a href="http://agileindia.org/agileindia2010" target="_blank">Agile India 2010 conference</a>, there was a lot of interest for agile coaching in India.</p>
<p>Today, in India, I believe we have many Agile coaches (internal and external, more internal coaches). If you are helping bring Agile/Lean/Light-Weight thinking into your company, you are playing the Agile coach role (you like it or not). You could be in the leadership role doing this or you could have taken the ownership and facilitating/influencing your team. While doing so, we all need a lot of help, advice and reassurance of our strategies. To facilitate this, help people network and to push the boundaries of Agile, in 2008, Deb and I created the first <a href="http://agilecoachcamp.org/tiki-index.php?page=AgileCoachCamp2008" target="_blank">Agile Coach Camp in US</a>.</p>
<p>In the past I&#8217;ve considered doing something similar in India, but always felt we&#8217;ve not reached the point yet. Now (esp. after the agile india 2010 conference), I feel we might be at this point.</p>
<p>So if you are interested in participating in a 2 day invitation only, all open-space based conference, over a weekend in March/April, inform me by filling out the following form:</p>
<p><iframe src="https://spreadsheets.google.com/embeddedform?formkey=dEtDUm5yVTVadC1MdGZJVzZHeVI2dFE6MA" width="500" height="700" frameborder="0" marginheight="0" marginwidth="0">Loading&#8230;</iframe></p>
<p>Also please vote for which city you would like to have the conference in:<br />
<script type="text/javascript" src="http://host1.easypolls.net/ext/scripts/emPoll.js?p=5827"></script><a class="OPP-powered-by" href="http://www.objectplanet.com/opinio/" style="text-decoration:none;">
<div style="font: 9px arial; color: gray;">online surveys</div>
<p></a></p>
<p>And what dates work best for you?<br />
<script type="text/javascript" src="http://host1.easypolls.net/ext/scripts/emPoll.js?p=5829"></script><a class="OPP-powered-by" href="http://www.objectplanet.com/opinio/" style="text-decoration:none;">
<div style="font: 9px arial; color: gray;">customer survey</div>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/03/01/planning-agile-coach-camp-india/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Who is a Developer?</title>
		<link>http://blogs.agilefaqs.com/2010/02/13/who-is-a-developer/</link>
		<comments>http://blogs.agilefaqs.com/2010/02/13/who-is-a-developer/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 17:11:47 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[context]]></category>

		<category><![CDATA[ownership]]></category>

		<category><![CDATA[problem solving]]></category>

		<category><![CDATA[Responsibility]]></category>

		<category><![CDATA[software craftsmanship]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1172</guid>
		<description><![CDATA[A lot of people think, if they can write some code, they qualify as a software developer.
IMHO don&#8217;t call yourself a developer if you don&#8217;t take ownership and responsibility for solving the overall, real business/user problem.
A good developer

understands the overall problem and its context.
has good problem solving skills (we are in the business of creative [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people think, if they can write some code, they qualify as a software developer.</p>
<p>IMHO <em>don&#8217;t call yourself a developer if you don&#8217;t take ownership and responsibility for solving the overall, real business/user problem</em>.</p>
<p>A good developer</p>
<ul>
<li>understands the overall problem and its context.</li>
<li>has good problem solving skills (we are in the business of creative problem solving)</li>
<li>has empathy for the users and is a user and business advocate.</li>
<li>takes ownership by being a part-of the team and having a sense of belonging.</li>
<li>makes investment into continuous learning &amp; improvement</li>
</ul>
<p>[<a href="http://agilemanifesto.org/" target="_blank">Agile</a> and <a href="http://manifesto.softwarecraftsmanship.org/" target="_blank">Software Craftsmanship</a> movements has made great strives in this direction. However some Agile folks don't get it. We can't draw a line and say this side is business and that side is development. Its ONE team working towards a common goal. Unfortunately, I've seen a lot of teams who end up creating artificial boundaries between people wanting the software and people building it.]</p>
<p>Anyway, having the ability to just writing some code does not qualify you to be a developer.</p>
<p>Almost a year ago, I wrote something more insightful: <a href="http://blogs.agilefaqs.com/2009/02/01/programming-in-the-21st-century/" target="_self">Programming in the 21st Century</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/02/13/who-is-a-developer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile India 2010 Conference Slides are available</title>
		<link>http://blogs.agilefaqs.com/2010/01/29/agile-india-2010-conference-slides-are-available/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/29/agile-india-2010-conference-slides-are-available/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 17:03:24 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[Slides]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1168</guid>
		<description><![CDATA[Mumbai Conference &#38; Bengaluru Conference.
Stay tuned for the Videos. We are working on them.
If you are not following us on Twitter (@agileIndia) please do so. Its easy to make all important announcements there.
]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-program.htm" target="_blank"><span id="lw_1264784479_0" class="yshortcuts">Mumbai Conference</span></a> &amp; <a rel="nofollow" href="http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-program.htm" target="_blank"><span id="lw_1264784479_1" class="yshortcuts">Bengaluru Conference</span></a>.</p>
<p>Stay tuned for the Videos. We are working on them.</p>
<p>If you are not following us on <span id="lw_1264784479_2" class="yshortcuts">Twitter</span> (<a rel="nofollow" href="http://twitter.com/agileindia" target="_blank"><span id="lw_1264784479_3" class="yshortcuts">@agileIndia</span></a>) please do so. Its easy to make all important announcements there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/29/agile-india-2010-conference-slides-are-available/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Craftsmanship in designing Error Messages</title>
		<link>http://blogs.agilefaqs.com/2010/01/29/craftsmanship-in-designing-error-messages/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/29/craftsmanship-in-designing-error-messages/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 04:44:49 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[error messages]]></category>

		<category><![CDATA[express intent]]></category>

		<category><![CDATA[intent revealing]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1160</guid>
		<description><![CDATA[
Also if you see their URL: http://www.mailchimp.com/maintenance_in_progress/we_are_down.phtml
Very intent revealing. Great thinking has gone behind this. Now this is what I call craftsmanship.
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/01/errormessage.png"><img class="aligncenter size-full wp-image-1161" title="errormessage" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/01/errormessage.png" alt="errormessage" width="457" height="281" /></a></p>
<p>Also if you see their URL: <a href="http://www.mailchimp.com/maintenance_in_progress/we_are_down.phtml" target="_blank">http://www.mailchimp.com/maintenance_in_progress/we_are_down.phtml</a></p>
<p>Very intent revealing. Great thinking has gone behind this. Now this is what I call craftsmanship.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/29/craftsmanship-in-designing-error-messages/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conferences could be lot more Greener</title>
		<link>http://blogs.agilefaqs.com/2010/01/28/conferences-could-be-lot-more-greener/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/28/conferences-could-be-lot-more-greener/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 09:38:31 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[Green]]></category>

		<category><![CDATA[conserve electricity]]></category>

		<category><![CDATA[global warming]]></category>

		<category><![CDATA[hand-outs]]></category>

		<category><![CDATA[plastic]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1157</guid>
		<description><![CDATA[Recently at the Agile Mumbai 2010 and Agile Bengaluru 2010 conference, we tried to make the conference as green (environment friendly) as possible. Following are the things we tried:

We did not hand over any conference program, printed hand-outs &#38; slides or any other printed material (except for what the conference sponsor handed over). All this [...]]]></description>
			<content:encoded><![CDATA[<p>Recently at the <a href="http://www.agileindia.org/agilemumbai2010" target="_blank">Agile Mumbai 2010</a> and <a href="http://www.agileindia.org/agilebengaluru2010" target="_blank">Agile Bengaluru 2010</a> conference, we tried to make the conference as green (environment friendly) as possible. Following are the things we tried:</p>
<ul>
<li>We did not hand over any conference program, printed hand-outs &amp; slides or any other printed material (except for what the conference sponsor handed over). All this info is already available on our website. To make it convenient for the conference attendees, we took 3 large (A2 size) printout and stuck it outside each hall (track).</li>
<li>We also skipped handing over  notepads &amp; pens. I my experience very few people use them. Also those who want to use it, it&#8217;s easy to carry a notepad and pen.</li>
<li>Lunch and snacks were served in washable plates &amp; steel spoons. Usually conferences use throw-away plates and plastic spoons.</li>
<li>For drinking tea, coffee &amp; juice, we requested the conference participants to carry their own mugs &amp; water bottles. This did not work all that well. We had only 3 people carry their own mug. In future, we plan to hand out a mug to each participant. (For Bengaluru conference, since it was in a hotel, they took care of serving tea &amp; coffee in porcelain cups. Water was served is proper washable glasses)</li>
<li>Conserving Electricity: We tried to switch off projectors and Air Conditioners when ever possible. This is an area of huge improvement. We need to find more interesting ways to conserve energy.</li>
<li>Originally we had planned to request the participants to return their lanyards so we could reuse it. This one fell through the cracks.</li>
</ul>
<p>At both the conferences we had an enlightening talk from Captain Planet (aka Saurabh Arora) showing the effect of global warming and how we can take small steps everyday to avoid further worsening the situation.</p>
<div style="width:480px;text-align:left" id="__ss_3020557"><object style="margin:0px" width="480" height="385"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=joiningthedots-100129022553-phpapp02&#038;stripped_title=joining-the-dots" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=joiningthedots-100129022553-phpapp02&#038;stripped_title=joining-the-dots" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div>
<p></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/P_9mjBUSDng&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/P_9mjBUSDng&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Overall I think there are lot more things we can do to make the conference more environmental friendly.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/28/conferences-could-be-lot-more-greener/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Post-Modern Agile</title>
		<link>http://blogs.agilefaqs.com/2010/01/28/post-modern-agile/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/28/post-modern-agile/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:27:27 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Random Thoughts]]></category>

		<category><![CDATA[beginners mind]]></category>

		<category><![CDATA[ceremony]]></category>

		<category><![CDATA[Dogmatism]]></category>

		<category><![CDATA[fail safe]]></category>

		<category><![CDATA[safe fail]]></category>

		<category><![CDATA[safe-fail experiment]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1155</guid>
		<description><![CDATA[Beyond dogma, beyond ceremony, beyond logical &#38; rational bull-shit, detaching self from cutting edge agile practices to embrace, scale &#38; sustain essential agility.
From Fail Safe experimentation to lots of Safe Fail experimentation.
From Objectivity to Subjectivity to Relativity to Uncertainty.
From Structure to Chaos.
From Illusions to Idealism to Realism.
Beginner&#8217;s Mind, here I come&#8230;.
]]></description>
			<content:encoded><![CDATA[<p>Beyond dogma, beyond ceremony, beyond logical &amp; rational bull-shit, detaching self from cutting edge agile practices to embrace, scale &amp; sustain essential agility.</p>
<p>From Fail Safe experimentation to lots of Safe Fail experimentation.</p>
<p>From Objectivity to Subjectivity to Relativity to Uncertainty.</p>
<p>From Structure to Chaos.</p>
<p>From Illusions to Idealism to Realism.</p>
<p>Beginner&#8217;s Mind, here I come&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/28/post-modern-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What did you learn at Agile Mumbai and Agile Bengaluru 2010 Conference</title>
		<link>http://blogs.agilefaqs.com/2010/01/25/what-did-you-learn-at-agile-mumbai-and-agile-bengaluru-2010-conference/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/25/what-did-you-learn-at-agile-mumbai-and-agile-bengaluru-2010-conference/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 04:37:59 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[agile bengaluru 2010]]></category>

		<category><![CDATA[agile india]]></category>

		<category><![CDATA[agile mumbai 2010]]></category>

		<category><![CDATA[ASCI]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1152</guid>
		<description><![CDATA[Loading&#8230;
]]></description>
			<content:encoded><![CDATA[<p><iframe src="https://spreadsheets.google.com/embeddedform?key=0AnvW8EH5As7GdDlpWlZFemttVFBMQnJPV2hOeEJkU0E" width="500" height="825" frameborder="0" marginheight="0" marginwidth="0">Loading&#8230;</iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/25/what-did-you-learn-at-agile-mumbai-and-agile-bengaluru-2010-conference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Could not inspect JDBC autocommit mode</title>
		<link>http://blogs.agilefaqs.com/2010/01/09/could-not-inspect-jdbc-autocommit-mode/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/09/could-not-inspect-jdbc-autocommit-mode/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 20:48:04 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[Connection]]></category>

		<category><![CDATA[DBCP]]></category>

		<category><![CDATA[Hibernate]]></category>

		<category><![CDATA[JDBC]]></category>

		<category><![CDATA[tomcat]]></category>

		<category><![CDATA[validationQuery]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1147</guid>
		<description><![CDATA[After switching to the DBCP (Database Connection Pool) drivers that comes bundled with Tomcat 5+, we started seeing a weird exception on our web app. If we leave our server idle for a long time (5-6 hrs) or if we put our laptop to sleep and 5-6+ hrs later when we bring up the laptop [...]]]></description>
			<content:encoded><![CDATA[<p>After switching to the DBCP (Database Connection Pool) drivers that comes bundled with Tomcat 5+, we started seeing a weird exception on our web app. If we leave our server idle for a long time (5-6 hrs) or if we put our laptop to sleep and 5-6+ hrs later when we bring up the laptop and try to access any page on our web app, we get the following error on the web page:</p>
<p>(The error was &#8220;could not inspect JDBC autocommit mode&#8221;)</p>
<p>When we see our logs, we find the following exception:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #cc66cc;">18</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">26</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">34</span>,<span style="color: #cc66cc;">845</span> ERROR JDBCExceptionReporter<span style="color: #339933;">:</span><span style="color: #cc66cc;">72</span> <span style="color: #339933;">-</span> <span style="color: #003399;">Connection</span> com.<span style="color: #006633;">mysql</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">JDBC4Connection</span>@36fbe6ab is closed.
<span style="color: #006633;">SEVERE</span><span style="color: #339933;">:</span> could not inspect JDBC autocommit mode
org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">exception</span>.<span style="color: #006633;">GenericJDBCException</span><span style="color: #339933;">:</span> could not inspect JDBC autocommit mode
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">exception</span>.<span style="color: #006633;">SQLStateConverter</span>.<span style="color: #006633;">handledNonSpecificException</span><span style="color: #009900;">&#40;</span>SQLStateConverter.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">103</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">exception</span>.<span style="color: #006633;">SQLStateConverter</span>.<span style="color: #006633;">convert</span><span style="color: #009900;">&#40;</span>SQLStateConverter.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">91</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">exception</span>.<span style="color: #006633;">JDBCExceptionHelper</span>.<span style="color: #006633;">convert</span><span style="color: #009900;">&#40;</span>JDBCExceptionHelper.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">43</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">exception</span>.<span style="color: #006633;">JDBCExceptionHelper</span>.<span style="color: #006633;">convert</span><span style="color: #009900;">&#40;</span>JDBCExceptionHelper.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">29</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">JDBCContext</span>.<span style="color: #006633;">afterNontransactionalQuery</span><span style="color: #009900;">&#40;</span>JDBCContext.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">248</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">impl</span>.<span style="color: #006633;">SessionImpl</span>.<span style="color: #006633;">afterOperation</span><span style="color: #009900;">&#40;</span>SessionImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">417</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">impl</span>.<span style="color: #006633;">SessionImpl</span>.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span>SessionImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1577</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">impl</span>.<span style="color: #006633;">CriteriaImpl</span>.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span>CriteriaImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">283</span><span style="color: #009900;">&#41;</span>
	...
	<span style="color: #006633;">at</span> javax.<span style="color: #006633;">servlet</span>.<span style="color: #006633;">http</span>.<span style="color: #006633;">HttpServlet</span>.<span style="color: #006633;">service</span><span style="color: #009900;">&#40;</span>HttpServlet.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">617</span><span style="color: #009900;">&#41;</span>
	at javax.<span style="color: #006633;">servlet</span>.<span style="color: #006633;">http</span>.<span style="color: #006633;">HttpServlet</span>.<span style="color: #006633;">service</span><span style="color: #009900;">&#40;</span>HttpServlet.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">717</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">ApplicationFilterChain</span>.<span style="color: #006633;">internalDoFilter</span><span style="color: #009900;">&#40;</span>ApplicationFilterChain.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">290</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">ApplicationFilterChain</span>.<span style="color: #006633;">doFilter</span><span style="color: #009900;">&#40;</span>ApplicationFilterChain.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">206</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardWrapperValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>StandardWrapperValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">233</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardContextValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>StandardContextValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">191</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardHostValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>StandardHostValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">valves</span>.<span style="color: #006633;">ErrorReportValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>ErrorReportValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">102</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardEngineValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>StandardEngineValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">109</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">ha</span>.<span style="color: #006633;">tcp</span>.<span style="color: #006633;">ReplicationValve</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>ReplicationValve.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">347</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">connector</span>.<span style="color: #006633;">CoyoteAdapter</span>.<span style="color: #006633;">service</span><span style="color: #009900;">&#40;</span>CoyoteAdapter.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">286</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">coyote</span>.<span style="color: #006633;">http11</span>.<span style="color: #006633;">Http11Processor</span>.<span style="color: #006633;">process</span><span style="color: #009900;">&#40;</span>Http11Processor.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">845</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">coyote</span>.<span style="color: #006633;">http11</span>.<span style="color: #006633;">Http11Protocol</span>$Http11ConnectionHandler.<span style="color: #006633;">process</span><span style="color: #009900;">&#40;</span>Http11Protocol.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">583</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">tomcat</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">net</span>.<span style="color: #006633;">JIoEndpoint</span>$Worker.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span>JIoEndpoint.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">447</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">Thread</span>.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Thread</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">637</span><span style="color: #009900;">&#41;</span>
Caused by<span style="color: #339933;">:</span> java.<span style="color: #006633;">sql</span>.<span style="color: #003399;">SQLException</span><span style="color: #339933;">:</span> <span style="color: #003399;">Connection</span> com.<span style="color: #006633;">mysql</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">JDBC4Connection</span>@36fbe6ab is closed.
	<span style="color: #006633;">at</span> org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">tomcat</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">DelegatingConnection</span>.<span style="color: #006633;">checkOpen</span><span style="color: #009900;">&#40;</span>DelegatingConnection.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">354</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">tomcat</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">DelegatingConnection</span>.<span style="color: #006633;">getAutoCommit</span><span style="color: #009900;">&#40;</span>DelegatingConnection.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">304</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">tomcat</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">dbcp</span>.<span style="color: #006633;">PoolingDataSource</span>$PoolGuardConnectionWrapper.<span style="color: #006633;">getAutoCommit</span><span style="color: #009900;">&#40;</span>PoolingDataSource.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">224</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">ConnectionManager</span>.<span style="color: #006633;">isAutoCommit</span><span style="color: #009900;">&#40;</span>ConnectionManager.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">185</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">JDBCContext</span>.<span style="color: #006633;">afterNontransactionalQuery</span><span style="color: #009900;">&#40;</span>JDBCContext.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">239</span><span style="color: #009900;">&#41;</span>
	... <span style="color: #cc66cc;">29</span> more</pre></div></div>

<p>On carefully looking at the exception, we find:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Caused by<span style="color: #339933;">:</span> java.<span style="color: #006633;">sql</span>.<span style="color: #003399;">SQLException</span><span style="color: #339933;">:</span> <span style="color: #003399;">Connection</span> com.<span style="color: #006633;">mysql</span>.<span style="color: #006633;">jdbc</span>.<span style="color: #006633;">JDBC4Connection</span>@36fbe6ab is closed.</pre></div></div>

<p>From the exception its clear that the reason for this exception is that the db connection is closed. Which is in sync with our finding so far, idle server causes this problem.</p>
<p>What happens is, the Database closes the connections since they are inactive. But DBCP &amp; hence hibernate still thinks those connections are active and tries to execute some command on them. This is when an exception is thrown.</p>
<p>We can easily simulate this exception. When everything is running fine, restart your DB and you&#8217;ll see the same exception when you try to access any dynamic page on your site.</p>
<p>On reading <a href="http://commons.apache.org/dbcp/configuration.html" target="_blank">DBCP configuration</a>, I found:</p>
<table>
<tr>
<th class="first">Parameter</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
<tr class="a">
<td>validationQuery</td>
<td></td>
<td>
The SQL query that will be used to validate connections from this pool<br />
before returning them to the caller.  If specified, this query<br />
<strong>MUST</strong> be an SQL SELECT statement that returns at least<br />
one row.
   </td>
</tr>
<tr class="b">
<td>testOnBorrow</td>
<td>true</td>
<td>
      The indication of whether objects will be validated before being<br />
      borrowed from the pool.  If the object fails to validate, it will be<br />
      dropped from the pool, and we will attempt to borrow another.<br />
<strong>NOTE</strong> - for a <code>true</code> value to have any effect,<br />
      the <code>validationQuery</code> parameter must be set to a non-null<br />
      string.
   </td>
</tr>
</table>
<p>Basically testOnBorrow is true by default, which means DBCP will test if the connection is valid (alive) before returning. But to test it, it needs a query using which it would validate the connection. Since in our case we did not specify any value, when hibernate would ask DBCP for a connection, it would just return a connection without testing if its a valid connection before returning. And then the stale connection throws an exception when we try to perform any operation on it. But if the validation query is specified, then DBCP will drop the connection and give us another valid connection. This avoiding this problem.</p>
<p>So the simple solution to this problem is to add a validationQuery to the connection pooling configuration (in our case it was the context.xml file).</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">validationQuery<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;select version();&quot;</span></pre></div></div>

<p>Q.E.D</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/09/could-not-inspect-jdbc-autocommit-mode/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile and Developing Nations</title>
		<link>http://blogs.agilefaqs.com/2010/01/07/agile-and-developing-nations/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/07/agile-and-developing-nations/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 17:09:58 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Distributed Development]]></category>

		<category><![CDATA[CMM]]></category>

		<category><![CDATA[Developing Nations]]></category>

		<category><![CDATA[Lean]]></category>

		<category><![CDATA[out sourcing]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1144</guid>
		<description><![CDATA[Developing nations, which are trying to establish themselves as a IT Destination have to fight against the giants in the out-sourcing world. For many years companies used CMM as a way to get some attention. But CMM is

heavy weight,
expensive to get assessed
does not really fit small companies&#8217; (20-50 people&#8217;s) needs.
Also in the last few years [...]]]></description>
			<content:encoded><![CDATA[<p>Developing nations, which are trying to establish themselves as a IT Destination have to fight against the giants in the out-sourcing world. For many years companies used CMM as a way to get some attention. But CMM is</p>
<ul>
<li>heavy weight,</li>
<li>expensive to get assessed</li>
<li>does not really fit small companies&#8217; (20-50 people&#8217;s) needs.</li>
<li>Also in the last few years CMM has got a pretty bad reputation and hence its not necessarily a great marketing advantage.</li>
</ul>
<p>Considering all this, what do companies do? What is the new shinny thing they should all run after. ..ta..da&#8230; Agile &amp; Lean.</p>
<ul>
<li>More suitable for their needs,</li>
<li>Some Customers are asking for it</li>
<li>Is also trendy and gives the marketing advantage over the big outsourcing companies.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/07/agile-and-developing-nations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Bengaluru 2010 Conference</title>
		<link>http://blogs.agilefaqs.com/2010/01/04/agile-bengaluru-2010-conference/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/04/agile-bengaluru-2010-conference/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:06:46 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[agileindia]]></category>

		<category><![CDATA[agile_bengaluru_2010]]></category>

		<category><![CDATA[ASCI]]></category>

		<category><![CDATA[Gordon Pask Award]]></category>

		<category><![CDATA[post modern agile]]></category>

		<category><![CDATA[programming with the stars]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1139</guid>
		<description><![CDATA[The Agile Software Community of India (ASCI) is organizing the 2nd Annual Agile Conference in Bengaluru on 22nd and 23rd Jan 2010 named Agile Bengaluru 2010.
For the first time in India, we&#8217;ll have 4 Gordon Pask Award Winners at a single conference:

David Hussman
Jeff Patton
J. B. Rainsberger
And yours truly

The conference theme this year is &#8220;Post-Modern Agile [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://agileindia.org" target="_blank">Agile Software Community of India</a> (ASCI) is organizing the 2nd Annual Agile Conference in Bengaluru on 22nd and 23rd Jan 2010 named <a href="http://www.agileindia.org/agilebengaluru2010/" target="_blank">Agile Bengaluru 2010</a>.</p>
<p>For the first time in India, we&#8217;ll have 4 <a rel="nofollow" href="http://www.agilealliance.org/show/1656" target="_blank">Gordon Pask Award</a> Winners at a single conference:</p>
<ul>
<li><a rel="nofollow" href="http://www.nofluffjuststuff.com/conference/speaker/david_hussman" target="_blank">David Hussman</a></li>
<li><a rel="nofollow" href="http://www.agileproductdesign.com/" target="_blank">Jeff Patton</a></li>
<li><a rel="nofollow" href="http://www.jbrains.ca/services" target="_blank">J. B. Rainsberger</a></li>
<li><a rel="nofollow" href="http://nareshjain.com/" target="_blank">And yours truly</a></li>
</ul>
<p>The conference theme this year is &#8220;<a href="http://blogs.agilefaqs.com/2009/03/17/naked-agile/" target="_self">Post-Modern Agile - Be done with the Dogma</a>&#8220;. The conference is really targeted at Agile practitioners, who want to explore ideas beyond the basic Agile stuff.</p>
<p>Also this year, for the first time, we are hosting the World-famous <a href="http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-programming-with-the-stars.htm" target="_blank">Programming with the Stars</a> contest during the conference.</p>
<p>After the standard proposal submission and review process we have the final conference program published - <a href="http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-program.htm" target="_blank">http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-program.htm</a>.</p>
<p>If you are interested in participating in the conference, hurry up and register for the conference here: <a href="http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-registration" target="_blank">http://www.agileindia.org/agilebengaluru2010/agile-bengaluru-2010-registration.htm</a> We have limited 125 seats total.</p>
<p>Also for those who cannot attend the Bengaluru conference, don&#8217;t worry. We have another conference in Mumbai. Check out: <a href="http://blogs.agilefaqs.com/2010/01/04/agile-mumbai-2010/">Agile Mumbai 2010 Conference</a>.</p>
<p>Please use the <a href="http://twitter.com/#search?q=%23agile_bengaluru_2010" target="_blank">#agile_bengaluru_2010</a> Twitter tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/04/agile-bengaluru-2010-conference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Mumbai 2010 Conference</title>
		<link>http://blogs.agilefaqs.com/2010/01/04/agile-mumbai-2010/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/04/agile-mumbai-2010/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 12:13:11 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Conference]]></category>

		<category><![CDATA[agileindia]]></category>

		<category><![CDATA[agile_mumbai_2010]]></category>

		<category><![CDATA[ASCI]]></category>

		<category><![CDATA[Gordon Pask Award]]></category>

		<category><![CDATA[post modern agile]]></category>

		<category><![CDATA[programming with the stars]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1134</guid>
		<description><![CDATA[The Agile Software Community of India (ASCI) is organizing the 3rd Annual Agile Conference in Mumbai on 16th and 17th Jan 2010 named Agile Mumbai 2010. The conference is hosted by Mukesh Patel School of Technology Management &#38; Engineering, Mumbai.
For the first time in India, we&#8217;ll have 4 Gordon Pask Award Winners at a single [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://agileindia.org" target="_blank">Agile Software Community of India</a> (ASCI) is organizing the 3rd Annual Agile Conference in Mumbai on 16th and 17th Jan 2010 named <a href="http://www.agileindia.org/agilemumbai2010/" target="_blank">Agile Mumbai 2010</a>. The conference is hosted by <a class="link" href="http://www.mpstme-nmims.org/" target="_blank">Mukesh Patel School of Technology Management &amp; Engineering, Mumbai.</a></p>
<p>For the first time in India, we&#8217;ll have 4 <a rel="nofollow" href="http://www.agilealliance.org/show/1656" target="_blank">Gordon Pask Award</a> Winners at a single conference:</p>
<ul>
<li><a rel="nofollow" href="http://www.nofluffjuststuff.com/conference/speaker/david_hussman" target="_blank">David Hussman</a></li>
<li><a rel="nofollow" href="http://www.agileproductdesign.com/" target="_blank">Jeff Patton</a></li>
<li><a rel="nofollow" href="http://www.jbrains.ca/services" target="_blank">J. B. Rainsberger</a></li>
<li><a rel="nofollow" href="http://nareshjain.com/" target="_blank">And yours truly</a></li>
</ul>
<p>The conference theme this year is &#8220;<a href="http://blogs.agilefaqs.com/2009/03/17/naked-agile/" target="_self">Post-Modern Agile - Be done with the Dogma</a>&#8220;. The conference is really targeted at Agile practitioners, who want to explore ideas beyond the basic Agile stuff.</p>
<p>Also this year, for the first time, we are hosting the World-famous <a href="http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-programming-with-the-stars.htm" target="_blank">Programming with the Stars</a> contest during the conference.</p>
<p>After the standard proposal submission and review process we have the final conference program published - <a href="http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-program.htm" target="_blank">http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-program.htm</a>.</p>
<p>If you are interested in participating in the conference, hurry up and register for the conference here: <a href="http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-registration" target="_blank">http://www.agileindia.org/agilemumbai2010/agile-mumbai-2010-registration.htm</a> We have limited 125 seats total.</p>
<p>Also for those who cannot attend the Mumbai conference, don&#8217;t worry. We have another conference coming up in Bengaluru. Check out: <a href="http://blogs.agilefaqs.com/2010/01/04/agile-bengaluru-2010-conference/">Agile Bengaluru 2010 Conference</a>.</p>
<p>Please use the <a href="http://twitter.com/#search?q=%23agile_mumbai_2010" target="_blank">#agile_mumbai_2010</a> Twitter tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/04/agile-mumbai-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>10 Most Read Posts on Managed Chaos in 2009</title>
		<link>http://blogs.agilefaqs.com/2010/01/01/10-most-read-posts-on-managed-chaos-in-2009/</link>
		<comments>http://blogs.agilefaqs.com/2010/01/01/10-most-read-posts-on-managed-chaos-in-2009/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 06:57:30 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Interview Process]]></category>

		<category><![CDATA[Organizational]]></category>

		<category><![CDATA[Planning]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1131</guid>
		<description><![CDATA[
Agile (as practiced today) is the new Waterfall
Naked Agile
Biggest Stinkers
Goodbye Simplicity; I’m Object Obsessed
Want to Pair Program and Concerned about Productivity?
Estimation Considered Harmful
Refactoring Legacy Projects: Scaffolding Technique
Single Responsibility Principle Demystified
Primitive Obsession
Cannot Evaluate a Candidate just based on their Resume

]]></description>
			<content:encoded><![CDATA[<ol>
<li><a href="http://blogs.agilefaqs.com/2009/04/29/agile-as-practiced-today-is-the-new-waterfall/" target="_self">Agile (as practiced today) is the new Waterfall</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/03/17/naked-agile/" target="_self">Naked Agile</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/10/19/biggest-stinkers/" target="_self">Biggest Stinkers</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/10/26/goodbye-simplicity-im-object-obsessed/" target="_self">Goodbye Simplicity; I’m Object Obsessed</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/10/26/want-to-pair-program-and-concerned-about-productivity/" target="_self">Want to Pair Program and Concerned about Productivity?</a></li>
<li><a href="http://blogs.agilefaqs.com/2008/12/25/estimation-considered-harmful/" target="_self">Estimation Considered Harmful</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/05/24/refactoring-legacy-projects-scaffolding-technique/" target="_self">Refactoring Legacy Projects: Scaffolding Technique</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/10/19/single-responsibility-principle-demystified/" target="_self">Single Responsibility Principle Demystified</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/10/20/primitive-obsession/" target="_self">Primitive Obsession</a></li>
<li><a href="http://blogs.agilefaqs.com/2009/05/07/cannot-evaluate-a-candidate-just-based-on-their-resume/" target="_self">Cannot Evaluate a Candidate just based on their Resume</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/01/01/10-most-read-posts-on-managed-chaos-in-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rewrite v/s Refactor Dilemma</title>
		<link>http://blogs.agilefaqs.com/2009/12/22/rewrite-vs-refactor-dilemma/</link>
		<comments>http://blogs.agilefaqs.com/2009/12/22/rewrite-vs-refactor-dilemma/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 18:49:55 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[legacy code]]></category>

		<category><![CDATA[legacy project]]></category>

		<category><![CDATA[over engineering]]></category>

		<category><![CDATA[Refactor-Test Dilemma]]></category>

		<category><![CDATA[resume driven development]]></category>

		<category><![CDATA[thin-sliced hybrid]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1127</guid>
		<description><![CDATA[A lot of developer have a tendency to suggest rewriting legacy code instead of refactoring. Personally I don&#8217;t think one approach is better than the other. Following are the issues/issues one needs to consider with each:
Rewrite:

 Difficultly in coming up with Cost and Time estimate. (Its best to pull some numbers off the hat)
 What [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of developer have a tendency to suggest rewriting legacy code instead of refactoring. Personally I don&#8217;t think one approach is better than the other. Following are the issues/issues one needs to consider with each:</p>
<p>Rewrite:</p>
<ul>
<li> Difficultly in coming up with Cost and Time estimate. (Its best to pull some numbers off the hat)</li>
<li> What if new bugs are introduced during rewrite?</li>
<li> Similarly how do you avoid unintentional behavioral changes?</li>
<li> What is the guarantee that you won&#8217;t end up with the same problems?</li>
<li> How do you get Management buy-in? Let&#8217;s say even if you get Management buy-in, how do you motivate developers to rewrite existing apps?</li>
<li> While rewriting, we&#8217;ll certainly introduce new technologies. How do you deal with problems introduced by new technology?</li>
<li> How to handle change requests during rewrite?</li>
<li> How to avoid not over engineering the solution?</li>
<li> How do you deal with various Political Issues around technology, tools, team, etc.?</li>
<li> How do you avoid Resume Driven Development?</li>
</ul>
<p>Refactor:</p>
<ul>
<li>How do you deal with Refactor-Test Dilemma (Egg and Chicken problem) ?</li>
<li>How do you motivate the existing team to continue and refactor code?</li>
<li>How do you effectively identify the inflection point?</li>
<li>How to avoid big changes (in the name of refactoring) instead of baby steps?</li>
<li>It takes quite a lot of time and effort to understand legacy code</li>
<li>Even while refactoring developers might have a tendency to over engineer (esp. coz most developers conclude that the original developers did not think well and build an extendable solution)</li>
<li>To Refactor effectively it certainly need developers with higher skill-set. Can you find them?</li>
<li>Many times you&#8217;ll run into difficultly in breaking dependencies. How would you deal with it?</li>
</ul>
<p>In my experience a thin-sliced hybrid approach seems to work the best both from technical and business point of view. In a subsequent blog I&#8217;ll explain what I mean by thin-sliced hybrid approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2009/12/22/rewrite-vs-refactor-dilemma/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Towards Continuous Deployment: Zero Downtime WebApp Deployment</title>
		<link>http://blogs.agilefaqs.com/2009/11/24/towards-continuous-deployment-zero-downtime-webapp-deployment/</link>
		<comments>http://blogs.agilefaqs.com/2009/11/24/towards-continuous-deployment-zero-downtime-webapp-deployment/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:30:36 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
		
		<category><![CDATA[Continuous Deployment]]></category>

		<category><![CDATA[Deployment]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[Reverse Proxy]]></category>

		<category><![CDATA[session replication]]></category>

		<category><![CDATA[SSH Tunnel]]></category>

		<category><![CDATA[Web Application]]></category>

		<category><![CDATA[Web Server Cluster]]></category>

		<category><![CDATA[Zero-Downtime Database Deployment]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1121</guid>
		<description><![CDATA[Lets assume you have a simple web application which runs on a web server like tomcat, jetty, IIS or mongrel and is backed by a database. Also lets say you have only one instance of your application running  (non-clustered) in production.
Now you want to deploy your application several times a week. The single biggest issue [...]]]></description>
			<content:encoded><![CDATA[<p>Lets assume you have a simple web application which runs on a web server like tomcat, jetty, IIS or mongrel and is backed by a database. Also lets say you have only one instance of your application running  (non-clustered) in production.</p>
<p>Now you want to deploy your application several times a week. The single biggest issue that gets in the way of continuous deployment is, every time you deploy a new version of your application, you don&#8217;t want a downtime (destroy your user&#8217;s session). In this blog, I&#8217;ll describe how to deploy your applications without interrupting the user.</p>
<p>First time set-up steps:</p>
<ul>
<li>On your local machine set up a web server cluster for session replication and ensure your application works fine in a clustered environment. (Tips on <a href="http://blogs.agilefaqs.com/2009/11/09/setting-up-tomcat-cluster-for-session-replication/" target="_self">setting up a tomcat cluster of session replication</a>). You might want to look at all the objects you are storing in you session and whether they are serializable or not.</li>
<li>On your production server, set up another web server instance. We&#8217;ll call this temp_webserver. Make sure the temp_webserver runs on  a different port than your production server. (In tomcat update the ports in the tomcat/config/server.xml file). Also for now, don&#8217;t enable clustering yet.</li>
<li>In your browser access the temp_webserver (different port) and make sure everything is working as expected. Usually both the port on which the production web server and the temp_webserver is running should be blocked and not accessible directly from any other machine. In such cases, set up an SSH-tunnel on the specified port to access the webapp in your browser. (ssh -L 3333:your.domain.com:web_server_port username@server_ip_or_name). Alternatively you could SSH to the production box and use <a href="http://en.wikipedia.org/wiki/Lynx_%28web_browser%29" target="_blank">Lynx</a> (text browser) to test your webapp.</li>
<li>Now enable clustering on both web servers, start them and make sure the session is replicated. To test session replication, bring up one webserver instance, login, then bring up the other instance, now bring down the first instance and make sure your app does not prompt you to login again. Wait a sec! When you brought down the first server, you get a 404 Page not found. Of course, even though clustering might be working fine, your browser has no way to know about the other instance of web server, which is running on a different port. It expects a webserver on the production server&#8217;s port.</li>
<li>To solve this problem, we&#8217;ll have to set up a <a href="http://en.wikipedia.org/wiki/Reverse_proxy" target="_blank">reverse-proxy server</a> like <a href="http://wiki.nginx.org/Main" target="_blank">Nginx</a> on your production box or any of your other publically accessible server. You will have to configure the reverse proxy server to run on the port on which your web server was running and change your webserver to run on a different (more secure) port. The reverse proxy server will listen on the required port and proxy all web requests to your server. (<a href="http://blogs.agilefaqs.com/wp-content/uploads/2009/11/nginx.conf">sample Nginx Configuration</a>). This will help us start and stop one of our webservers without the user noticing it. Also notice that its a good practice to let your reverse proxy server serve all static content. Its usually a magnitude faster.</li>
<li>After setting up a round robin reverse proxy, you should be able to test your application in a clustered environment.</li>
<li>Once you know your webapp works fine in a clustered env in production, you can change the reverse-proxy configuration to direct all traffic to just your actual production webserver. You can comment out the temp_webserver line to ensure only production webserver is getting all requests. (Every time you make a change to your reverse proxy setting, you&#8217;ll have to reload the configuration or restart the reverse proxy server. Which usually takes a fraction of a second.)</li>
<li>Now un-deploy the application on the temp_webserver and stop the temp_webserver. Everything should continue working as before.</li>
<li>* At each step of this process, its handy to run a battery of functional tests (Selenium or Sahi) to make sure that your application is actually work the way you expect it. Manual testing is not sustainable and scalable.</li>
</ul>
<p>This concludes our initial set-up. We have enabled ourselves to do continuous deployment without interrupting the user.</p>
<p>Note: Even though our web-server is clustered for session replication, we are still using the same database on both instances.</p>
<p>Now lets see what steps we need to take when we want to deploy a new version of our application.</p>
<ul>
<li>FTP the latest web app archive (war) to the production server.</li>
<li>If you have made any Database changes follow Owen&#8217;s advice on <a href="http://exortech.com/blog/2009/02/01/weekly-release-blog-11-zero-downtime-database-deployment/" target="_blank">Zero-Downtime Database Deployment</a>. This will help you upgrade the DB without affecting the existing, running production app.</li>
<li>Next bring up the temp_webserver and deploy the latest web application. In most cases, its just a matter of dropping the web archive in the web apps folder.</li>
<li>Set up a SSH-Proxy from your machine to access the temp_webserver. Run all your smoke tests to make sure the new version of the web-app works fine.</li>
<li>Go back into your reverse proxy configuration and comment out the production webserver line and uncomment the temp_webserver line. Reload/Restart your reverse proxy, now all request should be redirected to temp_webserver. Since your reverse proxy does not hold any state, reloading/restarting it should not make any difference. Also since your sessions are replicated in the cluster, users should see no difference, except that now they are working on the latest version of your web app.</li>
<li>Now undeploy the old version and deploy the latest version of your web app on the production webserver. Bring it up and test it using a SSH_proxy from your local machine.</li>
<li>Once you know the production web-server is up and running on the latest version of your app, comment out the temp_webserver and uncomment the production webserver in the reverse proxy setting . Reload the configuration or restart the reverse proxy. Now all traffic should get redirected to your production web server.</li>
<li>At this point the temp_webserver has done its job. Its time to undeploy the application and stop the temp_webserver.</li>
</ul>
<p>Congrats, you have just upgraded your web application to the latest version without interrupting your users.</p>
<p>Note: All the above steps are very trivial to automate using a script. Because of the speed and accuracy, I would bet all my money on the automated script.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2009/11/24/towards-continuous-deployment-zero-downtime-webapp-deployment/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
