<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8714568</id><updated>2011-12-15T08:24:37.300+05:30</updated><category term='startup'/><category term='freemium'/><category term='Google Analytics'/><category term='Andrew Chen'/><category term='User Feedback'/><category term='Dimdim'/><category term='ecommerce applications and web systems'/><category term='Funnel Visualization'/><category term='lifetime value'/><category term='ecommerce accounting system'/><category term='Brad Feld'/><category term='Yahoo Web Analytics Scenario analysis'/><title type='text'>techGossip</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8714568.post-6092119126758358560</id><published>2009-09-23T00:54:00.000+05:30</published><updated>2009-09-23T00:54:28.196+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce accounting system'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo Web Analytics Scenario analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='Funnel Visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='ecommerce applications and web systems'/><title type='text'>Google Analytics Funnel Visualization Issue</title><content type='html'>Google Analytics has a visually appealing Funnel Visualization feature which is very useful for ecommerce applications and web systems especially for an ecommerce accounting system. It is much more visually appealing than Yahoo Web Analytics Scenario analysis feature.&amp;nbsp; But as we dig deeper into this tool we keep finding &lt;a href="http://techgossip.blogspot.com/2009/09/google-analytics-site-overview-issues.html"&gt;more and more problems&lt;/a&gt;. The latest problem we found is that when the rules of the Goal definitions are changed they dont operate on historical data but on new data only and that too after couple of hours. There is no way around this problem. Also as &lt;a href="http://www.kaushik.net/avinash/2008/07/google-analytics-help-questions-answers-tips-ideas-suggestions.html"&gt;Avinash says:&lt;/a&gt; " if you set up a funnel today and a month later you remove a step, or add a step, then that change is only going forward. It is important to make a note of it." This basically makes this feature of the tool unusable for most realistic scnearios.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-6092119126758358560?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/6092119126758358560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=6092119126758358560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/6092119126758358560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/6092119126758358560'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2009/09/google-analytics-funnel-visualization.html' title='Google Analytics Funnel Visualization Issue'/><author><name>sundar</name><uri>http://www.blogger.com/profile/01750999892557457782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-5811512440003209530</id><published>2009-09-17T18:29:00.001+05:30</published><updated>2009-09-17T18:32:12.201+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimdim'/><category scheme='http://www.blogger.com/atom/ns#' term='User Feedback'/><title type='text'>Google Analytics Site Overview issues:  Subdomains and HTTPS</title><content type='html'>On the &lt;a href="http://dimdim.com/"&gt;dimdim.com&lt;/a&gt; website you will see that the Orange button on the top takes one to a subdomain behind HTTPS. This means that when I see the Site Overlay for Dimdim on Google Analytics I don't see any information on clicks which took users to this crucial signup page. The surprising part is that this is a well known and documented problem.&lt;a href="http://www.google.com/support/analytics/bin/answer.py?hl=en&amp;amp;answer=66982"&gt; Google knows about this and has not solved the issue.&lt;/a&gt; I guess one of the ways one can win over Google is to &lt;a href="http://blog.dimdim.com/2006/12/decisions_by_co.html"&gt;make a product where the features are prioritized taking the customer feedback into account.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-5811512440003209530?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/5811512440003209530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=5811512440003209530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/5811512440003209530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/5811512440003209530'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2009/09/google-analytics-site-overview-issues.html' title='Google Analytics Site Overview issues:  Subdomains and HTTPS'/><author><name>sundar</name><uri>http://www.blogger.com/profile/01750999892557457782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-1698565234763692156</id><published>2009-09-16T12:19:00.001+05:30</published><updated>2009-09-21T17:00:26.411+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifetime value'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='Andrew Chen'/><category scheme='http://www.blogger.com/atom/ns#' term='freemium'/><category scheme='http://www.blogger.com/atom/ns#' term='Brad Feld'/><title type='text'>LifeTimeValue (LTV) calculation in a Freemium Model</title><content type='html'>In &lt;a href="http://www.dimdim.com/aboutus/dimdim_managementteam.html"&gt;my role in Dimdim&lt;/a&gt; I have been working on making sure we can maximise the value of customers to the company while making sure that real value is being provided to all users. We adopted the &lt;a href="http://www.avc.com/a_vc/2006/03/my_favorite_bus.html"&gt;Freemium model&lt;/a&gt;  around the time it was put forward by &lt;a href="http://www.avc.com/a_vc/"&gt;Brad Feld&lt;/a&gt; without thinking too much about the impact it would have. I actually remember feeling a bit vindicated that we have chosen a promising path in Dimdim when Brad's blogpost came out. Lately this Freemium Model is being analysed (or fomalised) along with the slicing and dicing that VCs typically expect. &lt;a href="http://andrewchenblog.com/2009/01/19/how-to-create-a-profitable-freemium-startup-spreadsheet-model-included/"&gt;Andrew Chen's blog on this&lt;/a&gt; is a good place to start off to understand this. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;There are two things that I don't agree with in Andrew's blog post:&lt;br /&gt;&lt;br /&gt;Buying traffic (and hopefully customers) through ADs: I understand most startups fail not due to technical issues, or sales not closing but de to the word not reaching the customers. Startups fail die not getting enough customers. Internet ADs and buying clicks and traffic is seen as a way to avoid this. But there are much better ways. I believe the &lt;a href="http://steveblank.com/2009/08/31/the-customer-development-manifesto-reasons-for-the-revolution-part-1/"&gt;Customer Development Manifesto&lt;/a&gt; is an effort in the right direction. Having satisfied customers who can help a company avoid &lt;a href="http://sethgodin.typepad.com/seths_blog/2009/09/the-big-drop-off.html"&gt;the Big Drop-Off&lt;/a&gt; is the best way.&lt;br /&gt;&lt;br /&gt;The "Viral Growth Kicker": What does this mean? Does this mean a killer feature which is exactly what the customers want? Or a marketing campaign is wildly successful and sustainable? Is this just wishful thinking of expecting too much from a secret sauce? We should not expect that this parameter should contribute so much to a startup's success the way its factored in, in the LTV calculation in Andrew's blogpost.&lt;br /&gt;&lt;br /&gt;What do you think?&lt;br /&gt;&lt;br /&gt;I think there are also there are a bunch of complexities around Churn rate, Referral conversion rate and some other parameters. What about the experiments around pricing? They should also be a part of the model. Hope to address all these are more in the coming posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-1698565234763692156?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/1698565234763692156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=1698565234763692156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/1698565234763692156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/1698565234763692156'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2009/09/lifetimevalue-ltv-calculation-in.html' title='LifeTimeValue (LTV) calculation in a Freemium Model'/><author><name>sundar</name><uri>http://www.blogger.com/profile/01750999892557457782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-7683237289959910931</id><published>2009-09-13T13:11:00.002+05:30</published><updated>2009-09-13T13:17:12.816+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dimdim'/><title type='text'>Awake ! Arise !</title><content type='html'>I have woken up from my period of inactivity. I see that the last post on this blog was in April 2006 (Couple of months since we started &lt;a href="http://www.dimdim.com"&gt;Dimdim&lt;/a&gt;). Its been more than 3 years. A lot of tings have happened in that time frame. I am happily married now. Dimdim has grown phenomenally.  Have of things to talk about. You can expect to see regular posts on this blog and in the Dimdim blog my friends. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-7683237289959910931?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/7683237289959910931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=7683237289959910931' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/7683237289959910931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/7683237289959910931'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2009/09/awake-arise.html' title='Awake ! Arise !'/><author><name>sundar</name><uri>http://www.blogger.com/profile/01750999892557457782</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114587110484993410</id><published>2006-04-24T15:01:00.000+05:30</published><updated>2006-04-24T15:01:49.200+05:30</updated><title type='text'>wikiCalc</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;was using &lt;a href="http://www.softwaregarden.com/wkcalpha/"&gt;this&lt;/a&gt; a bit. great piece of software. Along with &lt;a href="http://www.irows.com"&gt;iRows&lt;/a&gt; this is the internet version of Excel which will rule the roost in future. So who is  going to buy this?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114587110484993410?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114587110484993410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114587110484993410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114587110484993410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114587110484993410'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/wikicalc.html' title='wikiCalc'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114554572216059390</id><published>2006-04-20T20:34:00.000+05:30</published><updated>2006-04-20T20:38:42.173+05:30</updated><title type='text'>my goals for the next 2600 days</title><content type='html'>Encouraged by &lt;a href="http://www.echofaith.com/project1001"&gt;Project 1001 of Echo Faith&lt;/a&gt;, I listed my 26 goals for the next 2600 days.&lt;br /&gt;&lt;br /&gt;write a book&lt;br /&gt;go to gym atleast 3 times a week and exercise at home 5 days a week&lt;br /&gt;miss a dinner at least once a week&lt;br /&gt;eat fruits at least once a week&lt;br /&gt;contribute a patch to a open source project&lt;br /&gt;take scwcd (sun certified web component developer)&lt;br /&gt;take scbcd (sun certified business component developer)&lt;br /&gt;blog at least once a week&lt;br /&gt;mail friends at least once a week&lt;br /&gt;have dinner with brother at least once a week&lt;br /&gt;finish (read, digest, take notes, act upon) a book/month&lt;br /&gt;have lunch/dinner with a different friend at least once a month&lt;br /&gt;buy a car&lt;br /&gt;buy a house&lt;br /&gt;get married (!!)&lt;br /&gt;write articles which get published in a different journal at least once a year&lt;br /&gt;interact with people who don't belong to my profession&lt;br /&gt;watch a movie per week with someone who is close to me&lt;br /&gt;cook at least one meal per week&lt;br /&gt;don't shave for a month&lt;br /&gt;buy a LCD projector (for watching movies on the big screen)&lt;br /&gt;finish reading The Geeta&lt;br /&gt;Spend a week without using a computer&lt;br /&gt;watch a sunrise&lt;br /&gt;Go trekking for 3 continues days&lt;br /&gt;Watch the OscarÂs Best Picture winners&lt;br /&gt;&lt;br /&gt;I will keep you updated on how things go regularly (yeah sure :) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114554572216059390?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114554572216059390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114554572216059390' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114554572216059390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114554572216059390'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/my-goals-for-next-2600-days.html' title='my goals for the next 2600 days'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114490713351709012</id><published>2006-04-13T11:15:00.000+05:30</published><updated>2006-04-13T11:15:33.606+05:30</updated><title type='text'>Google Calendar vs Kiko</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I have been using &lt;a href="http://www.kiko.com"&gt;Kiko&lt;/a&gt; for sometime now and was pretty impressed with it, not only the UI but also the features. Recently they came up witha  load of great features like drag and drop, etc. But i could not put my finger on what was troubling me. there was just something wrong, but i could no tell what it was. Today I found out what it is.&lt;br /&gt;&lt;br /&gt;Today &lt;a href="http://www.google.com/calendar"&gt;google calendar&lt;/a&gt; and i am pretty much sold to google. The UI is uncluttered and the features are hidden behind but only a click away. I don't even mind the pains of migration. &lt;br /&gt;&lt;br /&gt;Again google prevails (paraphrased from "V for vendetta"). &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114490713351709012?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114490713351709012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114490713351709012' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114490713351709012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114490713351709012'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/google-calendar-vs-kiko.html' title='Google Calendar vs Kiko'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114422186459822266</id><published>2006-04-05T12:54:00.000+05:30</published><updated>2006-04-05T12:54:24.676+05:30</updated><title type='text'>MS and VmWare</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I was so excited to see posts about how MS is planning to give away Virtual Server for free. I was reminising how things have changed. 7 yeras ago people were paying huge sums of money for VmWare's properietary virtualization system. Of course there was value (great value according to me) in buying such software. 3 years ago when I first tried &lt;a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/"&gt;Xen&lt;/a&gt; and tried to convince our VP of Engg. to adopt it, I fell flat on my face when qquestions regarding its maturity were asked. And see how things have changed now. Xen is bundled by default with Redhat. Vmware is giving away its GSX server for free while MS is also generating similar noises. It is indeed a boon to live in exciting times.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114422186459822266?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114422186459822266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114422186459822266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114422186459822266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114422186459822266'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/ms-and-vmware.html' title='MS and VmWare'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114416106243244576</id><published>2006-04-04T20:01:00.000+05:30</published><updated>2006-04-04T20:11:01.356+05:30</updated><title type='text'>Indian VC Blog</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I really like &lt;a href="http://radventure.blogspot.com/"&gt;this&lt;/a&gt; blog. It is written by a Indian VC living in India investing in Indian companies. Also he is part of a big multinational VC firm - Bessemer Venture Partner. He has also worked in global consulting firms and so knows the market. Most of his posts are centered around India and opportunities in India. I wish there were more VCs like him in India.&lt;br /&gt;&lt;br /&gt;ANother thing I really like about this blog is the fact that Anand dosen't hesitate to talk as an Indian (with all its associated connotations). This is clearly seen in &lt;a href="http://radventure.blogspot.com/2006/01/pseud-country.html"&gt;this&lt;/a&gt; post.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114416106243244576?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114416106243244576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114416106243244576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114416106243244576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114416106243244576'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/indian-vc-blog.html' title='Indian VC Blog'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114415945245481431</id><published>2006-04-04T19:34:00.000+05:30</published><updated>2006-04-04T19:34:12.480+05:30</updated><title type='text'>personal MBA</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I came across this &lt;a href="http://personalmba.com"&gt;site&lt;/a&gt; which is basically a message board collection of people who want an MBA experience without actually going through a MBA program in a school. Ncie concept but not a great execution.&lt;br/&gt;&lt;br/&gt;I think increasingly education will be distributed and open sourced. this might be a small initial step in that direction. Anyway the time has come where everyone has to keep learning throughout their life to be productive and efficient.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114415945245481431?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114415945245481431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114415945245481431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114415945245481431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114415945245481431'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/04/personal-mba.html' title='personal MBA'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114362970802899307</id><published>2006-03-29T16:23:00.000+05:30</published><updated>2006-03-29T16:25:08.046+05:30</updated><title type='text'>BarCamp in Hyderabad</title><content type='html'>I am pretty excited to see the idea of &lt;a href="http://barcamp.org/BarCampHyderabad"&gt;BarCamp in Hyderabad&lt;/a&gt;, India. I will be attending it and maybe i will post how it went.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114362970802899307?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114362970802899307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114362970802899307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114362970802899307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114362970802899307'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/03/barcamp-in-hyderabad.html' title='BarCamp in Hyderabad'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114269962331403840</id><published>2006-03-18T21:59:00.000+05:30</published><updated>2006-03-18T23:17:16.463+05:30</updated><title type='text'>Adoption of Open Source Software</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.economist.com/images/20060318/CSF427.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://www.economist.com/images/20060318/CSF427.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I came across &lt;a href="http://www.economist.com/business/displaystory.cfm?story_id=5624944"&gt;this link&lt;/a&gt; in &lt;a href="http://www.economist.com"&gt;Economist&lt;/a&gt;, which was pretty good in the sense that it put things in perspective. It is a good article worth reading. Go ahead and read it. I will be waiting here patiently for you.....&lt;br /&gt;&lt;br /&gt;.....Did ya read it?...no?...go ahead and read it...its pretty good....&lt;br /&gt;&lt;br /&gt;well...lets discuss this figure presented in the article in this post. Basically this figure makes the point that in the open source software users can be represented in the form of concentric circles. The outermost ones being mostly people who use the product and talk about it in the forums, the next inner circle being users who report problems they face and so on while the innermost zone would be users who would actively provide code and add valuable features.&lt;br /&gt;&lt;br /&gt;The article also talks about "commercial open source" companies like MySQL and how they would like to have even the most uninvolved users too as even they contribute towards the effort. Lets assume that is true (I think such users are also useful, others may have a different opinion). Now the next question becomes, how does one drive such users towards a particular product. &lt;br /&gt;&lt;br /&gt;I believe the most basic way to do it would be to make things as simple as possible for their involvement. By this I means conveying to wide enough range of people about the availability and capability of the product. The best way to inform people about the capability of a product would be enable users to use the product. &lt;br /&gt;&lt;br /&gt;At this point some of my readers would retort that one should concentrate one's (limited) resources on getting the maximum number of paying customers as opposed to trying to garner maximum number of non-paying freebie-loading leeches....Just joking...:)...But that's a business discussion which has to be made. Once you have made the decision to get in the hordes of users please continue to read ahead.&lt;br /&gt;&lt;br /&gt;Continuing with the point, what are the best ways to attract people to use one's product:&lt;br /&gt;The first step of every users: Make the product easier to install. Better, still skip the installation altogether by providing a web interface into which one can login. Why should one use a rich-client interface now-a-days? In which cases is this justified?&lt;br /&gt;Make the product usage as seamless and intuitive as possible: Making the (web)UI AJAX is the best way to do this (at least as of now)&lt;br /&gt;If a download option is provided make sure that no complex configuration is needed to experience all the features of the product. &lt;br /&gt;Make sure that users can seamlessly participate in the community (for example don't insist on login and email details if someone wants to post a problem/bug on the forum)&lt;br /&gt;Enable the building of a community around the product. Host the product. Enable communication between users so that they can share common interests and discuss the likes (and dislikes) of the product.&lt;br /&gt;&lt;br /&gt;What do you all think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114269962331403840?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114269962331403840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114269962331403840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114269962331403840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114269962331403840'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/03/adoption-of-open-source-software.html' title='Adoption of Open Source Software'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114269925004136916</id><published>2006-03-18T21:50:00.000+05:30</published><updated>2006-03-18T22:28:36.106+05:30</updated><title type='text'>Turns in my life</title><content type='html'>A big HI to all my loyal viewers (Thanks for sticking around: My Bro, and Suresh):&lt;br /&gt;The last few weeks have been very busy and very very chaotic. I have left my job in the multi-billion software company where I developed software which manages the software which manages the software which manages e-Business applications ( yeah I got that right). I have joined ( or is it co-founded) a small startup which is in stealth mode now. As we come out to the world I will keep you all updated on what I am doing.&lt;br /&gt;&lt;br /&gt;In the meantime let me continue with my rant. Bootstrapping a startup with a limited (I dont want to use the word miniscule) budget is not easy. We can't just move into a corporate park but have to manage with hours of network and power down daily. Of course, the "oh so risky venture" attitude of Indian society does not help. Well end of rant, let the race begin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114269925004136916?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114269925004136916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114269925004136916' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114269925004136916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114269925004136916'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/03/turns-in-my-life.html' title='Turns in my life'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114111778548722756</id><published>2006-02-28T14:39:00.000+05:30</published><updated>2006-02-28T14:39:45.496+05:30</updated><title type='text'>alarm:clock: The Blogosphere Doesn't Follow The Money</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;This is so true : "The Blogosphere Doesn't Follow The Money"&lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://www.thealarmclock.com/mt/archives/2005/12/the_blogsphere.html"&gt;www.thealarmclock.com/m...&lt;/a&gt;      &lt;/p&gt;      But I guess this is the Madness of the crowds : Once you accept the wisdom of the crowds, one has to accept the madness too.    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114111778548722756?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114111778548722756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114111778548722756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114111778548722756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114111778548722756'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/02/alarmclock-blogosphere-doesnt-follow.html' title='alarm:clock: The Blogosphere Doesn&apos;t Follow The Money'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-114111705834760118</id><published>2006-02-28T14:22:00.000+05:30</published><updated>2006-02-28T14:40:18.753+05:30</updated><title type='text'>Time to Unload</title><content type='html'>My firefox tabs number 26 now; so i will unload them ehre with my (short) thoughts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://infogami.com/blog/introduction"&gt;Infogami &lt;/a&gt;starts. I wonder how they are going to compete against google in offering hosting and other related functions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.russellbeattie.com/notebook/1008838.html"&gt;WTF 2.0&lt;/a&gt; : Russel talks about how so many web 2.0 startups dont have a business plan. insightful.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zillow.com/"&gt;Zillow&lt;/a&gt;: great site which compares and shows property prices. Again US centric but great UI&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.visi.com/%7Ebarr/ldpath.html"&gt;Why LD_LIBRARY_PATH is bad.&lt;/a&gt; Just discovered this while i was debugging a solaris path problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-114111705834760118?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/114111705834760118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=114111705834760118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114111705834760118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/114111705834760118'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/02/time-to-unload.html' title='Time to Unload'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113756852889349295</id><published>2006-01-18T12:45:00.000+05:30</published><updated>2006-01-18T12:45:28.936+05:30</updated><title type='text'>Slashdot | ZDNet on the Essence of Geek</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;another slashdot post whose discussion is much better than the article in question&lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://slashdot.org/article.pl?sid=06/01/17/2011214&amp;amp;amp;from=rss"&gt;slashdot.org/article.pl...&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113756852889349295?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113756852889349295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113756852889349295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113756852889349295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113756852889349295'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2006/01/slashdot-zdnet-on-essence-of-geek.html' title='Slashdot | ZDNet on the Essence of Geek'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113525813222502574</id><published>2005-12-22T18:55:00.000+05:30</published><updated>2005-12-22T20:21:17.973+05:30</updated><title type='text'>wallace and gromit and the anti-GM movement</title><content type='html'>Saw the latest Walalce and Gromit movie involving the Wererabbit. There is a scene in the movie where the Vicar of the movie talks about why the Giant rabbit might be attcking the vegetables. The passionate speech he gives seems straight out of a anti-GM (Genetically Modified) agriculture activists' handbook. If you have not seen the movie yet watch as soon as you can. It is worth the time you spend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113525813222502574?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113525813222502574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113525813222502574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113525813222502574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113525813222502574'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/12/wallace-and-gromit-and-anti-gm.html' title='wallace and gromit and the anti-GM movement'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113516067301245811</id><published>2005-12-21T15:54:00.000+05:30</published><updated>2005-12-21T15:56:14.893+05:30</updated><title type='text'>Practicing Programming</title><content type='html'>&lt;div xmlns="http://purl.org/atom/ns#"&gt;      &lt;p&gt;[A great site to techie apprentice programmers how to come up the ladder. I esp like the Practice Drills which impart a real-world anchor to get things done]&lt;/p&gt;      &lt;p&gt;        Read more at        &lt;a href="http://opal.cabochon.com/%7Estevey/blog-rants/practicing-programming.html"&gt;opal.cabochon.com/~stev...&lt;/a&gt;      &lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113516067301245811?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113516067301245811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113516067301245811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113516067301245811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113516067301245811'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/12/practicing-programming.html' title='Practicing Programming'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113515566109149914</id><published>2005-12-21T14:29:00.000+05:30</published><updated>2005-12-21T14:31:01.103+05:30</updated><title type='text'>Ray Ozzie excites me</title><content type='html'>actually his way of thinking excites me.&lt;br /&gt;loot at &lt;a href="http://spaces.msn.com/members/rayozzie/PersonalSpace.aspx?_c="&gt;this&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113515566109149914?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113515566109149914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113515566109149914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113515566109149914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113515566109149914'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/12/ray-ozzie-excites-me.html' title='Ray Ozzie excites me'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113300275756088607</id><published>2005-11-26T16:01:00.000+05:30</published><updated>2005-11-27T18:14:47.283+05:30</updated><title type='text'>my new initiative for the new net</title><content type='html'>it has been a hectic month for me. travelled more than I want. But the good news is that I have decided to work on a new project. its going to be a mashup between a RSS aggregator, trust based &lt;a href="http://www.foaf-project.org/"&gt;FOAF&lt;/a&gt; idea, semantic web based on &lt;a href="http://www.w3.org/RDF/"&gt;RDF&lt;/a&gt;, &lt;a href="http://getoutfoxed.com/"&gt;outfoxed&lt;/a&gt; and some more such stuff !!!!&lt;br /&gt;&lt;br /&gt;Phew got that off my chest. Actually I have started coding on this after nearly a month of thinking (actually which I want to call mental masturbation which achieves nothing other than cheap instant gratification which is of value to nobody other than myself). As of now I am doing this in java but as my expertise in &lt;a href="http://www.blogger.com/www.rubyonrails.org"&gt;RoR&lt;/a&gt; increases I might migrate stuff to Rails.&lt;br /&gt;&lt;br /&gt;please refer to my &lt;a href="http://techgossip.blogspot.com/2005/10/more-on-ruby-and-rails.html"&gt;earlier&lt;/a&gt; &lt;a href="http://techgossip.blogspot.com/2005/10/more-cribs-on-ruby.html"&gt;posts&lt;/a&gt; on Rails for more info on my rails experiences.&lt;br /&gt;&lt;br /&gt;Basically I was so impressed by &lt;a href="http://reddit.com/"&gt;reddit&lt;/a&gt; that I believe the idea of a customized net is not possible given the that the world of &lt;a href="http://www.windley.com/essays/2004/walled_gardens"&gt;carefully&lt;/a&gt; &lt;a href="http://www.sjl.us/main/2005/10/walled_gardens.html"&gt;wallled gardens&lt;/a&gt; is &lt;a href="http://www.scripting.com/2005/10/23.html#likeABloggercon"&gt;crumbling&lt;/a&gt; and a new open webservice based multi-initiative net is emerging. Also looking at all the &lt;a href="http://www.blogger.com/www.eweek.com/article2/0,1759,1831451,00.asp"&gt;MS initiatives&lt;/a&gt; in using RSS I believe the usefullness of RSS (&amp;amp; OPML according to me) will reach the common people too and not be restricted to the techies as it is as of now. I also believe &lt;a href="http://microformats.org/"&gt;microformats&lt;/a&gt; will play a very important role in this brave new world. I hope to contribute something in this direction.&lt;br /&gt;&lt;br /&gt;Progress will be slow but will keep you updated on this.&lt;br /&gt;&lt;br /&gt;Update: &lt;a href="http://www.wynia.org/wordpress/2005/11/25/opml-sampling-build-a-page-showing-the-best-item-from-each-rss-feed/"&gt;This&lt;/a&gt; looks interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113300275756088607?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113300275756088607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113300275756088607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113300275756088607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113300275756088607'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/11/my-new-initiative-for-new-net.html' title='my new initiative for the new net'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-113022072325162522</id><published>2005-10-25T11:28:00.000+05:30</published><updated>2005-10-25T12:09:02.846+05:30</updated><title type='text'>Traffic analysis of my blog after posting it on reddit.com</title><content type='html'>I wrote a &lt;a href="http://techgossip.blogspot.com/2005/10/reddit-vs-memeorandum-distributed-vs.html"&gt;post&lt;/a&gt; comparing &lt;a href="http://www.reddit.com"&gt;reddit.com&lt;/a&gt; and &lt;a href="http://www.memeorandum.com"&gt;memeorandum.com&lt;/a&gt; on my blog on 22nd october. I have been a leecher on reddit till that day. I only used to read links not contribute links to reddit. But the next day my post received a &lt;a href="http://techgossip.blogspot.com/2005/10/reddit-vs-memeorandum-distributed-vs.html#c113009027740438759"&gt;comment&lt;/a&gt; from prez, one of the founders of reddit.com. Till that day the total number of hits on my blog was around 210 with a maximum hits/day being 4. I had hits from all continents except Africa but only India (which is my home country) contributing more than 10 hits per city. There were two cities in india contributing more than 10 hits. I had hits from one city each in Australia and New Zealand, 5 from Europe, two from South America and around 10 from North America. People from city each in Chine and Japan also read my blog.&lt;br /&gt;&lt;br /&gt;That day I decide the post was worth a read by others and posted it on reddit.com. Within 5 hours of my posting it reached the &lt;a href="http://reddit.com/hot"&gt;hottest tab&lt;/a&gt; in reddit. It was in the top 20 hot links for around 20 hours. In that time it garnered 295 hits. The visibility reached is amazing. More power to unknown bloggers!!! I can now imagine what slashdotted can mean. If we assume that 10% of the users of reddit hit on my link that day, reddit might have around 3000 users that day.&lt;br /&gt;&lt;br /&gt;It is also pretty enlightening to see the spread of hits. It can be seen via this &lt;a href="http://www.flickr.com/photos/90052271@N00/55875651/"&gt;clustermaps view&lt;/a&gt; of that day. As expected US dominates but the spread of cities throughout Europe is also interesting. At last there is a hit from Africa (South Africa I guess). The (non)-spread in China (and many parts of SouthEast Asia) and the Cresent area of West Asia is a matter of concern. Or maybe people from these places are not interested in the topic under consideration. This seems more likely. There were many cities which contributed more than 10 hits but most of them were in US. Of course India and London also contributed to this. I guess the hit from a spot on the Indian Ocean (near Madagascar) is an error or non-categorizable hit.&lt;br /&gt;&lt;br /&gt;Most people came to the blog either from reddit, bloglines or other posts in techgossip. All three sources contributed equally. Firefox dominated with around 60% users using it to reach techgossip, while IE was 19% and Safari was a credible 10%.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-113022072325162522?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/113022072325162522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=113022072325162522' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113022072325162522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/113022072325162522'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/traffic-analysis-of-my-blog-after.html' title='Traffic analysis of my blog after posting it on reddit.com'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112995945790187248</id><published>2005-10-22T10:54:00.000+05:30</published><updated>2005-10-22T11:32:54.373+05:30</updated><title type='text'>reddit Vs. memeorandum (Distributed  Vs Monopolistic control)</title><content type='html'>I have been following &lt;a href="http://www.reddit.com/"&gt;reddit.com&lt;/a&gt; since I got my eyes on it (I suspect I have been one of the first 100 users of reddit). I start my day with it; be it office or home. And I am amazed every day.&lt;br /&gt;&lt;br /&gt;For the uninitiated, it is a news/articles aggregator. Basically any registered user can contribute any link to the site and the link will come up on the &lt;a href="http://www.reddit.com/new"&gt;newest links tab&lt;/a&gt;. Then users can rank the link with either a "+" or a "-" showing their interest/preference for the link. The most popular ones will then be lifted to the &lt;a href="http://www.reddit.com/hot"&gt;hottest tab&lt;/a&gt;. there also exists an all time &lt;a href="http://www.reddit.com/pop"&gt;favorite tab&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The links that come up on the new tab are themselves worth the time one spends on the site. They are an eclectic mix mirroring the interests and biases of the frequent contributors to the site. I may be the target audience for such a site so the presented links generally interest me a lot. There are many sites which do that. &lt;a href="http://www.kuro5hin.org/"&gt;Kuro5hin&lt;/a&gt; and &lt;a href="http://slashdot.org/"&gt;slashdot&lt;/a&gt; come to mind. But what really drives value in reddit is the unexpected surprise of a link which is both rare as well as very pertinent or interesting. This I guess is because of the way the site has chosen to rank the links: people vote with their eyeballs/mind/clicks.&lt;br /&gt;&lt;br /&gt;On the other hand there exists &lt;a href="http://www.memeorandum.com/"&gt;memeorandum&lt;/a&gt;. This site was started by Gabe Rivera, the 32-year-old programmer who quit his job at Intel.it started off with a politicas section and now it has a tech section too. This takes more of a centralised approach. Links are selected in a &lt;a href="http://blog.memeorandum.com/050922/whos-included"&gt;pseudo algorithmic way&lt;/a&gt; from pre-picked sites which Gabe selects. "Credibility and Engagement within peers" seems to be the ranking index for selection. memeorandum has received its share of publicity which can be seen via links at the right hand pane on its &lt;a href="http://blog.memeorandum.com/"&gt;blog.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;memeorandum serves up a mix of links which turn into talking points because of the close coterie of high visibility bloggers and "web 2.0 conference attendees". the discussion and the feedback among bloggers is the only reason I frequent this site.&lt;br /&gt;&lt;br /&gt;Both the sites greatly alleviate the need to go through hundreds of links served by feed aggregators. But in my opinion reddit clearly is more informative and enjoyable than the staid, polictically correct style of memeorandum. Also reddit is faster, way faster. This can be seen in the number of days it took memeorandum to pick up the &lt;a href="http://www.flock.com/"&gt;flock&lt;/a&gt; story. It has come on memeorandum today (Oct 22, 2005) only while it appeared on reddit almost a month back. This i think is because reddit gives power to the people. Links with nuisance value only, get segregated into the new tab guaranteeing that links in top tab are really useful. I think in future this the way to go: people vote within a system which filters content with only nuisance value. The centralised way of filtering content will slowly fade away or get slotted into niched applications where freshness of content or new innovations are not necessary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112995945790187248?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112995945790187248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112995945790187248' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112995945790187248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112995945790187248'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/reddit-vs-memeorandum-distributed-vs.html' title='reddit Vs. memeorandum (Distributed  Vs Monopolistic control)'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112973012348614410</id><published>2005-10-19T19:22:00.000+05:30</published><updated>2005-10-19T19:32:56.703+05:30</updated><title type='text'>more on ruby and rails</title><content type='html'>last week i made a quick helloWorld application on rails, just to see what it takes to do a webapp on ruby and I was amazed. everything was up so quickly esp considering that I know next to nothing abt ruby and rails. the idea of "convenience over configuration" is pretty handy esp for trivial apps. these will get people hooked into this enterprise. It took me all of 3 minutes to have a webapp with web ui to do all &lt;a href="http://www.blogger.com/en.wikipedia.org/wiki/CRUD"&gt;crud operations&lt;/a&gt; on a backend database. (By the way, it took me something like one hour to setup MySQL properly with permissions and all.) Then I played around using ActiveRecord and some simple AJAX.  I am convinced rails and ruby will gain ground pretty quickly.&lt;br /&gt;&lt;br /&gt;I wonder how many serious efforts are on to make music and video players in ruby. I saw some by googling but was not impressed by their maturity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112973012348614410?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112973012348614410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112973012348614410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112973012348614410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112973012348614410'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/more-on-ruby-and-rails.html' title='more on ruby and rails'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112961663783177510</id><published>2005-10-18T11:51:00.000+05:30</published><updated>2005-10-18T11:58:22.340+05:30</updated><title type='text'>links (on startups, usability, startups money, BitTorrent and other such topics)</title><content type='html'>&lt;a href="http://www.paulgraham.com/ideas.html" target="_blank"&gt;http://www.paulgraham.com&lt;wbr&gt;/ideas.html&lt;/a&gt; -- the grand daddy of startup&lt;br /&gt;links from Paul Graham.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gaborcselle.com/blog/2005/10/startup-school-michael-mendel-and.html" target="_blank"&gt;http://www.gaborcselle.com&lt;wbr&gt;/blog/2005/10/startup-school&lt;wbr&gt;-michael-mendel-and.html&lt;/a&gt;&lt;br /&gt;Startup School: Michael Mendel and Chris Sacca&lt;br /&gt;This weekend, I visited Y Combinator's Startup School in Cambridge,&lt;br /&gt;MA. It was awesome.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nytimes.com/2005/10/16/magazine/16guru.html?ex=1287115200&amp;en=c8985a80d74cefc1&amp;amp;ei=5090&amp;partner=rssuserland&amp;amp;emc=rss" target="_blank"&gt;http://www.nytimes.com/2005/10&lt;wbr&gt;/16/magazine/16guru.html?ex&lt;wbr&gt;=1287115200&amp;en=c8985a80d74cefc&lt;wbr&gt;1&amp;amp;ei=5090&amp;partner=rssuserland&lt;wbr&gt;&amp;amp;emc=rss&lt;/a&gt;&lt;br /&gt;Distractions (?) in office  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://ycombinator.com/" target="_blank"&gt;http://ycombinator.com/&lt;/a&gt;  -- Venture setup by Paul Graham to fund at&lt;br /&gt;very early stage.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.useit.com/alertbox/weblogs.html" target="_blank"&gt;http://www.useit.com/alertbox&lt;wbr&gt;/weblogs.html&lt;/a&gt; -- The venerable Jakob&lt;br /&gt;Nielsen -- Weblog Usability: The Top Ten Design Mistakes&lt;br /&gt;&lt;br /&gt;One thing common to new Internet companies in Silicon Valley these&lt;br /&gt;days is that&lt;a href="http://www.siliconvalley.com/mld/siliconvalley/12901801.htm"&gt; they don't need a lot of money &lt;/a&gt;&lt;br /&gt;to get off the ground.&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.fortune.com/fortune/technology/articles/0,15114,1117681,00.html?promoid=yahoo" target="_blank"&gt;http://www.fortune.com/fortune&lt;wbr&gt;/technology/articles/0,15114&lt;wbr&gt;,1117681,00.html?promoid=yahoo&lt;/a&gt;&lt;br /&gt;-- a good mainstream article about BitTorrent, Do read this&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112961663783177510?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112961663783177510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112961663783177510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112961663783177510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112961663783177510'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/links-on-startups-usability-startups.html' title='links (on startups, usability, startups money, BitTorrent and other such topics)'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112922224198814569</id><published>2005-10-13T22:06:00.000+05:30</published><updated>2005-10-13T22:25:07.583+05:30</updated><title type='text'>Bill Joy's webs</title><content type='html'>&lt;a href="http://pontin.trblogs.com/archives/2005/09/etc_bill_joys_s.html"&gt;Bill Joy's taxonomy of the net&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;1. The Near Web: This is the Internet that you see when you lean over a screen - like a laptop.&lt;br /&gt;2. The Here Web. This is the Internet that is always with you because you accesses it through a device you always carry - like a cell phone.&lt;br /&gt;3. The Far Web. This is the Internet you see when you sit back from a big screen - like a television or a kiosk.&lt;br /&gt;4. The Weird Web. This is the Internet you access through your voice and which you listen to - say when you are in your car, or when you talk to an intelligent system on your phone, or when you ask your camera a question. Joy concedes that this Web does not yet fully exist.&lt;br /&gt;5. B2B. This is an Internet which does not possess a consumer interface, where business machines talk to other business machines. It is chatter of corporations amongst themselves when they do not care about their human drones.&lt;br /&gt;6. D2D. This is the Internet of sensors deployed in meshes networks, adjusting urban systems for maximum efficiency. This Web also does not yet exist. Joy says that it will embed machine intelligence in ordinary, daily life.&lt;br /&gt;&lt;br /&gt;As usual I believe we tend to overestimate the near future and underestimate the far future. I believe we have not experienced even half of the so called Near Web. And what exactly are the differences between the Near and Here Web? Just that you are not accessing the web through a PC? Is the delivery form factor of such importance? I don't think so. I feel in the next 3-4 years the first three Webs will be merged or indistinguishable from each other.&lt;br /&gt;&lt;br /&gt;Why is voice communication with devices called the Weird Web? I agree there is lot more here coming. B2B, I understand, with Grid/Webservices and the semantic making things so easy for enterprise developments. D2D I can't still imagine. Let the smart dust create a storm.&lt;br /&gt;&lt;br /&gt;What about devices talking among themselves (like the Jini fav of refridgerator-ring-net combination)? Is that part of D2D? And finally what about &lt;a href="http://en.wikipedia.org/wiki/Sentient"&gt;Sentient&lt;/a&gt; beings generated from the net?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112922224198814569?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112922224198814569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112922224198814569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112922224198814569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112922224198814569'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/bill-joys-webs.html' title='Bill Joy&apos;s webs'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112917266418489688</id><published>2005-10-13T08:33:00.000+05:30</published><updated>2005-10-13T09:07:33.670+05:30</updated><title type='text'>links:piracy + Web2.0==Dot Bomb ? + Disney shows on apple IPod Video</title><content type='html'>how piracy works. here is a good article for&lt;br /&gt;&lt;a href="http://www.wired.com/wired/archive/13.01/topsite.html?pg=1&amp;topic=topsite&amp;amp;topic_set="&gt;that:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dot Bomb All Over Again?&lt;br /&gt;YouTube is cool. Great product. I'm sure someday they will be worth $20 million just not today. How long have these guys been around? How much do you think it would cost to outsource a clone of YouTube? Less than $20 million I'm sure.&lt;br /&gt;&lt;a href="http://www.feedblog.org/2005/10/dot_bomb_all_ov.html"&gt;http://www.feedblog.org/2005/10/dot_bomb_all_ov.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Disney offers next-day iTune downloads of TV shows&lt;br /&gt;Opening the door to a new revenue stream for television content, the Walt Disney Co. said on Wednesday it will begin offering next-day digital downloads of its biggest ABC prime time hits for $1.99 per episode.&lt;br /&gt;&lt;a href="http://news.yahoo.com/s/nm/20051012/wr_nm/media_disney_apple_dc"&gt;http://news.yahoo.com/s/nm/20051012/wr_nm/media_disney_apple_dc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112917266418489688?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112917266418489688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112917266418489688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112917266418489688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112917266418489688'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/linkspiracy-web20dot-bomb-disney-shows.html' title='links:piracy + Web2.0==Dot Bomb ? + Disney shows on apple IPod Video'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112912668257078147</id><published>2005-10-12T19:44:00.000+05:30</published><updated>2005-10-12T19:50:31.566+05:30</updated><title type='text'>google does social tagging</title><content type='html'>tagging of google search is something Suresh and I have talked about many times. Better still accessing tagged searches through the community is something which will increase the quality of searches by a big margin. Google is finally doing &lt;a href="http://google.blognewschannel.com/index.php/archives/2005/10/10/google-adds-tagging/"&gt;this&lt;/a&gt;. I am very happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112912668257078147?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112912668257078147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112912668257078147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112912668257078147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112912668257078147'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/google-does-social-tagging.html' title='google does social tagging'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112877749930267323</id><published>2005-10-08T18:19:00.000+05:30</published><updated>2005-10-08T18:48:21.200+05:30</updated><title type='text'>more cribs on ruby :)</title><content type='html'>why cant rails have a port/package system like free/net/open BSDs.&lt;br /&gt;Today i started playing with rails and had to download activesupport, activerecord, rack, actionmailer, actionwebservice and actionpack seperately. &lt;br /&gt;&lt;br /&gt;this was what i was going to say, then i realized there is a include-dependencies switch too. they seem to have thought of that. i guess this is the basic funda of ruby. they already have thought of what you will do and have devised the defaults for you.&lt;br /&gt;&lt;br /&gt;i am not too sure if this idea of &lt;a href="http://wiki.rubyonrails.com/rails/pages/RailsAcademy"&gt;videos for quick tutorials&lt;/a&gt;is a good idea (at least for techies). Maybe i will get used to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112877749930267323?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112877749930267323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112877749930267323' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877749930267323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877749930267323'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/more-cribs-on-ruby.html' title='more cribs on ruby :)'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112877447405140967</id><published>2005-10-08T17:55:00.000+05:30</published><updated>2005-10-08T18:19:24.673+05:30</updated><title type='text'>google rss reader</title><content type='html'>the rss reader from gmail is ok, not great. &lt;a href="http://reader.google.com"&gt;rss reader from google&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112877447405140967?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112877447405140967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112877447405140967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877447405140967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877447405140967'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/google-rss-reader.html' title='google rss reader'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112877404913710407</id><published>2005-10-08T17:47:00.000+05:30</published><updated>2005-10-08T17:50:49.623+05:30</updated><title type='text'>links of interest to me</title><content type='html'>often i send links which interest me to people who i feel be might be interested in them. i have decided to post them here too&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoftmonitor.com/archives/010960.html"&gt;www.microsoftmonitor.com&lt;/a&gt;&lt;br /&gt;a repetition of known facts but still worthwhile given the ideas being&lt;br /&gt;presented might be of use.&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;a href="http://dondodge.typepad.com/the_next_big_thing/2005/10/napster_the_ins.html"&gt;http://dondodge.typepad.com/&lt;/a&gt;&lt;br /&gt;What lessons can be learned from this experience?&lt;br /&gt;&lt;br /&gt;   * Never get too far ahead of the market. Creating new markets, new&lt;br /&gt;business models, and value propositions is very difficult and takes&lt;br /&gt;lots of time and money. Pioneers are usually unsuccessful, the fast&lt;br /&gt;followers make most of the money.&lt;br /&gt;   * Understand who your customer is, what problem you solve, and how&lt;br /&gt;much they are willing to pay for it. Sounds simple enough but you&lt;br /&gt;would be surprised how many start-ups get excited about their&lt;br /&gt;technology innovations and forget about the basic business&lt;br /&gt;proposition.&lt;br /&gt;   * Never start a business focused on solving a big company's&lt;br /&gt;problem. They don't know they have a problem…and they are probably&lt;br /&gt;right. That is how they got to be so big in the first place. The&lt;br /&gt;record labels didn't know they had a digital distribution problem and&lt;br /&gt;were not interested in our solution to it.&lt;br /&gt;   * Test your assumptions before spending lots of money. Interview&lt;br /&gt;your potential customers. Understand what their top 10 problems are.&lt;br /&gt;Don't try to convince them that you have a solution to a problem they&lt;br /&gt;don't know they have. Take a survey of 100 potential customers. Ask&lt;br /&gt;them to list their top 10 problems, without prompting from you. If you&lt;br /&gt;don't see your problem area listed…move on to another problem.&lt;br /&gt;-----------------------------------&lt;br /&gt;The long tail of software. Millions of Markets of Dozens.&lt;br /&gt;&lt;a href="http://bnoopy.typepad.com/bnoopy/2005/03/the_long_tail_o.html"&gt;http://bnoopy.typepad.com/&lt;/a&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;a href="http://headrush.typepad.com/creating_passionate_users"&gt;http://headrush.typepad.com/creating_passionate_users/2005/09/think_young.html&lt;/a&gt;&lt;br /&gt;Kathy Sierra is like Paul Graham (great to read once one gets the&lt;br /&gt;hang of the taste). I have read all of her books.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112877404913710407?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112877404913710407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112877404913710407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877404913710407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112877404913710407'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/links-of-interest-to-me.html' title='links of interest to me'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112827014781386410</id><published>2005-10-02T21:47:00.000+05:30</published><updated>2005-10-02T21:52:28.266+05:30</updated><title type='text'>ripped away</title><content type='html'>&lt;a href="http://www.ripway.com"&gt;Ripway&lt;/a&gt; ripped me away. Source files referenced in this blog are hosted on their server. When I checked today I could not reach the files. Then when I went to their site I could not login. Then I saw their notice that they have disabled my account as I had not logged in last month. I was not sent any emails regarding this but I regularly get spam aka "promotional material" from them. Fortunately I have back up on my machines.&lt;br /&gt;But what do you think is a good solution for this problem. Do you know of any hosted service which could solve my problem. Of course I am not looking to pay for this. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112827014781386410?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112827014781386410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112827014781386410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112827014781386410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112827014781386410'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/ripped-away.html' title='ripped away'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112823887209895186</id><published>2005-10-02T13:05:00.000+05:30</published><updated>2005-10-04T22:56:55.296+05:30</updated><title type='text'>ruby and me</title><content type='html'>Since Suresh was raving about ruby so much I decide to check it out. I did a simple (tic-tac-toe) game in ruby and came away a little interested and a little bemused. I have used python before and am familiar with it. I understand that python is limited in the OO world but I like it. I think Ruby is pretty similar to python (not so strong typed, less stress on syntax, flexible and so on). Then why is there so much hype about Ruby? Is it because of its webapp development (rails) capability. but python has Zope. well i dont know much about ruby so i wont comment and will wait till i get more experience on it. in the meantime i will start exploring rails.&lt;br /&gt;&lt;br /&gt;Does ruby have a multi line commenting facility? i have not seen till now. I also liked the smart way it does multi-dimensional arrays (i guess following the module-based--kernel is better than whole-os-in-a-kernel philosophy). &lt;br /&gt;&lt;br /&gt;i found some nice links on ruby:&lt;br /&gt;&lt;a href="http://www.rubygarden.org/ruby?ExampleDesignPatternsInRuby"&gt;ExampleDesignPatternsInRuby&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.rubycentral.com/book/"&gt;ruby book&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112823887209895186?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112823887209895186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112823887209895186' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112823887209895186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112823887209895186'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/10/ruby-and-me.html' title='ruby and me'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112783284513779430</id><published>2005-09-27T20:21:00.000+05:30</published><updated>2005-09-29T15:14:07.590+05:30</updated><title type='text'>kick-ass</title><content type='html'>i have treated paul graham as a guru but now i am adding kathy sierra too. i am close to achieving my target of having read all her books.&lt;br /&gt;&lt;a href="http://headrush.typepad.com/creating_passionate_users/2005/09/dignity_is_dead.html"&gt;for some context read this&lt;/a&gt;&lt;br /&gt;If you dont know who is paul graham yet you have wasted at least half of the time you spend on the net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112783284513779430?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112783284513779430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112783284513779430' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112783284513779430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112783284513779430'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/09/kick-ass.html' title='kick-ass'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112672249375993032</id><published>2005-09-14T23:55:00.000+05:30</published><updated>2005-09-15T00:01:27.383+05:30</updated><title type='text'>flock</title><content type='html'>Do check out &lt;a href="http://www.flock.com"&gt;flock&lt;/a&gt; the new browser with rich blogging ajaxy feel. The little '+' sign though which i can bookmark stuff is the best esp for a guy like me.&lt;br /&gt;&lt;br /&gt;update 1: the in built webserver is great. this exactly what i want. the simple subscription form is great. i am sorry i am going all silly and childish but this browser is simply what i wanted for a long time. i am sure many of you would agree with me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112672249375993032?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112672249375993032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112672249375993032' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112672249375993032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112672249375993032'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/09/flock.html' title='flock'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112592224583532749</id><published>2005-09-05T17:39:00.000+05:30</published><updated>2005-09-05T17:40:45.840+05:30</updated><title type='text'>USB powered Vacuum Cleaner</title><content type='html'>I want a &lt;a href="http://www.ubergizmo.com/15/archives/2005/04/usbpowered_vacu.html"&gt;USB powered Vacuum Cleaner&lt;/a&gt; !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112592224583532749?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112592224583532749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112592224583532749' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112592224583532749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112592224583532749'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/09/usb-powered-vacuum-cleaner.html' title='USB powered Vacuum Cleaner'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112556361277439436</id><published>2005-09-01T13:56:00.000+05:30</published><updated>2005-09-01T14:05:16.333+05:30</updated><title type='text'>Algorithms</title><content type='html'>It has been quite sometime since I did any coding using the algorithms I learnt from the venerable &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0262531968/qid=1125563209/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-1242175-3783911?v=glance&amp;s=books&amp;n=507846"&gt;CLR&lt;/a&gt;.&lt;br /&gt;I have decided to refresh my knowledge of these by working on problems form the &lt;a href="http://www.topcoder.com"&gt;topCoder website&lt;/a&gt;. I also plan to use the &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201775786/qid=1125563540/sr=8-1/ref=pd_bbs_1/104-1242175-3783911?v=glance&amp;s=books&amp;n=507846"&gt;Sedgewick's book&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It will be interesting to see how far I go with this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112556361277439436?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112556361277439436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112556361277439436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112556361277439436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112556361277439436'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/09/algorithms.html' title='Algorithms'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112542689798476360</id><published>2005-08-30T23:39:00.000+05:30</published><updated>2005-08-31T00:16:28.660+05:30</updated><title type='text'>MVC using Spring</title><content type='html'>I started exploring the &lt;a href="http://www.springframework.org/"&gt;Spring Application framework&lt;/a&gt; yesterday and am very impressed by it. Not only does it let me create much simpler J2EE applications but it also decouples components pretty neatly. For this it uses the &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;principle of inversion of control&lt;/a&gt;. I plan to use this excursion of mine to learn come concepts like inversion of control, learn frequently used features of Spring (like using a database and remoting) and brush up my newbie skills of JSTL etc.&lt;br /&gt;&lt;br /&gt;Some ideas of Spring which really impressed me:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Code should be easy to test. Because we develop Spring applications with JavaBeans, testing is cheap. There is no J2EE container to be started since we will be testing a POJO. The application context can be loaded outside of a web server environment using a class that will load an application context. There are several available, and for the current task I used the FileSystemXmlApplicationContext. This loading of the context is done from directives on XML prperty files. This itself wins me over. The simplicity of testing like this cannot be overstated. Of course it does have its disadvantages but for individual POJO testing which are deployed inside an application server context I think this implementation is hard to beat. &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;JavaBeans loosely coupled through interfaces is a good model. With Spring, your beans depend on collaborators through interfaces. Since there are no implementation-specific dependencies, Spring applications are very decoupled, testable, and easier to maintain. And because the Spring container is responsible for resolving the dependencies, the active service lookup that is involved in EJB is now out of the picture and the cost of programming to interfaces is minimized. All you need to do is create classes that communicate with each other through interfaces, and Spring takes care of the rest.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;At some point I plan to use Hibernate as the persistence engine in place of the default HSQL.&lt;br /&gt;&lt;br /&gt;For newbies to Spring I would suggest two resources:&lt;br /&gt;The excellent &lt;a href="http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html"&gt;bootstap guide to Spring&lt;/a&gt;.&lt;br /&gt;The book: &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1932394354/qid=1125426597/sr=8-1/ref=pd_bbs_1/104-6276560-2747140?v=glance&amp;s=books&amp;amp;n=507846"&gt;Spring in Action&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Disclaimer: I am experimenting with MVC implementation technologies and Spring is new to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112542689798476360?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112542689798476360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112542689798476360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112542689798476360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112542689798476360'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/08/mvc-using-spring.html' title='MVC using Spring'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112477512952857698</id><published>2005-08-23T10:55:00.000+05:30</published><updated>2005-08-23T14:18:39.960+05:30</updated><title type='text'>General Musings</title><content type='html'>Sorry everybody (yeah I know that means nobody). I was pretty busy last few months. Went to Boston on a business trip last month and have been catching up with "stuff" since then. As is evident this post is mainly about thoughts I want to record for posterity sake which have come to my mind over the last few months.&lt;br /&gt;&lt;br /&gt;Lately I have started investing in value stocks in India. I spend time reading classics like Security Analysis and The Intelligent Investor. I feel that not much has changed in the business of value investing since 1971 when the Graham first wrote this &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0060555661/qid=1124775026/sr=8-1/ref=pd_bbs_1/103-9423872-1866220?v=glance&amp;s=books&amp;amp;n=507846"&gt;tome&lt;/a&gt;.&lt;br /&gt;The principles are the same, only there are some new industries now to look at. I think there is a lot to be understood from this book.&lt;br /&gt;&lt;br /&gt;Also I am returning back to coding on the side as often as possible after the intermission of two months injected because of the trip and other associated activities. I guess this gives me immense satisfaction apart from other benefits.&lt;br /&gt;&lt;br /&gt;Last weekend I went for the engagement ceremony of one of my friends whom I have known since my 8th grade. A couple of us old friends got together and caught up with each other and about others who could not make it to the event. We had a ball of a time. I was pretty surprised by how many friends of my batch are married, some even have kids.&lt;br /&gt;&lt;br /&gt;really liked Martin Fowler's latest &lt;a href="http://martinfowler.com/bliki/CallSuper.html"&gt;entry.&lt;/a&gt; He does explain a not-so-trivial topic with simplicity and clarity. I guess this comes with experience and clarity of thought. Thats the reason I like &lt;a href="http://www.amazon.com/exec/obidos/search-handle-form/103-9423872-1866220"&gt;Head First people &lt;/a&gt;too. I also feel that Sealing should be avoided as taking responsibility of code (not breaking something) is basic principle and one need not tell this explicitly (using Sealing) and reduce the flexinility available to a sub-class writer. Also I hope to see anotations being used more and more extensively in java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112477512952857698?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112477512952857698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112477512952857698' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112477512952857698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112477512952857698'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/08/general-musings.html' title='General Musings'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-112013838389574485</id><published>2005-06-30T12:33:00.000+05:30</published><updated>2005-06-30T19:03:03.926+05:30</updated><title type='text'>The art of making "Filter Coffee"</title><content type='html'>This is a tech blog and what is more important to a techie than to have a proper supply of caffeine. This can't be any any coffee, it cant be a wanna-be oh-am-so-stylish frappe or latte. As far as I am concerned there are very few coffees in the world which can lay a stake to the name "coffee". A genuine &lt;a href="http://www.bawarchi.com/cookbook/coffee2.html"&gt;South Indian Coffee&lt;/a&gt; is one of them.&lt;br /&gt;&lt;br /&gt;Of course it needs &lt;a href="http://www.answers.com/topic/coffee-filter-2"&gt;special but simple equipment&lt;/a&gt;, lot of patience (ideally 12 hours that it takes for the decoction to mature) and lots of dedication to prepare filter coffee. &lt;br /&gt;&lt;br /&gt;The flavor comes from the time spent by the decoction in the filter gaining the coffee steam while the taste comes from the dilution with milk. One might ask how to judge these characteristics. As a South Indian who enjoys , naah, worships a good cuppa I will describe the procedure to you. Bring the steel tumbler (because a southie worth his salt would serve coffee no other way) just below your lips and inhale deeply. If you get a heady feeling of falling into a abyss uncontrollably the flavor is perfect. Then take a sip, twirl it in your mouth and gulp it down. If it burns its way down your throat to your stomach and if you can actually feel this sensation both the taste and temperature of serving is correct. That's the way a south indian filter coffee is supposed to be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-112013838389574485?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/112013838389574485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=112013838389574485' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112013838389574485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/112013838389574485'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/06/art-of-making-filter-coffee.html' title='The art of making &quot;Filter Coffee&quot;'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-111996924065103044</id><published>2005-06-28T19:53:00.000+05:30</published><updated>2005-06-28T20:04:00.663+05:30</updated><title type='text'>Simple securing of webservices</title><content type='html'>in work today i had to implement a really simple way of securing webservices. Actually of a particular webservice which plays a messaging role inside my product. Only client side authentication and encryption of message was needed.&lt;br /&gt;&lt;br /&gt;Initially i tried to use HTTPS and security roles (and users) in Jetty. I was not able to go ahead. Dont know why. Jetty was allowing even barred users to go ahead with webservice calls even though https was working fine.  Then I found out that axis has a built handler which can do the required funbctionality SimpleAuthenticationHandler. I had known about about HTTPAuthHandler which took the login and password from the SOAP message and put it in MessageContext but never knew about SimpleAuthenticationHandler. it simply made my day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-111996924065103044?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/111996924065103044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=111996924065103044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111996924065103044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111996924065103044'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/06/simple-securing-of-webservices.html' title='Simple securing of webservices'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-111988731292190006</id><published>2005-06-27T21:15:00.000+05:30</published><updated>2005-06-27T21:18:32.926+05:30</updated><title type='text'>My First Love</title><content type='html'>No you perverts, its not that!!!!! its books. Since I was a child I have always beenreading books, allthough my liking, intensity, frequency and taste varies greatly. maybe thats what they call maturity. I plan to post regular entries on books whcih I love and some which i hate. they may be technical, sci-fi, philosophical whatever. But I plan to make the posts as honest as possible. SO may the creative juices flow......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-111988731292190006?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/111988731292190006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=111988731292190006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111988731292190006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111988731292190006'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/06/my-first-love.html' title='My First Love'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-111962929549860358</id><published>2005-06-24T21:29:00.000+05:30</published><updated>2005-06-27T17:07:47.006+05:30</updated><title type='text'>Mocking</title><content type='html'>i have started exploring the world of Mock Objects. I am working on an web services based application where I need to write unit tests for only the consumer part of the webservices, i.e., the client side of things. I started out by reading the seminal &lt;a href="http://home.ripway.com/2005-3/266907/oopsla2004.pdf"&gt;"Mock Roles, Not Objects"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As I started understanding tha paper the thing which struck me the most was the idea of "Tell, Don't Ask". I guess this one key thinking very neatly summarises the basis of Mock Objects. The idea here is instead of doing something like&lt;br /&gt;dog.getBody().getTail().wag();&lt;br /&gt;one should do&lt;br /&gt;dog.expressHappiness();&lt;br /&gt;and let the dog decide what this means.&lt;br /&gt;&lt;br /&gt;I quote verbatim from the paper: "If we concentrate on an object’s external interactions, we can test it by calling one of its services and tracking the resulting interactions with its neighbours. To summarise, we test an object by replacing its neighbours with objects that test that they are called as expected and stub any behaviour that the caller requires. These replacements are called mock objects. We call the technique of TDD with mock objects, Mock Objects."&lt;br /&gt;This is the essencce of the paper as far as I could tell.&lt;br /&gt;&lt;br /&gt;I will write more as I dig deeper into this. And Thanks Rohan, I am "keeping the spirit up."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-111962929549860358?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/111962929549860358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=111962929549860358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111962929549860358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111962929549860358'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/06/mocking.html' title='Mocking'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-111954513608404955</id><published>2005-06-23T22:08:00.000+05:30</published><updated>2005-06-23T22:15:36.090+05:30</updated><title type='text'>shamed into writing a blog entry</title><content type='html'>i have been away from this blog so long that I am now shamed into posting here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-111954513608404955?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/111954513608404955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=111954513608404955' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111954513608404955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111954513608404955'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/06/shamed-into-writing-blog-entry.html' title='shamed into writing a blog entry'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-111038377807680365</id><published>2005-03-09T20:59:00.000+05:30</published><updated>2005-03-09T22:28:59.353+05:30</updated><title type='text'>AgileIndia 2005</title><content type='html'>Last weekend (March 4th and 5th 2005) I attended the &lt;a href="http://agileindia.org/"&gt;Agile India 2005&lt;/a&gt; conference in Bangalore (India). It was sponsored by &lt;a href="http://www.thoughtworks.com/"&gt;ThoughtWorks&lt;/a&gt; and &lt;a href="http://subexsystems.com/"&gt;Subex Systems&lt;/a&gt; and all the delegates paid Rupees 500 (about 10 dollars) each. This post is on my observations and the things which I want to write about.&lt;br /&gt;&lt;br /&gt;On the first day the &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk7"&gt;Refactoring with Eclipse&lt;/a&gt; session was great. It basically took the video store example from &lt;a href="http://c2.com/cgi/wiki?RefactoringImprovingTheDesignOfExistingCode"&gt;The Refactoring Book&lt;/a&gt; and implemented all the suggested steps. I was deeply impressed by the humility and down to earth character of the conductors (&lt;a href="http://www.skizz.biz/"&gt;Chris &lt;/a&gt; and Yogendra Kulkarni) even though their knowledge and experience was much more than any person's that I have seen in all the topics of Eclipse and Refactoring using Eclipse. Their application of OO technology and Design Patterns was exceptional. My brother found &lt;a href="http://dotnetjunkies.com/WebLog/exortech/"&gt;Owen Rogers's&lt;/a&gt; &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk2"&gt;introductory talk&lt;/a&gt; on XP very informative.&lt;br /&gt;&lt;br /&gt;On the second day the &lt;a href="http://202.53.78.202/agile2005/talks.htm#Keynote2"&gt;keynote&lt;/a&gt; by Dakshinamurthy Karra was interesting. Some points of note were:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Certifications (like SEI CMM and ISO) can exist with XP practices as many XP practices are best practices under the certification norms.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;In XP there is no Design Phase or Design document. This means Design as a noun is not relevant in XP but Design as a verb is all pervasing. This is done through merciless refactoring.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;Pair programming reduces the cost of code reviews, training and fixing bugs.&lt;/li&gt; &lt;/ul&gt; This was followed by one of the most interesting sessions I have attended in any event: The &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk3"&gt;session&lt;/a&gt; by Fred George. He is a very experienced guy who has been working in XP projects for more than 6 years now. In his talk he makes maximum use of humor for a strong conceptual effect. The points that I gleaned from his session were:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;XP is from JIT&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;feedback identified defects&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;avoid "waste"&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;XP reduces staff roles and specialists&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;the three corners of an Agile team are Story Team (BA + QA), Dev Team, Management(Iteration Managers)&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Selling Agile : Sell it to programmers using the fun element and the consequent constant utilization of skills. Sell it to Executives citing reduced time to market and LESS MONEY. Don't sell it to middle managers as they are risk averse.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Its the Stories, Stupid: Delivery is paramount not process or technology&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Metrics: Count what Counts - stories, tests, never on lines of code or task cards.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Harvest Legacy Artifacts&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;&lt;ul&gt;   &lt;li&gt;Delivery focused stand-up meetings: Don't Blame - Just Fix. iteration meetings provide forums.&lt;/li&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;When adopting Agile: Adopt all practices. "We Don't know enough(yet) to discard any of them"&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Most difficult practice: Simple Design&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;Most neglected assumption: OOPs&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;    &lt;ul&gt;   &lt;li&gt;How do you judge individual performance: Ask the team.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;/ul&gt;I then attended the &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk13"&gt;automatic codebase analysis session&lt;/a&gt; and &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk26"&gt;the pair programming workshop&lt;/a&gt;. I also attended &lt;a href="http://202.53.78.202/agile2005/talks.htm#Talk12"&gt;the Test First User Interfaces session&lt;/a&gt; by Owen. This was interesting in the context of the complex gui driven rule engine(creator) we are building in my group. Componentized testing to get complete testing of a complex gui driven application and mock-based component testing were the messages of this session for me.&lt;br /&gt;&lt;br /&gt;Most of the presentations are available &lt;a href="http://202.53.78.202/agile2005/talks.htm"&gt;online&lt;/a&gt;. I felt the whole program was fantastic because of the exposure I got regarding Agile/XP and the people I got meet and interact with. The arrangements were more or less flawless and I thank the volunteers of ASCI(Agile Software Community of India) and the student volunteers for this. I hope many more such programs are organised by ASCI and other interested parties.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-111038377807680365?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://agileindia.org/' title='AgileIndia 2005'/><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/111038377807680365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=111038377807680365' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111038377807680365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/111038377807680365'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/03/agileindia-2005.html' title='AgileIndia 2005'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110968640002790977</id><published>2005-03-01T19:27:00.000+05:30</published><updated>2005-03-02T15:18:31.796+05:30</updated><title type='text'>Dining Philosophers and XP : Part 3: The State Pattern Iteration</title><content type='html'>So I didnt do anything over this weekend. so what? i was very tired after my gym workouts. Anyway, regular readers of my blog (thanks Partha) would have noticed that i have put the source of the first iteration online for your perusing pleasure. The link is mentioned in the &lt;a href="http://techgossip.blogspot.com/2005/02/dining-philosophers-and-xp-part-2.html"&gt;previous post&lt;/a&gt;. It is also available &lt;a href="http://home.ripway.com/2005-3/266907/DiningPhilosophers/src1.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the next iteration I started out by implementing the &lt;a href="http://c2.com/cgi/wiki?StatePattern"&gt;State Pattern&lt;/a&gt; for the Philosopher Class. I introduce an abstract class called PhilosopherState to represent the different states that a philosopher can be. These are: Eating, Thinking, Waiting for Right Chopstick, Waiting for left Chopstick and Waiting for both Chopsticks. The PhilosopherState class defines a common interface for all the different states. I then flesh out the waiting states seperately as that would give complete modularization(at least I think so, but am not sure). Maybe in a future iteration I might combine them if convinced otherwise. Subclasses of PhilolosopherState are :&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;PhilosopherEat&lt;/li&gt;   &lt;li&gt;PhilosopherThink&lt;/li&gt;   &lt;li&gt;PhilosopherWaitForRightCs&lt;/li&gt;   &lt;li&gt;PhilosopherWaitForLeftCs&lt;/li&gt;   &lt;li&gt;PhilosopherWaitForBothCs&lt;/li&gt; &lt;/ul&gt;I use a Table class which maintains a state object (an instance of a subclass of PhilosopherState) that represents the current state of the Philosopher. This Table class delegates all state-specific requests to the state object. Table uses its PhilosopherState subclass instance to perform operations particular to the state of the philosopher. Whenever the state of philosopher changes the Table class changes the state object it uses.&lt;br /&gt;&lt;br /&gt;In the classic definition of terms from &lt;a href="http://c2.com/cgi/wiki?DesignPatternsBook"&gt;GoF&lt;/a&gt; the Context is the Table class, State maps to PhilosopherState class and the different subclasses of PhilosopherState class form the ConcreteState classes.&lt;br /&gt;&lt;br /&gt;Now, on to avoiding deadlocks. If every philosopher never picks up one Chopstick when he can't get another one, then deadlocks can't occur.  So the code includes checks to see if a philosopher can get the other chopstick before he picks up one.  This is one of the simplest (albeit cumboresome and unjust) way of avoiding deadlocks.&lt;br /&gt;&lt;br /&gt;Links to updated code will follow. I might be editing this post sometime soon to add some more developments instead of adding another post between iterations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110968640002790977?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110968640002790977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110968640002790977' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110968640002790977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110968640002790977'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/03/dining-philosophers-and-xp-part-3.html' title='Dining Philosophers and XP : Part 3: The State Pattern Iteration'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110933041507115125</id><published>2005-02-25T16:36:00.000+05:30</published><updated>2005-02-25T16:50:15.073+05:30</updated><title type='text'>Delta Classes and my thoughts</title><content type='html'>Just read Avishek's &lt;a href="http://jroller.com/page/avisheksengupta/20050223#b_delta_classes_and_other"&gt;post&lt;/a&gt; on delta classes. This got me thinking. Delta classes as defined by Avishek are basically Deltas in the classic sense of the work. They denote differences. So if we had such classes we might be able to get away with one start class and many delta classes being applied in various orders or number of times to generate all sorts of classes and code. We might even be able to get to the holy grail of mathematically proven code using &lt;a href="http://en.wikipedia.org/wiki/Lambda_calculus"&gt;lambda calculus&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Let us now assume for the sake of discussion that we have a framework which accepts and understands an initial class and many delta classes and a set of mathematically correct rules (ok...ok..there will many of them) to apply on these delta classes to acquire a set of useful classes and operations. Now whenever a transition is applied it can be proved that the transition is mathematically correct as the general set of rules to be applied are proven to be mathematically correct (including  the order and number of times they are being applied).  For this maybe one just needs to prove that all the rules are derivatives of alpha,beta or gamma reduction/deductions. This is non-trivial but not too though. If we keep out things like dynamic typing maybe we will get mathematically proven correct programs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110933041507115125?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110933041507115125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110933041507115125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110933041507115125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110933041507115125'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/delta-classes-and-my-thoughts.html' title='Delta Classes and my thoughts'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110897602983253997</id><published>2005-02-21T14:11:00.000+05:30</published><updated>2005-03-01T18:48:00.770+05:30</updated><title type='text'>Dining Philosophers and XP : Part 2: The first Iteration</title><content type='html'>hey, the title seems like a Star Wars movies' one.&lt;br /&gt;&lt;br /&gt;So I went ahead and implemented all the features to be implemented in Iteration 1. I also did the factory implementation as I wanted to use it as the framework for holding the relationship between philosophers. Is this done normally?&lt;br /&gt;&lt;br /&gt;I basically have a Factory for making Philosophers, a Philosopher class which extends the Thread method and a Chopstick class and corresponding Test classes. I am planning to use the new utils.concurrent package (J2SE 1.5 aka 'Tiger') to implement threading in the 4th Iteration. As expected Deadlock happends. This will be removed in the next round. I think the code 'smells' with methods like:&lt;br /&gt;&lt;br /&gt; public boolean setRightChopstick() {&lt;br /&gt;     int id = (Math.abs(getPhilosopherId() + 1) % 5);&lt;br /&gt;&lt;br /&gt;     if (PhilosopherFactory.getPhilosopherById(id).hasLeftChopstick() == true&lt;br /&gt;             &amp;&amp;amp; PhilosopherFactory.getPhilosopherById(id).getLeftChopstick()&lt;br /&gt;                     .isInUse() == false) {&lt;br /&gt;&lt;br /&gt;         PhilosopherFactory.getPhilosopherById(getPhilosopherId()).hasRightChopstick = true;&lt;br /&gt;         csRight = PhilosopherFactory.getPhilosopherById(id)&lt;br /&gt;                 .getLeftChopstick();&lt;br /&gt;         PhilosopherFactory.getPhilosopherById(id).relinquishLeftChopstick();&lt;br /&gt;         PhilosopherFactory.getPhilosopherById(id).setHasLeftChopstick(false);&lt;br /&gt;         csRight.setOwnerPhilosopher(this);&lt;br /&gt;         return true;&lt;br /&gt;     }&lt;br /&gt;     return false;&lt;br /&gt; }&lt;br /&gt;What do you guys think about this?&lt;br /&gt;&lt;br /&gt;I collaborated for the most part with my bro' Krishnan (aka 'kannan') on this round and he also plans to come with me for the &lt;a href="http://agileindia.org/"&gt;Agile India conference&lt;/a&gt;. I want to release the whole code through a public URL of a .zip file. What is the best way to do this? The most I could come up with was as .zip file hosted in geocities.com site. &lt;br /&gt;&lt;br /&gt;Code is &lt;a href="http://home.ripway.com/2005-3/266907/DiningPhilosophers/src1.zip"&gt;here&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110897602983253997?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110897602983253997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110897602983253997' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110897602983253997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110897602983253997'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/dining-philosophers-and-xp-part-2.html' title='Dining Philosophers and XP : Part 2: The first Iteration'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110848915146465236</id><published>2005-02-15T22:38:00.000+05:30</published><updated>2005-02-15T23:09:11.470+05:30</updated><title type='text'>Dining Philosophers and XP : Part 1</title><content type='html'>For my latest XP/Agile project I along with &lt;a href="http://i2world.blogspot.com/"&gt;Partha&lt;/a&gt; chose the &lt;a href="http://c2.com/cgi/wiki?DiningPhilosophers"&gt;Dining Philosopher's&lt;/a&gt; (DP from now on) problem.  After choosing it I saw the &lt;a href="http://c2.com/cgi/wiki?DiningPhilosophersChallenge"&gt;Dining Philosophers Challenge&lt;/a&gt;. We decided this is the perfect thing to do. Debunk the doubts against Test Driven development through a real life solving of a non-trivial problem.  We also plan to use this opportunity to use the various design patterns we hear about. We will be doing pair programming together for the first time and I think we will get to spend only about an hour everyday on this project.  So the Velocity is going to be pretty low. &lt;br /&gt;&lt;br /&gt;In the first iteration we plan to do the following:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;set up junit with eclipse&lt;/li&gt;   &lt;li&gt;set up build structure and ant files&lt;/li&gt;   &lt;li&gt;get basic functionality of DP with deadlock  acceptable &lt;/li&gt;   &lt;li&gt;a good commenting format&lt;/li&gt; &lt;/ul&gt; 2nd iteration:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Factories of philosophers and getting the reference of philosopher by ID.&lt;/li&gt;   &lt;li&gt;refactor code to remove all setters and getters&lt;/li&gt;   &lt;li&gt;do setup and cleanup methods in junit classes and remove constructors for classes from all test classes&lt;/li&gt;   &lt;li&gt;state pattern implementation for Chopstick and Philosopher &lt;/li&gt;   &lt;li&gt;resolve deadlock&lt;/li&gt; &lt;/ul&gt; 3rd iteration:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Implement Observer pattern for notification of lock capture and release&lt;br /&gt;  &lt;/li&gt;   &lt;li&gt;Implement fair-scheduler of threads&lt;/li&gt; &lt;/ul&gt; 4th iteration:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;minimising waiting time for chopsticks &lt;/li&gt;   &lt;li&gt;maximing thinking time of philosophers&lt;/li&gt; &lt;/ul&gt; Any suggestions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110848915146465236?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110848915146465236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110848915146465236' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110848915146465236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110848915146465236'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/dining-philosophers-and-xp-part-1.html' title='Dining Philosophers and XP : Part 1'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110835678876136376</id><published>2005-02-14T10:06:00.000+05:30</published><updated>2005-02-15T22:36:14.580+05:30</updated><title type='text'>Fresher Recruitment in my Organization</title><content type='html'>Before we start this post let me make something clear here. I am Sundar, an ex-colleague, ex-roomate and close friend of Suresh. Suresh works in ThoughWorks. I still work in Suresh's ex-company and this post is about the fresher recruitment process in &lt;span style="font-style: italic;"&gt;my&lt;/span&gt; company.&lt;br /&gt;&lt;br /&gt;Another disclaimer:  Since we don't want another &lt;a href="http://jeremy.zawodny.com/blog/archives/004157.html"&gt;Mark Jen episode&lt;/a&gt; here, I want to say that if anybody feels I am writing something which hurts them or my company please tell me about it and after a reasonable conversation we can do something about it. All the information expressed here about this recruitment process is in public domain so I don't expect any problems to occur.&lt;br /&gt;&lt;br /&gt;Last weekend I was invited by my company to be on the interview panel for freshers recruitment. The candidates have all given an written aptitude test and a computer-language specific multi-option written test. Then they were given a 24-hour notice that the next round of interview will be on design patterns in general and a particular design pattern whose information is supplied to them. They are also given a couple of pages info on that particular DP. The idea here was to check how a candidate is able to absord information and learn about an abstract topic in a short period of time, apply it to a problem and express his thoughts on the subject. In the interview they are asked to apply the design pattern they have learnt to real world non-software related topic. For example: Singleton patterm == Office of the President of US.&lt;br /&gt;&lt;br /&gt;Initially I had hesitations regarding this methodology as I thought asking about DP to freshers would be futile as I didnt expect them to know much about it. But I was pleasantly surprised. There were lots of candidates who understood the procedure very well and came up with some real world examples which we had not thought of (like Osama Bin Laden being a subject and the world being observers in the Observer Pattern). They expressed the thoughts very well and we ended up selecting so many of them that we set a record for maximum number of selections in a session till now. All though the DPs were elementary ones it does indicate that sincerity, effort and ability make good candidates. Also this proves that exprience level is not necessary to get started on Design Patterns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110835678876136376?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110835678876136376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110835678876136376' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110835678876136376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110835678876136376'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/fresher-recruitment-in-my-organization.html' title='Fresher Recruitment in my Organization'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110775630458420974</id><published>2005-02-07T11:27:00.000+05:30</published><updated>2005-02-07T11:35:04.586+05:30</updated><title type='text'>PatternShare and a request for help.</title><content type='html'>Today I came across the new MS initiative called &lt;a href="http://patternshare.org/"&gt;PatternShare&lt;/a&gt; which basically is a repository of patterns. This is an extremely useful resource for newbies to pattern world like me. I have read some parts of the GOF book a year ago but didnt take home much from it as i barely understood many many things. I hope to make a renewed attempt to educate myself over the next few months in this topic.&lt;br /&gt;&lt;br /&gt;Readers please suggest the best way(s?) to to learn the usage and application of various paterns.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110775630458420974?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110775630458420974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110775630458420974' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110775630458420974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110775630458420974'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/patternshare-and-request-for-help.html' title='PatternShare and a request for help.'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110725439737325381</id><published>2005-02-01T16:06:00.000+05:30</published><updated>2005-02-02T12:07:59.703+05:30</updated><title type='text'>thoughts on setters and getters</title><content type='html'>Yesterday me and a few of my colleagues had a discussion on the sanctity of getters and setters. I am I.;) I mean when its written I say thats my take on the discussion. Identities are preserved.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;P Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Some time back I was going through an article where the gist of the topic was&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;“Not to provide getter and setter methods for manipulating the member variables”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# The main reason for not doing that is, it’s not following the “Encapsulation” term.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;When we are passing the member variable to another invoking object, the data is no longer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Encapsulated as the member variable can be manipulated by the other object, which they feel &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Is not the real encapsulation.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;What they are proposing is any manipulation of member variable can be done in the same class and&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Any methods related to those variables needs to be provided in the same class. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;After going through those lines, thoughts started bubbling out, which I can’t keep to my self.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;So some doubts and approaches from my side.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# Generally we follow the get and set methods very often. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;If we will not do in that way, then what should be the class structure will be.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Incase we need some functionality depending upon some other class variable then how we will do that.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;=======================================================================&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;D Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;I am not quite sure of your scenario.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;What I have seen…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;Getters/Setters are used in Java bean or value objects sort of environment. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;Ideally, these value objects should only be populated in the constructor for preventing data corruption. But in some scenarios, the value objects gets constructed at one place, gets partly populated at the same place and the rest of the data is set at some part of the code. What to do in this sort of cases?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;In case you need some functionality based on some other classes’ variable, you can use a getter….. In this case also, u are not corrupting the data. The problem arises only when you use a setter. I don’t think using a setter outside a bean environment is good. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;Any other scenario that you remember???&lt;/span&gt;&lt;br /&gt;=======================================================================&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;N Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;Encapsulation doesn’t mean hiding data, it means encapsulating the related methods and data. So by putting getter and setter methods Encapsulation is still there. You should write this comment for that article, person who wrote this article must not knowing actual meaning of Encapsulation. But its right that if you provide unnecessarily getter and setter it can be mis-utilized but that is design level consideration. At the time of design one must be careful about what data require getter and setter, these methods can be provided with validation check before actually changing the actual data. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;Regarding getting data from one class to other I think there has to be proper interface (can be getter or setter) or some data transfer objects which doesn’t carry full data but the part of data that is required. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;===========================================================================&lt;br /&gt;I Say:&lt;br /&gt;If you need to get some data from some other class one should use a pattern (maybe state pattern or something like that. I am not knowledgeable in this). Maybe this is a better method than getter.&lt;br /&gt;============================================================================&lt;br /&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;D Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;Why do we need to encapsulate related methods and data?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;Is it because we need the data to be manipulated only by those method?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;If this is the case, I don’t see why should we expose a setter method as public?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 0);"&gt;What say?&lt;/span&gt;&lt;br /&gt;=============================================================================&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;N Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;We don’t have setter method always or for all member variables. Like before rendering you can set rendered object and then perform rendering, so user has flexibility to change the renderer before performing rendering but still logic for rendering is with actual class and it can’t be changed. &lt;/span&gt;&lt;br /&gt;============================================================================&lt;br /&gt;I Say:&lt;br /&gt;Encapsulation can lead to data hiding which is a good thing as each class should have a secret (logic for rendering). An logical extension would be to make setters inaccessible from other classes or to say setters are sin (and make them non-public). What say people? Am I confusing issues here?&lt;br /&gt;&lt;br /&gt;=========================================================================&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;D Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;I am not able to get the meaning of logic for setter methods? Setter methods are supposed to take in a parameter and set the instance data to the passed parameter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;So, if a setter is public, anyone can access that and set its value later on????/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;============================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;D Says:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;One of the advantages of using setter what I found is ….&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;We can put our logic in setters which we cannot do in constructors….Example, set the variable’s value only if its positive….. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 204, 102);"&gt;So, even if we use a constructor we should call the setter from there…. Should the constructor be only private then????&lt;/span&gt;&lt;br /&gt;==========================================================================&lt;br /&gt;&lt;br /&gt;Then some of us met over tea and discussed this phenomenon further.&lt;br /&gt;The conclusions we came to were:&lt;br /&gt;ideally getters should not be there. if data is contained in a class it should be used within a class. a private getter method can be used as an extreme case (to avoid code duplication compared to the case of getter method not being there).&lt;br /&gt;ideally setting of values should be done in constructer. Else it should be done via a private method so that dubplication of code is avoided (same reason as for getters).&lt;br /&gt;&lt;br /&gt;What do &lt;span style="color: rgb(102, 51, 102);"&gt;you&lt;/span&gt; all think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110725439737325381?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110725439737325381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110725439737325381' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110725439737325381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110725439737325381'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/02/thoughts-on-setters-and-getters.html' title='thoughts on setters and getters'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110719051442548394</id><published>2005-01-31T21:17:00.000+05:30</published><updated>2005-01-31T22:25:14.426+05:30</updated><title type='text'>IntelliJ eclipse keymap</title><content type='html'>I use IntelliJ at work and Eclipse at home. One thing that frustrates me a lot is the different keyboard shortcuts in both the IDEs to achieve the same functionality. I am now comfortable with IntelliJ's settings. Wouldn't it be nice if I get to import all the IntelliJ's keyboard shortcuts in Eclipse. Of course, I can do that manually by changing the mapping in eclipse, but I don't want to do that. Did a google on that, but didn't find any.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110719051442548394?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110719051442548394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110719051442548394' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110719051442548394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110719051442548394'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/intellij-eclipse-keymap.html' title='IntelliJ eclipse keymap'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110715001898370307</id><published>2005-01-31T11:08:00.000+05:30</published><updated>2005-01-31T11:10:18.983+05:30</updated><title type='text'>WorkSpaces</title><content type='html'>why is there not a idea of workspaces or workspaces-switcher in windows. I mean the little 4-window thinggy present in all forms of linux by default. it is very useful when doing many activities leading to no window-clutter. i wish windows has it by default(am sure some bloatware tool will provide it).  another reason to use linux.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110715001898370307?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110715001898370307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110715001898370307' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110715001898370307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110715001898370307'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/workspaces.html' title='WorkSpaces'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110684041103428256</id><published>2005-01-27T21:07:00.000+05:30</published><updated>2005-01-27T21:10:11.033+05:30</updated><title type='text'>Object BootCamp - day12</title><content type='html'>Today was a practical intensive session. We implemented the hopCountsTo method first. We also refactored the isConnectedTo method to avoid duplication. We then implemented minHopCountsTo method that returns the minimum hopcounts to a node. That was it for the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110684041103428256?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110684041103428256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110684041103428256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110684041103428256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110684041103428256'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day12.html' title='Object BootCamp - day12'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110674851016374911</id><published>2005-01-26T15:41:00.000+05:30</published><updated>2005-01-26T19:38:30.163+05:30</updated><title type='text'>Object BootCamp - day11</title><content type='html'>Fred started talking about the final form of relation between objects - Collaboration. Collaboration is when two objects know each other and they interact and churn objects. Recursion is a form of churning objects. Basically, there are three parts to Recursion.&lt;br /&gt;1. Original Question&lt;br /&gt;2. Recursive Question and &lt;br /&gt;3. Terminal Question&lt;br /&gt;&lt;br /&gt;We did an exercise on Recursion. We chose to design and represent Graphs in objects. So we came up with a design for the same. We had a Node class whose job was to understand its neighbours. We then implemented canTraverseTo method that returns a boolean if we can traverse between two nodes. We used recursion to implement the same.&lt;br /&gt;&lt;br /&gt;We then designed and implemented hopCountsTo method that returns the number of hops it takes to reach another node. I wrote the tests for the same and tried re-using the canTraverseTo method. The canTraverseTo method had an arraylist which held the visited nodes. So I refactored the class and ran the tests. I hit the green bar. I was happy and wrote more tests. Green bar again. Though I was a bit sceptical, my partner was very happy. We announced we had completed. When the entire class saw our code, they knew it wouldn't work. So we kept adding more tests and showing the green bar to them. Then we wrote a test that should fail. We hit the green bar again. Only then did we notice that we were running the wrong tests. That was embarassing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110674851016374911?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110674851016374911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110674851016374911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110674851016374911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110674851016374911'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day11.html' title='Object BootCamp - day11'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110657493723160061</id><published>2005-01-24T19:25:00.000+05:30</published><updated>2005-01-24T19:25:37.233+05:30</updated><title type='text'>Object BootCamp - day9 &amp; 10</title><content type='html'>Day 9 was all about the history of Objects thinking. Essentially there are two schools of Object thinking - Rational and Tektronics. Rational suggests the UML way, whereas the Tektronics suggests the Agile way. Fred talked in depth about various people in both camps. It was interesting.&lt;br /&gt;&lt;br /&gt;Day 10's topic was Collections. Most people are familiar with this, so am not going to go into the details. But I am listing some interesting observations:&lt;br /&gt;&lt;br /&gt;1. There is a ListIterator which has methods to traverse in the reverse direction.&lt;br /&gt;2. LinkedList has addFirst, removeFirst methods which are unique to itself.&lt;br /&gt;&lt;br /&gt;Will add more when i get time.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110657493723160061?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110657493723160061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110657493723160061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110657493723160061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110657493723160061'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day9-10.html' title='Object BootCamp - day9 &amp; 10'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110656349607194923</id><published>2005-01-24T16:08:00.000+05:30</published><updated>2005-01-24T16:14:56.070+05:30</updated><title type='text'>logging using event delegation</title><content type='html'>Nat Pryce in &lt;a href="http://nat.truemesh.com/archives/000488.html"&gt;this&lt;/a&gt; post talks about how to use events and delegation to log and monitor. The post talks pretty clearly about how exceptions can be caught and instead of being logged directly which will reduce cohesion and incerase clutter be passed as events to a delegator which can eventually use the logging frameworks to do the needful. In a way there is a clear seperation of logic and presentation in this idea. The only problem I see here is the additional effort (and time) required to do this. Maybe the idea of delegation can be used many other similar places too where it is not being used now.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110656349607194923?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110656349607194923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110656349607194923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110656349607194923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110656349607194923'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/logging-using-event-delegation.html' title='logging using event delegation'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110623446633019856</id><published>2005-01-20T20:48:00.000+05:30</published><updated>2005-01-20T20:51:06.330+05:30</updated><title type='text'>Object BootCamp - day8</title><content type='html'>A short discussion, essentially a continuation of yesterday's discussion, on Inheritance marked the beginning of day 8 of the BootCamp. When do we mark methods final? Rarely. But there is an advantage of declaring methods as final - it encourages the "buy" relationship as opposed to inheritance.&lt;br /&gt;&lt;br /&gt;We then talked about Cloning in Java. There are two types of cloning - shallow and deep. Why is Cloning necessary? So that you don't give away your data. It is not necessary for immutables. How deep do you need to clone? Till you hit an immutable.&lt;br /&gt;&lt;br /&gt;Fred then explained why Cloning is broken in Java. He gave five reasons why cloning is broken in Java:&lt;br /&gt;1. It is Shallow by default.&lt;br /&gt;2. It returns Object, not its own type.&lt;br /&gt;3. The clone method is protected, so when an object buys another, and wants to invoke its clone method, it is not possible to.&lt;br /&gt;4. When we try to call a clone method, the class should have implemented the marker interface Cloneable.&lt;br /&gt;5. The clone method throws a CloneNotSupportedException, a checked exception.&lt;br /&gt;&lt;br /&gt;Some alternatives to clone method are:&lt;br /&gt;1. Serialization and deserialization gives a full hierarchy of objects.&lt;br /&gt;2. Copy constructors.&lt;br /&gt;3. We could use reflection and write our own cloning mechanism or&lt;br /&gt;4. Write our own copy method.&lt;br /&gt;&lt;br /&gt;But all the above methods also have different drawbacks that makes clone method the best available option.&lt;br /&gt;&lt;br /&gt;Fred then started talking about Polymorphism. He chose a very interesting method to explain Polymorphism. He chose four of us and took us outside. He then gave a criteria - height. He then took us inside the class again. He asked the rest of the people to sort us, and that we knew the criteria. So others sorted us by choosing two of us and asking us to decide who was better. After gettingsorted by height, we were given a second criteria and a third. In all these cases, they group sorted the same way without ever knowing about the criteria. This is polymorphism.&lt;br /&gt;&lt;br /&gt;We then implemented Polymorphism in our Probability and Rectangle examples. We had an interface Comparable/Orderable which had one method isBetterThan. And then we wrote a max method to find a max from a set of Comparable/Orderable objects.&lt;br /&gt;&lt;br /&gt;That was it for the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110623446633019856?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110623446633019856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110623446633019856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110623446633019856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110623446633019856'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day8.html' title='Object BootCamp - day8'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110614434303795117</id><published>2005-01-19T19:48:00.000+05:30</published><updated>2005-01-19T19:49:03.036+05:30</updated><title type='text'>Object BootCamp - day7</title><content type='html'>As usual, we started the day with a discussion about the previous session. I said that the conversion of units was now taking place in both Quantity and Unit classs. The code was getting ugly. Itneeded to be in one place and that should be the Unit Class. Fred readily agreed to that view. Also, if we need to have a method for finding average of Temperatures, where would we put that? There were ways of achieving it. One was subclassing a Collections class writing our own Collection and the other alternative was to have a static method in Quantity class that finds the average of a collection of Quantitites. Fred's opinion was that the second alternative was better because subclassing a Collection class was a bad idea. More on that a bit later. There was a discussion on naming standards, and how important it was in an agile team. Naming a collection of plants as Forest is a bad idea, instead naming it Plants yells out the intention better.&lt;br /&gt;&lt;br /&gt;Fred then started talking about Inheritance. Inheritance is bad, but still important(around 10% on the PIE chart). So when do we go for inheritance? Answer is, there is a two question test:&lt;br /&gt;&lt;br /&gt;1. Almost all of the code is reused.&lt;br /&gt;2. The two objects exhibit "kind of" relationship. Also called the Grandmother test. Which means that it should be simple enough to say that they are of same kind. It should not require a programmer to say that such a relation exists.&lt;br /&gt;&lt;br /&gt;Two level inheritances are absolutely bad. It means something is wrong with the design. Inheritances are normally not designed for. They are normally discovered.&lt;br /&gt;&lt;br /&gt;Fred then asked us to design a Square class. I went ahead and implemented a square, which inherited from Rectangle class. I also overrided the equals method in Rectangle class so that a Square ofside 10 equals a Rectangle with length and breadth equalling 10. All the tests ran and I was happy. Fred saw the Square class and said that it does nothing, so there is no need for such a class. We were as usual surprised at that remark, but it made a lot of sense. &lt;br /&gt;&lt;br /&gt;That was the day 7 session.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110614434303795117?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110614434303795117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110614434303795117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110614434303795117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110614434303795117'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day7.html' title='Object BootCamp - day7'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110605582890221508</id><published>2005-01-18T19:04:00.000+05:30</published><updated>2005-01-18T19:13:48.903+05:30</updated><title type='text'>Object BootCamp - day6</title><content type='html'>Today was a non-productive day. We started talking about the design for Temperature comparisons and then went ahead to implement it. We spent more than an hour to get the green bar for implementing the equals method. Most of us introduced a new class for Temperature which extends Unit class. We made the add method throw an UnsupportedException. Since the add operation should not be permitted on the Temperature class(because we cannot "add" two temperatures), we were not quite sure if that was a good idea. The alternative would be to have an addable quantity and then a factory to create Quantities. That way there would be no add method when we instantiate temperatures. We took the first route, though i didnt quite like that.&lt;br /&gt;&lt;br /&gt;We then were stuck in deducing the relation between Celsius, Fahrenheit and Kelvin scales as a linear equation. I couldn't quite get it right and we spent an hour trying to figure out what was going wrong. Lessons learnt from today's session:&lt;br /&gt;&lt;br /&gt;1. It should not take more than 15 minutes to get the green bar. Else, we probably are biting too much.&lt;br /&gt;2. Had we taken smaller steps in representing the Temperature class, we probably would have made it.&lt;br /&gt;3. We didn't spend time in designing at all. We had to pay for it by spending too much time on broken unit tests.&lt;br /&gt;4. There are 4 features of OOP, encapsulation, inheritance, polymorphism and Identity.&lt;br /&gt;&lt;br /&gt;Fred also suggested having a constant called Temperature in Unit class instead of a sub-class. He suggested using identity in place of inheritance. The identity is a very powerful concept. It is something which cannot be represented in RDBMS. We need to find either a string or a number to represent the identity. &lt;br /&gt;That was what happened during a day of highly practical session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110605582890221508?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110605582890221508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110605582890221508' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110605582890221508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110605582890221508'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day6.html' title='Object BootCamp - day6'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110596827095496466</id><published>2005-01-17T18:52:00.000+05:30</published><updated>2005-01-17T18:54:30.953+05:30</updated><title type='text'>Object BootCamp - day5</title><content type='html'>It was another day of lots of practical work and less of theory. We started the class with each one of us taking turns and giving a brief description of the various concepts that we had covered so far. We then continued with the Quantity/Unit exercise. We were asked to represent addition of two Quantities in terms of objects. For example, it should be possible to say 2 Quarts and 1 Quart equals 12 Cups.&lt;br /&gt;&lt;br /&gt;So we started by writing the assert statement:&lt;br /&gt;assertEquals(new Quantity(12, Unit.CUP), new Quantity(1, Unit.QUART).add(new Quantity(2, Unit.Quart));&lt;br /&gt;&lt;br /&gt;We then easily implemented the add method in Quantity by putting the following code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public Quantity add( Quantity other ) {&lt;br /&gt;    return new Quantity(this.value+ other.unit.convertTo(other.this)*other.value, this.unit);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Fred suggested to move the complex statement out there to a method in itself. So we ended up like this:&lt;br /&gt;return new Quantity(this.value+convertedValue(other), this.unit);&lt;br /&gt;&lt;br /&gt;When we did this, we found yet another usage of the above statement in equals method and changed that too. We found the code to be clean at the end of this. Fred noted that it is important to listen to code, as Kent calls it. The complex statement was yelling at us to refactor it. Had we listened to the code, we would have ended up with a neat code.&lt;br /&gt;&lt;br /&gt;The class ended with an interesting problem waiting to be solved tomorrow. How do we represent Temperature conversions through the same sets of classes? How do we represent additions of two temperatures? 0 deg Celcius + 0 deg Celcius = 0 deg Celcius? Whereas, 32 deg F + 32 deg F = 64 deg F? We spent some time analyzing the problem, but could not come to a design. Try out for yourselves if you can come up with a design. Good Luck. Will probably provide solution in tomorrow's notes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110596827095496466?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110596827095496466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110596827095496466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110596827095496466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110596827095496466'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day5.html' title='Object BootCamp - day5'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110562097599602315</id><published>2005-01-13T18:22:00.000+05:30</published><updated>2005-01-13T18:26:15.996+05:30</updated><title type='text'>Object BootCamp - day4</title><content type='html'>Yesterday i had written about how to refactor the "or" method in Probability class to use existing methods. The day started with a question on that. What if we had started with the "or" method? Fred suggested that either we could have written down the "and" and "not" methods as private, or could have very well settled for the first version. At a later time, when the "not" and "and" methods are written, we could refactor the "or" method to reuse the other methods.&lt;br /&gt;&lt;br /&gt;Fred then observed that there was a difference between object thinking and traditional thinking. Object thinking tries to find groups of behaviours to find objects, traditional thinking tries to group data together. He also gave an interesting anology of churning of objects. He said we should churn objects and they in turn communicate and churn out objects.&lt;br /&gt;&lt;br /&gt;What followed next was a discussion on equals method. Fred gave us a template for writing equals method. The first step should be to check if both instances are same. The second step should be a check for null. Then the type of the objects should be compared. Note that we should use the getClass to compare the type instead of the instanceof operator. Reason is that instanceof operator returns true even for subclasses, which is not desirable for equals method. Finally the actual comparison for equality of two instances of the same type should be done, probably in a private/protected method.&lt;br /&gt;&lt;br /&gt;In summary, the steps to write an effective equals method are:&lt;br /&gt;1. if( this == other ) return true;&lt;br /&gt;2. if( other == null ) return false;&lt;br /&gt;3. if( this.getClass() != other.getClass() ) return false; // can use instanceof when class is final.&lt;br /&gt;4. return equals( (Probability) other ); // a private/protected method to do the actual check.&lt;br /&gt;&lt;br /&gt;We then had a discussion about the various relations that two objects can have. Essentially, there are four types of relations: a "buy" relation( composition relation ), aggregation, inheritance and collaboration. A buy relation seems to be the favorite with Fred and he would like to see a cascading chain of such relation. There should be no cycles of relations and backward pointer. Both of these are code smells.&lt;br /&gt;&lt;br /&gt;Fred then gave us a more real world problem to design. He wanted us to represent relations like 1 quart = 4 cups.&lt;br /&gt;Take a moment and think about a solution, its really interesting.&lt;br /&gt;&lt;br /&gt;I came up with a design as below:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// understands the quantity of anything in terms of a standard unit of measurement&lt;br /&gt;class Measure {&lt;br /&gt;    private final double quantity;&lt;br /&gt;    private final UOM unitOfMeasure;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I was not quite sure about how UOM class should look like and what its job would be. At the end of the session, the below representation seemed to be the best that we were able to come up with. I still believe the factor could also be represented in terms of objects. Let me think...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// understands a standard measurement unit&lt;br /&gt;class UOM{&lt;br /&gt;    public static final UOM QUART = new UOM("Quart", 1);&lt;br /&gt;    public static final UOM CUPS = new UOM("Cups", 2);&lt;br /&gt;&lt;br /&gt;    private final String name;&lt;br /&gt;    private final double factor;&lt;br /&gt;    private UOM(String name, double factor) {&lt;br /&gt;        ...&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110562097599602315?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110562097599602315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110562097599602315' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110562097599602315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110562097599602315'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day4.html' title='Object BootCamp - day4'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110554910916043399</id><published>2005-01-12T22:01:00.000+05:30</published><updated>2005-01-12T22:28:29.160+05:30</updated><title type='text'>XP Game</title><content type='html'>Today couple of my colleagues conducted XP Game for those of us who had joined ThoughtWorks recently. It was fun. Visit &lt;a href="http://www.xp.be/xpgame/"&gt;this&lt;/a&gt; link for more on the game. We were divided into small teams of 5-6 people and played the role of developers and customers in turns. We estimated the tasks as developers and prioritized the same as customers. We played a couple of iterations and believe me, it was fun. Some observations from this exercise:&lt;br /&gt;1. We were aggressive in our estimates in the first iteration.&lt;br /&gt;2. The second iteration was drastically different and better in estimates as well as implementation due to the lessons learnt in the first iteration.&lt;br /&gt;3. Tasks in the later iterations which were similar to the earlier ones were done almost exactly on time.&lt;br /&gt;&lt;br /&gt;Overall, it was fun way of learning XP concepts like velocity, estimation etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110554910916043399?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110554910916043399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110554910916043399' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110554910916043399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110554910916043399'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/xp-game.html' title='XP Game'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110554350206066815</id><published>2005-01-12T20:28:00.000+05:30</published><updated>2005-01-12T20:55:02.060+05:30</updated><title type='text'>Object BootCamp - day3</title><content type='html'>We started the day with a question to Fred asking him why he chose Probability to design. In the sense that why not something more equivalent to real world. Fred replied that Probability is a very good example, because when anyone is asked to represent Probability in a code, most people eventually end up with a float or a double to represent it. Also, in yesterday's class most of us had spent a great deal of time in checking for nulls and boundary conditions. Fred suggested that this is a waste of time and that we should listen to users. Only when the user requests for boundary conditions should we actually put that in code.&lt;br /&gt;Also, Fred suggested that there need be no null checks in code. If someone passed in null, he/she deserves a NullPointerException. &lt;br /&gt;&lt;br /&gt;Bottomline was, as engineers we tend to overengineer rather simple situations. Do not write extra code than necessary.&lt;br /&gt;&lt;br /&gt;Then we had a very interesting discussion about designing for change. Designing for change does not mean we need to design for reusability. Why bother about tomorrow? If a code can be changed today, and if it takes the same time later, we better postpone it. That itself is a gain. For a code to be easy to change, XP advocates four principles:&lt;br /&gt;1. It Works&lt;br /&gt;2. It Communicates&lt;br /&gt;3. There is no duplication in it and&lt;br /&gt;4. Fewest possible classes are present.&lt;br /&gt;&lt;br /&gt;We had switched partners in the middle of the session yesterday as well as today. An observation from that was it is important that all members within the same team use almost the same set of tools and IDEs. It is better to have environments that are identical.&lt;br /&gt;&lt;br /&gt;We continued with the Probability class and implemented "and" and "or" methods. Most of us implemented the or method as&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Probability or(Probability other) {&lt;br /&gt;    return this.value + other.value - and(other).value;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Fred suggested using the DeMorgan's theorem. So we ended up with a code like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// DeMorgans theorem states A || B = not( not(A) and not(B) )&lt;br /&gt;Probability or(Probability other) {&lt;br /&gt;    return this.not().and(other.not()).not();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;The above code, though a bit confusing has another big advantage. It re-uses the existing code, therefore better tested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110554350206066815?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110554350206066815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110554350206066815' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110554350206066815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110554350206066815'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day3.html' title='Object BootCamp - day3'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110546431920321679</id><published>2005-01-11T22:17:00.000+05:30</published><updated>2005-01-12T19:52:16.816+05:30</updated><title type='text'>Object BootCamp - day2</title><content type='html'>The day started with Fred asking us what was the wierdest thing that we heard yesterday. I said i was surprised to find that the names of the methods should not have get/set(forget about having getters/setters, the name should not even have the string get/set as in getArea in Rectangle class). He said that well designed do not have getters/setters. For example, the JDK APIs hardly have getters/setters. Objects should not be modified through setters after they are constructed. For changeability of an app, objects should do what they are supposed to do.&lt;br /&gt;&lt;br /&gt;He said having multiple levels of calls like a.b().c().d() was a code smell. This is a tight coupling. Instead the behavior c()/d() should be moved to a. I asked that this might increase the size of the classes, so how to keep it small. Fred suggested refactoring to find embedded objects as a key to keeping small classes.&lt;br /&gt;&lt;br /&gt;Fred then asked us to design a class for Probability. The goal was to represent Probability in objects. We had a fairly long discussion as to what would the class Probability would look like. We ended up designing a class called Probability which would be treated as its mathematical equivalent. It would have behaviours like and, not, etc. &lt;br /&gt;&lt;br /&gt;We followed TDD and wrote tests for equality. Fred suggests writing the assert statement first in a test method. When we are not able to come up with an assert statement, it means that we have to design. Fred suggested designing and "conversation"(as covered in yesterday's post) to overcome this. This way we can arrive at better design. We started with an assertion as below:&lt;br /&gt;    assertEquals(0.5, new Probability(1,2).chance());&lt;br /&gt;&lt;br /&gt;Fred did not like it. He said what is 0.5? Its a number. What are the operations possible on it. Addition, subtraction, multiplication etc? Why should a probability have those opertations? Probability is not a number. So we modified it to &lt;br /&gt;    assertEquals(new Probability(0.5), new Probability(1,2)); &lt;br /&gt;&lt;br /&gt;Other things that were covered in today's session was how to override equals method effectively. equals method cannot throw exceptions, so all condional checks should be made explicitly. Also, instead of using the instanceof operator to check the class, Fred suggested using getClass method as that will allow sub-classing without breaking equals. Also, when equals method is overridden, hashcode method should also be overridden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110546431920321679?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110546431920321679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110546431920321679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110546431920321679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110546431920321679'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day2.html' title='Object BootCamp - day2'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110542469391779456</id><published>2005-01-11T11:50:00.000+05:30</published><updated>2005-01-11T11:54:53.916+05:30</updated><title type='text'>Object Bootcamp - day1</title><content type='html'>Fred started the session by asking the class to draw a pie chart based on the importance of the concepts of Polymorphism, Inheritance and Encapsulation to OOP. I came up with a figure of 45%Encapsulation, 30% Polymorphism and 25% Inheritance. Most of us were around the same percentages. Fred's opinion was 60% Encapsulation, 30% Polymorphism and 10% Inheritance. He also noted that in the early days, when OOP was introduced, high importance was placed on Inheritance.&lt;br /&gt;&lt;br /&gt;He then gave a brief history of how OOP evolved. Initially, finding the right data structure was considered the most important thing to do. It was assumed that once the data structure is correctly identified, then writing a set of behaviors around it is essentially what OOP was all about.&lt;br /&gt;&lt;br /&gt;Later Data hiding evolved to be the most important thing. Since changing a datastructure affected several behaviors in the above said method, this turned out to be the challenge. So it was important to hide the data and provide behaviors around it, this is also known as Encapsulation. &lt;br /&gt;&lt;br /&gt;We then started to design a Rectangle Class. Fred says it is important to conceptualize for a good OO design. "Jobs" of a class needs to identified first. Every class must have one and only one job, and this should be understood to identify an object. Example of a good job for class Rectangle is: undertands a geometrical object with 4 sides with right angles at all the ends. Examples of bad jobs are ones that have circular reference, jobs that describes the data and jobs that go into implementation details. &lt;br /&gt;&lt;br /&gt;When we design objects, we should think of them as having a conversation. Suppose a user of Rectangle class asks the rectangle for the length, the question that we should ask is why? what are you going to do with that. Probably calculate area. In that case, that behavior has to be present in the Rectangle class itself. This is the conversation.&lt;br /&gt;&lt;br /&gt;According to Fred, any class whose name ends with "er" or "or" is a bad object and hence bad encapsulation. Also, Manager classes are like real world Manager, they take credit for what they dont do. ;)&lt;br /&gt;&lt;br /&gt;Fred likes to see all classes begin with a comment that starts with "understands". Example:&lt;br /&gt;// understands four sided geometrical figure with right angles at all the corners&lt;br /&gt;class Rectangle {&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For tests, usuall "ensures" seems to fit it.&lt;br /&gt;&lt;br /&gt;// ensures that Rectangle works fine&lt;br /&gt;class RectangleTest extends TestCase{&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In OOP, the cycle that someone should usually follow is as below:&lt;br /&gt;&lt;br /&gt; Task followed by Design, followed by cycles of Test and Code and then finally integrate before proceeding to another task. This cylce should be done as quickly as possible. Fred says this cycle should be over as early as 15 minutes. At the end of 15 minutes, he likes to see the Green bar. The design aspect of this cycle is falsely ignored as not agile/xp but actually is very much part of this cycle. Yes, there is no upfront design as in a traditional waterfall model, but still is an important step where objects are identified, although for a very negligible time period. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110542469391779456?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110542469391779456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110542469391779456' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110542469391779456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110542469391779456'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-day1.html' title='Object Bootcamp - day1'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110542437688694942</id><published>2005-01-11T11:48:00.000+05:30</published><updated>2005-01-11T11:49:36.886+05:30</updated><title type='text'>Object Bootcamp series...</title><content type='html'>I started attending Object BootCamp by Fred George, a very senior consultant/coach here at ThoughtWorks. He is currently in India and is running these sessions. Through these sessions, he mentors/teaches Object programming and thinking. The sessions are generally lab intensive, so I will try my best to write as much theory on these as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110542437688694942?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110542437688694942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110542437688694942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110542437688694942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110542437688694942'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/object-bootcamp-series.html' title='Object Bootcamp series...'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110484380227085512</id><published>2005-01-04T18:25:00.000+05:30</published><updated>2005-01-04T18:33:22.270+05:30</updated><title type='text'>Is TDD an engineering way?</title><content type='html'>Recently I had a discussion with a couple of my colleagues here at TW about TDD. One of them was of the view that TDD is not an engineering way of coding, because it takes away the element of thinking from you when you do TDD and that the designs unfold before you. That itself partly being a credit to TDD, I tend to disagree that TDD is not an engineering way. In engineering, lots of importance is given to specification, and TDD is a way of writing the specs before writing the code, a perfect engineering way. You write tests before you write the code that is tested. Tim Bray seems to be of the same opinion &lt;a href="http://www.tbray.org/ongoing/When/200x/2004/06/13/TDD2004"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt; And as far as the element of thinking goes, I disagree again. Though TDD is simple, it takes a lot of thinking to recognize the emerging patterns and code smells. It is not easy to notice the designs unfold before you, especially for a beginner. Also, code smells if it takes you time to write a simple test. It is high time you start refactoring before going ahead. You need to realize all these and much more as you do TDD. It is simple, not easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110484380227085512?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110484380227085512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110484380227085512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110484380227085512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110484380227085512'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2005/01/is-tdd-engineering-way.html' title='Is TDD an engineering way?'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110354493613844937</id><published>2004-12-20T17:31:00.000+05:30</published><updated>2004-12-20T17:45:36.136+05:30</updated><title type='text'>Personal Corporate blogs and their effects: Part 2</title><content type='html'>There seems to be a lot of churnign in the ocean of corporate blogs. Lately &lt;a href="http://radio.weblogs.com/0001011"&gt;Scoble&lt;/a&gt; whom I used to respect seems to have strayed from his path. He not only posted a &lt;a href="http://radio.weblogs.com/0001011/2004/12/19.html#a8932"&gt;post&lt;/a&gt; which seemed mildly out-of-place, given that it was deeply critical of his own company but also using pretty strong language, but it also generated enough &lt;a href="http://blogs.msdn.com/EdKaim/archive/2004/12/19/326782.aspx"&gt;emotions&lt;/a&gt; among people associated with his own company (MS). It has also generated a post on on &lt;a href="http://www.corporateblogging.info/2004/12/how-much-internal-discussion-can-you.asp"&gt;corporateblogging.info&lt;/a&gt; site. I think this time Scoble deserves all that he gets. I truly believe that if one throws shit up on the fan, shit rains down.&lt;br /&gt;&lt;br /&gt;Sadly, increasingly Scoble's blog has been reduced to just a collection of links from other prominent bloggers without much original well thought-out content.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110354493613844937?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110354493613844937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110354493613844937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110354493613844937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110354493613844937'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/12/personal-corporate-blogs-and-their.html' title='Personal Corporate blogs and their effects: Part 2'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110205418364034227</id><published>2004-12-03T08:44:00.000+05:30</published><updated>2004-12-03T11:40:11.946+05:30</updated><title type='text'>statics and threads in java...</title><content type='html'>I was asked by someone recently about the evils of static members. I talked about lack of state in these variables, overriding being not possible, etc. But the other person asked me how statics were evil in the context of Threads. I told him that if a static method is synchronized, then only one static synchronized method in the class will be accessible at any point of time to the threads. He was still not convinced though. He told me that if a static synchronized method is accessed by a thread, then even non-static synchronized methods are not available to other threads.&lt;br /&gt;&lt;br /&gt;I was surprised. My understanding of threads was that, if a method is synchronized, then the monitor of "this" has to be obtained by the calling thread before it enters that method. However, if the method is static then the monitor of the Class instance (this.class) has to be obtained. So if there were two threads and one of them is accessing a non-static synchronized method, and the other is accessing a static synchronized method, both threads should comfortably have access to those methods.&lt;br /&gt;&lt;br /&gt;I tried out a sample. Here's the code for the same. Try out this sample and see for yourself.&lt;br /&gt;Correct me if my understanding of threads is wrong.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="java"&gt;&lt;br /&gt;   &lt;tr&gt;&lt;br /&gt;&lt;br /&gt;  &lt;!-- start source code --&gt;&lt;br /&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;&lt;br /&gt;    &lt;code&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;StaticsAndThreadsTest&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;main&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;String&lt;/font&gt;&lt;font color="#000000"&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;args&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Runner&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;implements&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Runnable&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;TestObject&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;code;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Runner&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.code&amp;nbsp;=&amp;nbsp;i;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;run&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;code%&lt;/font&gt;&lt;font color="#990000"&gt;2&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;!=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject.staticallyDoingSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject.staticallyDoingSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;obj.doSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;obj.doSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i=&lt;/font&gt;&lt;font color="#990000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i&amp;lt;&lt;/font&gt;&lt;font color="#990000"&gt;10&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Thread&amp;nbsp;thrd&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Thread&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Runner&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;thrd.start&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;name;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TestObject&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;String&amp;nbsp;name&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.name&amp;nbsp;=&amp;nbsp;name;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;synchronized&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;doSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;System.out.println&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;Thread&amp;nbsp;&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;Thread.currentThread&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.getName&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;:&amp;nbsp;doing&amp;nbsp;something.&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;synchronized&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;staticallyDoingSomething&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;System.out.println&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;Thread&amp;nbsp;&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;Thread.currentThread&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.getName&lt;/font&gt;&lt;font color="#000000"&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;+&amp;nbsp;&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;#34;:&amp;nbsp;statically&amp;nbsp;doing&amp;nbsp;something.&amp;#34;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;Thread.sleep&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;1000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;InterruptedException&amp;nbsp;iex&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110205418364034227?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110205418364034227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110205418364034227' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110205418364034227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110205418364034227'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/12/statics-and-threads-in-java.html' title='statics and threads in java...'/><author><name>suresh</name><uri>http://www.blogger.com/profile/00884419222638108378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110199264861256121</id><published>2004-12-02T18:13:00.000+05:30</published><updated>2004-12-02T18:34:08.613+05:30</updated><title type='text'>Test Driven Development(TDD) or Test First Development(TFD)</title><content type='html'>Suresh and I have always been wondering about what is the most practical way of development: TDD or TFD ? We both agree that TDD is the best way theoretically. But in practice how would one go about writing tests for all possible cases, including the negative ones and then write code. The amount of tests written would be phenomenal. Then we took an evolutionary step and agreed that maybe all possible tests need not be written, but only those steps which are relevant to the class under consideration and which we feel are important need to be concentrated on. This leads to the problem of missing out crucial tests which were not apparent to the developers at that time. Therein lies the crux of the matter. How practical should one go before one turns out wrong and how theoretical should one go before one turns unacceptably inefficient.&lt;br /&gt;&lt;br /&gt;We did pair programming on a not-so-complicated problem and started out with TDD. Over time with the deadline drawing near we deviated from strict TDD and ended up doing TFD. But at one point, because we had not written the test for a particular side-effect of a method our code passed all tests but failed to give the correct response. That was the time I was truly convinced about the truth behind TDD (Suresh was wise enough to be a believer from the beginning). But I still don't know how practical will TDD be in real life.&lt;br /&gt;&lt;br /&gt;Now through Suresh I have heard of a discussion he had with a colleague of his where they concluded that beyond a point when the complexity of the code prevents one from writing proper tests, code should be refactored. This is basically TDD. I totally agree with this thought. This means that we end up molding the code for passing tests rather than developing code and writing tests to check the code. Since this is the basis of TDD (at least as I understand it), I guess what we had an discussion about was for projects which had not undergone several iterations of development. Once the process of development matures TDD is the way to go.&lt;br /&gt;&lt;br /&gt;I have become a total convert. Long live TDD !!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110199264861256121?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110199264861256121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110199264861256121' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110199264861256121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110199264861256121'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/12/test-driven-developmenttdd-or-test.html' title='Test Driven Development(TDD) or Test First Development(TFD)'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110188461323498138</id><published>2004-12-01T13:12:00.000+05:30</published><updated>2004-12-01T12:45:50.650+05:30</updated><title type='text'>Patterns of architecture (No its not a enterprise design patterns discussion)</title><content type='html'>Increasingly buildings which are built in a urban or semi-urban are modeled according to the changing needs of the tenants, both for corporate or individuals. Things like a false ceiling (in India this is not a common thing), modularized work spaces, structurally changeable bay areas, etc are increasingly becoming common. This lead me to a thought. This change is a leap in evolution in the art of architecture (I mean in the civil engineering sense and not in the software engineering sense). This branch of engineering which has been around for centuries (since man/homo sapiens/whatever) has started evolving in this direction only after say 5000 years (assuming the pyramids were built around 3000 BC [&lt;a href="http://www.egyptspyramids.com/html/article.html"&gt;A nice article on how and when the pyramids were built&lt;/a&gt;]). But in the software engineering discipline with the advent of loosely coupled enterprise applications we can see this evolution happening in just under 50 years (assuming 1955 as the start date of software engineering [&lt;a href="http://en.wikipedia.org/wiki/Software_engineering"&gt;wikipedia entry for Software Engineering&lt;/a&gt;]). I believe these two evolutions are comparable as the basis of thought behind both the evolutions is flexibility and exntensibility.&lt;br /&gt;&lt;br /&gt;Now one could argue that such practices have been in the architecting or civil engineering for quite sometime but then it is only now that they are being manifested in such a popular manner. The same thing could be said for software engineering if we assume that RPCs which have been around for sometime do provide the required loose coupling. But it is only now with webservices (explaining my understanding and thoughts on webservices is a topic for another post) that true loose coupling is being embraced.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110188461323498138?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110188461323498138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110188461323498138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110188461323498138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110188461323498138'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/12/patterns-of-architecture-no-its-not.html' title='Patterns of architecture (No its not a enterprise design patterns discussion)'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-110075846127303578</id><published>2004-11-18T11:29:00.000+05:30</published><updated>2004-11-18T15:22:08.496+05:30</updated><title type='text'>Personal corporate blogs and their effects : Part 1</title><content type='html'>&lt;a href="http://jeremy.zawodny.com/blog/archives/003034.html"&gt;Jeremy's latest post on his blog&lt;/a&gt; regarding the effect of personal corporate blogs got me thinking. For the uninitiated many companies (like MS, ThoughtWorks, etall) allow or even support personal blogs of their employees. The authors do have complete freedom to express their views freely even if they are contrary to their employers views. This creates an open environment and also acts as a pressure valve to vent out feelings. The readers of these blogs get a chance to see the inside working, the future directions of the products, the way the industry thought leaders are thinking and even a view into the push and pull that happens between different forces at work (in work...sorry could not resist myself from doing this). On the other hand there are many companies which don't allow employee blogs or rather don't encourage them. Its not as if they are any less forward thinking in their technology focus areas, but they seem to view employee blogs as more areas of personal feelings expression rather than windows to the outside world for free circulation of air and sunlight. And who is against sunlight :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-110075846127303578?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/110075846127303578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=110075846127303578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110075846127303578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/110075846127303578'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/11/personal-corporate-blogs-and-their.html' title='Personal corporate blogs and their effects : Part 1'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8714568.post-109774504961902860</id><published>2004-10-15T03:16:00.000+05:30</published><updated>2004-10-14T14:40:49.620+05:30</updated><title type='text'>The curtain raiser</title><content type='html'>Suresh and me(Sundar) will be posting here on topics close to our heart. These will generally involve computer science, science, logic and rational thinking. Some posts may also involve social aspects and impacts of science.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8714568-109774504961902860?l=techgossip.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techgossip.blogspot.com/feeds/109774504961902860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8714568&amp;postID=109774504961902860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/109774504961902860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8714568/posts/default/109774504961902860'/><link rel='alternate' type='text/html' href='http://techgossip.blogspot.com/2004/10/curtain-raiser.html' title='The curtain raiser'/><author><name>sundar</name><uri>http://www.blogger.com/profile/13943505267833534281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
