<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Surya Suravarapu's Blog</title><link>http://www.suryasuravarapu.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SuryaSuravarapusBlog" /><description>Ramblings about software development and stuff related</description><language>en</language><lastBuildDate>Fri, 02 Jul 2010 04:58:43 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.0</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SuryaSuravarapusBlog" /><feedburner:info uri="suryasuravarapusblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Ramblings about software development and stuff related</itunes:subtitle><geo:lat>40.089905</geo:lat><geo:long>-75.641249</geo:long><image><link>http://www.feedburner.com</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>This Feed Powered by FeedBurner.com</title></image><feedburner:emailServiceId>SuryaSuravarapusBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>Spawning a Process from Hudson</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/0VYGZVL-8gI/spawning-a-process-from-hudson.html</link><category>Build</category><category>Tools</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Fri, 02 Jul 2010 04:39:59 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=1170</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>It took a little while to figure this out, and hence documenting here ...</p>
<p>Need is to restart JBoss once the artifacts are deployed. I have two different jobs, one for building and deploying artifacts (EAR, in this case) and the other one to restart the server. Former invokes the latter as a part of its post-build actions.</p>
<p>I've setup a build step in <a href="http://hudson-ci.org/">Hudson</a> that executes a shell script which essentially invokes stop and start operations on the server. The server stops fine, but when I start the server in the background, server process gets killed once the Hudson process is finished. I've tried multiple ways of achieving this -- tried a couple of JBoss Maven plugins and tried Ant route too suspecting if that was an issue with my Shell script. But the real problem lies with the way Hudson deals with the spawned processes. This behavior is consistent with their design according to <a href="http://wiki.hudson-ci.org/display/HUDSON/Spawning+processes+from+build">Hudson docs</a>.</p>
<p>The suggested workaround for Unix systems is to use something like <a href="http://bmc.github.com/daemonize/">daemonize</a>. That didn't work for me. Daemonize works fine but the process is still being killed by the Hudson.  [Side note: daemonize is a neat tool, glad that I stumbled on it. Need it for some other purposes].</p>
<p>So how was this resolved? Searching the bug tracker, found the <a href="http://issues.hudson-ci.org/browse/HUDSON-3125">exact issue</a> that I mentioned here. The solution/workaround mentioned there works like a charm. Here is what it says --</p>
<blockquote><p>set the environment variable BUILD_ID to something like 'dontKillMe'  in the<br />
process that should stay alive.</p>
<p>Hudson looks for that environment variable when cleaning up stray  processes.</p></blockquote>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  class="alignleft" title="Hudson-SetEnv-BUILD_ID" src="http://www.suryasuravarapu.com/wp-content/uploads/2010/07/SpawnProcessHudson.jpg" alt="" width="322" height="149" /></p>
<p>SetEnv plugin is already installed on my Hudson server, and setting BUILD_ID variable value worked! May be that Hudson could provide an option on the admin UI for the user to indicate not to kill the intentionally spawned processes.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson&amp;notes=It%20took%20a%20little%20while%20to%20figure%20this%20out%2C%20and%20hence%20documenting%20here%20...%0D%0A%0D%0ANeed%20is%20to%20restart%20JBoss%20once%20the%20artifacts%20are%20deployed.%20I%20have%20two%20different%20jobs%2C%20one%20for%20building%20and%20deploying%20artifacts%20%28EAR%2C%20in%20this%20case%29%20and%20the%20other%20one%20to%20restar" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson&amp;bodytext=It%20took%20a%20little%20while%20to%20figure%20this%20out%2C%20and%20hence%20documenting%20here%20...%0D%0A%0D%0ANeed%20is%20to%20restart%20JBoss%20once%20the%20artifacts%20are%20deployed.%20I%20have%20two%20different%20jobs%2C%20one%20for%20building%20and%20deploying%20artifacts%20%28EAR%2C%20in%20this%20case%29%20and%20the%20other%20one%20to%20restar" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;t=Spawning%20a%20Process%20from%20Hudson" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Spawning%20a%20Process%20from%20Hudson%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;title=Spawning%20a%20Process%20from%20Hudson&amp;annotation=It%20took%20a%20little%20while%20to%20figure%20this%20out%2C%20and%20hence%20documenting%20here%20...%0D%0A%0D%0ANeed%20is%20to%20restart%20JBoss%20once%20the%20artifacts%20are%20deployed.%20I%20have%20two%20different%20jobs%2C%20one%20for%20building%20and%20deploying%20artifacts%20%28EAR%2C%20in%20this%20case%29%20and%20the%20other%20one%20to%20restar" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Spawning%20a%20Process%20from%20Hudson&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;t=Spawning%20a%20Process%20from%20Hudson&amp;s=It%20took%20a%20little%20while%20to%20figure%20this%20out%2C%20and%20hence%20documenting%20here%20...%0D%0A%0D%0ANeed%20is%20to%20restart%20JBoss%20once%20the%20artifacts%20are%20deployed.%20I%20have%20two%20different%20jobs%2C%20one%20for%20building%20and%20deploying%20artifacts%20%28EAR%2C%20in%20this%20case%29%20and%20the%20other%20one%20to%20restar" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F07%2Fspawning-a-process-from-hudson.html&amp;t=Spawning%20a%20Process%20from%20Hudson" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/0VYGZVL-8gI" height="1" width="1"/>]]></content:encoded><description>It took a little while to figure this out, and hence documenting here ... Need is to restart JBoss once the artifacts are deployed. I have two different jobs, one for building and deploying artifacts (EAR, in this case) and the other one to restart the server. Former invokes the latter as a part of [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/07/spawning-a-process-from-hudson.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2010/07/spawning-a-process-from-hudson.html</feedburner:origLink></item><item><title>Terrastore Scala Client</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/0k51DczlILs/terrastore-scala-client.html</link><category>NoSQL</category><category>Scala</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Tue, 01 Jun 2010 04:52:11 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=1156</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>For a while now, I've been an enthusiast following the <a href="http://en.wikipedia.org/wiki/NoSQL">NoSQL movement</a> and during the process drawn towards <a href="http://code.google.com/p/terrastore/">Terrastore</a>. Terrastore is based on <a href="http://www.terracotta.org/">Terracotta</a>, it's a modern document store which provides advanced  scalability and elasticity features without sacrificing consistency. If you haven't heard about Terrastore yet, it's worth checking out.</p>
<p>Sergio Bossa is spearheading the efforts on the project, and he is doing a terrific job at it. I've been in touch with Sergio for a bit and in discussions about how I can contribute to the project. Before jumping into the core aspects of the product I wanted to work on a client implementation so that I can play with Terrastore and understanding some of its intricacies. So I started working on a client implementation in Scala, my language of choice these days.</p>
<p>The client implementation is available at <a href="http://github.com/ssuravarapu/Terrastore-Scala-Client">Github</a>. There are few areas that I would like to tighten up a bit in the code, but it's out there for some early feedback.</p>
<p>I'm certainly excited to get started on the Terrastore core, and working with great minds -- Sergio and Greg Luck, a good friend and guru back from Ehcache days.</p>
<p>[Direct link to <a href="http://github.com/ssuravarapu/Terrastore-Scala-Client">Terrastore-Scala-Client</a> on Github]</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client&amp;notes=For%20a%20while%20now%2C%20I%27ve%20been%20an%20enthusiast%20following%20the%20NoSQL%20movement%20and%20during%20the%20process%20drawn%20towards%20Terrastore.%20Terrastore%20is%20based%20on%20Terracotta%2C%20it%27s%20a%20modern%20document%20store%20which%20provides%20advanced%20%20scalability%20and%20elasticity%20features%20withou" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client&amp;bodytext=For%20a%20while%20now%2C%20I%27ve%20been%20an%20enthusiast%20following%20the%20NoSQL%20movement%20and%20during%20the%20process%20drawn%20towards%20Terrastore.%20Terrastore%20is%20based%20on%20Terracotta%2C%20it%27s%20a%20modern%20document%20store%20which%20provides%20advanced%20%20scalability%20and%20elasticity%20features%20withou" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;t=Terrastore%20Scala%20Client" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Terrastore%20Scala%20Client%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;title=Terrastore%20Scala%20Client&amp;annotation=For%20a%20while%20now%2C%20I%27ve%20been%20an%20enthusiast%20following%20the%20NoSQL%20movement%20and%20during%20the%20process%20drawn%20towards%20Terrastore.%20Terrastore%20is%20based%20on%20Terracotta%2C%20it%27s%20a%20modern%20document%20store%20which%20provides%20advanced%20%20scalability%20and%20elasticity%20features%20withou" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Terrastore%20Scala%20Client&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;t=Terrastore%20Scala%20Client&amp;s=For%20a%20while%20now%2C%20I%27ve%20been%20an%20enthusiast%20following%20the%20NoSQL%20movement%20and%20during%20the%20process%20drawn%20towards%20Terrastore.%20Terrastore%20is%20based%20on%20Terracotta%2C%20it%27s%20a%20modern%20document%20store%20which%20provides%20advanced%20%20scalability%20and%20elasticity%20features%20withou" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F06%2Fterrastore-scala-client.html&amp;t=Terrastore%20Scala%20Client" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/>

<p><b>You may also like:</b><ol><li><a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'>Book Review: Hello World!</a></li>
<li><a href='http://www.suryasuravarapu.com/2010/05/thoughtworks-technology-radar-april-2010.html' rel='bookmark' title='Permanent Link: Thoughtworks Technology Radar (April 2010)'>Thoughtworks Technology Radar (April 2010)</a></li>
<li><a href='http://www.suryasuravarapu.com/2010/04/scala-game-of-life.html' rel='bookmark' title='Permanent Link: Scala: Game of Life'>Scala: Game of Life</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/0k51DczlILs" height="1" width="1"/>]]></content:encoded><description>For a while now, I've been an enthusiast following the NoSQL movement and during the process drawn towards Terrastore. Terrastore is based on Terracotta, it's a modern document store which provides advanced scalability and elasticity features without sacrificing consistency. If you haven't heard about Terrastore yet, it's worth checking out. Sergio Bossa is spearheading the [...]


