<?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-7217258</id><updated>2011-08-26T11:35:29.427-07:00</updated><category term='self help'/><category term='unwind'/><category term='OAuth'/><category term='authentication'/><category term='Captcha'/><category term='software engineering'/><category term='programming'/><category term='Success'/><category term='virus'/><category term='Outliers'/><category term='Malcolm Gladwell'/><category term='Water colors'/><category term='Dilbert'/><category term='Algorithms'/><category term='painting'/><category term='relax'/><category term='authorization'/><category term='management'/><category term='hiring'/><title type='text'>Captain's log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7217258.post-6908437495075574938</id><published>2010-01-24T05:10:00.001-08:00</published><updated>2010-01-24T05:18:02.143-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Water colors'/><category scheme='http://www.blogger.com/atom/ns#' term='painting'/><category scheme='http://www.blogger.com/atom/ns#' term='unwind'/><category scheme='http://www.blogger.com/atom/ns#' term='relax'/><title type='text'>Water color painting</title><content type='html'>&lt;span style="font-family: arial;"&gt;Tried my hand at water colors today after long time....can't really remember when was the last time I held a brush in my hands since school days. Painting is an amazing way to unwind and relax. If the painting had turned out to be good, then it would have been encouraging as well :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;But then again I remember "The 10,000 hour rule" from Outliers, where Malcom mentions that it is around 10K hours of practice that one needs. I just put in couple of hours today :) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Hopefully more hours will follow.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Here is a link to a good tutorial on water color painting:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;http://www.watercolorpainting.com/watercolor-tutorials.htm&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-6908437495075574938?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/6908437495075574938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=6908437495075574938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6908437495075574938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6908437495075574938'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2010/01/water-color-painting.html' title='Water color painting'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-8887375184063699762</id><published>2010-01-22T22:28:00.000-08:00</published><updated>2010-01-22T22:35:50.079-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outliers'/><category scheme='http://www.blogger.com/atom/ns#' term='Malcolm Gladwell'/><category scheme='http://www.blogger.com/atom/ns#' term='Success'/><title type='text'>Outliers</title><content type='html'>I recently started reading &lt;a href="http://www.gladwell.com/outliers/index.html"&gt;Outliers by Malcolm Galdwell&lt;/a&gt;. It is an intriguing book. I have only read around four chapters so far.&lt;br /&gt;&lt;br /&gt;The author talks about how our environment (location, culture, family, family values, etc) affects our success in life. It talks about intellect and to what extent it contributes towards being successful. Currently I am reading through the chapter called "The trouble with Genuises" and it is captivating.&lt;br /&gt;&lt;br /&gt;More later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-8887375184063699762?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/8887375184063699762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=8887375184063699762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/8887375184063699762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/8887375184063699762'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2010/01/outliers.html' title='Outliers'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-7420649148593299549</id><published>2010-01-10T09:13:00.000-08:00</published><updated>2010-01-10T09:32:28.247-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='self help'/><title type='text'>Lets talk about Diamonds</title><content type='html'>&lt;span style="font-family:arial;"&gt;First things first (though ten days late already) - Wish you a happy new year 2010 and wonderful decade ahead!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I just finished reading "&lt;a href="http://arindamchaudhuri.blogspot.com/2009/10/discover-diamond-in-you.html"&gt;Discover the diamond in you&lt;/a&gt;" by &lt;a href="http://arindamchaudhuri.blogspot.com/"&gt;Arindam Chaudhuri&lt;/a&gt;. It is a fantastic book. Arindam takes the diamond to be a metaphor for us and then explains what things would make us i.e. the diamond in us. He talks about the 4 Cs of a diamond [carrat, cut, color, clarity] and then maps various key attributes for these. I would strongly recommend reading the book.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-7420649148593299549?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/7420649148593299549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=7420649148593299549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/7420649148593299549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/7420649148593299549'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2010/01/lets-talk-about-diamonds.html' title='Lets talk about Diamonds'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-5017149122884831541</id><published>2009-11-25T06:24:00.000-08:00</published><updated>2010-01-14T09:41:38.450-08:00</updated><title type='text'>Onstartups - Dharmesh Shah</title><content type='html'>&lt;span style="font-family:arial;"&gt;Recently I came across this amazing blog from Dharmesh Shah [http://onstartups.com]. It is simply an awesome knowledge base on experiences in and around startups from Dharmesh. Dharmesh recently gave a session [&lt;a href="http://network.businessofsoftware.org/video/dharmesh-shah-on-insights-from"&gt;Insights from and around MIT&lt;/a&gt;] and I would strongly recommend it. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I found following two parameters from his talks/blogs pretty interesting:&lt;br /&gt;1. COCA - Cost Of Customer Acquisition - This is the cost/expense involved in acquiring a new customer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2. LTV - Life Time Value (of a customer) - This is the revenue made from an acquired customer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;As long as your LTV &gt; COCA means you have potential to make profit.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-5017149122884831541?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/5017149122884831541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=5017149122884831541' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/5017149122884831541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/5017149122884831541'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2009/11/onstartups-dharmesh-shah.html' title='Onstartups - Dharmesh Shah'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-6694030880477409735</id><published>2009-01-17T10:13:00.000-08:00</published><updated>2009-01-17T10:15:02.270-08:00</updated><title type='text'>Top 25 coding errors.</title><content type='html'>http://www.sans.org/top25errors//&lt;br /&gt;&lt;br /&gt;Happy learning!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-6694030880477409735?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/6694030880477409735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=6694030880477409735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6694030880477409735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6694030880477409735'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2009/01/top-25-coding-errors.html' title='Top 25 coding errors.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-3804510005786517685</id><published>2009-01-04T06:03:00.000-08:00</published><updated>2009-01-04T06:25:26.238-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OAuth'/><category scheme='http://www.blogger.com/atom/ns#' term='authorization'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>OAuth - API access delegation.</title><content type='html'>&lt;span style="font-family: arial;"&gt;Wish you a happy new year!&lt;br /&gt;&lt;br /&gt;I recently read about &lt;a href="http://oauth.net/"&gt;OAuth&lt;/a&gt; - a standard for API access delegation. The idea is really quite simple - multiple sites need to collaborate, but there is no open standard to allow for this. OAuth to the rescue. OAuth defines the protocol to be used by such web-sites which need to collaborate.&lt;br /&gt;&lt;br /&gt;Consider that I have an account on two web-sites. Say www.photos.com, which allows me to upload and manage my photo albums and www.prints.com, which allows to order prints of pictures. Now I need to print my photos from www.prints.com and I would have liked to access some of my pictures from www.photos.com (on my behalf) and make prints of those. OAuth can help these two websites collaborate.&lt;br /&gt;&lt;br /&gt;Here is how it works - I go to www.prints.com and put in my request to order prints. It asks me for the location of the pictures and I choose www.photos.com. Using OAuth it takes me to www.photos.com, where I am authenticated and www.photos.com checks about the images I would like to share with www.prints.com and for how long. Then after I have granted the authorization, www.prints.com can retrieve the pictures from www.photos.com on my behalf and generate the required prints.&lt;br /&gt;&lt;br /&gt;The good thing is that you use your credentials only on that particular website (in this www.photos.com) and never need to share your credentials with other websites. Also, the protocol provides for things in a secure manner.&lt;br /&gt;&lt;br /&gt;For further reading check out the following links:&lt;br /&gt;http://oauth.net/&lt;br /&gt;http://oauth.net/documentation/getting-started&lt;br /&gt;&lt;br /&gt;Details about leveraging OAuth to interface with google apps:&lt;br /&gt;http://code.google.com/apis/accounts/docs/OAuth.html&lt;br /&gt;&lt;br /&gt;Google has provided for a neat playground for one to understand OAuth:&lt;br /&gt;http://googlecodesamples.com/oauth_playground/&lt;br /&gt;&lt;br /&gt;Happy learning in 2009!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-3804510005786517685?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/3804510005786517685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=3804510005786517685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/3804510005786517685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/3804510005786517685'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2009/01/oauth-api-access-delegation.html' title='OAuth - API access delegation.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-6376337868914158755</id><published>2008-10-31T08:20:00.000-07:00</published><updated>2009-01-04T06:26:42.033-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dilbert'/><category scheme='http://www.blogger.com/atom/ns#' term='Algorithms'/><title type='text'>Algorithms and Dilbert.</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Good, now that I have your attention due to the title of my post, I can begin....&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Recently I came across this book "&lt;a href="http://www.algorist.com/"&gt;The Algorithm Design Manual&lt;/a&gt;". I have only been able to read couple of chapters from the book, but it seems like a good book. I would recommend it for folks wanting to refresh their algorithm academics. &lt;p&gt;&lt;br /&gt;On a side note, I recently purchased another Dilbert book - &lt;a href="http://www.amazon.com/Dilbert-Way-Weasel-Scott-Adams/dp/0060518057"&gt;Dilbert and the way of the Weasel&lt;/a&gt;. It makes for an interesting read. Again I have been able to only read a couple of chapters from this book, but Scott Adams is truly amazing. Also, Scott is right! ;-)&lt;br /&gt;&lt;br /&gt;Both these books are competing for my (precious) time. There is certainly a deja vu here (refer to my earlier post - ). Let the best book win a fair share of my (precious) time!&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;Stay tuned for more updates...&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/7217258-6376337868914158755?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/6376337868914158755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=6376337868914158755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6376337868914158755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/6376337868914158755'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2008/10/algorithms-and-dilbert.html' title='Algorithms and Dilbert.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-5948198161691313735</id><published>2008-10-11T09:18:00.000-07:00</published><updated>2008-10-11T11:03:20.880-07:00</updated><title type='text'>Meme of Software Development</title><content type='html'>&lt;span style="font-family:arial;"&gt;I have been in "blogging hibernation" for well over an year....wow!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;An &lt;/span&gt;&lt;a href="http://www.charlespetzold.com/blog/2008/07/Software-Development-Meme.html"&gt;&lt;span style="font-family:arial;"&gt;article from Charles Petzold&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; motivated me to write this blog entry about my own experience during the initial days as well. It is time for me to talk about my software development &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Meme"&gt;&lt;span style="font-family:arial;"&gt;meme&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. I remember it was around 1988 when I had a look at the PC Calculator (a small hand held device from Casio), that my father had purchased for us kids. It had a single line LCD display for around 20 characters and sported a complete QWERTY keyboard. It supported programming in BASIC and had some inbuilt games as well. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I remember the Hi-Lo game in which the computer used to ask for a range and select a number in the range. The end user had to then guess that number. The computer used to respond with "High" or "Low" depending on the user entered input. Thus allowing the user to eventually zoom in on its selection and finally display the number of attempts. Back then I had noticed that for a given range typically the device selected the same number. For example for the range 1-10, it tyipcally selected the number 2. I could not reason out why it selected the same number, but now I understand how difficult it is for a "deterministic" machine to be "random". If you find this interesting then please read about &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Pseudorandom_number_generator"&gt;&lt;span style="font-family:arial;"&gt;Pseudo Random Number Generators (PRNGs)&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;My academics in Computer Science started when I enrolled to Bachelors in Computer Science course at &lt;/span&gt;&lt;a href="http://www.fergusson.edu/"&gt;&lt;span style="font-family:arial;"&gt;Fergusson College&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Pune"&gt;&lt;span style="font-family:arial;"&gt;Pune&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. This was the first time in my life that I saw a PC machine at close range. Our lab had around 15-20 80286 machines. There was no network and these machines had to be booted by floppy disks. Each machine had two 5.25 inch floppy disk drives and we used to boot to MS-DOS in those days. This is back in 1994, when Windows 3.x was not released as yet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I remember that our first assignment in the first year in college was to write a letter to the Principal. We used the Turbo Pascal editor at that time to save the file. The assignment was essentially to get us comfortable with using the keyboard (there was no pointing device - mouse). We had simple assignments like adding two number, finding the maximum of two numbers. When our professor asked us to extend our program to find largest of 'n' numbers - I was stumped! I kept thinking about how many internal variables I would need to keep and there had got to be a better way to program it. It was then that our professor introduced arrays - a definite life saver for such scenarios.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The machines at the Lab had around 64K of main memory and at times the screen would display a message like "Transient portion of the Operating System has been overwritten, please insert bootable diskette in Drive A". Little did we understand at that point what this meant, apart from the fact that inserting the boot disk resolved the issue and we could continue programming. It was in our third year in course, that we had a course on Systems Programming. And it explained what the transient portion of the OS was and how it could be overwritten etc [refer to &lt;/span&gt;&lt;a href="https://users.cs.jmu.edu/abzugcx/public/Student-Produced-Term-Projects/Operating-Systems-2003-FALL/MS-DOS-by-Dominic-Swayne-Fall-2003.pdf"&gt;&lt;span style="font-family:arial;"&gt;page 3 of link for details on transient portion of OS&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;].&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Second year in the course, we were introduced to data structures and C Programming language - foundation for years to come. During the second year, our Lab was networked and it was an interesting experience using NetWare. Later on we had support for &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/RAM_disk"&gt;&lt;span style="font-family:arial;"&gt;RAM Disks&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. Third year introduced Compiler construction (I must admit that it was a rather difficult course for one to pass) and Theoretical Computer Science.  We also had a course on programming in Assembly Language. I must admit that the course on Assembly language was a foundation course. Later we had an assignment to simulate a machine and also write a assembler for the same. The assembler used to convert from programming language to machine code, which our virtual machine simulator would intrepret and execute. It introduced some interesting concepts like &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Self-modifying_code"&gt;&lt;span style="font-family:arial;"&gt;self modifying code&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; - yes, these programs on the virtual machine could interpret code pages as data pages and modify those. Later on when I learnt about Java, byte-code and JVM, I suddenly had a &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/D%C3%A9j%C3%A0_vu"&gt;&lt;span style="font-family:arial;"&gt;deja vu&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;I then moved on to the Masters course which had advanced topics like Formal Language Theory, Complexity and computability etc. However, foundation was laid strong during the earlier years itself. The learning experience still continues...&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-5948198161691313735?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/5948198161691313735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=5948198161691313735' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/5948198161691313735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/5948198161691313735'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2008/10/meme-of-software-development.html' title='Meme of Software Development'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-2257070261008885113</id><published>2007-07-29T07:49:00.000-07:00</published><updated>2007-07-29T08:01:45.110-07:00</updated><title type='text'>Wireless enabled home :-)</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;p&gt;I recently switched from a desktop machine at work to a laptop. They issued me a HP Compaq nc6320 laptop. Still trying to get accustomed to the laptop keyboard and the mouse as well. I think it will take me some time, so please excuse any typos in this article. This reminds me of the message "Excuse typos, sent from wireless device", that one typically gets for emails sent from a wireless device like blackberry.&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Given that I have a laptop at my disposal, the next thing I have done is setup a wireless router at my home. This gives me the freedom to work from any room in the house while being connected to the internet. I purchased a DLink DI 524 (DLink DI 624 is still not available in India, mentioned by the DLink distributor). Setting up the router was fairly straight forward. It had a neat and clean setup wizard and paper documentation explaining the steps. The router provides 4 LAN points in addition to wireless support. This allows me to connect my existing desktop at home to the wireless router.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;I think wireless technology is neat and it amazes me! Probably you want to try something similar at your home.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-2257070261008885113?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/2257070261008885113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=2257070261008885113' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/2257070261008885113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/2257070261008885113'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2007/07/wireless-enabled-home.html' title='Wireless enabled home :-)'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-1067363970956086139</id><published>2007-07-10T03:48:00.000-07:00</published><updated>2009-01-04T06:33:46.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Calling conventions for functions.</title><content type='html'>I have been wanting to write this blog about calling conventions for functions, ever since I have been hit by it. Around one year back, we faced a very peculiar problem wherein calling a certain function caused a GPF [general protection fault]. Painful analysis of the problem (spread over more than a couple of days) revealed that the issue was related to incorrect function calling convention.&lt;br /&gt;&lt;br /&gt;I will talk about calling conventions with primary focus on Windows platform and MS VC++ compiler. Function calling convention determines the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the order in which function arguments are pushed on the stack&lt;/li&gt;&lt;li&gt;who is responsible for clearing the call stack (i.e. removing arguments) at the end of the call.&lt;/li&gt;&lt;li&gt;any name-decoration that the compiler uses&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now let us take a look at the common calling conventions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cdecl [C calling convention]- Arguments are pushed on the stack from right to left. Thus, the first argument to the function is placed on top of the stack. This allows for passing variable number of arguments on the stack. Stack is cleaned up by the caller. This implies large executables, since each function call includes code to clean the stack. Underscore "_" character is prefixed to the function name.&lt;/li&gt;&lt;li&gt;stdcall [Standard calling convention] - Typically used to for Win32 API functions. Arguments are pushed on the stack from right to left. The callee is responsible for stack cleanup. An underscore "_" character is prefixed to the function name, followed by "@" which is followed by number of bytes (in decimal) in the argument list.&lt;/li&gt;&lt;li&gt;fastcall [ Fast calling convention] - Arguments are passed using registers and stack as well. The called functions is responsible to clean the stack. An "@" sign is prefixed to the function name and the "@" sign is followed by the number of bytes (in decimal) in the parameter list.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-1067363970956086139?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/1067363970956086139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=1067363970956086139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/1067363970956086139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/1067363970956086139'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2007/07/calling-conventions-for-functions.html' title='Calling conventions for functions.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-115902687809327037</id><published>2006-09-23T08:54:00.000-07:00</published><updated>2009-01-04T06:34:48.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><title type='text'>Interesting read from Joel.</title><content type='html'>&lt;a href="http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html"&gt;http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-115902687809327037?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/115902687809327037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=115902687809327037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/115902687809327037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/115902687809327037'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/09/interesting-read-from-joel.html' title='Interesting read from Joel.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-115902681641212932</id><published>2006-09-23T08:37:00.000-07:00</published><updated>2009-01-04T06:34:15.082-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><title type='text'>Interviewing and hiring</title><content type='html'>&lt;span style="font-family:arial;"&gt;That's one difficult thing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;There is a lot of literature on how to prepare for an interview. I am sure most of us would have assumed that we are talking about the person being interviewed. How about preparing and grooming folks to conduct good interviews? I haven't seen much effort being invested on that front frankly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This is one of the things we should focus on, preparing the next rung of interviews. In that direction, we have recently started an initiative in our project team. We call it the &lt;strong&gt;Interviewers Club&lt;/strong&gt; and there are two objectives:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;1. Prepare and groom the next rung of interviewers.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2. Ensure consistency in the quality of the interviews being conducted.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Achieving the first will contribute to the second objective.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In our first brainstorming session we discussed the various technical areas covered in an interview. The discussions indicated that most folks considered certain areas as key and typically covered those in most interviews they conducted. Hence, we compartmentalized these areas as: Key interview areas [KIA] and Specific interview areas [SIA].&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Following are KIAs identified:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Datastructures and their applications&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Algorithms and time complexity&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Threading concepts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Platform awareness&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;OOPS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Some of the SIAs identified were:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;C/C++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;JAVA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;J2EE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Design patterns&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Database/LDAP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The basic idea is that if you find the candidate good in KIAs, then proceed with discussions on the relevant SIAs. More posts will follow as more sessions are conducted.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-115902681641212932?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/115902681641212932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=115902681641212932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/115902681641212932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/115902681641212932'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/09/interviewing-and-hiring.html' title='Interviewing and hiring'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-114027067681969496</id><published>2006-02-18T05:50:00.000-08:00</published><updated>2009-01-04T06:33:19.739-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><title type='text'>Interesting talk by Charles Petzold - Does Visual Studio Rot the Mind?</title><content type='html'>&lt;a href="http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html"&gt;Does Visual Studio Rot the Mind?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ruminations on the Psychology and Aesthetics of Coding  - By Charles Petzold.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-114027067681969496?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/114027067681969496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=114027067681969496' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/114027067681969496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/114027067681969496'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/02/interesting-talk-by-charles-petzold.html' title='Interesting talk by Charles Petzold - Does Visual Studio Rot the Mind?'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-113972595622813507</id><published>2006-02-11T22:06:00.000-08:00</published><updated>2009-01-04T06:32:50.441-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Software engineering lessons learnt - Microsoft Whidbey release.</title><content type='html'>Interesting (recorded) session on &lt;a href="http://www.ftponline.com/channels/net/reports/vslivesf/2006/ryan/"&gt;How Microsoft Does Software Engineering Or, "How We Make the Sausage: Lessons From the Factory Floor." by Russ Ryan&lt;/a&gt;. Russ is serving as Product Unit Manager (PUM) at Developer Division Customer Product Life-cycle Experience Team.&lt;br /&gt;&lt;br /&gt;Russ talks about experiences and lesson learnt during the Whidbey release. He explains that milestone planning is critical and how milestone cycles should not be too small or long....they need to be just right. At MS milestones are around 8-9 weeks. MQ is the quality milestone where you "get clean and stay clean" by clearing your bug debt accumulated over previous milestones.  He mentions that "moving bugs forward is not a good idea - carrying the bug debt is expensive".&lt;br /&gt;&lt;br /&gt;Some interesting things covered are:&lt;br /&gt;- Dog food - Ask teams to consume software developed by other team prior to release itself. For example the tools development team will ask other team to use newer tools prior to release.&lt;br /&gt;- Build process - There is a separate build team (24 hours) and concept of a "Build Facilitation Developer" (BFD). A BFD is a team member who is on call to provide HOT fixes for any build breaks.&lt;br /&gt;- Large projects "coast in" as opposed to ending suddenly.&lt;br /&gt;- Concept of "end game" mode. War teams are comprised of team members with prior ship experience.&lt;br /&gt;- "Tell mode" and "Ask mode". In "Tell mode" checkins are communicated to the war teams. In "Ask mode" checkins have to be approved by the war teams.&lt;br /&gt;&lt;br /&gt;Finally the most important things I think Russ mentioned:&lt;br /&gt;"Once you checkin the code, you are hostage to the code"&lt;br /&gt;&lt;br /&gt;You can find the blog here: &lt;a class="headermaintitle" id="bp___v___bt___BlogTitle" href="http://blogs.msdn.com/ddcpxblg/default.aspx"&gt;DDCPX Team Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-113972595622813507?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/113972595622813507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=113972595622813507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113972595622813507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113972595622813507'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/02/software-engineering-lessons-learnt.html' title='Software engineering lessons learnt - Microsoft Whidbey release.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-113972434296241682</id><published>2006-02-11T21:47:00.000-08:00</published><updated>2006-02-11T22:05:42.976-08:00</updated><title type='text'>Windows Workflow Foundation Framework</title><content type='html'>Yesterday I was playing the recordings for VSLive held at San Francisco and there was a session by &lt;a href="http://blogs.msdn.com/pandrew/"&gt;Paul Andrew (Technical Product Manager)&lt;/a&gt; on Windows Workflow Foundation.&lt;br /&gt;&lt;br /&gt;Windows Workflow Foundation is an extensible programming model and runtime components for building solutions on the Windows platform. It supports human and system workflows. The interesting aspect is integration provided with Visual Studio (graphical means to define workflows) and the ability to embed the workflow runtime engine (provided as a library) in any windows application (be it console based, Win32 etc.).&lt;br /&gt;&lt;br /&gt;Window Workflow Foundation looks very promising and is something to watch out for. I think addressing the workflow problems at the OS level is new and opens amazing opportunities for various vendors. I am yet to get my hands dirty with Windows WF. Hope to find some time soon.&lt;br /&gt;&lt;br /&gt;Following are some useful links:&lt;br /&gt;&lt;a href="http://www.windowsworkflow.net/Default.aspx?tabindex=0&amp;tabid=1"&gt;Windows Workflow Foundation - The Official Microsoft Windows Workflow Site&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/WWFIntro.asp"&gt;Introducing Microsoft Windows Workflow Foundation: An Early Look - David Chappell&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/windowsvista/building/workflow/default.aspx"&gt;Windows Vista Developer Center - Windows Workflow Foundation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://home.members.winisp.net/blog/Introduction_To_WF_Feb_2006.ppt"&gt;Presentation by Paul Andrew (VSLive at SFO)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The activities provided by Windows Workflow Foundation core library have a striking resemblance with "activities" in the BPEL runtime language. Here is an interesting article by David Chappell on "&lt;a href="http://www.davidchappell.com/HTML_email/Opinari_No14_10_05.html"&gt;The case against BPEL - Why BPEL is less important than you think&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-113972434296241682?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/113972434296241682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=113972434296241682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113972434296241682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113972434296241682'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/02/windows-workflow-foundation-framework.html' title='Windows Workflow Foundation Framework'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-113847664751102595</id><published>2006-01-28T11:02:00.000-08:00</published><updated>2009-01-04T06:32:04.054-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Hiring the right technical people.</title><content type='html'>Now that's a challenge and that is what I am going to talk about in this post.&lt;br /&gt;&lt;br /&gt;Adam Scott in his book "The Dilbert Future" gives us a fair idea about what the future holds in store. He talks about "induh-viduals" i.e. stupid individuals. I think we are seeing more of these guys during our recruitment drive already, looks like the future is not really far away :)&lt;br /&gt;&lt;br /&gt;Companies invest a fair amount of money in the hiring process. This involves preparing test papers, visiting places for hiring, identifying folks in the organization to help with the hiring process etc. There is a lot of hard work and pain, that goes in this process. Yet, you endup with the wrong set of people being hired in the organization.&lt;br /&gt;&lt;br /&gt;Sometimes I wonder if the educational institutes are contributing towards the "Duhh" factor. The focus these days is on learning programming languages than more fundamental things like deep understanding of data structures or algorithms. There is a basic lack of analytical skills these days. As more educational institutes stress on teaching "cutting edge technology" [believe me there is no such thing], the result is more "induh-viduals".&lt;br /&gt;&lt;br /&gt;The other day I asked a candidate to design a set of classes for linked list data structure and I found the candidate struggling with my rather trivial problem. I think folks these days are apprehensive towards these subjects, like "data structures", "algorithm design". To them, these seem as antique as "cobol" or "assembly" language.&lt;br /&gt;&lt;br /&gt;I think part of the problem is due to less curiosity that candidates posses these days. They are not interested in knowing "what goes on under the hood". For example, most Java programmers would not know "when" and by "how much" does the vector grow. If I ask this, then the answer I would get these days is that "Java language designers would have done it in an efficient manner" :). Sometimes I wonder if they know the difference between "effective" and "efficient".&lt;br /&gt;&lt;br /&gt;If you manage to mis-hire such an induh-vidual on your team, chances are that eventually good people on your team will move on. The simple reason is that the new induh-vidual turns out to be a liability on good people on your team, due to poor independent execution skills.&lt;br /&gt;&lt;br /&gt;If in doubt, do not hire.&lt;br /&gt;&lt;br /&gt;Please read what Joel thinks on this as well:&lt;br /&gt;&lt;a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html"&gt;http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More later.....&lt;br /&gt;&lt;br /&gt;- Paresh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-113847664751102595?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/113847664751102595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=113847664751102595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113847664751102595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113847664751102595'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/01/hiring-right-technical-people.html' title='Hiring the right technical people.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-113847467003499230</id><published>2006-01-28T10:46:00.000-08:00</published><updated>2006-02-11T21:43:30.830-08:00</updated><title type='text'>Out of hibernation!</title><content type='html'>I seem to have been hibernating (with regards to blogging) for the past year 2005. You will see that my last post wishes you a happy new year 2005 and this post will wish you the same (and more) for this year 2006.&lt;br /&gt;&lt;br /&gt;Actually hibernating seems a bit cold blooded and maybe I should re-phrase it to being dormant. Now that certainly sounds better (considered to lazy :))&lt;br /&gt;&lt;br /&gt;Year 2006 is the year of the dog, according to the chinese calendar. I like dogs (as pets).&lt;br /&gt;&lt;br /&gt;I came across these awesome essays written by Paul Graham:&lt;br /&gt;&lt;a href="http://www.paulgraham.com/articles.html"&gt;http://www.paulgraham.com/articles.html&lt;/a&gt;&lt;br /&gt;I would recommend reading through these, they are quite interesting and fun.&lt;br /&gt;&lt;br /&gt;My manager recommended another book "Toyota Production System". It is an interesting book. But then couple of weeks back, I bought "The Dilbert Future" and it seems like the latter has been winning most of the battles for my reading time.&lt;br /&gt;&lt;br /&gt;Hopefully this year I won't be lazy....oops! I mean dormant and there will be more posts on my blog.&lt;br /&gt;&lt;br /&gt;- Paresh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-113847467003499230?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/113847467003499230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=113847467003499230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113847467003499230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/113847467003499230'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2006/01/out-of-hibernation.html' title='Out of hibernation!'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-110650195186616901</id><published>2005-01-23T09:35:00.000-08:00</published><updated>2005-01-23T09:39:11.866-08:00</updated><title type='text'>Software pricing.</title><content type='html'>Earlier I had never given much thought to software pricing. It is only after reading Joel's article on Software pricing, that the wheels in my head have started turning :)&lt;br /&gt;&lt;br /&gt;Joel's article on Software Pricing:&lt;br /&gt;http://joelonsoftware.com/articles/CamelsandRubberDuckies.html&lt;br /&gt;&lt;br /&gt;Happy reading and new year too!&lt;br /&gt;Paresh.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-110650195186616901?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/110650195186616901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=110650195186616901' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/110650195186616901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/110650195186616901'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2005/01/software-pricing.html' title='Software pricing.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-109707486255897004</id><published>2004-10-06T07:39:00.000-07:00</published><updated>2004-10-06T08:01:02.560-07:00</updated><title type='text'>Unintentional DDoS attack on UW-Madison Internet Time Server</title><content type='html'>I read about this incident in this issue of Dr. Dobb's and found it interesting enough to write about it in my blog :)&lt;br /&gt;&lt;br /&gt;UW-Madison has a public NTP server on campus. It is a primary (stratum 1) NTP server. Basically the primary NTP servers are directly connected to a reference clock (stratum 0) which synchronizes to the current time (UTC) using some technique like GPS transmission etc. Since the load on the primary NTP servers is high, typically clients should not connect to these servers. Instead they should connect to a secondary (stratum 2) server. You guessed it right, the stratum 2 server is connected to the stratum 1 server.&lt;br /&gt;&lt;br /&gt;Ok.....now moving on to the DDoS attack. The NetGear routers directly connected to the UW-Madison NTP server and they have high volume of product sales, since these devices are targeted for residential use.  This resulted in high volume traffic of SNTP requests to UW-Madison NTP server.&lt;br /&gt;&lt;br /&gt;The following article has all details and the analysis &amp; troubleshooting to figure out the problem:&lt;br /&gt;&lt;a href="http://www.cs.wisc.edu/~plonka/netgear-sntp/"&gt;http://www.cs.wisc.edu/~plonka/netgear-sntp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy reading!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-109707486255897004?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/109707486255897004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=109707486255897004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109707486255897004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109707486255897004'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/10/unintentional-ddos-attack-on-uw.html' title='Unintentional DDoS attack on UW-Madison Internet Time Server'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-109187058130492584</id><published>2004-08-07T02:20:00.000-07:00</published><updated>2009-01-04T06:31:15.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Leadership!</title><content type='html'>What does it take to be a leader?&lt;br /&gt;&lt;br /&gt;Well, I don't know, but I know a good leader when I see one. Lately I have been reading the book "Leadership and the 1-minute manager". It is quite an interesting book. Now I find it easier to correlate some of the actions my manager took and the interacting style to leadership skills.&lt;br /&gt;Also, now I associate the way I interact with various people with leadership skills. The author mentions that "different people should be treated differently". Now I am sure that we have all been taught to treat people "equally" in the workplace.&lt;br /&gt;&lt;br /&gt;But different people are different! For example, consider the new hire (fresh out of college) that started on your project last week. Can you treat the new hire same as a 2+ year experienced person on your project. Of course, not. I am sure all of us will agree that the new hire will need some hand-holding and grooming before s/he becomes a productive team member.&lt;br /&gt;&lt;br /&gt;The book talks about following leadership styles:&lt;br /&gt;1. Directing.&lt;br /&gt;2. Coaching.&lt;br /&gt;3. Support.&lt;br /&gt;4. Delegating.&lt;br /&gt;As you progress from style 1 to 4 with a person, the person has been transformed in to a more idependent, responsible, contributing team member.&lt;br /&gt;&lt;br /&gt;To measure the performance of a team member one needs to track 2 Cs i.e.:&lt;br /&gt;1. Commitment.&lt;br /&gt;2. Competency.&lt;br /&gt;You could have a person who has lost motivation and is no longer committed but is competent. Then the person needs "support". But the new hire we talked about above would need "coaching" to help build technical skills (be competent).&lt;br /&gt;&lt;br /&gt;In our previous meeting in the company about the appraisal process, the speaker talked about competency in two areas:&lt;br /&gt;1. Technical skills.&lt;br /&gt;2. Soft skills (like communication etc.)&lt;br /&gt;&lt;br /&gt;Need to read further ...mature to a better leader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-109187058130492584?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/109187058130492584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=109187058130492584' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109187058130492584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109187058130492584'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/08/leadership.html' title='Leadership!'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-109121279042802661</id><published>2004-07-30T11:21:00.000-07:00</published><updated>2004-07-30T11:39:50.426-07:00</updated><title type='text'>Enjoyed our release party!</title><content type='html'>Finally our next release was out the door today. Well, that calls for a celebration and thats exactly what our project group did today.&lt;br /&gt;&lt;br /&gt;The whole team went out for lunch followed by a movie. We watched "Spiderman 2". I think the movie turned out to be a bit more emotional than I had expected it to be. Also, it was less action packed as I had expected it to be. But overall it was fun.&lt;br /&gt;&lt;br /&gt;I would say that I enjoyed the first part of Spiderman more than Spiderman 2. Well, I hope our client has many more releases (and so do we too with the client) and more movies/parties to enjoy :)&lt;br /&gt;&lt;br /&gt;We have already started working on the next patch release. It would be a smaller one (means a smaller party). Not many things going in for the next release, ofcourse I did mention that it will be a patch release.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-109121279042802661?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/109121279042802661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=109121279042802661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109121279042802661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/109121279042802661'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/07/enjoyed-our-release-party.html' title='Enjoyed our release party!'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108948449734364810</id><published>2004-07-10T10:50:00.000-07:00</published><updated>2004-07-10T11:34:57.343-07:00</updated><title type='text'>Back to reading some good technical stuff</title><content type='html'>For the past few days I have not been able to add new blog entries. The other day there was a posting in the newsgroup of our company that blog writing is the "IN" thing :)&lt;br /&gt;&lt;br /&gt;The books I had ordered a month back have finally been delivered. Actually it’s been over a week that the consignment arrived. There are three new books to my collection:&lt;br /&gt;1. &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201834545/002-8980154-2341618?v=glance"&gt;The C++ Object model - Stanley Lippman.&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0135705819/002-8980154-2341618?v=glance"&gt;C++ gems.&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0521786185/002-8980154-2341618?v=glance"&gt;More C++ gems.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had read the first book almost 5 years back from my college library. It is an amazing box. Stanley gives an insight in to the C++ object model and how things get done/generated behind the scene in C++. This helps the programmer figure out the performance costs associated with using certain language constructs like virtual functions or virtual base classes. Also, the discussion about when the compiler generates a default constructor, for the class you have written, is pretty elaborate.&lt;br /&gt;&lt;br /&gt;Though I am yet to read the last two books (should happen in about another 6-8 months), I must say that they are simply amazing. I have finished about 3 chapters from the "C++ gems" book. There is striking resemblance to &lt;a href="http://www.cs.bell-labs.com/cm/cs/pearls/"&gt;"Programming pearls" - Jon Bentley&lt;/a&gt;, which is collection of papers/essays/case studies. Programming pearls is another book that I had read about 5+ years back, while preparing for the campus interviews. And you know what, it helped me crack, not the Oyster, but an important question poised in the interview (Maximum sum found in any contiguous sub vector in an input array).&lt;br /&gt;&lt;br /&gt;While we are on the subject, if you are working on a large C++ project, then recommended reading is &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201633620/002-8980154-2341618?v=glance"&gt;"Large Scale C++ Software Design" - Lakos.&lt;/a&gt;&lt;br /&gt;The problems faced while working on a large project are of a different nature and one needs to focus on physical project organization (files, directories, etc.) in addition to logical project organization (classes, inheritance hierarchies etc). These physical organization issues affect your compile/build times (matters a whole lot for a large C++ project, since you don't want the whole project to be re-compiled due to a header file change!) and also drive the logical organization of things. The book describes these problem in great details and techniques (&lt;a href="http://c2.com/cgi/wiki?PimplIdiom"&gt;PIMPL idiom&lt;/a&gt;, insulation etc.) to address the problems. &lt;br /&gt;&lt;br /&gt;Finally more recommended reading that can be immediately put to use, are the Effective C++ and More Effective C++ books by Scott Meyers.&lt;br /&gt;&lt;br /&gt;Happy reading for these bed time story books :)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108948449734364810?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108948449734364810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108948449734364810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108948449734364810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108948449734364810'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/07/back-to-reading-some-good-technical.html' title='Back to reading some good technical stuff'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108905308100135557</id><published>2004-07-05T11:14:00.000-07:00</published><updated>2009-01-04T06:29:57.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Captcha'/><title type='text'>Gotcha ...... Captcha ?</title><content type='html'>The other day I was at my uncles place and he wanted to create a new email account on hotmail. I thought that I will help him out :)&lt;br /&gt;Most of the procedure required to create a new email account was not new to me (just created my gmail account some time back). However, there was an interesting new element on the account creation form. There was this image displaying some text on it and below it there was a text box asking me to type in the text rendered above.&lt;br /&gt;Now, that got me thinking....if the program which generated the form knows the text in the image then why does it want me to type it out again. For a moment I thought it was something new to do with encrypting stuff :)&lt;br /&gt;I could not figure it out and simply typed in the text and completed the process of creating a new email account. Just last week I came across the following article on &lt;a href="http://www.devx.com/dotnet/Article/21308/1954?pf=true"&gt;'How to Spoof-proof your logins'&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eureka! Now I get it.....its captcha in action. The basic idea is to differentiate between humans and machines/programs. For example the text in the image on the &lt;a href="http://www.captcha.net/cgi-bin/gimpy"&gt;(gimpy) page&lt;/a&gt; is very easy for us humans to comprehend. However, it is much difficult for a program to interpret.&lt;br /&gt;&lt;br /&gt;Captcha is a typically employed technique to differentiate humans and programs apart. Captcha stands for "Completely Automated Public Turing Test to Tell Computers and Humans Apart". It has been widely used by Yahoo, Hotmail etc.  Note captcha is not simply about a distorted image; it is any test, which most humans can pass but that current computer programs cannot. Captcha can be in various forms: Visual, audio etc.&lt;br /&gt;&lt;br /&gt;Reference links (I am yet to read the last two, but they looked interesting enough to list here):&lt;br /&gt;- &lt;a href="http://www.devx.com/dotnet/Article/21308/1954?pf=true"&gt;How to Spoof-proof your logins&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.captcha.net/"&gt;Captcha project - Carnegie Mellon (School of computer science)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.cs.berkeley.edu/%7Emori/gimpy/gimpy.html"&gt; Breaking a Visual Captcha&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108905308100135557?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108905308100135557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108905308100135557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108905308100135557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108905308100135557'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/07/gotcha-captcha.html' title='Gotcha ...... Captcha ?'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108767680876997383</id><published>2004-06-19T12:43:00.000-07:00</published><updated>2009-01-04T06:30:25.652-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virus'/><title type='text'>My home PC had the flu ;-)</title><content type='html'>For the past two weeks our (my sister's actually) home PC has been down with the flu and the doctor (Norton Anti-virus) seems to be (unavailable) out of the town.&lt;br /&gt;&lt;br /&gt;My home PC is a HP Pavilion t530i (with Windows XP HE) and has Norton Anti-virus 2004 pre-installed on it. Suddenly my sister observed that when she would connect to the internet (yes, we still use dial-up using the modem connection here, in India), she would get an error for lsass.exe process. Her first encounter with an Extra-terrestrial! Just kidding, a PC virus.&lt;br /&gt;&lt;br /&gt;Later in the evening after coming back from work, she mentioned it to me. And we tried to figure it out. However, given that after connecting to the internet the PC would shutdown, we could not achieve much from the same machine. As a resort, we used another PC to get more details regarding this from the internet. We found out that a virus exploited some vulnerability in lsass.exe causing the machine to shutdown in a minute.&lt;br /&gt;&lt;br /&gt;Symantec security response indicated that our PC was infected with the 'Sasser' virus. It contained explicit clear steps to ensure that you would remain connected to the internet and those helped. After following those steps we were able to increase the shutdown time to nearly 2:30 hours. Well, we needed that much time (to update the virus definitions and download the fix Sasser tool) given that the speeds for dial-up are 3 kbps. No, I am not kidding now.&lt;br /&gt;&lt;br /&gt;We finally managed to get rid of Sasser by running the fix tool given by Norton folks and re-booted the machine. Just to find that next time we would connect to the internet we could not access security response pages from Symantec, from our home PC (we had earlier used another machine).  Also, we observed that we could not run regedit.exe (it used to start all right, but the window would just vanish in a couple of minutes). Again the PC was infected and the doctor was no-where to be seen. Yes, I was not able to start Norton anti-virus, same behavior, as regedit. (bad luck, no live update, no scan :( ).&lt;br /&gt;&lt;br /&gt;I was wondering if IE on my PC was now infected since it would not allow me to visit Symantec site. However, all other site (like www.google.com) would work. Actually none of the anti-virus sites were available.&lt;br /&gt;&lt;br /&gt;We were unable to figure out what had infected our system.&lt;br /&gt;&lt;br /&gt;Today, finally I found the following link in one of the desperate searches done on google.com&lt;br /&gt;http://www.experts-exchange.com/Security/Win_Security/Q_20935886.html&lt;br /&gt;[Cannot access any Anti-virus websites, live updates etc.]&lt;br /&gt;&lt;br /&gt;Boy, was I glad to find that there was some expert opinion available on the issue we were facing. I quickly checked up the 'hosts' file and found offending entries like&lt;br /&gt;&lt;br /&gt;127.0.0.1     update.symantec.com&lt;br /&gt;127.0.0.1     updates.symantec.com&lt;br /&gt;127.0.0.1     liveupdate.symantec.com&lt;br /&gt;127.0.0.1     customer.symantec.com&lt;br /&gt;&lt;br /&gt;Obviously this meant that IE was not infected, the address resolution, resolved the address for these sites to my machine :) My machine never runs the webserver for Symantec corporation and hence my browser was returning 'Page cannot be displayed'. Nice trick, I should have guessed it before. Ofcourse, virus writers want to achieve the most, with little coding. By simply modifying the 'hosts' file, they had managed to fool me in to thinking that IE was infected.&lt;br /&gt;&lt;br /&gt;Now I started looking for any files in my %SYSTEM% folder that were executables and had recent time stamps. I found the following files had recent time stamps:&lt;br /&gt;&lt;br /&gt;wnetlogin.exe&lt;br /&gt;cool.exe&lt;br /&gt;supu.exe&lt;br /&gt;etc...&lt;br /&gt;&lt;br /&gt;Another quick search on google revealed that these are potential viruses, namely W32.Donk.R. I had cleaned up the 'hosts' file and that allowed me to visit the Symantec security response pages by now. However, Norton anti-virus still would not start and hence no live-update. The security page for W32.Donk.R (link below) described the registry keys updated by the virus&lt;br /&gt;http://www.symantec.com.br/avcenter/venc/data/w32.donk.r.html&lt;br /&gt;&lt;br /&gt;After the registry entries were cleaned up and another reboot we finally got Norton Antivirus to run. Hooray!&lt;br /&gt;&lt;br /&gt;Just to find that our subscription to live-update has expired. Well, we renewed it and finally give our PC an anti-biotic, pain-killer for the much needed relief :)&lt;br /&gt;&lt;br /&gt;Hush, finally the doctor is back in town and patients are recovering already :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108767680876997383?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108767680876997383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108767680876997383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108767680876997383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108767680876997383'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/06/my-home-pc-had-flu.html' title='My home PC had the flu ;-)'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108671194404412977</id><published>2004-06-08T09:11:00.000-07:00</published><updated>2009-01-04T06:30:47.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Be observant and sensitive in the workplace...</title><content type='html'>It is really important for a manager to be observant and watchful. S/he should have an eye that captures relevant details from any situation.&lt;br /&gt;&lt;br /&gt;I do not mean that the manager should do policing. Well, you might say that in some cases it is necessary/must. Yes, let me put it delicately that you need to "micro-manage". That reminds of a line from the book 'Good to great' from 'Jim Collins', if you need to micro-manage a person, you have made a hiring mistake.&lt;br /&gt;&lt;br /&gt;Agreed, we all need to micro-manage at times. Steering back to my original point, it is important for the manager to be observant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108671194404412977?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108671194404412977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108671194404412977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108671194404412977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108671194404412977'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/06/be-observant-and-sensitive-in.html' title='Be observant and sensitive in the workplace...'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108663531865452703</id><published>2004-06-07T11:50:00.000-07:00</published><updated>2009-01-04T06:37:29.127-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Another hard day at work squashing bugs.</title><content type='html'>It was truly an interesting day at work today. I had not been able to reproduce one of the software bugs assigned to me and today, just two days prior to beta, the bug springs back to life!&lt;br /&gt;&lt;br /&gt;At this stage the bug seems to be some creature, like shown in the movie Men In Black. And its back in action.&lt;br /&gt;&lt;br /&gt;The problem used to surface only when we ran our component on ports less than 1024 on Solaris. I am sure it would have helped if I would have known the scenario earlier (any moron knows that ports less than 1k are reserved on Unix flavours). Then I found another race condition in our component. The race condition issue was another bug in incubation. I am sure it was waiting for the right time to strike. However, it was luckily discovered earlier (rather than at the customers end to make things worse).&lt;br /&gt;&lt;br /&gt;These events resulted in the day stretching in to the night at office. But, I think I have things in control and should be able to squash the bugs out of the repository tomorrow :)&lt;br /&gt;&lt;br /&gt;Lessons learned:&lt;br /&gt;- From the port related bug, just because you could not reproduce it, does not mean it does not exist!&lt;br /&gt;- From the race condition issue, you can never be too carefull while writing multi-threaded programs :)&lt;br /&gt;&lt;br /&gt;I really appreciate the multi-threading debugging support in VC7. One can freeze/thaw/switch active threads on the click of a button. How I wish good old gdb (5.3) on Solaris would support the same...&lt;br /&gt;&lt;br /&gt;I know its no piece of cake writing a debugger. For a wonderful explanation of what is involved read, 'Debugging Application' by John Robbins.&lt;br /&gt;&lt;br /&gt;Good night and sweet dreams my best friend the Debugger :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108663531865452703?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108663531865452703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108663531865452703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108663531865452703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108663531865452703'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/06/another-hard-day-at-work-squashing.html' title='Another hard day at work squashing bugs.'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217258.post-108645212092016958</id><published>2004-06-05T09:13:00.000-07:00</published><updated>2004-06-05T09:15:20.920-07:00</updated><title type='text'>3 easy steps done .... blog ready for use</title><content type='html'>That's exactly what it took (following the 3 easy steps) for creating my blog. Well, I would like to write more but I have got scrambled eggs waiting for me on the dining table with family :)&lt;br /&gt;&lt;br /&gt;More later ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7217258-108645212092016958?l=pareshborkar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pareshborkar.blogspot.com/feeds/108645212092016958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7217258&amp;postID=108645212092016958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108645212092016958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217258/posts/default/108645212092016958'/><link rel='alternate' type='text/html' href='http://pareshborkar.blogspot.com/2004/06/3-easy-steps-done-blog-ready-for-use.html' title='3 easy steps done .... blog ready for use'/><author><name>Paresh Borkar</name><uri>http://www.blogger.com/profile/17189788196958037214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
