<?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-24358030</id><updated>2011-11-28T05:32:33.453+05:30</updated><category term='Python'/><category term='yahoo'/><category term='geek workplace'/><category term='westlife'/><category term='javascript'/><category term='CSS'/><category term='greenday'/><category term='funny'/><category term='web'/><category term='ajax'/><category term='success'/><category term='startup'/><category term='hd-dvd'/><category term='music'/><category term='crack'/><category term='online radio'/><category term='middle managers'/><category term='music discovery'/><category term='bryan adams'/><category term='rahman'/><category term='PHP'/><category term='bytecode'/><category term='yanni'/><category term='Steve Jobs'/><category term='Stanford'/><category term='Smarty'/><category term='ITproblems'/><category term='girls'/><category term='web 2.0'/><category term='digg'/><category term='music genome'/><category term='templating'/><category term='microsoft'/><category term='men'/><category term='happiness'/><category term='loneliness'/><category term='JSON'/><category term='biography'/><category term='myopia'/><category term='pandora'/><category term='Dilbertization'/><title type='text'>Orange Slush</title><subtitle type='html'>A collection of essays and ideas that have had a profound impact on me, some of them technical, some light spiffy reading (the salted cracker variety), some deeply philosophical stuff. And all of them, distinctly human !</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24358030.post-7164262444910337505</id><published>2009-02-25T16:25:00.011+05:30</published><updated>2009-04-01T13:08:34.463+05:30</updated><title type='text'>How to handle a bomb threat ?</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;It was a day when the facilities team in the company I work for decided to release a handbook with useful information for employees and in order to coax employees to come in and get the book, a sweet treat was thrown in. The icing on the cake was definitely the last page of the book with instructions on how to handle a security threat like a bomb on premises. I am reproducing verbatim from the handbook.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;[quote]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;&lt;b&gt;Bomb Threats&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Stay calm and ask the following questions&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;1. Where is the bomb ?&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;2. When will it go off ?&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;3. Why has the bomb been placed there ?&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;4. By whom has the bomb been placed ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;[unquote]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I am not sure if this was intended to be a funny read but it nevertheless is. The first and probably only instruction I would have expected when there is a bomb on premises is "Run (or walk if you prefer) for your lives". I know this is probably not sound advice in crowded places but an office facility is not so much crowded. People are usually distributed across floors or buildings and it must be fairly straightforward to get them to leave without causing a stampede. &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;I am not sure me or any other sane person would just stay calm and wonder where the bomb is, who put it there or the intended motive. I wonder if someone actually gets paid to write such funny stuff for employee handbooks, it sure did lighten up the office environment for a while.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-7164262444910337505?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/7164262444910337505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2009/02/funny-security-notice.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/7164262444910337505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/7164262444910337505'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2009/02/funny-security-notice.html' title='How to handle a bomb threat ?'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-3954862857548567768</id><published>2008-06-20T19:38:00.004+05:30</published><updated>2008-09-10T04:53:23.218+05:30</updated><title type='text'>Old and dying ...</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;I used to have a friend, someone I have known pretty well for nearly 10 years now. I met him first when I was in high school. He was young, energetic and raring to go then. He was noticed wherever he went. He had a huge fan following. He was helpful to me in so many ways, he helped me to keep in &lt;a href="http://messenger.yahoo.com/"&gt;touch&lt;/a&gt; with friends, he kept me updated with all the latest and greatest &lt;a href="http://yahoo.co.in/"&gt;news&lt;/a&gt;, he even delivered love &lt;a href="http://mail.yahoo.com/"&gt;letters&lt;/a&gt; for me.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;He was cool, a rock-star of sorts, a trusted companion and meant a lot to me. There was a time when I simply couldn't have survived without him.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Alas, great things are never meant to last. I ignored him of late, and so did a lot of my other friends. Because there was this &lt;a href="http://www.google.com/"&gt;new kid&lt;/a&gt; who was way cooler, more friendlier and infinitely more useful to me and my friends. We even wanted to join this new kid in his &lt;a href="http://www.google.com/corporate/"&gt;mission&lt;/a&gt; to take over the world.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Selfish warts us ! We deserted our old friend and went behind the new and shiny kid. And we forgot about our good old friend. So many followed suit and our old friend was left alone and vulnerable. His strength &lt;a href="http://www.techcrunch.com/2008/06/19/yahoos-executive-structure-crumbles-lu-garlinghouse-and-makhijani-to-leave/"&gt;reduced&lt;/a&gt; &lt;a href="http://www.techcrunch.com/2008/06/19/tracking-former-yahoo-execs-so-many-have-left/"&gt;greatly&lt;/a&gt;, he lost all will to fight and was readying to kill himself. I heard last that he was searching for a place to lie down and die peacefully.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;I am writing this to thank my old friend for all that he has done, an obituary of sorts. He made life better for so many of us over the years, but has outgrown his usefulness. He is a crazy old cock now, trying to &lt;a href="http://googleblog.blogspot.com/2008/06/our-agreement-to-provide-ad-technology.html"&gt;survive&lt;/a&gt; and &lt;a href="http://www.techcrunch.com/2008/06/13/massive-destruction-of-shareholder-value-employee-morale-and-internet-health/"&gt;kill&lt;/a&gt; himself at the same time. Senility does that to you sometimes.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Well, my old friend. The time has come for us to bid our final good bye. I hope you have a peaceful death. I hope this &lt;a href="http://en.wikipedia.org/wiki/Jerry_Yang"&gt;man&lt;/a&gt; who has been making life &lt;a href="http://www.nytimes.com/2008/06/14/business/14nocera.html?ex=1371182400&amp;amp;en=1fd619b745a7da4a&amp;amp;ei=5124&amp;amp;partner=permalink&amp;amp;exprod=permalink"&gt;miserable&lt;/a&gt; for you will leave you alone at least in your deathbed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;You always loved purple didn't you, we promise to place a wreath of purple flowers on your coffin.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Goodbye Yahoo ! You will be missed !&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-3954862857548567768?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/3954862857548567768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2008/06/old-and-dying.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/3954862857548567768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/3954862857548567768'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2008/06/old-and-dying.html' title='Old and dying ...'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-1517667502349261612</id><published>2008-04-21T23:38:00.000+05:30</published><updated>2008-04-21T23:41:44.498+05:30</updated><title type='text'>Native American Wisdom</title><content type='html'>&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; A Native American elder once described his own inner struggles in this manner:&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; "Inside of me there are two dogs. One of the dogs is mean and evil. The other dog is good. The mean dog fights the good dog all the time."&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt; When asked which dog wins, he reflected for a moment and replied, "The one I feed the most."&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-1517667502349261612?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/1517667502349261612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2008/04/native-american-wisdom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1517667502349261612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1517667502349261612'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2008/04/native-american-wisdom.html' title='Native American Wisdom'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-4890590966264738492</id><published>2008-03-17T16:01:00.011+05:30</published><updated>2008-03-21T19:33:25.471+05:30</updated><title type='text'>Interesting tech interview questions</title><content type='html'>&lt;div  style="text-align: justify; color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I've given numerous tech interviews in the span of the last 4 years or so and I thought I could take time to share some question from a few of them. Of course, I don't intend this writeup to be a ready reckoner for interviews, you might be better off going &lt;a href="http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html"&gt;here&lt;/a&gt;. I rather wanted to share some good and some not so good questions I have been asked in tech interviews just to give an idea of the staggering variety and yet the common undercurrent in these questions.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;I must admit that though I love interesting questions, I generally hate questions that rely on quirks or little known facts in a language or technology. These questions are binary in nature, you either know the answer (because you have read it before) or you don't know. These binary questions are pretty difficult to figure out by thinking hard. They also don't allow a discussion around the question, which is the whole intent of the interview: "to get the candidate talking on technical things and figure out how good he/she is". Joel has an excellent article on this &lt;a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, on to the questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. How would you implement your word count program in C++ ? (this was in a phone interview).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Fair enough, I got going about how I would implement it only to be stopped by the interviewer abruptly. He didn't want to know about my logic, he just wanted the code. I started off rattling that I would parse my input string only to be interrupted with "But you don't have a main() yet, so things are not going to work". I started to say that main() would call my wordcount() method only to be interrupted again with my code missing preprocessor directives and a return type for main(). By this point, I was a bit flummoxed because he was expecting me to recite code over the phone. This continued for the next 15 minutes where he pointed out every missing semi colon and brace. At the end of it all, he started comparing my code with a solution he had handy and emphatically remarked that I had made 16 deviations from what was optimal code. And most of these deviations were in the parameters passed and the data types used. What a dork !&lt;br /&gt;&lt;br /&gt;The basic idea behind this question is to identify words in a sentence(s). This can be done by identifying word separators and incrementing the word count whenever we encounter a separator. The usual word separators (the characters that separate one word from another) are ' ' (whitespace), comma, period, semicolon and newline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. How would you print out something before entering main() in C++ ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, this seems to be a famous interview question yet binary in nature. If you know the fact that global class objects get initialized before main gets called or global variables who initialize from a function return value will be called before main, you would be able to answer this question. I didn't know the latter and was interested in knowing why someone would want to print something before main() gets called. The interviewer simply said "we prefer our programmers to work on requirements without  asking too many questions". No wonder I decided not to talk to them ever after.&lt;br /&gt;&lt;br /&gt;The usual ways to do this, declare a global variable that gets initialized from the return value of a function and execute your print within the function.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;int a = foo();&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int foo()&lt;br /&gt;{&lt;br /&gt;   std::cout &lt;&lt; "printing before main";             return 42; }  &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Global class objects will be constructed before main gets called and hence, putting a print statement in the constructor of the object will achieve the same results.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;class A&lt;br /&gt;{&lt;br /&gt;   A()&lt;br /&gt;   {&lt;br /&gt;       cout &lt;&lt; "Printing before main";     } };&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. What is Coercion by Member Templates in C++ ?  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Coercion by what ? I could only take a guess because this seems to be a C++ idiom I am not aware of. This was followed by a question on Policy templates and Policy classes. Flummoxed again. The final nail in the wall was "What is RAII". I at least knew it stood for "Resource Acquisition Is Initialization". It's a technique used for ensuring clean-up for dynamically allocated storage and usually involves putting some code in the destructor that will be invoked always and will trigger clean-up. I had some follow up questions on problems with RAII and I couldn't think of any other than C++ error throwing mechanism that could prevent the clean-up code from getting called. That apparently was not the right answer because the interviewer shook his head vigorously.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. How would you sort 1 million integers with only 2 MB memory and no storage. You are allowed to output results to a display. Optimize the solution for space first and then time.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Cool. This is an interesting question in many ways because there is no one line answer and no truly best solution. Hence, it leaves a lot of room to discuss CS concepts. I am not going to try and answer this question here since it's too involved but I would like to point out that choosing the correct data structure, choosing the correct (sorting) algorithm and applying data partitioning and slicing techniques would be the general direction to take.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;5. What is lazy evaluation in C++  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's a technique that is alternately referred to as "construct on first use". It involves using a local static and putting that local static into a function.  eg. If I want to call a method JumpAround() with a "foo" object inside another struct/class and if the foo object is not initialized before calling the method, it could lead to strange errors.&lt;br /&gt;&lt;br /&gt;To fix this, we call the method JumpAround() like this&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;bar().JumpAround()&lt;br /&gt;&lt;br /&gt;bar()&lt;br /&gt;{&lt;br /&gt;static foo obj;&lt;br /&gt;return obj;&lt;br /&gt;}   &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. What is a virtual constructor in C++ ?  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is a feature that is not supported by the language itself. Let us examine why. The keyword "virtual" implements run time polymorphism or late binding. In an inheritance hierarchy, it is usual to call any class method using a base class pointer (or reference). Since a base class pointer has enough information to call any derived class method which is originally declared and/or defined in the base class, this idiom allows us to use a single pointer and call any member function in an inheritance hierarchy.&lt;br /&gt;&lt;br /&gt;We fully expect function binding to happen, based on the "pointed to" object and not on the type of the pointer itself (which is merely a container). "virtual" merely ensures that this late binding or object type determination happens correctly. The keyword here is "type identification".&lt;br /&gt;&lt;br /&gt;Based on the type of the object pointed to, we expect the base class pointer to call the method of that object. Since this whole implementation depends so heavily on the type of the object, we expect that the object is fully constructed and open to introspection and run time type identification (RTTI).&lt;br /&gt;&lt;br /&gt;If we wanted a virtual constructor idiom, we are asking to call a constructor (which is also a member function) based on type determination of an object which is not fully constructed yet. Essentially we are trying to call a member function on an object that is still undergoing construction. This could lead to difficult errors and hence the language doesn't allow constructors to be virtual. (Destructors on the other hand can be virtual and are usually so when you have virtual functions in a class. "Thinking in C++" by Bruce Eckel available &lt;a href="http://mindview.net/Books/TICPP/ThinkingInCPP2e.html"&gt;here&lt;/a&gt; has an excellent chapter on this, read it)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Does late binding work inside a constructor ? [OR] Can we call a virtual function inside a constructor ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can call a virtual function inside a constructor but you might not get expected behavior always. This is because the virtual mechanism breaks down inside a constructor and all function calls are mapped to member functions of the same class as the constructor. No late binding or type determination happens and this is precisely the reason why constructors themselves can't be virtual. Read the previous answer and also Eckel's chapter on "virtual" to understand this better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Can we use "this" pointer inside a constructor or destructor ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can, but it is redundant. The compiler automatically makes all function calls and data member access using "this" unless you have used explicit scope resolution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. In an array of integers, how do you determine the longest continuous sequence with the greatest sum ? (Hint : Array could have negative integers as well)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am not going to answer this since it seems to be a popular interview question and the answer is readily available if you know how to use a search engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Which operators cannot be overloaded in C++ ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Direct member access operator                         .&lt;br /&gt;De-reference pointer to class member operator    .*&lt;br /&gt;Scope resolution operator                                ::&lt;br /&gt;Conditional operator                                        ?:&lt;br /&gt;Sizeof operator                                              sizeof&lt;br /&gt;&lt;br /&gt;Similarly, any of the new casting operators: static_cast&lt;&gt;, dynamic_cast&lt;&gt;, reinterpret_cast&lt;&gt; and const_cast&lt;&gt;, as well as the # and ## preprocessor tokens, may not be overloaded.&lt;br /&gt;&lt;br /&gt;I would expect a lot of people to know which operators can't be overloaded but very few know why. The reason is this, most of these operators take a name instead of a value as an operand and the language will not allow names to be manipulated.&lt;br /&gt;&lt;br /&gt;For eg,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;A obj;&lt;br /&gt;obj.myFunc();&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;obj.myFunc() calls myFunc() method on the obj object. The compiler usually converts the function call into something like this &lt;span style="font-weight: bold;font-family:verdana;" &gt;A::myFunc(obj&amp;amp;)&lt;/span&gt;. You will notice that A:: refers to a name and not a type and there is no way this can be overloaded.&lt;br /&gt;&lt;br /&gt;# cannot be overloaded since it is a preprocessor directive and the preprocessor is not aware of overloads.&lt;br /&gt;&lt;br /&gt;Closing thoughts on operator overloading : Eckel calls operator overloading as syntactic sugar, a way to keep using the operators we are familiar with to perform their "usual tasks" on user defined types as well. I would personally avoid operator overloading and implement explicit functions that will perform the task in question because overloading an operator merely makes code look familiar but hides certain internal details which could cause difficult bugs.&lt;br /&gt;&lt;br /&gt;eg.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A obj1, obj2, obj3;&lt;br /&gt;obj3 = obj1 + obj2;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In order to make this work, I would need to overload the '+' operator to sum two A objects and '=' operator since copy construction is involved here (in case a bitwise copy will not suffice which is what a compiler generated copy constructor will provide)&lt;br /&gt;&lt;br /&gt;Though the snippet above is neat, it hides the fact that instead of '+', you are calling a function that adds the two objects for you (yes, operator overloading is implemented as a function call)&lt;br /&gt;&lt;br /&gt;I would rather do this.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;obj3 = obj1.add(obj2);&lt;br /&gt;&lt;br /&gt;where add() is defined as below&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-family:verdana;"&gt;A::&lt;/span&gt;add(obj&amp;amp;)&lt;br /&gt;{&lt;br /&gt;// do your object addition here, usually adding corresponding member data (though not always)&lt;br /&gt;// return an A object&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;I am hoping to expand this article with more questions (and answers). You will notice that more than a few of these questions demand a good understanding of OOP concepts and their application in a language like C++. I usually find that understanding data structures solves half the problem and knowing the best algorithm to apply for the problem at hand is also useful.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-4890590966264738492?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/4890590966264738492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2008/03/interesting-tech-interview-questions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/4890590966264738492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/4890590966264738492'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2008/03/interesting-tech-interview-questions.html' title='Interesting tech interview questions'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-5511466795236619781</id><published>2008-02-03T18:03:00.005+05:30</published><updated>2008-02-25T14:40:49.550+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microhoo</title><content type='html'>&lt;p class="MsoNormal"  style="line-height: 150%; font-family: verdana; text-align: justify;font-family:Verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;"Microhoo", that's what a Microsoft-Yahoo conglomerate might become. The web has been going crazy over Microsoft's bid for Yahoo. A lot of people believe it doesn't augur well for the world but the same people also believe it's a good thing for the &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Redmond&lt;/st1:place&gt;&lt;/st1:city&gt; giant. Here are two giants in their own respect, trying to see if they can get together to stop (or at least slow down) the Google juggernaut.&lt;br /&gt;&lt;br /&gt;I think this is a very bad move by Microsoft. They have traditionally done poorly on the web[1] and have managed to keep their web offerings online by virtue of all that extra money from their desktop cash cows - Windows and Office. But times are changing and the world is moving away from a desktop-centric model. I, for one don't believe the web is set to replace the desktop anytime now. There are a bunch of things I would prefer doing offline no matter how compelling the online version is. Even though I would love my computing to happen on the cloud, the same cannot be said about my storage. I would still prefer a local (and private) storage area where the majority of my files reside.&lt;br /&gt;&lt;br /&gt;Given that Microsoft don't get the web, it might seem logical for them to go buy a web giant and hope things would turn around. But that's exactly where the problem lies; "Microsoft don't get the Web". I would consider it an almost impossible task to do well on something I don't understand very well in the first place. Unless Microsoft understand what the web is all about, I doubt they can do well, no matter who they manage to buy. Yahoo will be a useful addition to Microsoft's arsenal but I doubt if a $44 billion purchase is warranted for what would merely be a useful addition.&lt;br /&gt;&lt;br /&gt;Will Google sit up and take notice ? Sure. Will Microsoft's profits improve ? I guess so. Will it be game changing ? Nope, Sorry.&lt;br /&gt;&lt;br /&gt;The areas that Microsoft would benefit almost immediately if they manage to acquire Yahoo would include online photo sharing, instant messaging, email and to a certain extent, groups. And photos is perhaps the only area that Microsoft could better Google outright if the Yahoo deal materializes. Yahoo Mail is certainly better than Hotmail and could supplant or improve Hotmail but it might not make a huge difference to the bottom-line other than a staggering increase in the number of users. However, GMail simply blows all competition away and I don't expect Yahoo to come anywhere close. Yahoo did try with their new &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; email interface [2] but failed rather miserably.&lt;br /&gt;&lt;br /&gt;Yahoo search is not so much better than Microsoft's and I would expect the latter to retain their Live Search as the primary search offering. Yahoo and Microsoft already allow cross pollination on their IM platforms and they might be able to give Google a run for its money in this segment (given that Google hasn't done much to improve their IM platform lately).&lt;br /&gt;&lt;br /&gt;The name of the game is online advertising and that's what Microsoft is vying for. They predict a $80 Billion market by 2010 and want a sizable chunk of that pie. Yahoo's &lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;Panama&lt;/st1:place&gt;&lt;/st1:country-region&gt; has done rather poorly and Microsoft's online advertising offerings are not much better either. Probably, they are hoping that the aggregation of all good things from &lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;Panama&lt;/st1:place&gt;&lt;/st1:country-region&gt;, aQuantive and their own offerings will create an ad platform that could pose a serious challenge to Google's AdSense. I am not too sure.&lt;br /&gt;&lt;br /&gt;There are a lot of areas where Microsoft and Yahoo offerings will clash and it's going to be one hell of a mess as some of these services might either be collapsed to form a monolith or dropped altogether. The net gain for Microsoft might be more users and a small increase in their net revenue (not counting the cost of the acquisition). This is where things start bothering me.&lt;br /&gt;&lt;br /&gt;Microsoft has become this giant that cannot do anything cool on its own, it needs to buy someone to make it happen. Sadly, Yahoo is more or less on the same boat and haven't done anything path breaking for a while now. I fail to understand how such a conglomerate can pull off anything spectacular (and they better, because $44 B is not small money even if it's Microsoft in question). There are a whole class of problems that Microhoo will have to encounter and it looks unsurmountable at this time.&lt;br /&gt;&lt;br /&gt;Microsoft and Yahoo are two entirely different cultures and &lt;st1:city st="on"&gt;Seattle&lt;/st1:city&gt; can never level up to &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Sunnyvale&lt;/st1:place&gt;&lt;/st1:city&gt; when it comes to employee profiles. A cultural clash is bound to happen at Microhoo and it could turn nasty for quite a few people. Attracting and retaining young talent is another worrisome area. Yahoo can and does attract college students (who invariably are the ones who pull off a coup when it comes to web offerings) whereas Microsoft is believed by many to be a mature company (a nice way of saying it's more suited for older people). Not that Microsoft doesn't attract brilliant CS grads but they are few and far between. Most of the brilliant kids go off to start their own company or go to &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Mountain View&lt;/st1:place&gt;&lt;/st1:city&gt;.&lt;br /&gt;&lt;br /&gt;Since Microsoft will end up being the dominant partner in Microhoo, they could enforce the "&lt;st1:street st="on"&gt;&lt;st1:address st="on"&gt;Microsoft Way&lt;/st1:address&gt;&lt;/st1:street&gt;" in day to day operations. This means a whole bunch of nice people in Yahoo who hate Microsoft might leave. Yahoo is built on a foundation of Open Source Software (BSD, PHP, MySQL and the works) and this is something not in agreement with Microsoft's anti &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;OSS&lt;/st1:place&gt;&lt;/st1:city&gt; stand [3]. Microsoft said in its press statement that Microhoo could save upto $1 Billion in operation costs. I sincerely hope the guys at &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Redmond&lt;/st1:place&gt;&lt;/st1:city&gt; have a more solid reason to acquire Yahoo (it could take them 44 years to break even).&lt;br /&gt;&lt;br /&gt;If Microsoft does decide to act a responsible parent to Yahoo and lets the latter run its show and ensures a steady flow of money, the collective intelligence of both the companies could come up with offerings that give Google some serious heat. But I seriously doubt if this would happen. Microsoft don't have a single profitable division outside Windows and Office. (I know about XBox, shut up about XBox, it's seriously subsidized by the surplus monies from other divisions). Perhaps, a serious misstep by Google if it coincides with a coup by Microhoo could tilt the balances which I seriously doubt will ever occur. Google is not invincible, they are just very very difficult to beat. And if someone does manage to beat Google, I can bet it's going to be someone new or unexpected, not the usual suspects Microsoft or Yahoo, simply because if these companies could beat Google, they already would have.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Disclaimer : The writer is not affiliated to Google, Microsoft or Yahoo at the time of this writing.&lt;br /&gt;&lt;br /&gt;Notes :&lt;br /&gt;&lt;br /&gt;1. I know about Live and also about how much it sucks and don't even get me talking about MSN.&lt;br /&gt;&lt;br /&gt;2. GMail uses &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; in a non obvious and intuitive way. Yahoo on the other hand really screwed it up badly, and used &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; because they could. Their new web mail outlook clone simply sucks and hastened my complete migration to GMail.&lt;br /&gt;&lt;br /&gt;3. I can't imagine Flickr on Windows servers or Yahoo Mail written in ASP.NET, I just can't no matter how hard I try.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-5511466795236619781?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/5511466795236619781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2008/02/microhoo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5511466795236619781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5511466795236619781'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2008/02/microhoo.html' title='Microhoo'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-8363165722209223220</id><published>2007-10-28T18:41:00.001+05:30</published><updated>2008-02-25T14:42:26.970+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><title type='text'>How to start a startup from nothing</title><content type='html'>&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Enough is enough.&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; color: rgb(0, 0, 0); text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I refuse to work to make Larry Ellison or Ivan Seidenberg any richer, I refuse to do mundane stuff day in and day out, I refuse to come down to a place called office and spend the requisite 8 hours every day just because I have to, I refuse to work on things that don't interest me, I refuse to be guided by PHB's (Point Haired Bosses) anymore, I refuse to attend meetings that I don't have to, I refuse to convince my superiors about the need for a good development infrastructure to turn out good work.&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; color: rgb(0, 0, 0); text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I want to start a tech startup of my own, I have some ideas and know a couple of friends who think alike who would chip in. I am broke (well, nearly) and that's perhaps the only reason that keeps me stuck to my full-time day job. Also, am in India (Bangalore/Chennai to be specific) which is not exactly a startup hub even though a lot of startups are trying to make it big in India these days. Still, it's not Bay Area with an air that is friendly to startups and a bunch of like minded people.&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; color: rgb(0, 0, 0); text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I am clueless on where to start. I do have some ideas but I tend to believe the execution counts much more than ideas ever will, especially so in case of a startup. What will readers suggest ?&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; color: rgb(0, 0, 0); text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Should I approach a VC with a prototype and a business plan or should I apply to Y Combinator and keep my fingers crossed. Do VC's in the Bay Area (and US in general) fund ventures outside the continent ? I know Y Combinator wants their startups to relocate to the valley but for someone sitting in India, this is a proper pain because the way US Immigration laws are structured makes the whole process too lengthy and cumbersome.&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; color: rgb(0, 0, 0); text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;There is no quick legal way for someone hoping to start a company in the US to do all the paperwork, get the necessary approvals/stampings and get rolling in any reasonable amount of time. Startup progress is measured in weeks and delays of more than a couple of months doing legal/immigration hula hoops could ring the death knell for a startup even before they get started. I am wondering if the Immigration laws are designed in a way such that a non American will have considerable difficulty starting a tech startup in the US (in order to provide a competitive advantage to companies started by Americans).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I hope am wrong, I hope I can still figure out a way to go and start a company, I hope I can be my own boss and work on things that I am passionate about.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-8363165722209223220?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/8363165722209223220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/10/how-to-start-startup-from-nothing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/8363165722209223220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/8363165722209223220'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/10/how-to-start-startup-from-nothing.html' title='How to start a startup from nothing'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-1362048461416948583</id><published>2007-08-29T23:02:00.000+05:30</published><updated>2007-10-28T19:00:51.128+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='biography'/><title type='text'>Writing an autobio</title><content type='html'>&lt;div  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I am trying my hand at serious writing and nothing can get more serious than my life. I am going to bare it all open, write about every aspect of my life, nothing hidden, no name smudging. If I were a politician or a saucy screen diva, I am sure this autobiography would turn out controversial.&lt;br /&gt;&lt;br /&gt;"Easier said than done" said one of my femme friends. She was not questioning my ability to write, she was rather questioning my objectivity and my promise to bare it all. My answer to her - It's ME am writing about, lady ! So expect it to be heavily biased in my favor. I might project myself as the next Lord Rama (a hindu god who was known for his righteousness). Nevertheless, I am not a columnist to be objective and stick to the facts. But I will not spin yarn, I would stick to the truth but take artistic (ahem!) liberties here and there.&lt;br /&gt;&lt;br /&gt;A word of comfort for readers, I won't make a book out of this. It will be out in my blog probably in a couple of months (might take longer depending on myriad factors like my mood, workload and the phase of the moon).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-1362048461416948583?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/1362048461416948583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/08/writing-autobio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1362048461416948583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1362048461416948583'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/08/writing-autobio.html' title='Writing an autobio'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-1637985589105739187</id><published>2007-08-29T22:47:00.000+05:30</published><updated>2007-08-29T23:00:38.117+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>My favorite SMS</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I have received innumerable SMSes on my cell phone over the years, most of them forwards. Some of them are truly funny but a lot of them are just cruft. I was clearing up my message inbox and chanced upon an old message from my cousin (Rahul) almost 2 years ago. I didn't delete it then because I loved it, it was both funny and thought provoking (serious!). Here's the text of that SMS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If money doesn't grow on trees, then why do banks have branches ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Why does a round pizza come in a square box ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Why doesn't glue stick to its bottle ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Why do you still call it building when its already built ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If you aren't supposed to drink and drive, why do bars have parking lots ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If it's true that we are here to help others, what are others here for ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;We are a funny bunch of people living in a seriously funny world.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-1637985589105739187?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/1637985589105739187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/08/my-favorite-sms.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1637985589105739187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1637985589105739187'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/08/my-favorite-sms.html' title='My favorite SMS'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-6702729475983729205</id><published>2007-07-19T00:30:00.000+05:30</published><updated>2007-08-29T23:02:01.217+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='girls'/><category scheme='http://www.blogger.com/atom/ns#' term='men'/><title type='text'>Why Men are happy</title><content type='html'>&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;What do you expect from such simple creatures?&lt;/span&gt;&lt;/p&gt; &lt;ul  style="font-family:verdana;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Your last name stays put.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The garage is all yours.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Wedding plans take care of themselves.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Chocolate is just another snack.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can never be pregnant.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can wear a white T-shirt to a water theme park.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can wear NO shirt to a water theme park.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Car mechanics tell you the truth.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The world is your urinal.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You don't have to stop and think of which way to turn a nut on a bolt.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Wrinkles add character.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;People never stare at your chest when you're talking to them.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The occasional well-rendered belch is practically expected.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;New shoes don't cut, blister, or mangle your feet.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;One mood all the time.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Phone conversations are over in 30 seconds flat.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You know stuff about tanks.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A five-day vacation requires only one suitcase.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can open all your own jars.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You get extra credit for the slightest act of thoughtfulness.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;If someone forgets to invite you, he or she can still be your friend.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Three pairs of shoes are more than enough.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You almost never have strap problems in public.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You are unable to see wrinkles in your clothes.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Everything on your face stays its original color.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The same hairstyle lasts for years, maybe decades.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You only have to shave your face and neck.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can play with toys all your life.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Your belly usually hides your big hips.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;One wallet and one pair of shoes one color for all seasons.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can wear shorts no matter how your legs look.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can "do" your nails with a pocket knife.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You have freedom of choice concerning growing a moustache.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;No wonder men are happier!!&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-6702729475983729205?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/6702729475983729205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/07/why-men-are-happy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/6702729475983729205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/6702729475983729205'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/07/why-men-are-happy.html' title='Why Men are happy'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-2081228818887691343</id><published>2007-07-18T23:18:00.000+05:30</published><updated>2007-07-19T00:43:54.922+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='girls'/><category scheme='http://www.blogger.com/atom/ns#' term='men'/><title type='text'>11 Things Women don't know about Men</title><content type='html'>&lt;div  class="yperContentPara" style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;1. Getting angry at us for not reading your mind is like getting angry at yourself for not being able to fly. It's not just futile, it's physically impossible.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  class="yperContentPara" style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;2. Yes, we do think Paris Hilton is hot. Sometimes we're even dumb enough to admit it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;3. Don't ask us to understand your shoe fetish. Asking us to respect it is even sort of pushing it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;4. You do look good without makeup, just not as good as you look with it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;5. Ever notice how we don't fight with our male friends? That's why we get so frustrated when we fight with you.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;6. You care what you're wearing infinitely more than we do. In fact, if you're naked when you open the front door, you won't hear an argument from us.&lt;br /&gt;&lt;br /&gt;7. You don't like to get hit on in public, you don't want to date online and you don't want to be set up on blind dates. Tell us if sending messenger pigeons is an appropriate way of courting. Because if it is, we're all over it.&lt;br /&gt;&lt;br /&gt;8. There should a statute of limitations on stupid things that we said that can come back to haunt us. We propose and recommend 24 hours.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;9. Cooking dinner for a man is like buying flowers for a woman, except it takes a lot more time, effort and thought for you to do it. Thanks. We appreciate it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;10. We actually like your girly pet-names for us (but please, not in front of the guys! )&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yperContentPara"&gt;&lt;span style="font-size:85%;"&gt;11. Just because we like looking at the women in Maxim doesn't mean we want to actually converse with the women in Maxim. Not for long, anyway.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-2081228818887691343?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/2081228818887691343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/07/11-things-women-dont-know-about-men.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/2081228818887691343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/2081228818887691343'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/07/11-things-women-dont-know-about-men.html' title='11 Things Women don&apos;t know about Men'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-5672263439479481578</id><published>2007-06-15T12:49:00.000+05:30</published><updated>2007-06-15T16:03:15.219+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='happiness'/><category scheme='http://www.blogger.com/atom/ns#' term='success'/><title type='text'>Success and Happiness</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Success is relative, they say. Though success does mean different things to different people, I would tend to define success in terms of the impact or positive change it produces in one's life. If I say am a successful businessman, it means my business has added a positive edge to my life which was absent otherwise.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Success is a much sought after and elusive goal. But the very fact that everyone is after success in some form underlines its importance in one's life. I keep wondering why success is so important. What is it that man seeks by achieving success and by reaching the peaks of glory ? Is it a primal desire to stay on top or simply a manifestation of his inner needs that propel him to reach out for success at every step and turn. What does man seek to guarantee by attaining success in his endeavors ?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The most logical explanation I can think of is, man uses success as a vehicle to achieve happiness. Success either improves one's financial standing, heightens one's powers or simply kicks one's ego in all the right places (in terms of boast value). All these rewards of success (and anything more you can think of) are merely ways to achieve one ultimate goal-happiness.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I cannot imagine any success which does not make the successful person happy, for if it does, it is deemed a failure. So if all men are engaged in a mad rush to succeed, is that driven by a lack of happiness or an unending desire for more.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Happiness to me is independent of success. It is a feeling. It is created and manifested within the mind, unlike success which usually has a physical manifestation. It is possible to measure success using physical parameters, we always do (Fortune 500). On the other hand it is difficult to measure the level of happiness. Most importantly, happiness is not a direct result of success. It is at best an indirect (albeit predictable) response that the mind triggers when it perceives success.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;What if I am successful and yet have the will power to deny using the success as a catalyst for triggering a wave of happiness (though I can't imagine why anyone would like to do this). On the other hand, what if I failed and yet have the will power to not let the failure affect my otherwise peaceful or happy state of mind (highly desirable, isn't it).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Strong willed men don't let their failure affect their state of happiness. Happiness is more a state of mind rather than some physical factor and hence is entirely in the control of the wielder. Ascetics use a technique called "detached attachment". This simply means they don't let the results of their actions affect their state of mind.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Actions of the body and state of mind are two independent entities and are separately controllable. If I choose to be happy no matter what happens, I can manage to be only if I have the will power. I am not referring to the classical optimist-pessimist theory here. An optimist sees the glass half full, the pessimist sees it half empty, whereas to a yogi it simply doesn't matter if the glass is half full or half empty, because both descriptions refer to the same thing.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;To a yogi success does not induce happiness or sadness, it simply doesn't matter. So if it is possible for us to reach a state of mind where success does not induce happiness and failure does not cause gloom, why do we need to strive to succeed at all ? It takes a lot of hard work and discipline to reach such a state of mind but so does reaching the peaks of success. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Isn't a mad rush for success the single most important factor for bringing out the worst in man ?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; If mental discipline can make success or rather the need for it redundant, would we have a better world ?&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-5672263439479481578?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/5672263439479481578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/06/success-and-happiness.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5672263439479481578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5672263439479481578'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/06/success-and-happiness.html' title='Success and Happiness'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-7985240683883550665</id><published>2007-05-03T12:35:00.000+05:30</published><updated>2007-05-03T14:18:52.521+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='crack'/><category scheme='http://www.blogger.com/atom/ns#' term='digg'/><category scheme='http://www.blogger.com/atom/ns#' term='hd-dvd'/><title type='text'>How Digg should have handled the HD-DVD fiasco</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Kevin Rose and Digg.com faced a particular brand of problem I would call "mob democracy". Digg.com is a social content website that allows users to submit news stories and allows other users to vote &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt; on it &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;(referred to as digging the story). One particular user was kind enough to submit a story on a HD-DVD decryption key that could be used to decrypt the &lt;a href="http://en.wikipedia.org/wiki/Advanced_Access_Content_System"&gt;AACS&lt;/a&gt; (Advanced Access Content System) encryption scheme that implements copy protection on digital media like DVD's featuring HD content.I am not going to try and explain how to use this key not because of DMCA (I live in India and DMCA can't do a thing to me) but because this information is available aplenty on the internet and would be redundant here.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;It so happened that the post was "scrubbed" by the Digg admins because of legal issues. Other users noticed and responded in a way true democracies do when suppressed, they "rebelled". The rationale given by Digg.com for removing posts related to the HD-DVD key was :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;blockquote&gt;"We’ve been notified by the owners of this intellectual property that they believe the posting of the encryption key infringes their intellectual property rights. In order to respect these rights and to comply with the law, we have removed postings of the key that have been brought to our attention" - Jay Adelson, Digg CEO&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The rationale behind this is clear, Digg wanted to stay away from any (potential) lawsuit. We are not sure if they were served a Cease &amp;amp; Desist or received an official notice hand delivered (the only legal way of delivering a notice) to remove the content that infringes copyright laws of the intellectual property holders. Removing content from a website that if left alone, could potentially lead to a long and financially burdening legal hassle is common sense. I don't think I have too many objections to that.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;What irked me most was the manner in which this cleanup was carried out. Digg boasts of being a democracy that allows its users to have a say in what goes into its pages. If the Digg admins found stuff that could cause trouble, the best approach was let users know that they are taking this story offline "explicitly", blare on the front page about the story, give users time to assimilate the information and then take the story down.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Instead, Digg admins resorted to what dictators do to censor flow of information. They went ahead and deleted posts that referred to the HD-DVD key ad-hoc and didn't stop there. When they found that users responded with more stories on the same topic, they started banning users and deleting user accounts. This only infuriated the crowd and spread a mood of rebellion that led to an uncontrollable flow of posts on the same topic, each one of them receiving 100's of Diggs. I don't remember seeing stories with more than a thousand diggs that often, but yesterday, I was able to see "all" stories on the front page on the same topic, each with many thousand diggs to their credit.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;True breed democracies don't take any form of suppression lying down. Internet is by far the biggest and one of the most successful democracies out there. When regular digg users found that their favorite site didn't have the nerve to stand up and take a stance and instead resorted to underhand tactics and silent deletion of posts, it didn't go down with them well. I, for one, would not recommend that Digg take a stand to oppose DMCA or do anything illegal. The question is not whether DMCA is correct or not, it is law in the United States and all companies and individuals are expected to comply. If you hate DMCA and its restrictive capabilities, the place to express that is with your senator or start a protest and garner strength through the power of the internet and social wildfires like Digg, /. and Reddit.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;All I would have expected from Kevin and Jay and the Digg folks is this, "take a stance, let users know what your stance is, stick to it". If Digg had taken a stance upfront that they were not going to allow content on their website that could bring a lawsuit to their doorstep, so be it. All they had to do was broadcast this information to all its users, delete the offending posts, make a request to users to desist from posting material on this and last but not the least, make it known how genuinely sorry they are to censor information. Digg failed to do any of this, I would not know the reason why they resorted to underhand tactics instead of a transparent approach. But on this day, Digg failed in its biggest claim of being a purely democratic system for the submission and sharing of information.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I know Kevin Rose posted to the Digg blog later that they would let the HD-DVD posts stay and would face the music. Needless to say, Kevin got it all wrong. People did not revolt because information they were looking for was suppressed. There are dozens of ways for anyone with half a brain to obtain this HD-DVD key using Google and other social content websites. The infuriation from users was not because of just suppression of freedom of expression on a people driven website but because of the manner in which it was executed. Slashdot, one of the oldest social content websites has faced similar issues in the past and their approach has always been transparent. The issue was not about compliance nor about content censoring, it never was. To me, the core of the issue lies in the way the whole thing was handled. Boasting of democracy and deleting posts in the background is double standards and any website that adopts double standards will lose credibility and hence its user base before it can say "cheese".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;P.S. It was rumored that Diggnation had accepted sponsorships from the HD-DVD consortium in the past and Digg had reasons other than fear of a lawsuit to remove posts related to the decryption key. If this is credible information, shame on you Digg, shame on you Kevin and stop advocating democracy and a bunch of choice words when you don't care a damn about that yourself. "Walk the talk" if you want people to take you seriously.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-7985240683883550665?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.digg.com' title='How Digg should have handled the HD-DVD fiasco'/><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/7985240683883550665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/05/how-digg-should-have-handled-hd-dvd.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/7985240683883550665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/7985240683883550665'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/05/how-digg-should-have-handled-hd-dvd.html' title='How Digg should have handled the HD-DVD fiasco'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-6304598131873415611</id><published>2007-04-27T16:05:00.000+05:30</published><updated>2007-04-27T16:28:17.978+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='loneliness'/><category scheme='http://www.blogger.com/atom/ns#' term='greenday'/><title type='text'>A lonely road - Boulevard of broken dreams</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(0, 0, 0); font-family: verdana;font-family:verdana;font-size:85%;"  &gt;There are lyrics out there that reflect one's mind set from time to time. Perhaps "Boulevard ..." is the closest to mine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div  style="color: rgb(0, 0, 0); text-align: justify;font-family:verdana;"&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;I walk a lonely road&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;The only one that I have ever known&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Don't know where it goes&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;But it's home to me and I walk alone&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;I walk this empty street&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;On the Boulevard of Broken Dreams&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Where the city sleeps&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;And I'm the only one and I walk alone&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;My shadow's the only one that walks beside me&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;My shallow heart's the only thing that's beating&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Sometimes I wish someone out there will find me&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Till then I walk alone&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;I'm walking down the line&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;That divides me somewhere in my mind&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;On the border line&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Of the edge and where I walk alone&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Read between the lines&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;What's fucked up and every thing's alright&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;Check my vital signs&lt;/span&gt;&lt;span style="font-family: verdana; font-style: italic;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana; font-style: italic;"&gt;To know I'm still alive and I walk alone&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-6304598131873415611?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/6304598131873415611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/04/lonely-road-boulevard-of-broken-dreams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/6304598131873415611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/6304598131873415611'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/04/lonely-road-boulevard-of-broken-dreams.html' title='A lonely road - Boulevard of broken dreams'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-1650385345874221408</id><published>2007-04-27T15:57:00.000+05:30</published><updated>2007-04-27T16:31:48.277+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='greenday'/><title type='text'>Wake me up when September ends ...</title><content type='html'>&lt;div style="text-align: left; font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Summer has come and passed&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;The innocent can never last&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Like my fathers come to pass&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Seven years has gone so fast&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Here comes the rain again&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Falling from the stars&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Drenched in my pain again&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Becoming who we are&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;As my memory rests&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;But never forgets what I lost&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Ring out the bells again&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Like we did when spring began&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Wake me up when September ends&lt;br /&gt;For I will be gone by then&lt;br /&gt;And no one can wake me up !&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-1650385345874221408?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/1650385345874221408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/04/wake-me-up-when-september-ends.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1650385345874221408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1650385345874221408'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/04/wake-me-up-when-september-ends.html' title='Wake me up when September ends ...'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-713128901974342872</id><published>2007-04-27T10:22:00.000+05:30</published><updated>2007-05-03T14:21:15.658+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pandora'/><category scheme='http://www.blogger.com/atom/ns#' term='music genome'/><category scheme='http://www.blogger.com/atom/ns#' term='music discovery'/><category scheme='http://www.blogger.com/atom/ns#' term='online radio'/><title type='text'>Pandora - delightful music discovery</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Online radio has burst on to the scene in such a big way over the last couple of years with the advent of high speed broadband connection all over the world. Broadband internet was an exclusive nicety that was available only to North Americans and Europeans for over a decade. With polarities shifting and non western economies becoming stronger, countries like China, India and Middle East are jumping on the bandwagon and making broadband available to the masses.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The immediate impact of this is the widespread use of Web 2.0 services in the third world. Online radio is not exactly Web 2.0, it precedes that era but the last couple of years have seen the advent of some intelligent online radio services; Pandora and Last.FM to name a few.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I especially love Pandora and listen to it at work almost every day. Pandora is written in &lt;a href="http://www.laszlosystems.com/"&gt;Open Laszo&lt;/a&gt; , an open source AJAX technology framework for building rich internet applications. It is conceptually like Flash and even looks a bit like Flash, but is based on AJAX. It is open source and there are quite a few OpenLaszo implementations out there already.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Pandora is an intelligent, intuitive and delightful music discovery service (funky name for online radio??). It is based on the &lt;a href="http://www.pandora.com/mgp.shtml"&gt;Music Genome project&lt;/a&gt; which attempts to analyze music and its facets like tone, melody, harmony, instrumentation, arrangement, lyric and richness of singing and vocal harmony. The interesting thing about Music Genome project is that they don't classify artists or albums as belonging to a genre; instead they analyze each and every song individually and classify it into a genre based on various parameters.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;What this means is a band like Metallica which makes heavy metal music almost always won't get classified into hard metal category ad-hoc in Pandora. Instead each song of theirs is analyzed by human(s) and classified based on various parameters.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Imagine you love soft music and chose that genre in an online radio service. Even if Metallica did a soft lilting number, you will never get to hear it because most services would have classified Metallica as a heavy metal artist; but not Pandora !&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Pandora allows you to create upto 100 customized stations based on various factors like genre, artist, album or even a song. If you love songs that have a heady bass guitar like Deep Purple's "Smoke on the Water", you can put in the song name in Pandora and allow it to play you song after that song that matches the tonal quality and is largely similar to "Smoke ...".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I know Last.FM is also a hugely popular service that is based on user recommendations and some heavy duty algorithms but I didn't find the service as good as Pandora (tats my 0.02). Pandora also allows you to flag a song with a "Thumbs up" or "Thumbs down" sign that helps it learn from the user experience and helps them fine tune their classification system.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;All in all, Pandora is a wonderful online radio service that helps turn mundane days into not so bad ones, keeps me awake at work especially during the aftermath of a heavy lunch and keeps me going by playing song after song uninterrupted and allows me to discover exciting new music every day.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-713128901974342872?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.pandora.com' title='Pandora - delightful music discovery'/><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/713128901974342872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/04/pandora-delightful-music-discovery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/713128901974342872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/713128901974342872'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/04/pandora-delightful-music-discovery.html' title='Pandora - delightful music discovery'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-612389709918820234</id><published>2007-03-20T14:40:00.000+05:30</published><updated>2007-10-12T09:45:43.932+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stanford'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><title type='text'>Stay Hungry, Stay Foolish</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;The full video of Steve Jobs' now famous commencement address to students at Stanford. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D1R-jKKp3NA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/D1R-jKKp3NA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;This has been a truly inspirational speech for me, sort of a go-getter message that I refer to whenever the chips are down. Some ideas expressed by Steve in this speech are simply outstanding and definitely practical albeit in a raw form. The crux of this awe inspiring speech&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Listen to your heart &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Chase your dreams&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Don't live someone else's life (because your time is running out)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Define your own success&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Stay hungry for more&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Stay foolish to fallacy and a heavy head&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I wish I had the guts that Steve Jobs had, to just let go and follow my dreams. I hope I can chuck off run-of-the-mill jobs and go join a startup with a fresh perspective, work my @$$ off, get noticed and satisfy my karma (duty). I hope that day is not far off.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-612389709918820234?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/612389709918820234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/612389709918820234'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/03/stay-hungry-stay-foolish.html' title='Stay Hungry, Stay Foolish'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-5306657869805491929</id><published>2007-03-20T13:24:00.000+05:30</published><updated>2007-05-03T14:22:30.448+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='myopia'/><title type='text'>Myopic eyes (Microupdate 1)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Myopia&lt;/span&gt;, or &lt;span style="font-weight: bold;"&gt;nearsightedness&lt;/span&gt; also known as &lt;span style="font-weight: bold;"&gt;short sightedness&lt;/span&gt;, is a refractive defect of the eye in which collimated light produces image focus in front of the retina when accommodation is relaxed. &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Those with myopia typically can see nearby objects clearly but distant objects appear blurred.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Savvy ? I have had myopia since the age of 9 and have been wearing corrective lenses (eye glasses). As it stands, my degree of myopia is -6.5 (when you get to -16 or lower values, you are closer to stone blind without corrective lenses). Because I depend so much on my glasses to lead a normal life, I generally take good care of them. It so happened that out of sheer bad luck, they slipped off my nose and one of the lenses shattered into innumerable pieces. And there I was, gaping with no glasses and no spare set lying around. I could see things only half as clear as your average Joe.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I rushed to the nearest optician to get my glasses fixed and he promised to get back to me in 2 days since the day after was a national holiday. The immediate implication of this being no computers or TV or reading or travel for the next 2 days. It was hell on earth, believe me guys. I was able to put up with these 2 days largely due to my iPod (thanks to a friend who gifted it) and another patient friend who gave me company. I did attempt to watch TV with little success. I tried squinting my eyes and using my laptop, with slightly improved success but I couldn't hold myself too long.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I even had to take a day off from work and I was promising myself that I would have at least one spare set of glasses made so that such exigencies are appropriately handled. I finally got my glasses repaired today (oh ! what a relief) and decided to blog about it. I am considering corrective surgery sometime in the near future so that I don't have to worry about the EVIL effects of myopia for times to come.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;P.S. I call this Microupdate 1 because this is the first of my posts which doesn't resemble a post (duh !), doesn't have a fully developed theme, more like a "quick write and publish" variety. I hope to be posting more such micro updates as and when something bloggable (?!) happens. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-5306657869805491929?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/5306657869805491929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/03/myopic-eyes-microupdate-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5306657869805491929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/5306657869805491929'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/03/myopic-eyes-microupdate-1.html' title='Myopic eyes (Microupdate 1)'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-8399196690096062877</id><published>2007-03-19T08:45:00.000+05:30</published><updated>2007-05-03T14:23:07.795+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='middle managers'/><category scheme='http://www.blogger.com/atom/ns#' term='ITproblems'/><category scheme='http://www.blogger.com/atom/ns#' term='Dilbertization'/><title type='text'>Dilbertization of IT !</title><content type='html'>&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Information Technology (IT) over the years has been a sought after industry where creative juices kept flowing. Every bright high school student wanted to get into IT because it paid well, allowed innovation and creativity and made workplace fun. IT began in garages, small units that targeted a specific area and allowed its employees to turn in new and innovative inventions and work on interesting projects.&lt;br /&gt;&lt;br /&gt;Talk to someone who has worked in IT for decades and more often than not, they'll regale you with stories of the "good old days," when the workplace was lively and creative juices flowed.&lt;br /&gt;&lt;br /&gt;Nowadays it's a different story, they usually say, and place their blame along any number of lines: outsourcing, off-shoring, cost-cutting, IT commoditization, reactivity where there was once pro-activity, not to mention the shoddy desks in their office in dusty room at the end of the hall with pre 1990 IBM desktops that stay there because the company has a contract with the supplier.&lt;br /&gt;&lt;br /&gt;In the simplest terms: too many IT workplaces have become Dilbertized - micromanaged, bureaucratic and stifled creatively. It's become an environment where busy work is praised and morale is low.&lt;br /&gt;&lt;br /&gt;IT isn't &lt;i&gt;fun&lt;/i&gt; anymore, and while a lack of fun at work may not seem worth stopping the presses over, the long-term effects of depriving a field of appealing work may very likely look like this: Students are turning away from computer science at an alarming rate. There's a huge talent shortage across the entire field, and, in confidence, enterprise IT workers say they'd probably choose a different career path if they could go back and start over again.&lt;br /&gt;&lt;br /&gt;Yet not as many people are speaking about how to fight this, to adapt to the market and bring value back to IT that simply can't be sent elsewhere when cost-saving impulses set in.&lt;br /&gt;&lt;br /&gt;To blame outsourcing, off-shoring and the dot com bust is to miss the point. If you know the value chain is changing, and you continue to teach people to do things that are quickly becoming commoditized, you are doing them a disservice. It's better to figure out where the value is being added for employers, and focus on this.&lt;br /&gt;&lt;br /&gt;When IT stops interacting with the rest of the company, stops exerting influence by no longer offering innovative technology solutions for business problems, it packages itself in an easily shipped box.&lt;br /&gt;&lt;br /&gt;"Outsourcing is a symptom, not the problem. Outsourcing has become such an important factor because when you turn IT into a commodity, it becomes about where you can get it at the lowest cost. It's what &lt;i&gt;we've&lt;/i&gt; done to IT that is the problem, which is taking away its chance to influence business."&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;br /&gt;Let IT be more than firefighters&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;IT professionals that have worked in the field for a long time often speak about a shift in their work where they have gone from tossing ideas back and forth to make for better technology solutions to fighting fires all day.&lt;br /&gt;&lt;br /&gt;There's less emphasis on creativity, and more on maintenance. Tweak this, work on this… In being reactive not proactive, everything is a crisis. Something has to be done right now, putting out fire after fire, going a long way to making IT a less pleasant environment.&lt;br /&gt;&lt;br /&gt;Beyond making for an unpleasant work environment for the techies already in-house, this firefighting serves as a warning to potential recruits: "You will not like this job."&lt;br /&gt;&lt;br /&gt;The best minds are not making it into the field. To some CIOs, it is a concern; to others it is not. They're losing out on the bright young people coming into the pipeline because people have an impression that if they work in IT, they'll just be fixing passwords all day.&lt;br /&gt;&lt;br /&gt;IT needs to get back to showing people how work can be made better through technology, and how technology can be more effective, IT professionals said.&lt;br /&gt;&lt;br /&gt;"IT is behind the wall, and business is outside the wall, and trying to exchange ideas across the wall is nearly impossible. We've stopped asking what computers can do for us."&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;br /&gt;Better managers get better results&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; text-align: justify;"&gt;      &lt;/div&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Although establishing guidelines and defining expectations is straight out of Management 101, many enterprise IT professionals don't know what is expected of them. Often, they only find out after they've missed a deadline or made a mistake.&lt;br /&gt;&lt;br /&gt;People perform best when they have a clear understanding of what is expected of them and how their performance will be measured. Many high performance organizations provide their team members with written expectations and accountabilities. It takes time to write and discuss expectations and accountabilities, but it is time well spent.&lt;br /&gt;&lt;br /&gt;People want to work some place they can be creative, have opinions, where they can make their ideas work and where the rules aren't so rigid and they won't be nailed to the wall every time there is a mistake. People will perform better if they're given some flexibility, and the opportunity to make an impact.&lt;br /&gt;&lt;br /&gt;An essential part of making people feel better about their work is to give continuous feedback, not just waiting until a scheduled salary or performance review. You have to make people feel good about what they're doing. You don't feel good about going to the dark room at the end of the hall, chained to the help desk phone until the time you go home.&lt;br /&gt;&lt;br /&gt;This is not about becoming more civilized; it's about how the IT career is shifting from a creative, motivating path to a bureaucratic one. Of course there is room for creativity, new ideas and concepts are popping up in a daily basis and they are making things better and easier for everyone.&lt;br /&gt;&lt;br /&gt;Podcasts, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;span style=""&gt;AJAX&lt;/span&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, BitTorrent, none of that existed some years ago and is a part of life of millions today. The problem is that most companies nowadays see programmers as commodities, creativity as risk, planning and careful deployment of systems as expenses.&lt;br /&gt;&lt;br /&gt;They have managers that don't know anything about technology, deadlines impossible to meet, no recognition for merit and talent. The consequence is that systems crash all the time, "workarounds" are the rule and the good professionals are overloaded with work to make up for all that people that work with them that don't have a clue.&lt;br /&gt;&lt;br /&gt;With such perspective ahead, it will be no wonder if in a near future the best brains will go to finance, law or any other profession that may offer what IT used to do.&lt;br /&gt;&lt;br /&gt;The problem is that IT has been taken over by &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:place&gt;&lt;st1:placename&gt;&lt;span style=""&gt;Business&lt;/span&gt;&lt;/st1:placename&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;st1:placetype&gt;&lt;span style=""&gt;School&lt;/span&gt;&lt;/st1:placetype&gt;&lt;/st1:place&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; products. They have no grasp of science, no feel for aesthetics, they only have feel for next quarter numbers and covering their @$$. This is what &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:place&gt;&lt;st1:placename&gt;&lt;span style=""&gt;Business&lt;/span&gt;&lt;/st1:placename&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;st1:placetype&gt;&lt;span style=""&gt;School&lt;/span&gt;&lt;/st1:placetype&gt;&lt;/st1:place&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; teaches. One needn't know anything about an industry in order to manage it, Business Schools build this into their Product. They will never ever learn a new skill unless it is something useful for climbing the corporate ladder. The best thing IT can learn is to weed &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:place&gt;&lt;st1:placename&gt;&lt;span style=""&gt;Business&lt;/span&gt;&lt;/st1:placename&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;st1:placetype&gt;&lt;span style=""&gt;School&lt;/span&gt;&lt;/st1:placetype&gt;&lt;/st1:place&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; product out. Dilbert's boss is hiding in every last one of them.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;br /&gt;What can be done to make IT a better proposition&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; text-align: justify;"&gt;    &lt;/div&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;IT needs to be separated into distinct engineering and operations groups.&lt;br /&gt;&lt;br /&gt;IT engineering is what the OP obviously favors. Designing new technologies, building better solutions to existing problems, and increasing productivity through these incredible meta-tools we call computers. IT Operations is about taking these technologies, cataloging their shortcomings, and doing what is necessary to implement them and keep them implemented. Engineering is about the introduction of new ideas; Operations is about the constant war to keep those ideas safe from entropy.&lt;br /&gt;&lt;br /&gt;Often, these goals are in direct conflict. It is only natural for a solution developer to recognize the shortcomings in their product and want to fix it. It is in the best interests of operations that a stable server not be changed unless absolutely necessary, and then only when the changes have been thoroughly tested, put through miles of red tape and human business process, and signed off on by people whose jobs are on the line if the application goes down.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;The idea that you can write a program and be the person who runs it most effectively is a false one in any mission critical application. When there's money on the line, red tape and paperwork is the only way to make sure that it keeps flowing.&lt;br /&gt;&lt;br /&gt;So to be successful in IT, we on the one hand need developers who are free to try radical new ideas in an environment that rewards creative solutions to entrenched problems, and on the other hand we need a static environment ruled by business process and red tape, which stifles unproven concepts and chokes creativity. The only solution to this is to separate these groups completely, and have development treat operations as a very stodgy customer.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; text-align: justify;"&gt;  &lt;/div&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Too many companies don't realize that this split is necessary to maintain their financial longevity, and have the same people who develop their applications responsible for their day-to-day operations. This situation not only leads to frustrated development staff who feel creatively stifled, it is also in the long term project suicide. In-house developers should not only be relieved of the responsibility for running their code, they should in fact not even have logins to the servers on which their code is running.&lt;br /&gt;&lt;br /&gt;Professional standards of code release need apply, too. It's not enough to release code to production via CVS checkout; you need to write an installer with an uninstaller and an upgrade path, just like you would for commercial software. It's not enough to run an ant build on your server via an NFS mount back to the depository, you need to compile a .war or .ear file just like you would for any other customer. As a developer, operations should be your only customer, and your relationship with them should be the same as the relationship you would maintain with your most valuable and critical customer.&lt;br /&gt;&lt;br /&gt;But one person wearing the development and operations hat? That leads to nothing but frustration, burnout, entropy, and failure.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=""&gt;&lt;br /&gt;Cynical view of IT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; text-align: justify;"&gt;    &lt;/div&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;However, there is a cynical view of how IT works. Some people are convinced that IT is beyond repair and is becoming commoditized like Manufacturing, where employees are treated as “resources”, head count for a project is the only criteria for setting deadlines and firefighting is the only recognizable form of good work. Bad applications that require firefighting often are created, the people responsible for the bad design that caused the fire fight it out (coz they screwed it in the first place) and end up being appreciated/rewarded because they were swift in fighting the fire.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;  &lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Dilbertization is INEVITABLE in any hierarchical organization. There's nothing whatsoever you can do about it.&lt;br /&gt;&lt;br /&gt;Its causes are ultimately all within human nature. Starting with the technologists themselves, they're all in competition with one another. Each wants to be recognized as the alpha geek. Furthermore, some are lazy and some are energetic. The lazy ones hate the energetic ones because they make them look bad. The energetic ones hate the lazy ones because they're not carrying their weight. Finally, the TALENTED technologists are repulsed by the thought of being promoted into management, but the inept ones love the idea, as do the closet fascists.&lt;br /&gt;&lt;br /&gt;The professional managers, middle-managers, "project managers" (ha!) and other undead minions of all standard IT organizations are just as dysfunctional. Secretaries are sullen, convinced that everyone thinks they're stupid (in some cases, this is astute on their part). Project managers, like the fawning little lap-dogs they are, tell management whatever they want to hear, often totally screwing over their staff by agreeing to ridiculous deadlines that cannot be met. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;"Middle managers often know nothing whatsoever about technology and run their areas according to whatever management theory is currently in vogue".&lt;/span&gt; Worse, they often rate employees by how well they schmooze, not how well they code. Nepotism is rampant. Other minions, like managers selected to represent users in design meetings, often are in way over their heads and only want to cover their asses and contribute enough to meetings to LOOK as though they've got things under control.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;  &lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;The whole system is completely, hopelessly, irreparably FUBAR. It's a clusterfuck of legendary proportions. The only way to survive within it is to make yourself invisible and get your work done as efficiently as you can, while not getting drawn into any politics, never suggesting anything, and never volunteering for anything.&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Personally, the biggest gripe I have with IT is this "Dysfunctional middle management". &lt;/span&gt;  &lt;/p&gt;&lt;p  style="font-family: verdana; text-align: justify;font-family:verdana;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;My biggest headache at work is the nontechnical people who are mid level managers in the IT department. Some of them come from Finance, others from other non-technical departments in the company.&lt;br /&gt;&lt;br /&gt;So what do they do? Instead of running a team like most normal managers they have to meddle to prove their worth and validate their existence. So they do dumb stuff like randomly reassign staff, change priorities every two months, and other PHB-style behaviors. They have no technical competency so they can't help out in the work, so they overcompensate and do dumb stuff.&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt; We work exclusively on CRT monitors at workplace (ugh ! I know it's from the previous millennia) and I wanted to convince a middle manager who takes IT decisions to provide flat screens for all developers. He starts off like this "Hmm why do you guys need LCD's, what is wrong with CRT's". I try and give a detailed "technical" explanation of the advantages that a LCD display has, only to hear the usual FUBAR about lack of "funds". The biggest irony is this guy works exclusively on a nice 19' LCD display.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p face="verdana" style="font-family: verdana; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt; I would have hoped that these types of people would have filtered out of the IT department by natural attrition (new companies, etc), but they haven't and it bothers me endlessly. Most companies have a fairly well equipped top management consisting of people who have been in the trenches, who have coded stuff somewhere in the past. The biggest problem is, when these guys become C*O's (CEO, CIO, COO etc), they tend to have a disconnect from the lower echelons of the organization, where most of the useful work gets done.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p face="verdana" style="font-family: verdana; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Till top management starts understanding the problems faced by developers who sweat it out day after day and put in a sincere effort to improve the situation, things are going to  be "status quo ante". A well equipped top management that is techie makes workplace so much better, stellar examples being Larry and Sergey and the way they run Google. I am sure Larry is not going to question the need for flat displays or any other tools of the trade that help developers turn out better work.   &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: verdana; text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;P.S. Google employees generally have dual 21' displays and two workstations to play with, budget is the least limiting factor for procuring and making available any developer tool or toy and developers are pampered with a host of on-site facilities and sops that make them stick to their workplaces longer and turn out better work because they generally love what they are doing. Any Google employee can rise to the position of a VP purely on technical accomplishments without getting into the willy nillies of managing a team. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;No wonder Google is a sought after destination for every IT guy worth his salt.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-8399196690096062877?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/8399196690096062877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/03/dilbertization-of-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/8399196690096062877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/8399196690096062877'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/03/dilbertization-of-it.html' title='Dilbertization of IT !'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-796514541633221141</id><published>2007-03-13T17:33:00.000+05:30</published><updated>2007-05-03T14:24:38.243+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>A gentle intro to JSON and its concepts</title><content type='html'>&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Out of all the technologies that have emerged in the Web 2.0 world of &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; powered apps, JSON is perhaps one of the most important. Its implications might not be apparent but JSON is a powerful technology that allows data interchange between traditional applications in an open and human readable format without the quirks of XML.&lt;br /&gt;&lt;br /&gt;JSON (JavaScript Object Notation) is a lightweight computer data interchange format. It is a text-based, human-readable format for representing objects and other data structures and is mainly used to transmit such structured data over a network connection using serialization.&lt;br /&gt;&lt;br /&gt;JSON finds its main application in &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; web application programming, as a simple alternative to using XML for asynchronously transmitting structured information between client and server.&lt;br /&gt;&lt;br /&gt;JSON is a subset of the object literal notation of JavaScript and is commonly used with that language. However the basic types and data structures of most other programming languages can also be represented in JSON, and the format can therefore be used to exchange structured data between programs written in different languages.&lt;br /&gt;&lt;br /&gt;Code for parsing and generating JSON (the latter is also known as "stringifying") is available for a whole bunch of languages including (but not limited to) C, C++, C#, Java, JavaScript, Objective-C, The 3 P's - Perl | Python | PHP, Ruby, ColdFusion, Common Lisp, E, Erlang, Limbo, Lua, ML,Ruby, Smalltalk, Tcl and ActionScript.&lt;br /&gt;&lt;br /&gt;JSON is built on two structures:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="margin-top: 0in; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;" type="disc"&gt;&lt;li class="MsoNormal" style="line-height: 150%;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;A collection of name/value pairs. In various      languages, this is realized as an object, record, struct, dictionary, hash      table, keyed list, or associative array.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: 150%;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;An ordered list of values. In most languages, this is      realized as an array, vector, list, or sequence.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangeable with programming languages also be based on these structures.&lt;br /&gt;&lt;br /&gt;Before we head into how JSON is useful in the Web 2.0 scenario, we have to elaborate a little bit on how &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; works and where JSON fits in.&lt;br /&gt;&lt;br /&gt;&lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; is a web development technology that makes the server responses faster by enabling the client-side scripts to retrieve only the required data from the server without retrieving a complete web page on each request, which will minimize the data transferred from the server. These requests usually retrieve xml formatted response, the xml responses are then parsed in the JavaScript code to render the results (which complicate the JavaScript code)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Need for JSON&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;&lt;span style="line-height: 150%;"&gt;Ajax&lt;/span&gt;&lt;/st1:city&gt;&lt;/st1:place&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; allows Web-enabled applications to perform out-of-band client-server calls, establishing a separate channel on which to send and receive information from remote Web services. In layman's terms, updates and navigation sequences in &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; applications are done outside the classical client-server context, which entails a complete screen refresh, with the information being received in the background (a.k.a out-of-band).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;These application updates that are typically obtained from RESTful Web services, once received in a user's browser, need to be incorporated in the overall HTML page layout, which is exactly where XML proves to be more than a handful. Though the capabilities of most mainstream browsers have increased over the years with the support of scripting languages and plug-in support, many programming tasks still remain difficult or unnatural to perform, one of them being manipulating and processing text, which is typically done using DOM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;The complexity in using DOM lies in its function-based roots, with a simple modification or access to a data tree requiring numerous method calls. In addition, DOM is known for differing implementation details among various browsers; this process takes us to a very elaborate programming scheme with ample possibilities for a breakdown in cross-browser compatibility. So the outstanding question now becomes: How can a markup language be easily integrated into an HTML layout page to accommodate &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; requirements?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;The answer comes in the form of leveraging a common component in all mainstream browsers: The JavaScript engine. Instead of delivering Ajax updates in a format such as XML, which would require the use of a mechanism like DOM to access and incorporate data into a layout, a more natural and intuitive approach would be using a format that fits natively to the aforementioned engine, namely JSON.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Now that we have addressed the place JSON has with respect to XML and &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; applications, let's take a closer look at the technical details behind JSON.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;The first thing you should realize about JSON is that it remains a simple text format—just like XML—which is relatively easy to read and inspect with the naked eye. At a syntax level, what starts to set JSON apart from other formats is the characters used to separate data, which are mainly constrained to apostrophes ', brackets ( ), [ ], { }, colons :, and commas.&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;br /&gt;&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;This listing illustrates what a JSON payload looks like:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 0.5in; line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;i style=""&gt;&lt;span style="line-height: 150%;"&gt;{"addressbook": {"name": "Mary Lebow",&lt;br /&gt;"address": {&lt;br /&gt;"street": "&lt;st1:street st="on"&gt;&lt;st1:address st="on"&gt;5 Main   Street&lt;/st1:address&gt;&lt;/st1:street&gt;"&lt;br /&gt;"city": "&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;San Diego&lt;/st1:city&gt;,  &lt;st1:state st="on"&gt;CA&lt;/st1:state&gt;&lt;/st1:place&gt;",&lt;br /&gt;"zip": 91912,&lt;br /&gt;},&lt;br /&gt;"phoneNumbers": [&lt;br /&gt;"619 332-3452",&lt;br /&gt;"664 223-4667"&lt;br /&gt;]&lt;br /&gt;}&lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Human readable? Yes. Machine can parse easily? Yes. Similar to XML? Largely.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;How does JSON manage to work?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;The answer is that JSON works because most people don’t really need all that overhead, and because it’s often possible to do really interesting things with really simple formats. The World Wide Web has been churning along for over a decade with a markup language that originally had no standardized specification; these days it has specs, but they’re almost never enforced and are, in fact, usually thrown down to the ground and trampled upon. And it still works.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;So HTML is a fast and loose format and it doesn’t have any concept of data types that the average programmer would recognize (though it does, in its own special way, have data types), and what rules it has with regards to what you can stick where are routinely ignored. And yet it works. It works really, really well. It works because most people who are using it don’t really need to do complex things with it. Most people who need markup languages for use on the web just want to do simple things like display some text and pictures. You don’t need a 500-page language specification to do that.&lt;br /&gt;&lt;br /&gt;JSON is stricter than HTML in some ways; it expects you to obey the rules, but in exchange it gives you fewer rules to follow. And JSON works really, really well. It works because most people who are using it don’t really need to do complex things with it; most people who need data formats for use on the web just want to do simple things like fetch some data from over there and drop it into this web page here. You don’t need the massive overhead of XML-the-protocol-stack to do that.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;There are people who genuinely have more complex needs, and I’m not going to try to say whether one thing or another will suit what they’re doing. But for the majority of us who are lounging around in the big belly of the web, JSON is just fine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Benefits&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Making use of JSON's data separators may not be too obvious at first glance, but there is a fundamental reason behind them: easier data access. As it turns out, the internal representation used by JavaScript engines for data structures like strings, arrays, and objects are precisely these same characters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Where this leads us is to a more straightforward approach for accessing data than the alternate DOM technique, but let's take a look at a few JavaScript code snippets to illustrate this process. These snippets access the information in the previous JSON snippet:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;li&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Name access from JSON: addressbook.name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Street address access from JSON: addressbook.address.street&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;First phone number access from JSON: addressbook.address.phoneNumbers[0]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;      &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;If you have done some type of DOM programming, you will probably notice the contrast immediately, but just in case you haven't, here is an external resource to the Document Object Model, which contains a small example for navigating across data.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;An added benefit of JSON is its less verbose nature. In XML, the opening and closing of tags is a necessity just for markup compliance, but in JSON's case all that's required is a simple bracket for closure. In data exchanges comprising a hundred or more fields, this additional XML markup can add to transit times.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Additionally, JSON has garnered the attention of many developers specializing in different programming languages, giving way to libraries capable of producing this format from environments as diverse as Haskell and Lisp to more mainstream options like C# and PHP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Constraints&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Like many benefits, JSON's less verbose format can cut both ways, and in this sense lacks a few of XML's properties. Namespaces, which allow the mixing of identical pieces of information in different contexts, is clearly missing in JSON. Another differing feature is that of attributes, since every JSON assignment is done with colons (:); when transforming XML to JSON it can be difficult to distinguish between what would be considered text between tags—XML CDATA—and the actual value of attributes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;You may also find the actual creation and validation of JSON a little more complex than an average XML fragment. In this sense, it may be that XML has had a head start in terms of developing tools for its processing. Nevertheless, and to ease any worries you may have in this area, we will be exploring some of the most mature JSON developments in our next section.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Is JSON for You?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;Like all design choices in software, your requirements will provide the answer to this question. If your Web services consumers will be created in a classical, full-fledged programming environment like Java, .NET, PHP or Ruby, then you can probably make due without JSON. Given the open-ended capabilities of most programming language environments, providing you total configuration control not to mention access to custom libraries, parsers, or helper classes, the difference between consuming JSON, XML, or any other type of Web services payload should be negligible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;If on the other hand, your Web services consumers will be confined to the environment of a browser, JSON deserves serious consideration. Consuming Web services in a browser is not done for the sheer fun of it but rather as a real business requirement. If your manager comes to you and requires one of those "slick Web 2.0 interfaces" that appear to load data without a delay/refresh, then you would be entering the technical realm of &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; and Web services consumption in browsers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;In these last circumstances, you would not only be limited to the processing environment of a machine located across a network, but one under tight control of a random user, limiting even the most resourceful developer to work with a lowest common denominator for processing text in browsers: the DOM, which as outlined earlier, is a difficult undertaking when compared to accessing a JSON tree.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;When you get started with JSON the comparisons with XML are inevitable. Hard core XML fans tend to remark that JSON is redundant and everything it achieves is already implemented in XML. JSON is a better data exchange format. XML is a better document exchange format. Use the right tool for the right job.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Though the x in &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Ajax&lt;/st1:place&gt;&lt;/st1:city&gt; stands for XML, and Web services have come to the forefront by the steady use of this same format, it doesn't necessarily mean such an approach is cast in stone. As we have seen, XML has a few drawbacks when applied to Ajax-enabled applications, due to the text-processing capabilities in browsers. In this sense, JSON has emerged to provide a compelling alternative in this same context.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;References ::&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The first two references contain more material on JSON. The rest of them are comparisons of JSON with XML and suitability of JSON for RPC.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;a href="http://www.json.com/"&gt;http://www.json.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.json.org/xml.html"&gt;http://www.json.org/xml.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/mikechampion/archive/2006/12/21/the-json-vs-xml-debate-begins-in-earnest.aspx"&gt;http://blogs.msdn.com/mikechampion/archive/2006/12/21/the-json-vs-xml-debate-begins-in-earnest.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON"&gt;http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2006/12/json-vs-xml-debate"&gt;http://www.infoq.com/news/2006/12/json-vs-xml-debate&lt;/a&gt;&lt;br /&gt;&lt;a href="http://copia.ogbuji.net/blog/2006-12-23/Why_JSON_v"&gt;http://copia.ogbuji.net/blog/2006-12-23/Why_JSON_v&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-796514541633221141?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://json.org/' title='A gentle intro to JSON and its concepts'/><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/796514541633221141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/03/gentle-intro-to-json-and-its-concepts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/796514541633221141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/796514541633221141'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/03/gentle-intro-to-json-and-its-concepts.html' title='A gentle intro to JSON and its concepts'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-3330765551377699588</id><published>2007-03-13T11:45:00.000+05:30</published><updated>2007-05-03T14:25:11.522+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='geek workplace'/><title type='text'>Things at workplace that make a geek happy</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;There are many reasons to let geeks work the way they want to work. Today they work in every industry. They are the knowledge base, blood and sweat equity of many businesses. They work harder than most. They work longer than most. Their job isn’t a separate “thing they do” while they look forward to going home and relaxing. They eat, sleep and breathe it. They are your systems administrators, your IT team, your programmers, your web developers, your designers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Anyone who understands how to leverage today's technology to increase intelligence, productivity and efficiency; anyone who stays up nights working to get better at what they do; anyone whose job is their life is a geek.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;br /&gt;These are the most important asset your company has. For this reason, it’s important to give geeks what they want. Best part is, if you do, they most likely will not leave your company easily, or will think twice nay thrice before leaving.&lt;br /&gt;&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="line-height: 150%;color:black;" &gt;1. Let them work when they want&lt;/span&gt;&lt;/strong&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Flexi-timings are an absolute must for geeks, they are seldom 9-5 people. Geeks work almost every moment they are awake. They are online before they go to the office. They are home working after the office closes. They work weekends. They are even sometimes working in their dreams. Employers should understand this and more importantly appreciate it. Don’t force geeks to work 9-5 if there is no real need other than “company morale.” Meetings are one thing, so is socializing with coworkers, but a relaxed office schedule will do wonders for the contentment levels of your employed geeks.&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="line-height: 150%;color:black;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="line-height: 150%;color:black;" &gt;2. Let them work where they want&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Allow your geek to telecommute or work from home. This is better than any perk you and your creative human resources team can come up with. Geeks prefer to have a couch around to nap on if they are tired. Some like no windows; others want to stare out into a city or landscape. At home, geek’s offices are usually more lived in, more comfortable and enjoyable than anywhere else in the world. This is because they love what they do, and they do it so much of the time they need to be comfortable where they do it. Most geeks are fine working from offices but giving them the option to work from the comfortable confines of their couch always helps.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;3.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Let them control their lighting&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;There is nothing more annoying than working in bright crappy fluorescent lighting if you prefer to work in the dark, or vice versa. Geeks usually have sensitive eyes from staring at LCD/CRT monitors for too long. The last thing you want is your geeks to have headaches. Most geeks aren’t very pleasant to work with when they have headaches.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;4.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Let them wear headphones&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Geeks are experts in the arts of “focus.” Focusing takes removing all unnecessary distractions from your environment and creating a state where nothing else is going on but what they are working on. The harder the problem they are trying to solve or the more creative they have to be, the more they need to focus. Headphones or simply a lack of ringing phones and talking people around allow geeks to focus much easier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;5.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Do not expect them to wear a suit&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Geeks find arbitrary activities that lack real and meaningful purpose, a waste of time and energy. This includes attire. Most companies today are aware of this and even practice casual dress so as to make everyone more comfortable, but geeks are a special case. Geeks wear stuff they are comfortable in, including but not limited to their old Slashdot tees and faded jeans. Unless you have a compelling reason to dictate otherwise, let them wear whatever they want.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;6.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Do not make them participate in company events (unless you are sure it is geek-friendly)&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Most geeks will not be jumping up and down with joy to attend a company party to celebrate the local football team, unless of course there is beer, and they can hang around and talk to each other about geeky things. Keep this in mind when planning company events. Geeks like to have fun, just not the same kind of fun as your typical non-geek.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;7.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Do not hold a lot of arbitrary meetings that could have otherwise been handled through email or IM&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;This one is important. Like I said, geeks need to focus to be happy and able to focus. Nothing is more of an interruption than someone walking into their space unexpectedly and saying “hey do you have a minute?” The answer is usually going to be a disgruntled “Sure.” The truth is geeks are fine with attending planned meetings (and will happily be there if the meeting is really a necessary one for them to attend in person), but are usually most happy communicating through email and IM. These forms of communication are most appealing to geeks because they do not interrupt you, and polite geeks will even respond with a quick “hold on a sec, I’m in the middle of something.” Email and IM are recorded, searchable records of conversations. They are efficient and to the point. This also makes geeks happy. Geeks can discuss anything through email and IM and will usually be more willing and thorough with their response. Face to face meetings are important, geeks know that, but I would guess that 90% of conversations and meetings held face to face, would be more efficient and end with happier people, if they were held in a recordable, written, virtual space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;color:black;" &gt;8.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt; &lt;strong&gt;Do not make them do anything other than work&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;This one isn’t completely accurate all the time. Geeks are team players, but they are also easily insulted by being given a task below their level of expertise or outside of the scope of their position. They’ll do it, but they won’t be totally happy. This includes: answering phones, taking out trash, going shopping for company supplies, “filling in” for a sales person or document a project they didn't work on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; font-family: verdana; text-align: justify;font-family:verdana;" &gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;I hope this summary helps employers further understand the world of geeks and how to keep them happy. I also hope this helps other geeks out there approach their employers with a list of what they need to work happy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: 150%; font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;color:black;"  &gt;Disclaimer:: This article was written almost entirely by Nomadishere and got digged. I made a few minor modifications and posted it here.&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-3330765551377699588?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/3330765551377699588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/03/things-at-workplace-that-make-geek.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/3330765551377699588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/3330765551377699588'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/03/things-at-workplace-that-make-geek.html' title='Things at workplace that make a geek happy'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-1815480052448770561</id><published>2007-02-17T23:01:00.000+05:30</published><updated>2007-05-03T14:26:13.691+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='bryan adams'/><category scheme='http://www.blogger.com/atom/ns#' term='yanni'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='westlife'/><category scheme='http://www.blogger.com/atom/ns#' term='rahman'/><title type='text'>Musical Conjectures</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Music is the rich distilled essence that adds zing to life. Music washes away from the soul the dust of everyday life. To some, it’s a wonderful pastime. To some others, it makes or breaks their day. Some seek solace in music, laugh and cry with the hues of a tune. There is no feeling, except the extremes of fear and grief, which does not find relief in music.&lt;br /&gt;&lt;br /&gt;Music is magical; it is perhaps god's best gift to mankind. Music is medicine to the soul and that is rare. It's a language which the soul alone understands, but which the soul can never translate.&lt;br /&gt;&lt;br /&gt;I am going to try and talk about music that made me rejoice, made me ponder, made a lonely day much better, music that accompanied me like no companion would, music that lifted me immensely and music that moved me.&lt;br /&gt;&lt;br /&gt;Yanni's music is a kind that can make you rejoice, enjoy the splendor and daze at the arrangement. If the soul can dance, it will be at its dancing best when listening to Yanni (&lt;b&gt;&lt;i&gt;"Nostalgia"&lt;/i&gt;&lt;/b&gt; is a case in point). Michael Jackson manages to evoke pretty much everything that Yanni does, though they are miles apart in the kind of music they dole out. I celebrated &lt;b&gt;&lt;i&gt;"Heal the World"&lt;/i&gt;&lt;/b&gt; for its purity of thought. It was straight out of the heart of the most misunderstood celebrity of our times.&lt;br /&gt;&lt;br /&gt;There's a whole brand of pulsating, racy music (call it hard metal or acid rock or whatever suits you) that has kept me entertained. When am in a good or upbeat mood or when am lost on a difficult problem at work, it is this genre that kicks me in all the right places and eggs me to revel in the moment. Deep Purple, Metallica, Rammstein, Greenday, Korn and a whole bunch of hard rock bands constitute the &lt;i&gt;"kick me in all right places"&lt;/i&gt; group.&lt;br /&gt;&lt;br /&gt;Music sets me thinking, especially when it is accompanied by meaningful lyric. Phil Collins' &lt;b&gt;&lt;i&gt;"Another day in paradise"&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;is one such instance. Eminem's music is almost there, though I rarely listen to rap. Bob Dylan's &lt;b&gt;&lt;i&gt;"Political World"&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;was another intriguing piece which kept me pondering for a while.&lt;br /&gt;&lt;br /&gt;I have always liked the boy-band genre of pop with soft lyrics that ooze love and mush. Westlife excels at this like no one else. There are a couple of Westlife songs that get repeat play in my playlist, primarily because I was able to identify with them emotionally. &lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;br /&gt;"My Love"&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;is a soft, romantic number that talks about a man's lost love and about the great times he had with the girl before they fell apart. There was this girl in my college I really liked and I somehow tagged this song to that girl. I listened to this song countless times when I got reminded of the girl. "My Love" is too deep in my system now and I would continue to listen to it and laugh and cry with it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;blockquote&gt;"If something can go wrong once, it will most probably go wrong again"&lt;/blockquote&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;This is exactly what happened in my case. Another girl, another whiff of fresh air and another heartache. Westlife's&lt;i&gt; &lt;b&gt;"Fool Again"&lt;/b&gt; &lt;/i&gt;seemed to reflect my mind set then and continues to do so.&lt;br /&gt;&lt;br /&gt;Westlife is to mush what Bryan Adams is to pure love. I recommend Bryan Adams to all lovers out there, try listening to his stuff with your loved ones and get transported to an all new dimension. &lt;b&gt;&lt;i&gt;"Cloud Number Nine"&lt;/i&gt;&lt;/b&gt; is a bed time ballad that will leave you dizzy in love. &lt;b&gt;&lt;i&gt;"Everything I do" &lt;/i&gt;&lt;/b&gt;to show how much you love, &lt;b&gt;&lt;i&gt;"Heaven"&lt;/i&gt;&lt;/b&gt; to croon when your spirits are high, &lt;b&gt;&lt;i&gt;"Please forgive me"&lt;/i&gt;&lt;/b&gt; when you want to apologize and make up to your love, there's a Bryan Adams number for every occasion.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;b&gt;&lt;i&gt;"The best of me"&lt;/i&gt;&lt;/b&gt; is not his best track but is my personal favorite. "When you want it, when you need it, you'll always have the best of me" croons &lt;st1:place st="on"&gt;Adams&lt;/st1:place&gt;. This one idea kept me going during highs and lows in my relationship.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Back home, my music is centered on Rahman with liberal doses of M.S.Subbulakshmi and Ilayaraja. Rahman has done wonders with his music and made the whole experience of music cherishable, like the lingering taste of fresh coffee. It's tough to single out a track of his as a personal favorite, though &lt;b&gt;&lt;i&gt;"Ennavale"&lt;/i&gt;&lt;/b&gt; pops up immediately. Roja, Rangeela, &lt;st1:city st="on"&gt;Bombay&lt;/st1:city&gt;, Minsara Kanavu, Dil Se, Alaipayuthe, Lagaan and &lt;st1:place st="on"&gt;Taal&lt;/st1:place&gt; deserve a special mention.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;"Warriors of Heaven and Earth"&lt;/i&gt;&lt;/b&gt; left me breathless, thrilled, excited and a bit scared. It was a scintillating album filled with sounds I had never experienced before. It was scary because it was a truly international album and left me worried if this would herald the departure of Rahman from Indian music and propel him to dizzying heights of &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Hollywood&lt;/st1:place&gt;&lt;/st1:city&gt; and western theatre. Rahman is still around &lt;glad&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/glad&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;b&gt;&lt;i&gt;"Vande Mataram"&lt;/i&gt;&lt;/b&gt; was another album that roused the patriotic spirit in every Indian. Seldom do you get to listen to stuff that leaves your hair raised and leaves you pumped and rooting for your country. Every time I listen to the title track in this album, it produces a deep sense of pride and a deeper sense of belonging. Anthems are not written twice for any nation, but Rahman's Vande Mataram is the youth's version of national anthem, a song that instills national spirit like nothing else.&lt;br /&gt;&lt;br /&gt;Any discussion on music is left incomplete without a word or two on M.S.Subbulakshmi. The ethereal voice, the clarity of pronunciation and the oozing devotion in her renditions have helped countless people experience divinity. Her songs have helped me immensely in my search for inner peace.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Music has enriched me like nothing else; it has been a faithful companion, a source of comfort and solace and perhaps my only connection to my inner self.&lt;br /&gt;&lt;br /&gt;Billy Joel once remarked &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;blockquote&gt;"I think music in itself is healing. It's an explosive expression of humanity. It's something we are all touched by. No matter what culture we're from, everyone loves music."&lt;/blockquote&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Music expresses that which cannot be said and on which it is impossible to be silent. I will continue to immerse myself to the strums of Bryan Adams and Westlife and Rahman. Music makes my journey of self discovery worthwhile and spicy and I doubt if life would be worth anything without it.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 12pt; line-height: 150%; color: rgb(0, 0, 0); font-family: verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;span style="font-weight: bold;"&gt;Notes ::&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I would recommend investing in a pair of quality headphones if you want an immersive musical experience. QuietComfort™ 3 from Bose is top draw. The HD 5xx series from Sennheiser is also an excellent headphone. If you prefer speakers to headphones, go for a 5.1 (or better) system from Sony, Creative or Bang &amp;amp; Olufsen. iPod or Cowon i2 paired with good quality headphones are killer mp3 players.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-1815480052448770561?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/1815480052448770561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2007/02/musical-conjectures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1815480052448770561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/1815480052448770561'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2007/02/musical-conjectures.html' title='Musical Conjectures'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-115008941451073950</id><published>2006-06-12T10:44:00.000+05:30</published><updated>2007-05-03T14:26:43.216+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='templating'/><category scheme='http://www.blogger.com/atom/ns#' term='Smarty'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Smarty Classes</title><content type='html'>&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Smarty classes are PHP classes which have one basic purpose, "&lt;em&gt;To separate the business logic and presentation logic&lt;/em&gt;". Using smarty classes, we can write separate code for the business logic in PHP. Usually presentation logic is written in HTML which is echoed from PHP. How many times have we wished that we can use PHP in the presentation logic part to obtain more control over how the data is displayed? Smarty is the appropriate answer to this, for it enables to write embedded PHP code in the HTML level, with all the frills of HTML along with the control logic of PHP&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Though Smarty is known as a "&lt;strong&gt;Template Engine&lt;/strong&gt;", it would be more accurately described as a "Template/Presentation Framework". That is, it provides the programmer and template designer with a wealth of tools to automate tasks commonly dealt with at the presentation layer of an application. I stress the word &lt;i&gt;Framework&lt;/i&gt; because Smarty is not a simple tag-replacing template engine. Although it can be used for such a simple purpose, its focus is on quick and painless development and deployment of your application, while maintaining high-performance, scalability, security and future growth. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Some of the exciting features of Smarty include: &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Caching:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Smarty provides fine-grained caching features for caching all or parts of a rendered web page, or leaving parts uncached. Programmers can register template functions as cacheable or non-cacheable, group cached pages into logical units for easier management, etc. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Configuration Files:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Smarty can assign variables pulled from configuration files. Template designers can maintain values common to several templates in one location without intervention from the programmer, and config variables can easily be shared between the programming and presentation portions of the application. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Security:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Templates do not contain PHP code. Therefore, a template designer is not unleashed with the full power of PHP, but only the subset of functionality made available to them from the programmer (application code.) &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Variable Modifiers:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; The content of assigned variables can easily be adjusted at display-time with modifiers, such as displaying in all upper-case, html-escaped, formatting dates, truncating text blocks, adding spaces between characters, etc. Again, this is accomplished with no intervention from the programmer. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Template Functions:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Many functions are available to the template designer to handle tasks such as generating HTML code segments (dropdowns, tables, pop-ups, etc.), displaying content from other templates in-line, looping over arrays of content, formatting text for e-mail output, cycling though colors, etc. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Filters:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; The programmer has complete control of template output and compiled template content with pre-filters, post-filters and output-filters. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Resources:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Templates can be pulled from any number of sources by creating new resource handlers, then using them in the templates. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Plugins:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Almost every aspect of Smarty is controlled through the use of plugins. They are generally as easy as dropping them into the plugin directory and then mentioning them in the template or using them in the application code. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Debugging:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Smarty comes with a built-in debugging console so the template designer can see all of the assigned variables and the programmer can investigate template rendering speeds. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Compiling:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Smarty compiles templates into PHP code behind the scenes, eliminating run-time parsing of templates. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="line-height: 150%;"&gt;Performance:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt; Although the functionality of Smarty is quite extensive, it still performs extremely well. Most of Smarty's capabilities lie in plugins that are loaded on-demand. Many of Smarty's features would be necessary in your application anyways, resulting in quicker development/deployment. Smarty templates get compiled to PHP internally, so they take advantage of PHP op-code accelerators. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Hope this was useful.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;For more info on Smarty or to get your hands dirty with Smarty go here &lt;em&gt;&lt;a href="http://smarty.php.net/"&gt;smarty.php.net&lt;/a&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-115008941451073950?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://smarty.php.net' title='Smarty Classes'/><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/115008941451073950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2006/06/smarty-classes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/115008941451073950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/115008941451073950'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2006/06/smarty-classes.html' title='Smarty Classes'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24358030.post-114279777911757411</id><published>2006-03-20T01:12:00.000+05:30</published><updated>2007-05-03T14:27:47.906+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='bytecode'/><title type='text'>Python, not reptilian (anymore)</title><content type='html'>&lt;p class="MsoNormal"  style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;Python, a hacker's tool and nothing more till a couple of years ago has suddenly burst into the limelight. I know hardcore Python fans are gonna flame me for calling Python this, but the language has matured and is usable by normal programmers only in the last couple of years. My definition of a normal programmer is someone who programs (writes code, designs stuff, graffiti and the works) day-to-day but is not addicted to it so much so that sleeping and bathing become a tiresome ritual. Let me leave out the hacker demi-gods who are happy with even LISP from the discussion on language usability for time being. They could take LISP and Perl, bang their heads and make it work, so I guess language usability/elegance might not matter much to them.&lt;br /&gt;&lt;br /&gt;So what is so good about Python that makes it usable to the programmer community in general? I guess I would seek to answer that during the course of this post. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-family: verdana; text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="line-height: 150%; color: rgb(0, 0, 0); font-family: verdana; text-align: justify;font-family:verdana;"&gt;&lt;span style="line-height: 150%;font-size:85%;" &gt;&lt;br /&gt;1. Python promotes adherence to coding standards, indentation for example. Indentation, IMHO should not be treated as an add-on feature (that is optional) but is something absolutely necessary to produce readable code. Python enforces this by making sure that blocks of code should follow the same level of indentation. For e.g. a "for" loop will work only if all the statements in it have the same level of indentation, though you are allowed to throw in braces for that good 'ol feeling. &lt;s&gt;Braces don't make a difference here to the Python interpreter&lt;/s&gt;, the indentation surely does. (Braces signify a dictionary in python, a datatype akin to a hash table in other programming languages)&lt;br /&gt;&lt;br /&gt;2. Python allows/encourages easy plugging in of modules. This might not be something unique to Python, but it's still wonderfully implemented. Python modules to get the most common programming tasks done are readily available and are a few key strokes away from your pet project. Python might not boast of something equivalent to CPAN (for PERL), but it’s just that re-usable Python code is all around the place and not centralized like CPAN.&lt;br /&gt;&lt;br /&gt;3. Python is cross platform across OSes (so is PERL and C++ and Java). I believe its the best cross platform implementation (albeit with heavy favoritism for Unix like systems). It doesn't need a third party Virtual Machine (VM) to run it (it however needs python to run), nor does it rely heavily on system libraries to make it powerful. PERL is good, but I haven't seen too many PERL programmers on Windows, not yet.&lt;br /&gt;&lt;br /&gt;4. &lt;s&gt;Python is interpreted. This might be construed as a disadvantage by many because compilers are supposed to be faster and can dole out better assembly. But Python breaks that notion and is very fast for an interpreted language. Don't believe me? Try&lt;/s&gt; it out, it’s only a bit slower than comparable C code and C is the very definition of speed amongst high level languages. -- Python source code is automatically compiled into Python byte code by the CPython interpreter. Compiled code is usually stored in PYC (or PYO) files, and is regenerated when the source is updated, or when otherwise necessary. This bytecode is executed by the interpreter at runtime. There are options to compile a binary instead of bytecode using tools like py2exe.&lt;br /&gt;&lt;br /&gt;5. Python is actually compiled into an intermediate form called bytecode which can then be run in a traditional interpreter. The advantage of this bytecode is its platform independence. Bytecode generated on Windows would run without any (major) modifications on UNIX flavors. However, it is to be noted that bytecode is not portable across versions of Python, so bytecode generated by Python ver 2.2 might not be compatible with Python ver 2.5.&lt;br /&gt;&lt;br /&gt;6. Python is excellent when you want to try out some small piece of code (for say a proof of concept or an experiment). You don't need to worry about traditional boiler plate stuff here, most of that is taken care already. So you can start hacking immediately and almost all the code that you write would be actual, executable code and very little fluff.&lt;br /&gt;&lt;br /&gt;7. To extend a little bit on point 6 (because it’s very important), Python is the best language for prototyping. When you want to hand out a prototype/model to a client for review, Python allows you to do just that, no frills attached. Its famous Rapid Application Development (RAD) paradigm is not restricted to words and you can see the difference when you start coding. I cannot emphasize enough on this point, because it could save man hours of work. A prototype which I develop over a week (without much effort) is easily throwable than something developed by a dozen guys in a month. So I would not stick with code which is not usable just because I took time to write it. What if the client changes the entire requirement/design after the prototype is ready (they are famous for it, aren't they). If I have a cute little Python prototype which does everything that the 'real' thing needs to do and it was developed in a short span of time, I can use it or throw it and not much is lost (except a few broken Python fans' hearts maybe).&lt;br /&gt;&lt;br /&gt;8. Python is well integrated with some of the most famous libraries/toolkits out there. Python can integrate with COM, .NET, and CORBA objects. For Java libraries, use Jython, an implementation of Python for the Java Virtual Machine. For .NET, try IronPython, Microsoft's new implementation of Python for .NET. X, Tk, Motif and a gamut of other graphical toolkits are also readily available for use within your Python project, so GUI development is a snap, like never before.&lt;br /&gt;&lt;br /&gt;9. Python is extensible. If any portion of your Python module needs speeding up, you have the option of writing it in C/C++ and integrating it with the rest of the stuff using Swig or Boost Python (there might be more, I could think of only Swig and Boost now). A brief note here, Python is good enough or quick enough for most requirements and embedding C code might really not be necessary, but you have the option nevertheless.&lt;br /&gt;&lt;br /&gt;10. Python looks good. Isn't that silly, you would say. Why should a programming language 'look' good. I guess code needs to look good and promote readability/reviewability even if its months since you wrote it and not obscure to the point of losing some hair to understand what you wrote a couple of months ago. Most programmers spend more than half of their time reading code written by others. So its of utmost importance that code written by everyone is readable. PERL is notoriously famed for its obscure syntax which allows nearly un-decipherable code (at least for humans) to be written. If your code looks ugly in Python, it most probably is not going to work either. How do you find out if your code is ugly? I guess its more of gut instinct to start with and becomes an art with experience. So is it impossible to write code in Python that looks ugly, lacks clarity and yet works? Well, I guess someone can actually try it out as an exercise but be rest assured that Python will make it at least a dozen times tougher than PERL to write obscure code.&lt;br /&gt;&lt;br /&gt;11. Python promotes concise code and takes obscure code out of the picture by providing easy and beautiful ways to write working code for pretty much everything. You don't need to write obscure code just because your application is really complex, you would still have an elegant way out in Python and that elegant way would be easy and obvious for most programmers. C is elegant alright, but the most elegant solutions in C might not be the most obvious.&lt;br /&gt;&lt;br /&gt;What else in Python deserves mention, well its a long list. Visit some links I have given below and they should help you get a better idea and even a head-start with the language, if you are not already initiated.&lt;br /&gt;&lt;br /&gt;Quotes about Python: &lt;a href="http://www.python.org/about/quotes/"&gt;http://www.python.org/about/quotes/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python success stories: &lt;a href="http://www.python.org/about/success/"&gt;http://www.python.org/about/success/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Getting started: &lt;a href="http://www.python.org/about/gettingstarted/"&gt;http://www.python.org/about/gettingstarted/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do a Google on Python and you should get a wealth of information to aid you in your quest.&lt;br /&gt;&lt;br /&gt;Welcome to the world of Python and Happy Hacking!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24358030-114279777911757411?l=orangeslush.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.python.org/' title='Python, not reptilian (anymore)'/><link rel='replies' type='application/atom+xml' href='http://orangeslush.blogspot.com/feeds/114279777911757411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orangeslush.blogspot.com/2006/03/python-not-reptilian-anymore.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/114279777911757411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24358030/posts/default/114279777911757411'/><link rel='alternate' type='text/html' href='http://orangeslush.blogspot.com/2006/03/python-not-reptilian-anymore.html' title='Python, not reptilian (anymore)'/><author><name>Niranjan</name><uri>http://www.blogger.com/profile/03146215553240569459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_HfWn6M4TKTQ/R8T_6ATGraI/AAAAAAAAABw/xokHW7IcgEg/S220/Niru.jpg'/></author><thr:total>3</thr:total></entry></feed>