&lt;b&gt;You may also like:&lt;/b&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'&gt;Book Review: Hello World!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2010/05/thoughtworks-technology-radar-april-2010.html' rel='bookmark' title='Permanent Link: Thoughtworks Technology Radar (April 2010)'&gt;Thoughtworks Technology Radar (April 2010)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2010/04/scala-game-of-life.html' rel='bookmark' title='Permanent Link: Scala: Game of Life'&gt;Scala: Game of Life&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/06/terrastore-scala-client.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2010/06/terrastore-scala-client.html</feedburner:origLink></item><item><title>Thoughtworks Technology Radar (April 2010)</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/tFQkw5T3WtM/thoughtworks-technology-radar-april-2010.html</link><category>General</category><category>Languages</category><category>Tools</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Wed, 12 May 2010 08:59:17 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=997</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Somehow I missed the release of second edition of <a href="http://www.thoughtworks.com/sites/www.thoughtworks.com/files/files/tw-radar-april-2010.pdf">Thoughtworks' technology radar</a> [PDF]. As they did in the inaugural edition they evaluated various techniques, tools, platforms and languages and put them in four <em>buckets</em> -- hold, assess, trial and adopt.</p>
<p>I will jump to the biggest surprise (but something that's consistent with what I'm hearing these days) -- <a href="http://code.google.com/webtoolkit/">GWT</a> is moved back from Assess to Hold status. I used to be a fan of the approach GWT took, mostly coming from my angst towards writing Javascript, and to develop client-side stuff using the language that I'm quite familiar with -- Java.  Although I haven't done enterprise stuff with GWT yet, what I heard was it's not as productive as I was earlier thinking about, and this technology radar points to some of the issues with the generation of Javascript in terms of productivity, troubleshoting, not being able to utilize powerful features of Javascript, and unit testing. I'm not giving up yet on GWT, but would certainly like to hear feedback from the folks who used it in production-grade applications with good success.</p>
<p>As far as languages are concerned -- they are excited about two languages that I'm having great fun with -- <a href="http://www.scala-lang.org/">Scala</a> and <a href="http://clojure.org/">Clojure</a>. I'm fairly convinced that the enterprises sooner than later would evaluate options of using these JVM-based languages than sticking with Java alone. Java as a language is not dead yet (in fact far from it and <em>dead</em> is a too harsh a word), but if the current trend continues in terms of these new breed of JVM languages (coupled with some good customer stories) that day may not be that far off. Other than that in the languages section -- HTML 5 is gaining traction, which is expected.</p>
<p>In the tools category -- <a href="http://restfulie.caelumobjects.com/">Restfulie</a> has got a mention. I think this is pretty significant in the world of REST-based development. Restfulie is an excellent tool to achieve Hypermedia constraint (HATEOAS) of REST, which helps significantly in loose coupling between clients and servers. They said it well -- "<em>It [success of Restufulie] is an emperical proof that the web and the hypermedia can be used to orchestrate complex business activities</em>".</p>
<p>Also in the tools category -- <a href="http://subversion.tigris.org/">Subversion</a> moves back into the Adopt section. It has to be that way all along, in my opinion. I like distributed version control systems (<a href="http://git-scm.com/">Git</a> and <a href="http://mercurial.selenic.com/">Mercurial</a>) a lot but Subversion still has a place in the enterprise. I second their opinion that it's a solid version control system suitable for most teams. New to enter the radar is <a href="https://github.com/">Github</a>, another success story, undoubtedly popularized Git along with their source code hosting and social networking abilities.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29&amp;notes=Somehow%20I%20missed%20the%20release%20of%20second%20edition%20of%20Thoughtworks%27%20technology%20radar%20%5BPDF%5D.%20As%20they%20did%20in%20the%20inaugural%20edition%20they%20evaluated%20various%20techniques%2C%20tools%2C%20platforms%20and%20languages%20and%20put%20them%20in%20four%20buckets%20--%20hold%2C%20assess%2C%20trial%20and%20ado" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29&amp;bodytext=Somehow%20I%20missed%20the%20release%20of%20second%20edition%20of%20Thoughtworks%27%20technology%20radar%20%5BPDF%5D.%20As%20they%20did%20in%20the%20inaugural%20edition%20they%20evaluated%20various%20techniques%2C%20tools%2C%20platforms%20and%20languages%20and%20put%20them%20in%20four%20buckets%20--%20hold%2C%20assess%2C%20trial%20and%20ado" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;t=Thoughtworks%20Technology%20Radar%20%28April%202010%29" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Thoughtworks%20Technology%20Radar%20%28April%202010%29%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;title=Thoughtworks%20Technology%20Radar%20%28April%202010%29&amp;annotation=Somehow%20I%20missed%20the%20release%20of%20second%20edition%20of%20Thoughtworks%27%20technology%20radar%20%5BPDF%5D.%20As%20they%20did%20in%20the%20inaugural%20edition%20they%20evaluated%20various%20techniques%2C%20tools%2C%20platforms%20and%20languages%20and%20put%20them%20in%20four%20buckets%20--%20hold%2C%20assess%2C%20trial%20and%20ado" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Thoughtworks%20Technology%20Radar%20%28April%202010%29&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;t=Thoughtworks%20Technology%20Radar%20%28April%202010%29&amp;s=Somehow%20I%20missed%20the%20release%20of%20second%20edition%20of%20Thoughtworks%27%20technology%20radar%20%5BPDF%5D.%20As%20they%20did%20in%20the%20inaugural%20edition%20they%20evaluated%20various%20techniques%2C%20tools%2C%20platforms%20and%20languages%20and%20put%20them%20in%20four%20buckets%20--%20hold%2C%20assess%2C%20trial%20and%20ado" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F05%2Fthoughtworks-technology-radar-april-2010.html&amp;t=Thoughtworks%20Technology%20Radar%20%28April%202010%29" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/tFQkw5T3WtM" height="1" width="1"/>]]></content:encoded><description>Somehow I missed the release of second edition of Thoughtworks' technology radar [PDF]. As they did in the inaugural edition they evaluated various techniques, tools, platforms and languages and put them in four buckets -- hold, assess, trial and adopt. I will jump to the biggest surprise (but something that's consistent with what I'm hearing [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/05/thoughtworks-technology-radar-april-2010.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><enclosure url="http://www.thoughtworks.com/sites/www.thoughtworks.com/files/files/tw-radar-april-2010.pdf" length="1674276" type="application/pdf" /><media:content url="http://www.thoughtworks.com/sites/www.thoughtworks.com/files/files/tw-radar-april-2010.pdf" fileSize="1674276" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Somehow I missed the release of second edition of Thoughtworks' technology radar [PDF]. As they did in the inaugural edition they evaluated various techniques, tools, platforms and languages and put them in four buckets -- hold, assess, trial and adopt. I</itunes:subtitle><itunes:summary>Somehow I missed the release of second edition of Thoughtworks' technology radar [PDF]. As they did in the inaugural edition they evaluated various techniques, tools, platforms and languages and put them in four buckets -- hold, assess, trial and adopt. I will jump to the biggest surprise (but something that's consistent with what I'm hearing [...]</itunes:summary><itunes:keywords>General, Languages, Tools</itunes:keywords><feedburner:origLink>http://www.suryasuravarapu.com/2010/05/thoughtworks-technology-radar-april-2010.html</feedburner:origLink></item><item><title>Scala: Game of Life</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/E0KFlYMiQq8/scala-game-of-life.html</link><category>Scala</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Wed, 07 Apr 2010 07:13:30 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=1072</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I'm trying to write as many small programs as possible on my way to learn Scala. Along the lines, <a href="http://blog.dhananjaynene.com">Dhananjay Nene</a> suggested that <a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway's Game of Life</a> is a good one to implement. So here is an implementation, feel free to critique.</p>
<p>I tried to write it in a more functional way but you would surely see an overlap of imperative programming style (having worked with Java for over a decade now).</p>
<h3>Rules of the game</h3>
<p><small>[Reproduced from the same Wikipedia article linked above]</small></p>
<blockquote><p>The universe of the Game of Life is an infinite two-dimensional <a title="Orthogonal" href="http://en.wikipedia.org/wiki/Orthogonal">orthogonal</a> grid of square <em>cells</em>, each of  which is in one of two possible states, <em>live</em> or <em>dead</em>.  Every cell interacts with its eight <em><a title="Moore  neighborhood" href="http://en.wikipedia.org/wiki/Moore_neighborhood">neighbors</a></em>, which are the cells that are directly  horizontally, vertically, or diagonally adjacent. At each step in time,  the following transitions occur:</p>
<ol>
<li>Any live cell with fewer than two live neighbours dies, as if caused  by underpopulation.</li>
<li>Any live cell with more than three live neighbours dies, as if by  overcrowding.</li>
<li>Any live cell with two or three live neighbours lives on to the next  generation.</li>
<li>Any dead cell with exactly three live neighbours becomes a live  cell.</li>
</ol>
<p>The initial pattern constitutes the <em>seed</em> of the system. The  first generation is created by applying the above rules simultaneously  to every cell in the seed—births and deaths happen simultaneously, and  the discrete moment at which this happens is sometimes called a <em>tick</em> (in other words, each generation is a pure function of the one before).  The rules continue to be applied repeatedly to create further  generations.</p></blockquote>
<h3>Code</h3>
<p>Hopefully self explanatory <img src='http://www.suryasuravarapu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Game of Life</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="scala"><ol><li class="li1"><div class="de1"><a href="http://scala-lang.org"><span class="kw1">object</span></a> GameOfLife <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">  <a href="http://scala-lang.org"><span class="kw1">def</span></a> buildBoard<span class="br0">&#40;</span>liveCells:List<span class="br0">&#91;</span>Tuple2<span class="br0">&#91;</span>Int, Int<span class="br0">&#93;</span><span class="br0">&#93;</span>, sideWidth:Int<span class="br0">&#41;</span>:Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <a href="http://scala-lang.org"><span class="kw1">val</span></a> board = <a href="http://scala-lang.org"><span class="kw1">new</span></a> Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#40;</span>sideWidth, sideWidth<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    liveCells foreach <span class="br0">&#40;</span>arg =&gt; board<span class="br0">&#40;</span>arg._1<span class="br0">&#41;</span><span class="br0">&#40;</span>arg._2<span class="br0">&#41;</span> = <a href="http://scala-lang.org"><span class="kw1">true</span></a><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    board</div></li><li class="li1"><div class="de1">  <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">  <a href="http://scala-lang.org"><span class="kw1">def</span></a> generationalChange<span class="br0">&#40;</span>board:Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>:Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <a href="http://scala-lang.org"><span class="kw1">val</span></a> newBoard = <a href="http://scala-lang.org"><span class="kw1">new</span></a> Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#40;</span>board.<span class="me1">length</span>, board.<span class="me1">length</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    <a href="http://scala-lang.org"><span class="kw1">for</span></a> <span class="br0">&#40;</span>row &lt; - <span class="nu0">0</span> until board.<span class="me1">length</span>; col &lt;- <span class="nu0">0</span> until board.<span class="me1">length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">      <a href="http://scala-lang.org"><span class="kw1">val</span></a> lives = computeLives<span class="br0">&#40;</span>board, row, col<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">      newBoard<span class="br0">&#40;</span>row<span class="br0">&#41;</span><span class="br0">&#40;</span>col<span class="br0">&#41;</span> = <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>lives == <span class="nu0">3</span> &amp;&amp; !board<span class="br0">&#40;</span>row<span class="br0">&#41;</span><span class="br0">&#40;</span>col<span class="br0">&#41;</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">true</span></a></div></li><li class="li1"><div class="de1">        <a href="http://scala-lang.org"><span class="kw1">else</span></a> <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="br0">&#40;</span>lives &lt;= <span class="nu0">1</span> || lives &gt;= <span class="nu0">4</span><span class="br0">&#41;</span> &amp;&amp; board<span class="br0">&#40;</span>row<span class="br0">&#41;</span><span class="br0">&#40;</span>col<span class="br0">&#41;</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">false</span></a></div></li><li class="li1"><div class="de1">        <a href="http://scala-lang.org"><span class="kw1">else</span></a> board<span class="br0">&#40;</span>row<span class="br0">&#41;</span><span class="br0">&#40;</span>col<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    newBoard</div></li><li class="li1"><div class="de1">  <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">  <a href="http://scala-lang.org"><span class="kw1">def</span></a> computeLives<span class="br0">&#40;</span>board:Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span>, currentRow:Int, currentColumn:Int<span class="br0">&#41;</span>:Int = <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <a href="http://scala-lang.org"><span class="kw1">var</span></a> lives:Int = <span class="nu0">0</span></div></li><li class="li1"><div class="de1">    <a href="http://scala-lang.org"><span class="kw1">for</span></a> <span class="br0">&#40;</span>i &lt; - Math.<span class="me1">max</span><span class="br0">&#40;</span><span class="nu0">0</span>, currentRow - <span class="nu0">1</span><span class="br0">&#41;</span> to Math.<span class="me1">min</span><span class="br0">&#40;</span>board.<span class="me1">length</span> - <span class="nu0">1</span>, currentRow + <span class="nu0">1</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">         j &lt;- Math.<span class="me1">max</span><span class="br0">&#40;</span><span class="nu0">0</span>, currentColumn - <span class="nu0">1</span><span class="br0">&#41;</span> to Math.<span class="me1">min</span><span class="br0">&#40;</span>board.<span class="me1">length</span> - <span class="nu0">1</span>, currentColumn + <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">      <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="br0">&#40;</span>i != currentRow || j != currentColumn<span class="br0">&#41;</span> &amp;&amp; board<span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#40;</span>j<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">          lives += <span class="nu0">1</span></div></li><li class="li1"><div class="de1">      <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    lives</div></li><li class="li1"><div class="de1">  <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">  <a href="http://scala-lang.org"><span class="kw1">def</span></a> printBoard<span class="br0">&#40;</span>board:Array<span class="br0">&#91;</span>Array<span class="br0">&#91;</span>Boolean<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> = <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    println</div></li><li class="li1"><div class="de1">    board.<span class="me1">foreach</span> <span class="br0">&#123;</span>i =&gt;</div></li><li class="li1"><div class="de1">      i.<span class="me1">foreach</span> <span class="br0">&#123;</span> j =&gt;</div></li><li class="li1"><div class="de1">        <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>j<span class="br0">&#41;</span> print<span class="br0">&#40;</span><span class="st0">&quot;*&quot;</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">else</span></a> print<span class="br0">&#40;</span><span class="st0">&quot;.&quot;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">      <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">      println</div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">  <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<h3>Test</h3>
<p>Let's pass in live cell coordinates and board size to mimic the behavior of Oscillators (Beacon) pattern. See image below:</p>
<p><img class="alignnone" title="Game_of_life_beacon" src="http://upload.wikimedia.org/wikipedia/en/1/1c/Game_of_life_beacon.gif" alt="" width="98" height="98" /></p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Test it!</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.suryasuravarapu.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="scala"><a href="http://scala-lang.org"><span class="kw1">def</span></a> main<span class="br0">&#40;</span>args: Array<span class="br0">&#91;</span>String<span class="br0">&#93;</span><span class="br0">&#41;</span> = <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">var</span></a> board = buildBoard<span class="br0">&#40;</span>List<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">1</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">1</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="nu0">3</span>,<span class="nu0">4</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="nu0">4</span>,<span class="nu0">3</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="nu0">4</span>,<span class="nu0">4</span><span class="br0">&#41;</span><span class="br0">&#41;</span>, <span class="nu0">6</span><span class="br0">&#41;</span>
    printBoard<span class="br0">&#40;</span>board<span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">for</span></a> <span class="br0">&#40;</span>period &lt;- <span class="nu0">1</span> to <span class="nu0">2</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
      board = generationalChange<span class="br0">&#40;</span>board<span class="br0">&#41;</span>
      printBoard<span class="br0">&#40;</span>board<span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span></pre></div></div>
<h3>Output</h3>
<p>A dot (.) represents an empty cell and a star (*) represents a live cell.  Initial, generation 1 and generation 2 in that order below:</p>
<pre>......
.**...
.*....
....*.
...**.
......

......
.**...
.**...
...**.
...**.
......

......
.**...
.*....
....*.
...**.
......</pre>
<p><small>[Image courtesy: <a href="http://en.wikipedia.org/wiki/File:Game_of_life_beacon.gif" rel="lightbox[1072]">wikipedia</a>]</small></p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life&amp;notes=I%27m%20trying%20to%20write%20as%20many%20small%20programs%20as%20possible%20on%20my%20way%20to%20learn%20Scala.%20Along%20the%20lines%2C%20Dhananjay%20Nene%20suggested%20that%20Conway%27s%20Game%20of%20Life%20is%20a%20good%20one%20to%20implement.%20So%20here%20is%20an%20implementation%2C%20feel%20free%20to%20critique.%0D%0A%0D%0AI%20tried%20to%20write" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life&amp;bodytext=I%27m%20trying%20to%20write%20as%20many%20small%20programs%20as%20possible%20on%20my%20way%20to%20learn%20Scala.%20Along%20the%20lines%2C%20Dhananjay%20Nene%20suggested%20that%20Conway%27s%20Game%20of%20Life%20is%20a%20good%20one%20to%20implement.%20So%20here%20is%20an%20implementation%2C%20feel%20free%20to%20critique.%0D%0A%0D%0AI%20tried%20to%20write" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;t=Scala%3A%20Game%20of%20Life" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Scala%3A%20Game%20of%20Life%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;title=Scala%3A%20Game%20of%20Life&amp;annotation=I%27m%20trying%20to%20write%20as%20many%20small%20programs%20as%20possible%20on%20my%20way%20to%20learn%20Scala.%20Along%20the%20lines%2C%20Dhananjay%20Nene%20suggested%20that%20Conway%27s%20Game%20of%20Life%20is%20a%20good%20one%20to%20implement.%20So%20here%20is%20an%20implementation%2C%20feel%20free%20to%20critique.%0D%0A%0D%0AI%20tried%20to%20write" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Scala%3A%20Game%20of%20Life&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;t=Scala%3A%20Game%20of%20Life&amp;s=I%27m%20trying%20to%20write%20as%20many%20small%20programs%20as%20possible%20on%20my%20way%20to%20learn%20Scala.%20Along%20the%20lines%2C%20Dhananjay%20Nene%20suggested%20that%20Conway%27s%20Game%20of%20Life%20is%20a%20good%20one%20to%20implement.%20So%20here%20is%20an%20implementation%2C%20feel%20free%20to%20critique.%0D%0A%0D%0AI%20tried%20to%20write" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F04%2Fscala-game-of-life.html&amp;t=Scala%3A%20Game%20of%20Life" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/E0KFlYMiQq8" height="1" width="1"/>]]></content:encoded><description>I'm trying to write as many small programs as possible on my way to learn Scala. Along the lines, Dhananjay Nene suggested that Conway's Game of Life is a good one to implement. So here is an implementation, feel free to critique. I tried to write it in a more functional way but you would [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/04/scala-game-of-life.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2010/04/scala-game-of-life.html</feedburner:origLink></item><item><title>Greg Luck’s Ehcache Presentation</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/nh0UC9Q4wGI/greg-lucks-ehcache-presentation.html</link><category>Caching</category><category>Ehcache</category><category>JavaUserGroup</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Mon, 15 Mar 2010 08:08:38 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=1021</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Few days ago, at Philly JUG, <a href="http://gregluck.com">Greg Luck</a> (CTO <a href="http://ehcache.org/">Ehcache</a> at <a href="http://terracotta.org/">Terracotta</a>) spoke about Ehcache and Terracotta. The event was attended by over 100 professionals in the area.</p>
<h3>History</h3>
<p>Greg started off with a brief history on the progress of Ehcache over the years [I still remember those early conversations that I had with Greg about 5 years ago when I first contributed to the project]. The project was never static, in fact far from it, there has been a steady progress from the stage where it was simple-yet-powerful standalone cache to a well-implemented extensible distributed framework.</p>
<p>In the early stages, Greg was not too keen on building a distributed cache. Once the goal of getting out a great standalone cache was achieved, and that coupled with contributions from various people (and feature requests) the quest towards distributed cache began. This post <a href="http://gregluck.com/blog/archives/2006/01/ehcache-goes-distributed/">Ehcache goes distributed</a> on his blog explains the thought process of that time quite well.</p>
<p>Founded in 2003 as a fork of one of the other open source caching frameworks (Apache JCS). It progressed steadily with additions like <a href="http://ehcache.org/documentation/hibernate.html">Hibernate integration</a>, <a href="http://ehcache.org/documentation/web_caching.html">web caching</a>, <a href="http://ehcache.org/documentation/distributed_caching.html">distributed caching</a>, <a href="http://ehcache.org/documentation/cache_server.html">Cache Server</a> with REST and SOAP services. Terracotta acquired Ehcache in 2009.</p>
<h3>Ehcache Configuration and Performance</h3>
<p>Greg explained the basic configuration of Ehcache using Spring's Pet Clinic as an example -- configuring Hibernate and using Ehcache as the second-level cache. He went over configuration options and about the cache eviction algorithms.</p>
<p>I think the performance discussion evoked quite a bit of interest in the audience (well, who doesn't like talking about benchmarks and pretty charts! <img src='http://www.suryasuravarapu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) Arguably, Ehcache is the one of the best out there, in terms of performance. If you want to know more about the tests check out the <a href="https://svn.terracotta.org/repo/forge/ projects/ehcacheperf/">source code</a> yourself (requires Terracotta user account to browse that repository, registration is free).</p>
<p>Here are a few performance figures from the presentation, showing Ehcache's superiority in terms of performance. The speaker also demonstrated the performance figures of Hibernate read and write with Ehcache as the second-level cache (not shown below). Tests were performed in a cluster of 8 client JVMs (1.75G heap), 1  Terracotta server (6G heap) and using MySql</p>
<p><strong>Get (Read) and Put (Write) performance charts below:</strong></p>
<p><a href="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-get-perf.jpg" rel="lightbox[1021]"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  class="size-medium wp-image-1031 alignleft" title="ehcache-get-perf" src="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-get-perf-300x294.jpg" alt="" width="300" height="294" /></a></p>
<p style="text-align: center;"><a href="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-put-perf.jpg" rel="lightbox[1021]"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="size-medium wp-image-1030 aligncenter" title="ehcache-put-perf" src="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-put-perf-262x300.jpg" alt="" width="262" height="300" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;"><strong>Ehcache in-process vs Memcached:</strong></p>
<p><a href="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-inprocess-memcached-perf.jpg" rel="lightbox[1021]"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  class="size-medium wp-image-1032 alignleft" title="ehcache-inprocess-memcached-perf" src="http://www.suryasuravarapu.com/wp-content/uploads/2010/03/ehcache-inprocess-memcached-perf-300x162.jpg" alt="" width="300" height="162" /></a>Ehcache in-process has to be faster than Memcached. If not for anything, the basic setup of in-process should have an upper hand over the serialization and network overhead for the Memcached setup. I'd be more interested in more apples-to-apples comparison of Ehcache server (REST-based) vs Memcached. Mentioned that to Greg and I'm sure he is on to it next ...</p>
<div><strong>Performance conclusions:</strong></div>
<div>After App servers and DBs tuned by the independent 3rd parties -- there is <strong>30-95%</strong> reduction in database load, improved <strong>80 times</strong> the read-only performance of MySQL, and notably lower latency.</div>
<h3>Ehcache Monitor</h3>
<div>Greg demonstrated Ehcache Monitor, a console application for management and monitoring of caches. Couple of main goals of this tool are tuning cache usage and detecting errors. It provides information about Cache hit ratios, hit/miss rates, hits on the database, detailed efficiency of cache regions. It also has some administrative capabilities that I still have to explore. The tool is still in beta, but looks promising. Read more about it <a href="http://ehcache.org/documentation/monitor.html">here</a>.</div>
<h3>New Features in Ehcache 2.0</h3>
<ul>
<li>Hibernate 3.3+ caching API: New SPI addresses some of the synchronization issues with the previous versions to better suit for the clustered environment.</li>
<li>JTA: From version 2.0, Ehcache acts as an XAResource and participates in JTA transactions. It detects most common transaction managers for various popular application servers.</li>
<li>Write-through and write-behind caching: Version 2.0 introduces write-through and write-behind caching. In write-through pattern -- cache acts as a facade to an underlying resource, and a write to the cache causes write to the resource behind it. In write-behind the concept is pretty much the same but the writes happen in an asynchronous fashion. Read more <a href="http://ehcache.org/documentation/write_through_caching.html">here</a>.</li>
<li>Bulk loading: Greg said this is one of the features that's been requested for a while now. Now 2.0 has the ability to significantly speed up bulk loading into caches using the Terracotta server array. Read more <a href="http://ehcache.org/documentation/bulk_loading.html">here</a>.</li>
</ul>
<h3>Conclusion</h3>
<p>All-in-all I think that was a great session, and as always, I enjoy using Ehcache and the association with the project. I also got a chance to hack some code with Greg while he was here in Philadelphia. Hope to contribute more ...</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation&amp;notes=Few%20days%20ago%2C%20at%20Philly%20JUG%2C%20Greg%20Luck%20%28CTO%20Ehcache%20at%20Terracotta%29%20spoke%20about%20Ehcache%20and%20Terracotta.%20The%20event%20was%20attended%20by%20over%20100%20professionals%20in%20the%20area.%0D%0AHistory%0D%0AGreg%20started%20off%20with%20a%20brief%20history%20on%20the%20progress%20of%20Ehcache%20over%20the%20y" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation&amp;bodytext=Few%20days%20ago%2C%20at%20Philly%20JUG%2C%20Greg%20Luck%20%28CTO%20Ehcache%20at%20Terracotta%29%20spoke%20about%20Ehcache%20and%20Terracotta.%20The%20event%20was%20attended%20by%20over%20100%20professionals%20in%20the%20area.%0D%0AHistory%0D%0AGreg%20started%20off%20with%20a%20brief%20history%20on%20the%20progress%20of%20Ehcache%20over%20the%20y" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;t=Greg%20Luck%27s%20Ehcache%20Presentation" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Greg%20Luck%27s%20Ehcache%20Presentation%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;title=Greg%20Luck%27s%20Ehcache%20Presentation&amp;annotation=Few%20days%20ago%2C%20at%20Philly%20JUG%2C%20Greg%20Luck%20%28CTO%20Ehcache%20at%20Terracotta%29%20spoke%20about%20Ehcache%20and%20Terracotta.%20The%20event%20was%20attended%20by%20over%20100%20professionals%20in%20the%20area.%0D%0AHistory%0D%0AGreg%20started%20off%20with%20a%20brief%20history%20on%20the%20progress%20of%20Ehcache%20over%20the%20y" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Greg%20Luck%27s%20Ehcache%20Presentation&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;t=Greg%20Luck%27s%20Ehcache%20Presentation&amp;s=Few%20days%20ago%2C%20at%20Philly%20JUG%2C%20Greg%20Luck%20%28CTO%20Ehcache%20at%20Terracotta%29%20spoke%20about%20Ehcache%20and%20Terracotta.%20The%20event%20was%20attended%20by%20over%20100%20professionals%20in%20the%20area.%0D%0AHistory%0D%0AGreg%20started%20off%20with%20a%20brief%20history%20on%20the%20progress%20of%20Ehcache%20over%20the%20y" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F03%2Fgreg-lucks-ehcache-presentation.html&amp;t=Greg%20Luck%27s%20Ehcache%20Presentation" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/>

<p><b>You may also like:</b><ol><li><a href='http://www.suryasuravarapu.com/2009/10/javas-http-handler-and-cache-validation-issues.html' rel='bookmark' title='Permanent Link: Java&#8217;s HTTP Handler and Cache Validation Issues'>Java&#8217;s HTTP Handler and Cache Validation Issues</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/nh0UC9Q4wGI" height="1" width="1"/>]]></content:encoded><description>Few days ago, at Philly JUG, Greg Luck (CTO Ehcache at Terracotta) spoke about Ehcache and Terracotta. The event was attended by over 100 professionals in the area. History Greg started off with a brief history on the progress of Ehcache over the years [I still remember those early conversations that I had with Greg [...]


&lt;b&gt;You may also like:&lt;/b&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2009/10/javas-http-handler-and-cache-validation-issues.html' rel='bookmark' title='Permanent Link: Java&amp;#8217;s HTTP Handler and Cache Validation Issues'&gt;Java&amp;#8217;s HTTP Handler and Cache Validation Issues&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/03/greg-lucks-ehcache-presentation.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2010/03/greg-lucks-ehcache-presentation.html</feedburner:origLink></item><item><title>Pomodoro Technique</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/VocMWHsNHiY/pomodoro-technique.html</link><category>General</category><category>PomodoroTechnique</category><category>Productivity</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Tue, 23 Feb 2010 07:17:13 PST</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=1001</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A decade ago Joel Spolsky wrote an article titled <a href="http://www.joelonsoftware.com/articles/fog0000000068.html">Where do these people get their (unoriginal) ideas</a>. What he has written is common sense and most of us who worked for a few years in a corporate environment would agree with (I'm talking based on my IT background). Although the context of his article is different, the underlying theme is higher productivity, precisely the theme of this post. Joel says --</p>
<blockquote><p>Here's the trouble. We all know that knowledge workers work best by getting into "flow", also known as being "in the zone", where they are fully concentrated on their work and fully tuned out of their environment. They lose track of time and produce great stuff through absolute concentration. This is when they get all of their productive work done. Writers, programmers, scientists, and even basketball players will tell you about being in the zone.</p></blockquote>
<p>He continues ...</p>
<blockquote><p>The other trouble is that it's so easy to get knocked out of the zone. Noise, phone calls, going out for lunch, having to drive 5 minutes to Starbucks for coffee, and interruptions by coworkers -- ESPECIALLY interruptions by coworkers -- all knock you out of the zone. ...</p></blockquote>
<p>As Joel rightly points out in the article getting into that "zone" is not that easy. And once you are in, there are quite a few distractions in a typical corporate environment. Great, if you are lucky and gifted to be get into the zone without much effort. If you are like rest of us, you would be all ears for techniques that improve your productivity.</p>
<p>So an year or so ago, I stumbled on this technique called <a href="http://www.pomodorotechnique.com/">Pomodoro</a>. At the outset it's a simple tracking and feedback process where the unit of work is the pomodoro, a time slot of 25 minutes. The basic principle is to keep you focused enough for specific period of time (in this case: 25 minutes). Here is a <a href="http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf">free e-book</a> [PDF] if you are interested to know more.</p>
<p>This technique helped me quite well in accomplishing some of the tasks I have either been not focusing enough or procrastinating for various reasons.</p>
<p><a href="http://www.infoq.com/news/2010/02/pomodoro-critique">This InfoQ article</a> posed some interesting questions with some counter-arguments from Mario Fusco. Mario compares IT professionals with the professionals from other fields and says --</p>
<blockquote><p>So, why should our work be so different from the former ones? Why do we always think that our work is so special and unique to need a wide set of specific methodologies? Are we professionals or unexperienced kids playing with something bigger then them? I think that, like any other serious professional, I can stay concentrated on what I am doing for hours. I honestly don't need a pomodoro to keep myself focused for just 25 minutes. And if somebody can stay focused for no more than 25 minutes I am afraid that he should really rethink the way he works.</p></blockquote>
<p>To respond to that, I'm not so sure whether there is an apples-to-apples comparison between the professions and type of work performed. The basic goal is to be productive. Regardless which profession you are in, you find your own tools and techniques to accomplish that goal. I would treat this technique or something else as a chance to improve. Certainly with corporate emails, phone calls, and other interruptions it's certainly not easy to concentrate for a good chunk of time and being productive (I'm not even mentioning about Blogs/RSS readers, Twitter, etc.). As I already mentioned, if you think you are already productive and can concentrate quite well (without any new techniques), great, pat on your back.</p>
<p>On the drawbacks-front he says --</p>
<blockquote><p>Said that, in my opinion there are also other important drawbacks in the pomodoro technique. What should I reply to my customer who is calling me, possibly from the other side of the ocean? That I am in the middle of my pomodoro and I can't break it? ...</p></blockquote>
<p>I don't think the technique is that restrictive. Obviously if that call is important you would take it and discard that Pomodoro, attend the urgent task, and get back to Pomodoro when you are ready. Let's not complicate it more than what it is, this is just a way to being more productive cutting down on the distractions. I don't see this as a hindrance to the team work or on your efficiency to deal with more urgent matters.</p>
<p>Have you used Pomodoro technique, how do you like it?</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique&amp;notes=A%20decade%20ago%20Joel%20Spolsky%20wrote%20an%20article%20titled%C2%A0Where%20do%20these%20people%20get%20their%20%28unoriginal%29%20ideas.%20What%20he%20has%20written%20is%20common%20sense%20and%20most%20of%20us%20who%20worked%20for%20a%20few%20years%20in%20a%20corporate%20environment%20would%20agree%20with%20%28I%27m%20talking%20based%20on%20my%20" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique&amp;bodytext=A%20decade%20ago%20Joel%20Spolsky%20wrote%20an%20article%20titled%C2%A0Where%20do%20these%20people%20get%20their%20%28unoriginal%29%20ideas.%20What%20he%20has%20written%20is%20common%20sense%20and%20most%20of%20us%20who%20worked%20for%20a%20few%20years%20in%20a%20corporate%20environment%20would%20agree%20with%20%28I%27m%20talking%20based%20on%20my%20" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;t=Pomodoro%20Technique" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Pomodoro%20Technique%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;title=Pomodoro%20Technique&amp;annotation=A%20decade%20ago%20Joel%20Spolsky%20wrote%20an%20article%20titled%C2%A0Where%20do%20these%20people%20get%20their%20%28unoriginal%29%20ideas.%20What%20he%20has%20written%20is%20common%20sense%20and%20most%20of%20us%20who%20worked%20for%20a%20few%20years%20in%20a%20corporate%20environment%20would%20agree%20with%20%28I%27m%20talking%20based%20on%20my%20" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Pomodoro%20Technique&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;t=Pomodoro%20Technique&amp;s=A%20decade%20ago%20Joel%20Spolsky%20wrote%20an%20article%20titled%C2%A0Where%20do%20these%20people%20get%20their%20%28unoriginal%29%20ideas.%20What%20he%20has%20written%20is%20common%20sense%20and%20most%20of%20us%20who%20worked%20for%20a%20few%20years%20in%20a%20corporate%20environment%20would%20agree%20with%20%28I%27m%20talking%20based%20on%20my%20" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2010%2F02%2Fpomodoro-technique.html&amp;t=Pomodoro%20Technique" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/VocMWHsNHiY" height="1" width="1"/>]]></content:encoded><description>A decade ago Joel Spolsky wrote an article titled Where do these people get their (unoriginal) ideas. What he has written is common sense and most of us who worked for a few years in a corporate environment would agree with (I'm talking based on my IT background). Although the context of his article is different, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2010/02/pomodoro-technique.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><enclosure url="http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf" length="511646" type="application/pdf" /><media:content url="http://www.pomodorotechnique.com/resources/cirillo/ThePomodoroTechnique_v1-3.pdf" fileSize="511646" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>A decade ago Joel Spolsky wrote an article titled Where do these people get their (unoriginal) ideas. What he has written is common sense and most of us who worked for a few years in a corporate environment would agree with (I'm talking based on my IT bac</itunes:subtitle><itunes:summary>A decade ago Joel Spolsky wrote an article titled Where do these people get their (unoriginal) ideas. What he has written is common sense and most of us who worked for a few years in a corporate environment would agree with (I'm talking based on my IT background). Although the context of his article is different, [...]</itunes:summary><itunes:keywords>General, PomodoroTechnique, Productivity</itunes:keywords><feedburner:origLink>http://www.suryasuravarapu.com/2010/02/pomodoro-technique.html</feedburner:origLink></item><item><title>2009 Roundup: Blog, Books and Twitter</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/WpRFqX9gYdQ/2009-roundup-blog-books-and-twitter.html</link><category>Roundup</category><category>BookReview</category><category>Twitter</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Tue, 29 Dec 2009 09:21:02 PST</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=958</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>It's that time of the year to review the progress, and to set the goals for the future. Firstly, I would like to thank all who have (directly or indirectly) helped me learn so much during the past year. It was a fun ride in many ways. In this post I would like to review about three items -- this blog, books that I read, and about my Twitter experience.</p>
<h3>Blog</h3>
<p>I have this blog up for a couple of years but it's in 2009 I've started taking it more seriously. My goal with the blog is straight and simple -- share what I learn, and in turn benefit from the collective wisdom of my readers, friends and fellow bloggers. Towards that effect, 2009 is a satisfactory year.</p>
<p>Here are the top posts of the year --</p>
<ul>
<li><a href="http://www.suryasuravarapu.com/2009/03/rest-crud-with-jax-rs-jersey.html">REST: CRUD with JAX-RS (Jersey)</a> and <a href="http://api.postrank.com/log?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F06%2Frest-crud-with-grails.html">REST: CRUD with Grails</a>: I did a lot of reading on REST this year. That reading along with discussions with some of the best in the industry helped significantly. Towards that effect, I've written two posts on the CRUD aspect -- using JAX-RS and Grails (just to clarify, REST is lot more than CRUD but these posts concentrated on performing CRUD operations using two most exciting frameworks, IMO). You can find all my posts related with REST <a href="http://www.suryasuravarapu.com/tag/rest">here</a>.</li>
<li><a href="http://www.suryasuravarapu.com/2009/04/open-source-software-model-a-positive-sum-game.html">Open Source Software Model - A Positive Sum Game:</a> Blogged about open source software and about a keynote talk that I attended at Philly ETE conference.</li>
<li><a href="http://www.suryasuravarapu.com/2009/05/subversion-ldap-integration-using-apache.html">Subversion: LDAP Integration using Apache:</a> I've achieved a good level of proficiency administering Subversion this year. This post discusses about LDAP integration. [Git is next in the list, look forward to work lot more with it in 2010].</li>
<li><a href="http://www.suryasuravarapu.com/2009/07/jira-plugin-unique-issue-id-across-the-projects.html">Jira Plugin: Unique Issue ID Across the Projects:</a> Developed a Jira plugin that assigns unique identifier to the issues across the projects. Further, <a href="http://www.suryasuravarapu.com/2009/07/jira-plugin-unique-issue-id-with-search-capability.html">this post</a> extends the functionality and make the IDs search-able.</li>
<li><a href="http://www.suryasuravarapu.com/2009/02/career-20-take-control-of-your-life.html">Career 2.0: Take control of your life:</a> Write up of an inspiring talk.</li>
</ul>
<h3>Books</h3>
<p>Regardless of the vast number of resources that are available online, a book is still my preferred choice. A good book helps in learning something new (or reinforce the concepts) in a systematic and a structured manner. A well-written book may not answer all the questions but helps in generating enough enthusiasm for further exploration.</p>
<p>Here is the list of books that I read in 2009. I could have done bit better on this front, but given all the constraints in place this may not be so bad --</p>
<ul>
<li><strong>Groovy in Action:</strong> Groovy has become one of my favorite scripting languages. [<a href="http://www.suryasuravarapu.com/2009/01/book-review-groovy-in-action.html">My review</a>]</li>
<li><strong>Career 2.0:</strong> As the name indicates, a career-oriented book from Pragmatic Bookshelf. [<a href="http://www.suryasuravarapu.com/2009/02/book-review-career-20.html">My review</a>]</li>
<li><strong>Grails in Action:</strong> An excellent book on Grails. [<a href="http://www.suryasuravarapu.com/2009/04/book-review-grails-in-action.html">My review</a>]</li>
<li><strong>Hello World:</strong> A cool book for Python beginners. [<a href="http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html">My review</a>]</li>
<li><strong>The Passionate Programmer:</strong> The title says it all, a great read. [<a href="http://www.suryasuravarapu.com/2009/11/book-review-the-passionate-programmer.html">My review</a>]</li>
<li><strong>RESTful Web Services Cookbook:</strong> Not released yet, scheduled for the first quarter of 2010. I had great fun reading and reviewing this book. Watch out for it, has got <em>delicious</em> recipes for all REST enthusiasts. [<a href="http://oreilly.com/catalog/9780596801694">O'reilly link</a> and <a href="http://my.safaribooksonline.com/9780596809140">Safari online</a>]</li>
</ul>
<p>There are a few more books that I haven't finished reading yet. I will be writing about them soon.</p>
<h3>Twitter</h3>
<p>I've resisted so long to sign-up on Twitter. Primary reason for that resistance was I was not sure how that <em>140-character thing</em> would be transformed into something meaningful. That resistance broke down just over an year ago. 1700 tweets later, I'm here to report how much I learnt via Twitter for the last one year or so.</p>
<p>I use my Twitter account primarily to tweet about software, architecture, programming languages and the stuff related. Feel free to <a href="http://twitter.com/surya_s">follow me</a> there, if you are into it.</p>
<p>There are quite a few geeks out there, Twitter gives a great chance to <em>peek</em> into their thought process. It's also a great place to share the links and articles you are reading. I'm also glad that I gained some great friends and met some of my ex-colleagues with whom I lost touch a little while ago.</p>
<p>It is extremely easy to waste the time and not find any use of Twitter based on how you use it. For me, all that matters is to follow the folks who are willing to share their knowledge, and strictly stick to the passion -- technical topics. You don't see any tweets about what I ate for my lunch, etc. Not that anything wrong with it, I just don't find much value in providing that kind of information.</p>
<h3>Conclusion</h3>
<p>2009 is an year that I'm reasonably satisfied with some of the milestones that I've set out for myself. However, I know there are many more miles to go ...</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter&amp;notes=It%27s%20that%20time%20of%20the%20year%20to%20review%20the%20progress%2C%20and%20to%20set%20the%20goals%20for%20the%20future.%20Firstly%2C%20I%20would%20like%20to%20thank%20all%20who%20have%20%28directly%20or%20indirectly%29%20helped%20me%20learn%20so%20much%20during%20the%20past%20year.%20It%20was%20a%20fun%20ride%20in%20many%20ways.%20In%20this%20post%20I%20" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter&amp;bodytext=It%27s%20that%20time%20of%20the%20year%20to%20review%20the%20progress%2C%20and%20to%20set%20the%20goals%20for%20the%20future.%20Firstly%2C%20I%20would%20like%20to%20thank%20all%20who%20have%20%28directly%20or%20indirectly%29%20helped%20me%20learn%20so%20much%20during%20the%20past%20year.%20It%20was%20a%20fun%20ride%20in%20many%20ways.%20In%20this%20post%20I%20" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;t=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter&amp;annotation=It%27s%20that%20time%20of%20the%20year%20to%20review%20the%20progress%2C%20and%20to%20set%20the%20goals%20for%20the%20future.%20Firstly%2C%20I%20would%20like%20to%20thank%20all%20who%20have%20%28directly%20or%20indirectly%29%20helped%20me%20learn%20so%20much%20during%20the%20past%20year.%20It%20was%20a%20fun%20ride%20in%20many%20ways.%20In%20this%20post%20I%20" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;t=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter&amp;s=It%27s%20that%20time%20of%20the%20year%20to%20review%20the%20progress%2C%20and%20to%20set%20the%20goals%20for%20the%20future.%20Firstly%2C%20I%20would%20like%20to%20thank%20all%20who%20have%20%28directly%20or%20indirectly%29%20helped%20me%20learn%20so%20much%20during%20the%20past%20year.%20It%20was%20a%20fun%20ride%20in%20many%20ways.%20In%20this%20post%20I%20" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2F2009-roundup-blog-books-and-twitter.html&amp;t=2009%20Roundup%3A%20Blog%2C%20Books%20and%20Twitter" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/>

<p><b>You may also like:</b><ol><li><a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'>Book Review: Hello World!</a></li>
<li><a href='http://www.suryasuravarapu.com/2009/11/book-review-the-passionate-programmer.html' rel='bookmark' title='Permanent Link: Book Review: The Passionate Programmer'>Book Review: The Passionate Programmer</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/WpRFqX9gYdQ" height="1" width="1"/>]]></content:encoded><description>It's that time of the year to review the progress, and to set the goals for the future. Firstly, I would like to thank all who have (directly or indirectly) helped me learn so much during the past year. It was a fun ride in many ways. In this post I would like to review [...]


&lt;b&gt;You may also like:&lt;/b&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'&gt;Book Review: Hello World!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2009/11/book-review-the-passionate-programmer.html' rel='bookmark' title='Permanent Link: Book Review: The Passionate Programmer'&gt;Book Review: The Passionate Programmer&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2009/12/2009-roundup-blog-books-and-twitter.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2009/12/2009-roundup-blog-books-and-twitter.html</feedburner:origLink></item><item><title>WebDriver (Selenium 2.0): First Impressions</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/BmlRbEBX5g0/webdriver-selenium-2-0-first-impressions.html</link><category>Testing</category><category>Selenium</category><category>WebDriver</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Wed, 16 Dec 2009 05:49:06 PST</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=916</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I've been using <a href="http://seleniumhq.org/">Selenium</a> and <a href="http://watij.com/">Watij</a> for a while now (more Watij than Selenium). I've written about my prior experiences <a href="http://www.suryasuravarapu.com/2007/10/watij-and-selenium-are-they-ready-for-prime-usage.html">here</a> and <a href="http://www.suryasuravarapu.com/2008/12/test-automation-revisited.html">here</a>. Watij -- there is no significant development happening there for the last year or two. While Selenium Remote Control was nice, its IE support (especially IE 7) was not that great when I last evaluated (it may have improved since then).</p>
<p>I guess on Twitter, I first heard about <a href="http://code.google.com/p/webdriver/">WebDriver</a>, and accolades about its approach and its API design. So decided to give it a try. Best part is Selenium and WebDriver projects are joining forces with a merger in Selenium 2.0. Per my understanding, the plan is to provide both Selenium and WebDriver APIs under Selenium 2.0 umbrella. At the time of writing this post Selenium 2.0a1 (Alpha-release) was out.</p>
<p>So here are my first impressions:</p>
<ul>
<li><strong>Approach:</strong> At the outset WebDriver is similar to Selenium (Remote Control) and Watij -- developer-focused and API-driven. But the best part, for me at least, WebDriver doesn't take the approach of running as a Javascript application within the browser (like Selenium), rather it takes <a href="https://jna.dev.java.net/">JNA </a>approach interacting with the browser. That approach rules out <a href="http://en.wikipedia.org/wiki/Same_origin_policy">same origin issue</a> (a headache with Javascript approach).  Also this doesn't require native libraries installed and registered on the client (e.g: DLLs need to installed on the client for Watij).</li>
<li><strong>API:</strong> API is intuitive. For example, following code snippet finds the element (text box, in this case) by name and simulate the typing by the sendKeys() method.
<pre class="brush: java">
driver.findElement(By.name(&quot;full_name&quot;)).sendKeys(&quot;Joe Schmo&quot;);
</pre>
<p>Similarly,</p>
<pre class="brush: java">
driver.findElement(By.name(&quot;Details&quot;)).click();
</pre>
<p>finds the element (button, in this case) and clicks the button.</li>
<li><strong>Multiple drivers:</strong> Unlike Watij, which only supports IE at this time, WebDriver supports -- IE, Firefox, Chrome, and it also has a HtmlUnit version to run headless.</li>
<li><strong>Window/Frame handling:</strong> This is yet another area where WebDriver excels with a caveat (that I'll get into in a moment). When an operation like a button-click or a hyperlink-click opens a new pop-up browser, WebDriver provides an excellent way to get a handle to the new browser. Following call returns a set of all the window Ids.
<pre class="brush: java">
driver.getWindowHandles()
</pre>
<p>You can iterate over the Set to find which one is your new window and switch to that window for all future operations.</p>
<pre class="brush: java">
driver.switchTo().window(windowName)
</pre>
<p>Windows' handling is quite solid compared to handling of the Frames. In most of the situations it worked except when there are iFrames which load dynamically the behavior is not that consistent.</li>
<li><strong>Wait behavior:</strong> When a particular operation (like a button-click) is underway WebDriver waits for the operation to finish before it executes the next step of the test case. Although this sounds trivial, I've had issues with this while using other tools. In those cases I had to use Thread.sleep() to wait between the page load and the execution of the subsequent step.</li>
<li><strong>Alert Dialog:</strong> Couldn't find a way yet to handle alert dialogs. I have to dig a bit more into the API and forums to see if they are supported at this time.</li>
<li><strong>Mouse Events:</strong> I'd like to see more mouse events -- double click, hover over an element, page scrolling, right click, etc.</li>
</ul>
<p>Are you using WebDriver? What are your thoughts?</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 181px; width: 1px; height: 1px;">
<pre class="prettyprint"><span class="pln">driver</span><span class="pun">.</span><span class="pln">findElement</span><span class="pun">(</span><span class="typ">By</span><span class="pun">.</span><span class="pln">name</span><span class="pun">(</span><span class="str">"q"</span><span class="pun">));</span></pre>
</div>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions&amp;notes=I%27ve%20been%20using%20Selenium%20and%20Watij%20for%20a%20while%20now%20%28more%20Watij%20than%20Selenium%29.%20I%27ve%20written%20about%20my%20prior%20experiences%20here%20and%20here.%20Watij%20--%20there%20is%20no%20significant%20development%20happening%20there%20for%20the%20last%20year%20or%20two.%20While%20Selenium%20Remote%20Control" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions&amp;bodytext=I%27ve%20been%20using%20Selenium%20and%20Watij%20for%20a%20while%20now%20%28more%20Watij%20than%20Selenium%29.%20I%27ve%20written%20about%20my%20prior%20experiences%20here%20and%20here.%20Watij%20--%20there%20is%20no%20significant%20development%20happening%20there%20for%20the%20last%20year%20or%20two.%20While%20Selenium%20Remote%20Control" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;t=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions&amp;annotation=I%27ve%20been%20using%20Selenium%20and%20Watij%20for%20a%20while%20now%20%28more%20Watij%20than%20Selenium%29.%20I%27ve%20written%20about%20my%20prior%20experiences%20here%20and%20here.%20Watij%20--%20there%20is%20no%20significant%20development%20happening%20there%20for%20the%20last%20year%20or%20two.%20While%20Selenium%20Remote%20Control" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;t=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions&amp;s=I%27ve%20been%20using%20Selenium%20and%20Watij%20for%20a%20while%20now%20%28more%20Watij%20than%20Selenium%29.%20I%27ve%20written%20about%20my%20prior%20experiences%20here%20and%20here.%20Watij%20--%20there%20is%20no%20significant%20development%20happening%20there%20for%20the%20last%20year%20or%20two.%20While%20Selenium%20Remote%20Control" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F12%2Fwebdriver-selenium-2-0-first-impressions.html&amp;t=WebDriver%20%28Selenium%202.0%29%3A%20First%20Impressions" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/BmlRbEBX5g0" height="1" width="1"/>]]></content:encoded><description>I've been using Selenium and Watij for a while now (more Watij than Selenium). I've written about my prior experiences here and here. Watij -- there is no significant development happening there for the last year or two. While Selenium Remote Control was nice, its IE support (especially IE 7) was not that great when [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2009/12/webdriver-selenium-2-0-first-impressions.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">11</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2009/12/webdriver-selenium-2-0-first-impressions.html</feedburner:origLink></item><item><title>Book Review: The Passionate Programmer</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/22j1dxjyKh4/book-review-the-passionate-programmer.html</link><category>BookReview</category><category>Career</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Tue, 17 Nov 2009 05:13:28 PST</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=890</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  class="alignleft" title="ThePassionateProgrammer-Cover" src="http://ecx.images-amazon.com/images/I/41fyjTVARFL._SL500_AA240_.jpg" alt="" width="240" height="240" />The Book</h3>
<p><strong>Title:</strong> <a href="http://www.pragprog.com/titles/cfcar2/the-passionate-programmer">The Passionate Programmer</a></p>
<p><strong>Author: </strong>Chad Fowler<strong><br />
</strong></p>
<p><strong>Publisher:</strong> <a href="http://www.pragprog.com/">The Pragmatic Bookshelf</a></p>
<h3>Review</h3>
<p>This is the second edition of the book that was titled as '<em>My Job Went to India (And All I Got Was This Lousy Book): 52 Ways to Save Your Job</em>' in the inaugural edition. As the author admitted in the first few pages of the book, that title gave some impressions that the book is only about how to <em>merely save the job</em>.</p>
<p>The title for the second edition is more apt considering the intent of the author. If you read Andy Hunt's books on Career Development, this book by Chad Fowler falls into the similar genre.</p>
<p>The key emphasis of the book is --</p>
<blockquote><p>Think of your career as if it is the life cycle of a product that you are creating. That product is made up of you and your skills.</p></blockquote>
<h4>From My Notes</h4>
<p>There are a lot of useful tips and sound advice in the book, just want to touch on a few of them --</p>
<p>How to choose a technology stack to work with and how to choose a business domain is discussed. I completely agree with the author's view on how many of us end up doing whatever comes our way. In the author's own words -- "<strong>Our career is one big series of undirected coincidences</strong>".</p>
<p>Fowler says that both ends of the technology adoption curve might prove to be lucrative. I see where he is coming from, although I haven't seen many people intentionally taking up gigs to work on old/outgoing technology. Even the ones who take up such jobs, they are doing so because they can do only that.</p>
<p>These kind of folks they may call themselves specialists, but Fowler says that too many of us seem to believe that <strong>specializing in something simply means not knowing about other things</strong>. A very good case is made in the book why you want to be a generalist and at the same time being a specialist!</p>
<p>Fowler (being a musician in his past life) says it may be a good thing for being the worst guy in every band you are in -- which translates to <strong>work and hang around with people who are smarter than you</strong>. Great advice, I can attest to that from my own experiences, especially from the early phases of my career.</p>
<p>Simply being good at programming alone is not good enough. You ought to make sure that you understand the business domain well enough. Without understanding the business domain is it even possible to do justice to the job -- either making or saving money for the business.</p>
<p>One of the suggestions was to <strong>practice coding and read the open source code to learn new tricks of the trade</strong>. Great advice, but open source community is not immune from bad code, so choose your projects wisely!</p>
<p>There are some execution tips -- productivity boost from do-it-now mentality, push yourself to accomplish something every day, working towards a team goal (your managers' successes are your successes), don't panic. Another important aspect is to question yourself <strong>are you adding enough value to justify your worth</strong>. Author suggests that there will be many opportunities that you can spot if you ask such questions.</p>
<p>Fowler explains why marketing one's skills is important -- <strong>If you kick ass and no one is there to see, did you really kick ass? Who cares? No one</strong>. Perceptions do matter and it's not a wrong thing to manage perceptions. Build your brand (this concept is also explained well in <a href="http://www.suryasuravarapu.com/2009/02/book-review-career-20.html">Career 2.0 book by Jared Richardson</a>. Richardson explains quite well the importance of writing and public speaking activities as a part of brand building).</p>
<h4>Organization</h4>
<p>The book is organized into short chapters under five broad categories / sections -- <strong>Choosing your Market</strong>, <strong>Investing in your Product</strong>, <strong>Executing</strong>, <strong>Marketing</strong>, <strong>Maintaining your Edge</strong>. Each chapter ends with an 'Act on It' section. Author suggests a few items in this part of the chapter on how you can act based on the content discussed. Although they are nice, the real "act on it" is on the readers, coming up with the action items that is more specifically tailored for them.</p>
<p>You may actually finish reading this book in a few hours, perhaps in one sitting. I'd rather suggest taking your time, and go with a cycle similar to:</p>
<p>read_a_chapter --&gt; introspect --&gt; prepare_a_plan [act_on_it, of course]</p>
<h3>Conclusion</h3>
<p>As Chad Fowler suggests, this book isn’t about struggling to maintain the level of mediocrity required not to get fired. It’s about being awesome. <strong>It’s about winning</strong>. I remember Uncle Bob saying -- <strong>you employer is not your mom</strong>. True. You have to make your choices and treat your job as a career, and develop the skills needed to keep you up-to-date. If you are currently looking for some inspiration or not so passionate about your career, then this book is for you.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer&amp;notes=The%20Book%0D%0ATitle%3A%20The%20Passionate%20Programmer%0D%0A%0D%0AAuthor%3A%20Chad%20Fowler%0D%0A%0D%0A%0D%0APublisher%3A%20The%20Pragmatic%20Bookshelf%0D%0AReview%0D%0AThis%20is%20the%20second%20edition%20of%20the%20book%20that%20was%20titled%20as%20%27My%20Job%20Went%20to%20India%20%28And%20All%20I%20Got%20Was%20This%20Lousy%20Book%29%3A%2052%20Ways%20to%20Save%20Yo" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer&amp;bodytext=The%20Book%0D%0ATitle%3A%20The%20Passionate%20Programmer%0D%0A%0D%0AAuthor%3A%20Chad%20Fowler%0D%0A%0D%0A%0D%0APublisher%3A%20The%20Pragmatic%20Bookshelf%0D%0AReview%0D%0AThis%20is%20the%20second%20edition%20of%20the%20book%20that%20was%20titled%20as%20%27My%20Job%20Went%20to%20India%20%28And%20All%20I%20Got%20Was%20This%20Lousy%20Book%29%3A%2052%20Ways%20to%20Save%20Yo" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;t=Book%20Review%3A%20The%20Passionate%20Programmer" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Book%20Review%3A%20The%20Passionate%20Programmer%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;title=Book%20Review%3A%20The%20Passionate%20Programmer&amp;annotation=The%20Book%0D%0ATitle%3A%20The%20Passionate%20Programmer%0D%0A%0D%0AAuthor%3A%20Chad%20Fowler%0D%0A%0D%0A%0D%0APublisher%3A%20The%20Pragmatic%20Bookshelf%0D%0AReview%0D%0AThis%20is%20the%20second%20edition%20of%20the%20book%20that%20was%20titled%20as%20%27My%20Job%20Went%20to%20India%20%28And%20All%20I%20Got%20Was%20This%20Lousy%20Book%29%3A%2052%20Ways%20to%20Save%20Yo" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=Book%20Review%3A%20The%20Passionate%20Programmer&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;t=Book%20Review%3A%20The%20Passionate%20Programmer&amp;s=The%20Book%0D%0ATitle%3A%20The%20Passionate%20Programmer%0D%0A%0D%0AAuthor%3A%20Chad%20Fowler%0D%0A%0D%0A%0D%0APublisher%3A%20The%20Pragmatic%20Bookshelf%0D%0AReview%0D%0AThis%20is%20the%20second%20edition%20of%20the%20book%20that%20was%20titled%20as%20%27My%20Job%20Went%20to%20India%20%28And%20All%20I%20Got%20Was%20This%20Lousy%20Book%29%3A%2052%20Ways%20to%20Save%20Yo" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F11%2Fbook-review-the-passionate-programmer.html&amp;t=Book%20Review%3A%20The%20Passionate%20Programmer" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/>

<p><b>You may also like:</b><ol><li><a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'>Book Review: Hello World!</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/22j1dxjyKh4" height="1" width="1"/>]]></content:encoded><description>The Book Title: The Passionate Programmer Author: Chad Fowler Publisher: The Pragmatic Bookshelf Review This is the second edition of the book that was titled as 'My Job Went to India (And All I Got Was This Lousy Book): 52 Ways to Save Your Job' in the inaugural edition. As the author admitted in the [...]


&lt;b&gt;You may also like:&lt;/b&gt;&lt;ol&gt;&lt;li&gt;&lt;a href='http://www.suryasuravarapu.com/2009/08/book-review-hello-world.html' rel='bookmark' title='Permanent Link: Book Review: Hello World!'&gt;Book Review: Hello World!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2009/11/book-review-the-passionate-programmer.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2009/11/book-review-the-passionate-programmer.html</feedburner:origLink></item><item><title>REST: DELETE operation and tunneling</title><link>http://feedproxy.google.com/~r/SuryaSuravarapusBlog/~3/fDKxLyx2Vx4/rest-delete-operation-and-tunneling.html</link><category>REST</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surya Suravarapu</dc:creator><pubDate>Thu, 22 Oct 2009 07:06:58 PDT</pubDate><guid isPermaLink="false">http://www.suryasuravarapu.com/?p=864</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I was looking at some presentation slides on REST vs SOAP and one of the major drawbacks listed for REST approach is -- lack of ability to use a message body for DELETE operations. I was not sure when I read that, why that would be a drawback.  (Discussion on the listed drawbacks will be a separate post by itself for another day).</p>
<p>A DELETE operation might look something like the following, where 123 is the ID of the customer:</p>
<pre>DELETE /customers/123
Host: example.com</pre>
<p>I was thinking about some use cases where a server might need more information for deletion. Thinking along the lines I <a href="http://twitter.com/surya_s/status/4924011668">tweeted</a> this primarily to contest the presenter's belief that it is such a huge drawback that you use that as a strike against REST-based approach.</p>
<p><a href="http://twitter.com/sallamar">Subbu Allamaraju</a> responded. He says that the the question is a valid one.  Subbu said that:</p>
<blockquote><p>That is a good question. Think of any case where client has to explain why the resource needs to be DELETEd. This is not uncommon.</p></blockquote>
<p>Assuming that's a valid concern I was thinking of ways to do that in a RESTy manner. Only way that I could think of at that point was whether we could use POST and perform DELETE. That sounded to me like tunneling. Tunneling is hiding operations from HTTP. There is no way to know whether the operation is -- <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1">safe</a>, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.2">idempotent</a>, both safe and idempotent, neither safe nor idempotent. </p>
<p>As we continue discussing this on <a href="http://twitter.com/">Twitter</a> I've asked how different this scenario would be from tunneling via GET, something like the following:</p>
<pre>
GET /customer?method=delete&amp;id=123
Host: example.com
</pre>
<p>The above GET is a clear example of tunneling. Similarly, SOAP-way of POST is another good example of tunneling.</p>
<pre>
POST /CustomerService HTTP/1.1
Host: example.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

&lt;?xml version="1.0"?&gt;
&lt;soap:Envelope
 xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"&gt;
    &lt;soap:Body xmlns:m="http://example.com/customer"&gt;
        &lt;m:deleteCustomer&gt;
            &lt;m:id&gt;123&lt;/m:id&gt;
        &lt;/m:deleteCustomer&gt;
    &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;
</pre>
<h3>Approach</h3>
<p>An approach that sounded reasonable: <strong>use POST with a distinct URI when in doubt</strong>. That way you would avoid tunneling by making it a distinct resource. </p>
<pre>
POST /customers/123/deleteme
Host: example.com
Content-type: xxx

[send reasoning to the server why the resource is being deleted in the body]
</pre>
<p>This provides some visibility into the operation, via a URI that conveys the intention.</p>
<p>One downside of this approach is caches will not see the resource being deleted. In spite of that, this approach seems reasonable when you have a specific need to address the use case in question.</p>
<p>Thanks to Subbu for suggesting this approach. Provide your comments if you know of any other approaches.</p>
<p><strong>P.S:</strong> Just one more reason why I like Twitter! Feel free to <a href="http://twitter.com/surya_s">follow me</a> there.</p>



Share and Enjoy:


	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling&amp;notes=I%20was%20looking%20at%20some%20presentation%20slides%20on%20REST%20vs%20SOAP%20and%20one%20of%20the%20major%20drawbacks%20listed%20for%20REST%20approach%20is%20--%20lack%20of%20ability%20to%20use%20a%20message%20body%20for%20DELETE%20operations.%20I%20was%20not%20sure%20when%20I%20read%20that%2C%20why%20that%20would%20be%20a%20drawback.%C2%A0%20%28Dis" title="del.icio.us"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling" title="DZone"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/dzone.png" title="DZone" alt="DZone" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling&amp;bodytext=I%20was%20looking%20at%20some%20presentation%20slides%20on%20REST%20vs%20SOAP%20and%20one%20of%20the%20major%20drawbacks%20listed%20for%20REST%20approach%20is%20--%20lack%20of%20ability%20to%20use%20a%20message%20body%20for%20DELETE%20operations.%20I%20was%20not%20sure%20when%20I%20read%20that%2C%20why%20that%20would%20be%20a%20drawback.%C2%A0%20%28Dis" title="Digg"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling" title="StumbleUpon"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html" title="Technorati"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling" title="Reddit"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;t=REST%3A%20DELETE%20operation%20and%20tunneling" title="Facebook"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=REST%3A%20DELETE%20operation%20and%20tunneling%20-%20http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html" title="Twitter"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;title=REST%3A%20DELETE%20operation%20and%20tunneling&amp;annotation=I%20was%20looking%20at%20some%20presentation%20slides%20on%20REST%20vs%20SOAP%20and%20one%20of%20the%20major%20drawbacks%20listed%20for%20REST%20approach%20is%20--%20lack%20of%20ability%20to%20use%20a%20message%20body%20for%20DELETE%20operations.%20I%20was%20not%20sure%20when%20I%20read%20that%2C%20why%20that%20would%20be%20a%20drawback.%C2%A0%20%28Dis" title="Google Bookmarks"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.friendfeed.com/share?title=REST%3A%20DELETE%20operation%20and%20tunneling&amp;link=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html" title="FriendFeed"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.tumblr.com/share?v=3&amp;u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;t=REST%3A%20DELETE%20operation%20and%20tunneling&amp;s=I%20was%20looking%20at%20some%20presentation%20slides%20on%20REST%20vs%20SOAP%20and%20one%20of%20the%20major%20drawbacks%20listed%20for%20REST%20approach%20is%20--%20lack%20of%20ability%20to%20use%20a%20message%20body%20for%20DELETE%20operations.%20I%20was%20not%20sure%20when%20I%20read%20that%2C%20why%20that%20would%20be%20a%20drawback.%C2%A0%20%28Dis" title="Tumblr"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/tumblr.png" title="Tumblr" alt="Tumblr" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fwww.suryasuravarapu.com%2F2009%2F10%2Frest-delete-operation-and-tunneling.html&amp;t=REST%3A%20DELETE%20operation%20and%20tunneling" title="HackerNews"><img src="http://www.suryasuravarapu.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/SuryaSuravarapusBlog/~4/fDKxLyx2Vx4" height="1" width="1"/>]]></content:encoded><description>I was looking at some presentation slides on REST vs SOAP and one of the major drawbacks listed for REST approach is -- lack of ability to use a message body for DELETE operations. I was not sure when I read that, why that would be a drawback.  (Discussion on the listed drawbacks will be [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.suryasuravarapu.com/2009/10/rest-delete-operation-and-tunneling.html/feed</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><feedburner:origLink>http://www.suryasuravarapu.com/2009/10/rest-delete-operation-and-tunneling.html</feedburner:origLink></item><media:rating>nonadult</media:rating></channel></rss>
