<?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-5540606804416143572</id><updated>2012-02-06T18:47:48.450+05:30</updated><category term='C#'/><category term='Life'/><category term='Quotes'/><category term='KB'/><category term='Delphi'/><category term='Review'/><category term='Software'/><category term='Trivia'/><category term='Tips'/><category term='Book'/><category term='Humour'/><category term='OSX'/><category term='News'/><category term='Web'/><category term='.NET'/><category term='Snippets'/><title type='text'>Hemant's Blog</title><subtitle type='html'>Lots of programming and a little about life...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hemant-jangid.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3597623419113822120</id><published>2012-02-06T18:47:00.001+05:30</published><updated>2012-02-06T18:47:48.468+05:30</updated><title type='text'>Markdown</title><content type='html'>&lt;h1&gt;Heading 1&lt;/h1&gt;&lt;p&gt;Below is some text for heading 1.&lt;/p&gt;&lt;h2&gt;Heading 2&lt;/h2&gt;&lt;p&gt;And Here is some text heading 2.&lt;/p&gt;&lt;h3&gt;Heading 3&lt;/h3&gt;&lt;p&gt;Some text for heading 3.&lt;/p&gt;&lt;h4&gt;Heading 4&lt;/h4&gt;&lt;p&gt;Some text for heading 4.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;This is some quote from John Gruber.How about another.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;But a blog cannot be complete without some some code:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;for (int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;    Console.WriteLine (&amp;quot;Hello World&amp;quot;);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is &lt;strong&gt;bold&lt;/strong&gt; and this is &lt;em&gt;italics&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;See you later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-3597623419113822120?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3597623419113822120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3597623419113822120'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2012/02/markdown.html' title='Markdown'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5883844656756156841</id><published>2010-09-14T21:03:00.001+05:30</published><updated>2010-09-14T21:03:02.025+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Sublines 1.0.0.2 is available now</title><content type='html'>&lt;p style="clear: both"&gt;There was a problem in earlier version of Sublines which caused problems in other types of subtitles. This problem has been fixed and latest code is uploaded. You can download the latest client from &lt;a href="http://code.google.com/p/sublines/" title="Easy subitles on Mac"&gt;sublines site&lt;/a&gt;.&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5883844656756156841?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5883844656756156841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5883844656756156841'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/09/sublines-1002-is-available-now.html' title='Sublines 1.0.0.2 is available now'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-2442003117707147960</id><published>2010-09-10T22:08:00.001+05:30</published><updated>2010-09-10T22:08:35.579+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Sublines - Easy subtitles on Mac</title><content type='html'>&lt;p style="clear: both"&gt;I have started an open source project called "Sublines" which allows the users to download subtitles on Mac OS X. Project is hosted on Google code site. Feel free to download and use if you need it.&lt;/p&gt;&lt;p style="clear: both"&gt;Project Site: &lt;a href="http://code.google.com/p/sublines/"&gt;http://code.google.com/p/sublines/&lt;/a&gt; &lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-2442003117707147960?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2442003117707147960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2442003117707147960'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/09/sublines-easy-subtitles-on-mac.html' title='Sublines - Easy subtitles on Mac'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-4283611520502767306</id><published>2010-05-01T23:27:00.000+05:30</published><updated>2010-05-01T23:27:02.444+05:30</updated><title type='text'>Pakistani girls about India</title><content type='html'>&lt;object style="background-image:url(http://i1.ytimg.com/vi/81cfly1npRA/hqdefault.jpg)" width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/81cfly1npRA&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/81cfly1npRA&amp;amp;hl=en_US&amp;amp;fs=1" width="425" height="344" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-4283611520502767306?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4283611520502767306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4283611520502767306'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/05/pakistani-girls-about-india.html' title='Pakistani girls about India'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5058422331638289357</id><published>2010-04-28T06:44:00.001+05:30</published><updated>2010-04-28T06:46:22.686+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Leaving no stone unturned</title><content type='html'>&lt;p style="clear: both"&gt;As a programmer myself, I used to think that I do my job very carefully. I used to think that I am the person who really thinks about possibly everything before I actually write code and ship it.&lt;/p&gt;&lt;p style="clear: both"&gt;I was wrong! I currently have an opportunity to work with a person who taught me what it means to put your heart and soul to software you are writing. He taught me what really unit testing means. He taught me the real meaning of "&lt;strong&gt;leaving no stone unturned&lt;/strong&gt;".&lt;/p&gt;&lt;p style="clear: both"&gt;And whats more surprising is the delight you get when all the hard work is done. You hear the validation engineer saying "I am already confident with this software, we have almost no issues". When you ask the market facing people about their demo setup, they say "all is going well". Writing a quality code takes efforts first time but makes us free from support trouble for a long time after that.&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5058422331638289357?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5058422331638289357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5058422331638289357'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/04/leaving-no-stone-unturned.html' title='Leaving no stone unturned'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-7115676342012256388</id><published>2010-04-17T08:58:00.001+05:30</published><updated>2010-04-17T08:58:37.506+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Visual Studio 2010 - Released</title><content type='html'>&lt;p style="clear: both"&gt;Visual Studio 2010 is officially released now. Full information &lt;a href="http://www.hanselman.com/blog/VisualStudio2010Released.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-7115676342012256388?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7115676342012256388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7115676342012256388'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/04/untitled.html' title='Visual Studio 2010 - Released'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3064285717238741162</id><published>2010-03-13T11:20:00.003+05:30</published><updated>2010-03-13T11:24:44.334+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Trivia'/><title type='text'>Unexpectedly big Nokia device software</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today I was trying to update the firmware of my Nokia E71. So I launched Nokia Ovi Suite and started the update operations. I was simply shocked to see the device software size:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RoSI5lOMR0E/S5soKJS3p8I/AAAAAAAAAZE/PjcZ4hyjuhI/s1600-h/Updating+Nokia+Software.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_RoSI5lOMR0E/S5soKJS3p8I/AAAAAAAAAZE/PjcZ4hyjuhI/s320/Updating+Nokia+Software.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5447992328993613762" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RoSI5lOMR0E/S5soKJS3p8I/AAAAAAAAAZE/PjcZ4hyjuhI/s1600-h/Updating+Nokia+Software.PNG"&gt;&lt;/a&gt;Total phone memory is 128 MB. Does the device software takes 102 MB? Can you image you buying a laptop with 120 GB hard disk only to find out that your operating system takes 100 GB and you are left with only 15 GB to play with.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/5540606804416143572-3064285717238741162?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3064285717238741162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3064285717238741162'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/03/unexpectedly-big-nokia-device-software.html' title='Unexpectedly big Nokia device software'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RoSI5lOMR0E/S5soKJS3p8I/AAAAAAAAAZE/PjcZ4hyjuhI/s72-c/Updating+Nokia+Software.PNG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-1781544871950428478</id><published>2010-02-13T14:17:00.002+05:30</published><updated>2010-02-13T14:40:42.257+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Trivia'/><title type='text'>Windows Experience Index</title><content type='html'>Today I ran the windows assessment test on both my earlier HP laptop and new MacBook. And here are the results:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;HP Laptop &lt;/b&gt;(&lt;a href="http://dl.dropbox.com/u/2731573/Blog/Laptop-Hardware%20Details.pdf"&gt;hardware details&lt;/a&gt;)&lt;b&gt;:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://dl.dropbox.com/u/2731573/Blog/Score-Laptop.PNG" style="cursor:pointer; cursor:hand;width: 559px; height: 207px;" border="0" alt="" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;MacBook &lt;/b&gt;(&lt;a href="http://dl.dropbox.com/u/2731573/Blog/MacBook-Hardware%20Details.pdf"&gt;hardware details&lt;/a&gt;)&lt;b&gt;:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://dl.dropbox.com/u/2731573/Blog/Score-MacBook.PNG" style="cursor:pointer; cursor:hand;width: 554px; height: 206px;" border="0" alt="" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having done this, it is definitely unfair to compare both since:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;I bought HP laptop more than 2 years back whereas my Mac is brand new.&lt;/li&gt;&lt;li&gt;My HP laptop was priced $650 and my Mac is of $750.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Another interesting thing to note is that windows reports that my Mac is&lt;i&gt; 64 bit capable&lt;/i&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/5540606804416143572-1781544871950428478?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1781544871950428478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1781544871950428478'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/02/windows-experience-index.html' title='Windows Experience Index'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-4764175688177963971</id><published>2010-02-13T08:15:00.002+05:30</published><updated>2010-02-13T08:38:59.539+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Tuning the backlog for TCP server</title><content type='html'>Yesterday we spent a lot of time of analysing the effects of backlog parameter on a server performance. It seems to affect the new connection acceptance rate. But what should be the right value for a high performance server?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It turns out that a right balance must be maintained when deciding the right value of backlog parameter. Selecting a too low value will result in new connections being refused in case of a connection burst and selecting a too high value will make your server vulnerable to syn attacks (taking food in the plate more than you can eat is always going to create problems).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the backlog parameter must be decided based on following 2 criteria:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;What maximum connection acceptance rate you are designing your server for?&lt;/li&gt;&lt;li&gt;What is maximum time you can take between serving new connections?&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;For example, if you are designing your server for maximum 100 connections per second and your server is so busy that it might not server new connection request for 500 msecs then your backlog should be 50!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But there are more interesting things. Various operating systems exhibit different behaviour with different backlog values.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Windows XP and Windows 7 both have a hard limit of 200. So any value of more than 200 will not have any effect and real backlog will be of 200 only. Though it does make sense considering these are desktop operating systems and aren't supposed be hosting real world high performance server applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Windows Server 2003 (Standard edition) is very polite (may I say &lt;i&gt;too&lt;/i&gt; polite) because it assumes an infinite value for backlog if given any value beyond 64.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To summarize:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;For Windows XP and Windows 7:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Given Value: 10: &gt; Effective Value: 10&lt;/div&gt;&lt;div&gt;Given Value: 100: &gt; Effective Value: 100&lt;/div&gt;&lt;div&gt;Given Value: 200: &gt; Effective Value: 200&lt;/div&gt;&lt;div&gt;Given Value: 500: &gt; Effective Value: 500&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;For Windows Server 2003 (standard edition):&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Given Value: 10: &gt; Effective Value: 10&lt;/div&gt;&lt;div&gt;Given Value: 50: &gt; Effective Value: 50&lt;/div&gt;&lt;div&gt;Given Value: 63: &gt; Effective Value: 63&lt;/div&gt;&lt;div&gt;Given Value: 64: &gt; Effective Value: Infinite&lt;/div&gt;&lt;div&gt;Given Value: 100: &gt; Effective Value: Infinite&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Last surprise what that when experimented with Windows Server 2008 (standard edition), it showed the&lt;i&gt; same behaviour as Windows XP and Windows 7&lt;/i&gt;! Well that was strange. I think the server must have some configurable parameter to control this behavior. But I couldn't experiment with it since it was too late in the office yesterday and my wife was yelling at me...&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/5540606804416143572-4764175688177963971?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4764175688177963971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4764175688177963971'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/02/tuning-backlog-for-tcp-server.html' title='Tuning the backlog for TCP server'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-7852776711483198410</id><published>2010-02-08T16:01:00.003+05:30</published><updated>2011-08-29T10:38:55.383+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Picking IP address and port number when using UDP</title><content type='html'>&lt;p&gt;I have just finished experimenting with UDP using C# and .NET 3.5 and thought it would be nice to throw the findings on the blog to stop myself loosing track of them.&lt;/p&gt;&lt;h3 id="listeningonportn"&gt;Listening on port n&lt;/h3&gt;&lt;p&gt;First of all, when you are listening for packets, it doesn&amp;#8217;t matter whether that packet was only intended for you or it was a broadcast. Suppose you are member of an email group in your organisation. You receive emails sent to that group but you also receive emails that are sent only to you. The way you receive and read your emails is unaffected by the fact that whether it was sent to the whole group or just to you.&lt;/p&gt;&lt;p&gt;Similarly, when listening for UDP packets, you just get one when you should. So when we are listening for packets, life is simple and we just listen on given port:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;socket.LocalEndPoint = new IPEndPoint (IPAddress.Any, n);&lt;br /&gt;&lt;br /&gt;//Remote end point can be defined in following 2 ways:&lt;br /&gt;&lt;br /&gt;socket.RemoteEndPoint = new IPEndPoint (IPAddress.Any, 0);&lt;br /&gt;//or &lt;br /&gt;socket.RemoteEndPoint = new IPEndPoint (IPAddress.Broadcast, 0);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="broadcastingonportn"&gt;Broadcasting on port n&lt;/h3&gt;&lt;p&gt;If you wish to broadcast some packet to a given port, specifying local end point is not mandatory. If none is provided, a free port will be automatically picked. But we do need to specify remote end point:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;//socket.LocalEndPoint = Not mandatory;&lt;br /&gt;socket.RemoteEndPoint = new IPEndPoint (IPAddress.Broadcast, n);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="sendingapacketongivenipaddressandport"&gt;Sending a packet on given IP address and port&lt;/h3&gt;&lt;p&gt;If you wish to send an UDP packet to one computer specifically, you just need to define that IP address when setting remote end point. Local end point still remains optional:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;//socket.LocalEndPoint = Not mandatory;&lt;br /&gt;socket.RemoteEndPoint = new IPEndPoint (IPAddress.Parse(&amp;quot;w.x.y.z&amp;quot;), n);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-7852776711483198410?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7852776711483198410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7852776711483198410'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/02/picking-ip-address-and-port-number-when.html' title='Picking IP address and port number when using UDP'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5132002624759533650</id><published>2010-01-27T21:32:00.003+05:30</published><updated>2010-01-27T22:16:28.434+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Review of "2 States: The Story of My Marriage"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RoSI5lOMR0E/S2BtfgFbG8I/AAAAAAAAAYs/5QNSsV1LZPA/s1600-h/2_States_-_The_Story_Of_My_Marriage.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 318px;" src="http://4.bp.blogspot.com/_RoSI5lOMR0E/S2BtfgFbG8I/AAAAAAAAAYs/5QNSsV1LZPA/s400/2_States_-_The_Story_Of_My_Marriage.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5431461538564873154" /&gt;&lt;/a&gt;&lt;div&gt;Chetan Bhagat brings the same witty sense of humour that we all have learnt to love. Still you can't say you didn't find anything new in book.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"2 States: The Story of My Marriage" is about a punjabi boy "Krish" who falls in love with a madrasi, o'oh Tamilian Iyer Brahmin girl named "Ananya" during the course of his MBA from IIM, Ahemedabad. But don't think the book is about how they fall in love. That's just first 25 pages after which you find them in love (and sex off-course). The book is about what happens **after** that. The book is about how the boy starts his difficult journey to his marriage. Which means both his family and her family has to love each other. Which becomes a herculean task considering both comes from very different states, culture and expectations!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Krish's mother is very talky and she gives all the reasons to Ananya's family to hate the boy but he doesn't give up. He wins the heart of girl's family one by one. Once that mission is accomplished, its now girls turn to impress boy's family. Just when you think everything is going well, some ugly incidents take them back to square one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The thing that stands out in the novel is the flow of events that happen in Chennai which brings the boy in the good book of Ananya's family. Nothing seems unnatural or unbelievable when slowly but surely boy does his magic. The non-stop of supply of quick-humours makes it a splendid reading. But the incident which makes the Krish's mother to accept the girl looks a slight bookish and even though heart wants to believe it, brain refuses to do so. Apart from that one incident, other things fit well and even though the story of their marriage comes back on track almost by a miracle, it easily becomes understandable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't know if it is only me but at one point you think that boy is doing so much to make that marriage work and he loves the girl a lot but somehow you don't feel the same way about the girl. She doesn't seem to do enough to commit herself to marriage. At some places, you even find her arrogant and too harsh on the boy. You feel bad for the boy!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have always been confused about how much of the novel is actually true. Various novels seem to have a link with Chetan's life and with each other. Off-course all of the stuff is not true because it takes more than just a single life to make so many interesting novels. But I can sure conclude following points which I believe are true incidents:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Chetan did study at IIT Delhi and IIM Ahmedabad! (Okay that was very naive to start with :)&lt;/li&gt;&lt;li&gt;Chetan did love a girl during his study at IIT-D which didn't conclude well.&lt;/li&gt;&lt;li&gt;Chetan's grades during the IIT are actually NOT good.&lt;/li&gt;&lt;li&gt;Chetan did love a girl during his study at IIM-A and eventually married her.&lt;/li&gt;&lt;li&gt;Chetan did find it hard to convice his in-laws. May not be as dramatic but still difficult enough.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Things I liked about the book:&lt;/div&gt;&lt;div&gt;+ Sense of humour (I just love the witty lines)&lt;/div&gt;&lt;div&gt;+ Perfect characterization of punjabis (Not sure about Tamilians since I don't know them well enough)&lt;/div&gt;&lt;div&gt;+ Flow of event&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rating:&lt;/div&gt;&lt;div&gt; 4 out of 5&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5132002624759533650?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5132002624759533650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5132002624759533650'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/01/review-of-2-states-story-of-my-marriage.html' title='Review of &quot;2 States: The Story of My Marriage&quot;'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RoSI5lOMR0E/S2BtfgFbG8I/AAAAAAAAAYs/5QNSsV1LZPA/s72-c/2_States_-_The_Story_Of_My_Marriage.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-807381984732362105</id><published>2010-01-13T15:24:00.001+05:30</published><updated>2010-01-13T15:24:43.771+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Quote from "Mostly Harmless" by Douglas Adams</title><content type='html'>&lt;p&gt;A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools.&lt;/p&gt;  &lt;p&gt;- From &lt;a href="http://en.wikipedia.org/wiki/Mostly_Harmless"&gt;Mostly Harmless&lt;/a&gt; by Douglas Adams&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-807381984732362105?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/807381984732362105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/807381984732362105'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/01/quote-from-harmless-by-douglas-adams.html' title='Quote from &amp;quot;Mostly Harmless&amp;quot; by Douglas Adams'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3524877403027009829</id><published>2009-12-02T11:01:00.002+05:30</published><updated>2009-12-02T11:05:51.430+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Using extension methods for enums</title><content type='html'>Despite the fact that they can create confusion to the reader, I love &lt;a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx"&gt;extension methods&lt;/a&gt; and have used extensively in my projects. Recently an &lt;a href="http://stackoverflow.com/questions/1818131/convert-an-enum-to-another-type-of-enum/1818296#1818296"&gt;answer&lt;/a&gt; on Stackoverflow taught me that extension methods can even be used on enums.&lt;br /&gt;For example, if I have 2 enum types:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;public enum English&lt;br /&gt;{&lt;br /&gt;    None,&lt;br /&gt;    One,&lt;br /&gt;    Two,&lt;br /&gt;    Three&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public enum Roman&lt;br /&gt;{&lt;br /&gt;    None,&lt;br /&gt;    I,&lt;br /&gt;    II,&lt;br /&gt;    III&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;I can write extension methods to convert one to another and vice-versa:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;public static class EnglishExtensions&lt;br /&gt;{&lt;br /&gt;    public static Roman ToRoman (this English value) {&lt;br /&gt;        switch (value) {&lt;br /&gt;            case English.One: return Roman.I;&lt;br /&gt;            case English.Two: return Roman.II;&lt;br /&gt;            case English.Three: return Roman.III;&lt;br /&gt;            default: return Roman.None;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static class RomanExtensions&lt;br /&gt;{&lt;br /&gt;    public static English ToEnglish (this Roman value) {&lt;br /&gt;        switch (value) {&lt;br /&gt;            case Roman.I: return English.One;&lt;br /&gt;            case Roman.II: return English.Two;&lt;br /&gt;            case Roman.III: return English.Three;&lt;br /&gt;            default: return English.None;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;And use it like:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;//english to roman&lt;br /&gt;English e = English.One;&lt;br /&gt;Roman r = e.ToRoman ();&lt;br /&gt;&lt;br /&gt;//roman to english&lt;br /&gt;Roman r = Roman.I;&lt;br /&gt;English e = r.ToEnglish ();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-3524877403027009829?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3524877403027009829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3524877403027009829'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/12/using-extension-methods-for-enums.html' title='Using extension methods for enums'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-7858840644996094231</id><published>2009-11-27T08:18:00.013+05:30</published><updated>2009-11-27T08:56:08.418+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Writing WCF Wrapper and Catching Common Exceptions</title><content type='html'>Suppose you have a WCF proxy class which calls some remote methods. Instead of calling remote methods, lets take the example of a similar class:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="code"&gt;public class WcfProxy //calling methods of this class may raise exceptions{&lt;br /&gt;    //Method with one string parameter&lt;br /&gt;    public void function1 (string s) {&lt;br /&gt;        if (String.IsNullOrEmpty (s))&lt;br /&gt;            throw new CommunicationException ("Its my nature to throw exceptions...");&lt;br /&gt;        Console.WriteLine ("I am in function1");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //Method with one int parameter&lt;br /&gt;    public void function2 (int i) {&lt;br /&gt;        if (i == 0)&lt;br /&gt;            throw new TimeoutException ("I like to throw exceptions and spoil your day...");&lt;br /&gt;        Console.WriteLine ("I am in function2");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //method with one ref parameter&lt;br /&gt;    public void function3 (ref string s) {&lt;br /&gt;        if (String.IsNullOrEmpty (s))&lt;br /&gt;            throw new CommunicationException ("Its my nature to throw exceptions...");&lt;br /&gt;        s = "function3 executed successfully.";&lt;br /&gt;        Console.WriteLine ("I am in function3");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //method with return parameter&lt;br /&gt;    public string function4 () {&lt;br /&gt;        Console.WriteLine ("I am in function4");&lt;br /&gt;        return "function4 executed successfully.";&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now I want to write a wrapper class which will call these function on my behalf and catch the common exceptions related to communication problem. Instead of calling these functions and catching exceptions after every call, we can use generic functions which will call the functions and catch exceptions if raised.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;//declare the delegates that are NOT provided by .NET framework&lt;br /&gt;public delegate void ActionReference&lt;t&gt; (ref T t1);&lt;br /&gt;public delegate T ActionReturn&lt;t&gt; ();&lt;br /&gt; &lt;br /&gt;public class ProxyWrapper&lt;br /&gt;{&lt;br /&gt;    private readonly WcfProxy proxy = new WcfProxy ();&lt;br /&gt; &lt;br /&gt;    public bool Success { get; set; }&lt;br /&gt;    public string Message { get; set; }&lt;br /&gt; &lt;br /&gt;    private void ExecuteAndCatch&lt;t&gt; (Action&lt;t&gt; action, T t) {&lt;br /&gt;        try {&lt;br /&gt;            action (t);&lt;br /&gt;            Success = true;&lt;br /&gt;        }&lt;br /&gt;        catch (TimeoutException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Timeout exception raised.";&lt;br /&gt;        }&lt;br /&gt;        catch (CommunicationException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Communication exception raised.";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    private void ExecuteAndCatch&lt;t&gt; (ActionReference&lt;t&gt; action, ref T t) {&lt;br /&gt;        try {&lt;br /&gt;            action (ref t);&lt;br /&gt;            Success = true;&lt;br /&gt;        }&lt;br /&gt;        catch (TimeoutException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Timeout exception raised.";&lt;br /&gt;        }&lt;br /&gt;        catch (CommunicationException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Communication exception raised.";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    private T ExecuteAndCatch&lt;t&gt; (ActionReturn&lt;t&gt; action) {&lt;br /&gt;        T result = default(T);&lt;br /&gt;        try {&lt;br /&gt;            result = action ();&lt;br /&gt;            Success = true;&lt;br /&gt;        }&lt;br /&gt;        catch (TimeoutException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Timeout exception raised.";&lt;br /&gt;        }&lt;br /&gt;        catch (CommunicationException) {&lt;br /&gt;            Success = false;&lt;br /&gt;            Message = "Communication exception raised.";&lt;br /&gt;        }&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public void function1 (string s) {&lt;br /&gt;        ExecuteAndCatch (proxy.function1, s);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public void function2 (int i) {&lt;br /&gt;        ExecuteAndCatch (proxy.function2, i);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public void function3 (ref string s) {&lt;br /&gt;        ExecuteAndCatch (proxy.function3, ref s);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public string function4 () {&lt;br /&gt;        return ExecuteAndCatch&lt;string&gt; (proxy.function4);&lt;br /&gt;    }&lt;br /&gt;    //more functions can be called here...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now we can test the wrapper class in main method:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;public static void Main () {&lt;br /&gt;    ProxyWrapper w = new ProxyWrapper ();&lt;br /&gt; &lt;br /&gt;    w.function1 ("");&lt;br /&gt;    Console.WriteLine (w.Success ? "Success!" : "Failed: " + w.Message);&lt;br /&gt; &lt;br /&gt;    w.function2 (0);&lt;br /&gt;    Console.WriteLine (w.Success ? "Success!" : "Failed: " + w.Message);&lt;br /&gt; &lt;br /&gt;    var s1 = "Initial";&lt;br /&gt;    w.function3 (ref s1);&lt;br /&gt;    Console.WriteLine (w.Success ? "Success! " + s1 : "Failed: " + w.Message);&lt;br /&gt; &lt;br /&gt;    var s2 = w.function4 ();&lt;br /&gt;    Console.WriteLine (w.Success ? "Success! " + s2 : "Failed: " + w.Message);&lt;br /&gt; &lt;br /&gt;    Console.ReadLine ();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is the output:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;Failed: Communication exception raised.&lt;br /&gt;Failed: Timeout exception raised.&lt;br /&gt;I am in function3&lt;br /&gt;Success! function3 executed successfully.&lt;br /&gt;I am in function4&lt;br /&gt;Success! function4 executed successfully.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This solution is developed from the &lt;a href="http://stackoverflow.com/questions/1297964/how-to-write-a-function-which-will-call-another-function-and-catch-some-exception/1298013#1298013"&gt;answer &lt;/a&gt;given to my &lt;a href="http://stackoverflow.com/questions/1297964/how-to-write-a-function-which-will-call-another-function-and-catch-some-exception"&gt;question&lt;/a&gt; on &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;. You can download the &lt;a href="http://dl.dropbox.com/u/2731573/Blog/Program.zip"&gt;complete source file&lt;/a&gt; here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-7858840644996094231?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7858840644996094231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7858840644996094231'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/11/writing-wcf-wrapper-and-catching-common.html' title='Writing WCF Wrapper and Catching Common Exceptions'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3656479681558639969</id><published>2009-11-26T18:34:00.002+05:30</published><updated>2009-11-26T18:35:05.892+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Cleaning my project folder</title><content type='html'>We all suffer from various files being created by IDE that are not really necessary to commit in version control system. I have found a simple batch command incredibly useful to clean my project folder.&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;del "%CD%\*.EXT" /s&lt;/pre&gt;&lt;br /&gt;Simple replace the EXT with the extension of file you want to clean and run the command. Since I switch from Embarcadero Delphi Studio to Visual Studio and (vice-versa) every now and I have created a batch file which look like this":&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;del "%CD%\*.dcu" /s&lt;br /&gt;del "%CD%\*.identcache" /s&lt;br /&gt;del "%CD%\*.cfg" /s&lt;br /&gt;del "%CD%\*.local" /s&lt;br /&gt;del "%CD%\*.drc" /s&lt;br /&gt;del "%CD%\*.~*~" /s&lt;br /&gt;del "%CD%\*.stat" /s&lt;br /&gt;del "%CD%\*.dcuil" /s&lt;br /&gt;del "%CD%\*.pdf" /s&lt;br /&gt;del "%CD%\*.rsp" /s&lt;br /&gt;del "%CD%\*.suo" /s&lt;br /&gt;del "%CD%\*.user" /s&lt;br /&gt;del "%CD%\*.pdb" /s&lt;/pre&gt;&lt;br /&gt;Whenever I need to remove the dirt from a folder and sub-folders, I just place the batch file in that folder and run it. Simple but effective…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-3656479681558639969?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3656479681558639969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3656479681558639969'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/11/cleaning-my-project-folder.html' title='Cleaning my project folder'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-25077218224530117</id><published>2009-11-26T14:58:00.005+05:30</published><updated>2009-11-26T16:14:04.622+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Cryptography in .NET framework</title><content type='html'>Cryptography is a vast subject. Its true that "devil is in details" but devil is at its best when it comes to cryptography. When you start learning encryption, hashing and signing; for the most of initial phase you just learn one thing "you know very little about it". Don't even consider me when &lt;a href="http://www.codinghorror.com/blog/archives/001267.html"&gt;some exceptional programmer make serious mistakes&lt;/a&gt;.&lt;br /&gt;I managed to avoid cryptography for most part of my 4 year programming career but it eventually hit me in last project. And it hit me hard. I had to go through quiet a few concepts and use them in a real project. The fact that I was starting from basics, made it worse.&lt;br /&gt;When I started learning about some of the basic concepts, I started playing with those concepts using .NET framework library. I was pleased to see that it has good support of cryptography.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I was wrong! .NET support of cryptography is &lt;u&gt;too&lt;/u&gt; good.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Why? For following reasons:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;ol&gt;&lt;li&gt;.NET framework has multiple implementation of almost all algorithms. &lt;/li&gt;&lt;li&gt;Availability of an algorithm doesn't just depend on framework you are using, it also depends on the operating system.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Sometimes more is less&lt;/h4&gt;I use Visual Studio 2008 on Windows Vista machine, so I faced little problem in using any algorithm but when I proudly demoed my application to my friend who happened to be using Windows XP, my application simply crashed. I started exploring the MSDN documentation about the support of algorithms and it was not long before I started to loose track of things. After digging things a bit, I found out that there are three types of implementations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Managed: These are the classes that has "Managed" suffix. (e.g. &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha512managed.aspx"&gt;SHA512Managed&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged.aspx"&gt;AesManaged&lt;/a&gt;) As the name suggests, these classes are fully managed implementation of cryptographic algorithms) &lt;/li&gt;&lt;li&gt;CryptoServiceProvider: These are the classes which end with "CryptoServiceProvider". (e.g. &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha512cryptoserviceprovider.aspx"&gt;SHA512CryptoServiceProvider&lt;/a&gt;,&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.descryptoserviceprovider.aspx"&gt;DESCryptoServiceProvider&lt;/a&gt;) These classes are just managed wrapper of &lt;a href="http://en.wikipedia.org/wiki/Cryptographic_Service_Provider"&gt;cryptographic service provider&lt;/a&gt; libraries (also known as CryptoAPI). &lt;/li&gt;&lt;li&gt;CNG: These classes ends with "Cng" which means "&lt;a href="http://msdn.microsoft.com/en-us/library/aa376210(VS.85).aspx"&gt;Cryptography Next Generation&lt;/a&gt;". (e.g. &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha512cng.aspx"&gt;SHA512Cng&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellmancng.aspx"&gt;ECDiffieHellmanCng&lt;/a&gt;) It is the strategic replacement of CryptoAPI.&lt;/li&gt;&lt;/ol&gt;What makes it more confusing is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Not all algorithms has implementation of all three types. For example &lt;a href="http://en.wikipedia.org/wiki/Sha1"&gt;SHA1&lt;/a&gt; has all three implementations: SHA1Managed, SHA1CryptoServiceProvider, SHA1Cng whereas &lt;a href="http://en.wikipedia.org/wiki/Md5"&gt;MD5&lt;/a&gt; has only 2: MD5Cng, MD5CryptoServiceProvider &lt;/li&gt;&lt;li&gt;For a given type, implementation of some algorithm are available in one version and other are available in different one. For example MD5CryptoServiceProvider is available in all framework versions but SHA512CryptoServiceProvider is available in only Framework 3.5.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Final Juice&lt;/h4&gt;Here is the complete table containing details of each algorithm:&lt;br /&gt;&lt;table border="1" cellpadding="5" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;th&gt;Class&lt;br /&gt;&lt;/th&gt;        &lt;th&gt;Size (bits)&lt;br /&gt;&lt;/th&gt;        &lt;th colspan="5"&gt;Windows&lt;br /&gt;&lt;/th&gt;        &lt;th colspan="3"&gt;Server&lt;br /&gt;&lt;/th&gt;        &lt;th colspan="5"&gt;Framework&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;98&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;2000&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;XP&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Vista&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;7&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;2000&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;2003&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;2008&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;1.0&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;1.1&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;2.0&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;3.0&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;3.5&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;th colspan="15"&gt;Hashing&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;MD5CryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;128 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;MD5Cng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;128 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA1CryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;160 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA1Managed&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;160 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA1Cng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;160 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA256CryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;256 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA256Managed&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;256 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA256Cng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;256 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA384CryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;384 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA384Managed&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;384 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA384Cng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;384 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA512CryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;512 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA512Managed&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;512 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;SHA512Cng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;512 bits&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;th colspan="15"&gt;Symmetric Encryption&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;DESCryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Block: 64          &lt;br /&gt;Key: 64&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;TripleDESCryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Block: 64          &lt;br /&gt;Key: 128, 192&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;AesCryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Block: 128          &lt;br /&gt;Key: 128-256(+64)&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;AesManaged&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Block: 128          &lt;br /&gt;Key: 128-256(+64)&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;th colspan="15"&gt;Asymmetric Encryption&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;ECDiffieHellmanCng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Key: 256,384,521&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;RSACryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Key:384-16384(+8)&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;th colspan="15"&gt;Digital Signature&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;DSACryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Key:512-1024(+64)&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;RSAPKCS1SignatureFormatter&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Key:384-16384(+8)&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;ECDsaCng&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;Key:256,384,521&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;th colspan="15"&gt;Random Number Generator&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;RNGCryptoServiceProvider&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;        &lt;td&gt;y&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-25077218224530117?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/25077218224530117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/25077218224530117'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/11/cryptography-in-net-framework.html' title='Cryptography in .NET framework'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-215362933969005492</id><published>2009-11-26T14:24:00.006+05:30</published><updated>2009-11-26T14:40:36.655+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Where is this folder?</title><content type='html'>I sometimes get terribly confused with various system folders. Since most of the folders get a new location in Vista, I thought it will be nice idea to compare a table as to which folder is located where and which folder should be used in which situation. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;About folder usage: &lt;/strong&gt;&lt;br /&gt;You should adjust your app to store temporary files in the current user's temp folder and the data should be stored in one of the following folders depending on whether or not you want the user to have direct access to the data files (ie. in an easily accessible folder), whether you want the same user to have access to the data when logged into another computer and whether or not you want other users logged into the same computer to have access to the files. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C:\Users\username\Documents&lt;/strong&gt;     &lt;br /&gt;data private to one user while logged onto one specific computer     &lt;br /&gt;the database files can be easily found by the user by browsing their Documents folder &lt;br /&gt;&lt;strong&gt;C:\Users\username\AppData\Local&lt;/strong&gt;     &lt;br /&gt;data private to one user while logged onto one specific computer     &lt;br /&gt;the database files are in a hidden folder but may be accessible by a skilled user &lt;br /&gt;&lt;strong&gt;C:\Users\username\AppData\Roaming&lt;/strong&gt;     &lt;br /&gt;data private to one user while logged onto any networked computer     &lt;br /&gt;the database files are in a hidden folder but may be accessible by a skilled user &lt;br /&gt;&lt;strong&gt;C:\Users\Public\Documents&lt;/strong&gt;     &lt;br /&gt;data public to any user logged onto a specific computer     &lt;br /&gt;the database files can be easily found by the user by browsing the public Documents folder &lt;br /&gt;&lt;strong&gt;C:\ProgramData&lt;/strong&gt;     &lt;br /&gt;data public to any user logged onto a specific computer     &lt;br /&gt;the database files are in a hidden folder but may be accessible by a skilled user&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Detailed Information:&lt;/b&gt;&lt;br /&gt;Following table contains a folder ID or CSIDL and its location in both Vista and XP:&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td width="188"&gt;&lt;strong&gt;Folder Name/Id&lt;/strong&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;strong&gt;Windows Vista/7 Location&lt;/strong&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;strong&gt;Windows XP Location&lt;/strong&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_DESKTOP&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_INTERNET&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_PROGRAMS&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\Programs\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_PROGRAM_FILES_COMMON&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Program Files\Common Files\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Program Files\Common Files\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_CONTROLS&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_PRINTERS&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_PERSONAL&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Documents\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\My Documents\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_FAVORITES&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Favorites\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Favorites\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_STARTUP&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\Programs\Startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_SENDTO&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\SendTo\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\SendTo\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_BITBUCKET&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_STARTMENU&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_DESKTOPDIRECTORY&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_DRIVES&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_NETWORK&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_NETHOOD&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Network Shortcuts\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\NetHood\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_FONTS&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\Fonts\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\Fonts\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_TEMPLATES&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Templates\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Templates\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COMMON_STARTMENU&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COMMON_PROGRAMS&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\Programs\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COMMON_STARTUP&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COMMON_DESKTOPDIRECTORY&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Desktop\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Desktop\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_APPDATA&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Application Data\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_PRINTHOOD&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\PrintHood\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_ALTSTARTUP&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COMMON_ALTSTARTUP&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_INTERNET_CACHE&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Windows\Temporary Internet Files\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\Temporary Internet Files\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_COOKIES&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Cookies\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Cookies\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;CSIDL_HISTORY&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Windows\History\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\History\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;0&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;1&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;2&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\Programs\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;3&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;4&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;5&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Documents\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\My Documents\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;6&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Favorites\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Favorites\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;7&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\Programs\Startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;8&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Recent\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Recent\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;9&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\SendTo\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\SendTo\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;10&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;11&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Start Menu\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;12&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;13&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Music\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\My Documents\My Music\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;14&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Videos\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;15&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;16&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Desktop\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;17&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;18&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;19&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Network Shortcuts\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\NetHood\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;20&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\Fonts\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\Fonts\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;21&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Templates\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Templates\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;22&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;23&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\Programs\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;24&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;25&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Desktop\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Desktop\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;26&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Application Data\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;27&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\PrintHood\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;28&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\Application Data\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;29&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\startup\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;30&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;31&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Favorites\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Favorites\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;32&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Windows\Temporary Internet Files\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\Temporary Internet Files\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;33&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Cookies\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Cookies\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;34&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Windows\History\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\History\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;35&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Application Data\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;36&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;37&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\System32\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\system32\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;38&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Program Files\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Program Files\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;39&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\Pictures\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\My Documents\My Pictures\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;40&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;41&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\System32\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\system32\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;42&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Program Files\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;43&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Program Files\Common Files\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Program Files\Common Files\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;44&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Program Files\Common Files\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;45&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Templates\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Templates\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;46&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Documents\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;47&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Start Menu\Programs\Administrative Tools\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;48&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;49&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;50&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;51&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;52&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;53&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Music\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Documents\My Music\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;54&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Pictures\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Documents\My Pictures\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;55&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\Public\Videos\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\All Users\Documents\My Videos\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;56&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Windows\Resources\&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\WINDOWS\Resources\&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;57&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;58&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;59&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;C:\Users\&lt;user&gt;\AppData\Local\Microsoft\Windows\Burn\Burn\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;C:\Documents and Settings\&lt;user&gt;\Local Settings\Application Data\Microsoft\CD Burning\&lt;/user&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td width="188"&gt;60&lt;br /&gt;&lt;/td&gt;        &lt;td width="278"&gt;&lt;br /&gt;&lt;/td&gt;        &lt;td width="311"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-215362933969005492?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/215362933969005492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/215362933969005492'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/11/where-is-this-folder.html' title='Where is this folder?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-7452803945059427195</id><published>2009-11-26T14:12:00.001+05:30</published><updated>2009-11-26T14:12:26.575+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><title type='text'>Getting creation, modified &amp; accessed date time of a file in Delphi</title><content type='html'>&lt;p&gt;Here is the code snippet to get hold of various date-time values associated with a file in windows:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;procedure GetDateTime (fileFullName: &lt;span class="kwrd"&gt;string&lt;/span&gt;);&lt;br /&gt;var&lt;br /&gt;  systemTime: TSystemTime;&lt;br /&gt;  lastModified, lastAccessed, firstCreated, lastWrite: TDateTime;&lt;br /&gt;  sr : TSearchRec;&lt;br /&gt;begin&lt;br /&gt;  lastModified := 0;&lt;br /&gt;  lastAccessed := 0;&lt;br /&gt;  firstCreated := 0;&lt;br /&gt;  lastWrite := 0;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;if&lt;/span&gt; sysUtils.FindFirst(fileFullName, faAnyFile, sr) = 0 then&lt;br /&gt;  begin&lt;br /&gt;    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;      lastModified := FileDateToDateTime(sr.Time);&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftCreationTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;        firstCreated := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftLastAccessTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;        lastAccessed := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftLastWriteTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;br /&gt;        lastWrite := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      memo.Lines.Add (&lt;span class="str"&gt;'Last modified: '&lt;/span&gt; + DateTimeToStr (lastModified));&lt;br /&gt;      memo.Lines.Add (&lt;span class="str"&gt;'Created: '&lt;/span&gt; + DateTimeToStr (firstCreated));&lt;br /&gt;      memo.Lines.Add (&lt;span class="str"&gt;'Last access: '&lt;/span&gt; + DateTimeToStr (lastAccessed));&lt;br /&gt;      memo.Lines.Add (&lt;span class="str"&gt;'Last write: '&lt;/span&gt; + DateTimeToStr (lastWrite));&lt;br /&gt;    &lt;span class="kwrd"&gt;finally&lt;/span&gt;&lt;br /&gt;      FindClose(sr) ;&lt;br /&gt;    end&lt;br /&gt;  end;&lt;br /&gt;end;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-7452803945059427195?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7452803945059427195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7452803945059427195'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/11/getting-creation-modified-accessed-date.html' title='Getting creation, modified &amp;amp; accessed date time of a file in Delphi'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-7548937199276268567</id><published>2009-11-25T08:48:00.000+05:30</published><updated>2009-11-25T08:48:25.726+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Who will be boss???</title><content type='html'>When God made man, all the parts of the body argued over who would be boss. The brain explained that since he controlled all the parts of the body, he should be boss. The legs argued that since they took the man wherever he wanted to go, they should be boss.&lt;br /&gt;&lt;br /&gt;The stomach countered with explanation that since he digested all the food, he should be boss. The eyes said that without them, man would be helpless, so they should be boss. Then the asshole applied for the job. The other parts of the body laughed so hard that the asshole become mad and closed up. After a few days the brain went foggy, the legs got wobby, the stomach got ill, thr eyes got crossed and unable to see. They all cenceded and made the asshole boss. This proves that you dont' have to be a brain to be boss.... just an asshole will do!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-7548937199276268567?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7548937199276268567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/7548937199276268567'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/04/who-will-be-boss.html' title='Who will be boss???'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6193260401158322977</id><published>2009-08-20T15:17:00.001+05:30</published><updated>2010-01-13T15:20:38.483+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Dual boot Vista and OSX on HP Laptop</title><content type='html'>&lt;p&gt;Disclaimer: Installing Mac OSX on non-apple hardware is illegal. This post is just for educational purpose.&lt;/p&gt;  &lt;h4&gt;My laptop configuration:&lt;/h4&gt;  &lt;p&gt;HP Laptop dv6000t  &lt;br /&gt;Processor: Intel Core Duo CPU T2450 @ 2.00 GHz   &lt;br /&gt;Memory (RAM): 1GB   &lt;br /&gt;Audio: Conexant High Definition Audio   &lt;br /&gt;Display: Mobile Intel(R) 945 Express Chipset Family   &lt;br /&gt;Network: Intel(R) PRO/100 VE Network Connection (Ethernet), Intel(R) PRO/Wireless 3945ABG Network Connection&lt;/p&gt;  &lt;h4&gt;What you need&lt;/h4&gt;  &lt;h5&gt;iATKOS Mac OSx86 DVD&lt;/h5&gt;  &lt;p&gt;You will need to get hold of iATKOS DVD. You can find it at &lt;em&gt;usual places&lt;/em&gt;. I used iATKOS v 7.0. Download the disk image and burn the DVD.&lt;/p&gt;  &lt;h5&gt;Windows Vista DVD&lt;/h5&gt;  &lt;p&gt;You will need it to repair Windows Vista startup. If you have Windows Vista DVD (system recovery disk) which came with your laptop, &lt;strong&gt;it won't work&lt;/strong&gt;. You need a bootable Windows Vista Disk.&lt;/p&gt;  &lt;h5&gt;chain0 file&lt;/h5&gt;  &lt;p&gt;You will need this file to make your PC dual bootable. &lt;a href="http://dl.dropbox.com/u/2731573/Blog/chain0"&gt;Click here&lt;/a&gt; to download this file.&lt;/p&gt;  &lt;h4&gt;Procedure&lt;/h4&gt;  &lt;h5&gt;Prepare a Partition&lt;/h5&gt;  &lt;p&gt;You will need to configure a partition on which you will install Mac OSX. If you already have a partition, you are good to go. If you don't have one, you need to create it. You can do so by resizing an existing partition. Various posts mentions using Windows Disk Management for doing it. You can also try this. Right click my computer, click "Properties", Click "Device Manager"on left pane, Click "Disk Management". This will show all the existing partitions. Right click the target partition and click "Shrink Volume". You can select the amount of space to free and click OK.&lt;/p&gt;  &lt;p&gt;However I found Disk Management of Windows pretty crappy because it almost always didn't allow me to free space even when there is plenty of space left on hard disk. This is because Windows only lets you shrink the largest continuous chunk of free space.&lt;/p&gt;  &lt;p&gt;This is where I found &lt;a href="http://www.easeus.com/"&gt;EASEUS&lt;/a&gt; extremely useful. The free home edition works just fine. It has a similar interface as Windows Disk Management, so you can create the partition using it very easily.&lt;/p&gt;  &lt;p&gt;Format the partition as NTFS and apply the volume label "OSX".&lt;/p&gt;  &lt;h5&gt;Installing OSX&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Insert the DVD in the tray and boot your computer from it. You may need to change your boot order if your computer doesn't boot correctly. &lt;/li&gt;    &lt;li&gt;Press F8 as the count down begins and type -v at the prompt and hit enter. This will make the startup verbose so that you can see the startup messages. &lt;/li&gt;    &lt;li&gt;After a while you should be looking at the leopard installer. Follow the on screen instructions. &lt;/li&gt;    &lt;li&gt;Once the loading bar vanishes, select Utilities &amp;gt; Disk Utility. &lt;/li&gt;    &lt;li&gt;Select the volume "OSX" which you created previously and format it as &lt;strong&gt;MAC OSX Journaled Extended&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Now get back to the Leopard install screen. Choose the partition which you just formatted. &lt;/li&gt;    &lt;li&gt;Customise the installation option and:      &lt;ul&gt;       &lt;li&gt;Unselect          &lt;ul&gt;           &lt;li&gt;Chamleon boot loader (We will be using Windows boot manager so we don't need it)&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Select          &lt;ul&gt;           &lt;li&gt;Intel EFI String &lt;/li&gt;            &lt;li&gt;GMA 950 for Laptop &lt;/li&gt;            &lt;li&gt;Apple PS2 Drivers&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Continue the installation. It will take a while so you can have a coffee.&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Making it dual bootable&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Once the installation is done, reboot with the DVD in the drive. Press F8 at Darwin boot loader and type -s and press enter. &lt;/li&gt;    &lt;li&gt;Execute the following commands:&lt;/li&gt; &lt;/ul&gt;  &lt;pre&gt;&lt;code&gt;fdisk -e /dev/rdisk0&lt;br /&gt;flag 1&lt;br /&gt;quit&lt;br /&gt;reboot&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Now before the PC starts, remove the DVD. You will not be able to boot into Vista and instead get an error "winload.exe is corrupt"&lt;/li&gt;  &lt;li&gt;Now insert the Vista bootable disk in the drive and reboot from DVD. Click on "Repair computer" once you are inside the DVD and it will automatically detect if a problem exists and suggest "Repair and Restart". Press the same and remove the DVD once the PC is about to restart. You should now be able to log in to vista without any problem.&lt;/li&gt;  &lt;li&gt;Boot into Vista. Copy the chain0 file to C:&lt;/li&gt;  &lt;li&gt;Open the command prompt with elevated admin privileges from the start menu.&lt;/li&gt;  &lt;li&gt;Type the following into the prompt&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code&gt;bcdedit /copy {current} /d "Mac OS X"&lt;br /&gt;bcdedit /enum active&lt;br /&gt;bcdedit /set {GUID} PATH \chain0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the first command type {current} as it is, literally..nothing else. Just {current} with the curly brackets. In the third command replace the GUID with the alphanumeric GUID you see against "Identifier" for Mac OSX. You will see this as soon as you enter the second command.&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Now again give command "bcdedit /enum active" and confirm that you have Mac OSX correctly configured. It must look something like:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;  &lt;p&gt;Windows Boot Loader&lt;/p&gt;  &lt;hr /&gt;&lt;p&gt;identifier {e94e2940-68da-11de-b9a9-8cf8abd2fc0f}&lt;br /&gt;device partition=C:&lt;br /&gt;path \chain0&lt;br /&gt;description Mac OS X&lt;br /&gt;   recoverysequence {572bcd55-ffa7-11d9-aae2-0007e994107d}&lt;br /&gt;   recoveryenabled Yes&lt;br /&gt;   osdevice partition=C:&lt;br /&gt;systemroot \Windows&lt;br /&gt;resumeobject {17cbdd92-6953-11de-909d-806e6f6e6963}&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;  &lt;li&gt;Close the command prompt and restart your laptop.&lt;/li&gt;  &lt;li&gt;You should be looking at the screen with two options to boot into Mac OSX or Vista. Select the operating system you want to boot into. Hurray!!!&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;What works&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;HP quick launch keys (the blue touch buttons above keyboard)&lt;/li&gt;  &lt;li&gt;Web cam&lt;/li&gt;  &lt;li&gt;Remote&lt;/li&gt;  &lt;li&gt;Accessing files from windows NTFS drives&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;What still does not work&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;After following above steps, I couldn't get the network working (Wireless and ethernet both). I am still in the process of fixing it.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Credits&lt;/h4&gt;&lt;p&gt;Most of the steps and guide come from this &lt;a href="http://dailyapps.net/2008/03/hack-attack-dual-boot-leopard-and-windows-vista/"&gt;excellent article&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-6193260401158322977?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6193260401158322977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6193260401158322977'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/08/dual-boot-vista-and-osx-on-hp-laptop.html' title='Dual boot Vista and OSX on HP Laptop'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-1103579699304657335</id><published>2009-08-13T14:45:00.000+05:30</published><updated>2010-01-13T14:50:13.325+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>How to generate a unique machine signature</title><content type='html'>&lt;p&gt;During a recent project, I had to solve a problem which is NOT really new:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Creating a signature using computer hardware that uniquely identifies it&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I didn't want to depend of software characteristics because I didn't want the signature to change even if user decides to change or install new operating system.&lt;/p&gt;  &lt;p&gt;I used uncle Google extensively and came across many resources such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/872385/how-to-get-unique-machine-signature"&gt;How to get unique machine signature? &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/99880/generating-a-unique-machine-id"&gt;Generating a unique machine id &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I learnt following things in the process:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I quickly found that most hardware information can be accessed using WMI only. Since WMI is not available below Windows 2000, I tried to find other alternatives but couldn't find any. I could get the volume serial number using Windows API but that was not enough. So WMI seems to be only viable choice. &lt;/li&gt;    &lt;li&gt;Using MAC address for machine signature generation is generally a bad idea because many manufactures allow you to change it and you can have multiple MAC addresses if someone is using more than one connection (think of someone using laptop connected to a LAN and also a WIFI network). &lt;/li&gt;    &lt;li&gt;Using Processor ID used to work in earlier days but somehow Intel has decided to stop giving unique processor ID to each processor these days. &lt;/li&gt;    &lt;li&gt;It is not right to rely on only one hardware parameter considering the dynamic advancement in computer hardware industry (Multi core processor are so common these days). &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To easily analyse the computer hardware parameters, I created an application which uses WMI to get hardware information. I called it Machine Explorer! You can &lt;a href="http://dl.dropbox.com/u/2731573/Blog/MachineExplorer.zip"&gt;download&lt;/a&gt; the application freely and have fun with it.&lt;/p&gt;  &lt;p&gt;Here is how it looks like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_RoSI5lOMR0E/S02PJoGsXII/AAAAAAAAAYg/sl_HmB1xru4/s1600-h/MachineExplorer%5B12%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MachineExplorer" border="0" alt="MachineExplorer" src="http://lh5.ggpht.com/_RoSI5lOMR0E/S02PMZV-fzI/AAAAAAAAAYk/JKkBTD9yD34/MachineExplorer_thumb%5B10%5D.png?imgmax=800" width="375" height="268" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I found out that some serial numbers such as BIOS serial number and Motherboard serial number are unique and they are not likely to change also. There might be other candidates which you explore (do let me know if you find any).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-1103579699304657335?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1103579699304657335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1103579699304657335'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/01/how-to-generate-unique-machine.html' title='How to generate a unique machine signature'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_RoSI5lOMR0E/S02PMZV-fzI/AAAAAAAAAYk/JKkBTD9yD34/s72-c/MachineExplorer_thumb%5B10%5D.png?imgmax=800' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5271118672136757633</id><published>2009-07-09T14:58:00.000+05:30</published><updated>2010-01-13T14:58:42.186+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Trivia'/><title type='text'>How NOT to confirm when user is leaving without saving his work</title><content type='html'>&lt;p&gt;Confirmation dialogs are useful in some situations but mostly they suck. They suck because programmers overuse them a lot and instead of showing real dialog, they try to frame the question such that it fits in fixed &amp;quot;Yes/No/Cancel&amp;quot; or &amp;quot;OK/Cancel&amp;quot; format. It makes it impossible for a user to determine what is being asked without actually reading whole text.&lt;/p&gt;  &lt;p&gt;But this one is worse. It is so effective that it still catches me sometimes. I am talking about &lt;a href="http://www.eziriz.com/dotnet_reactor.htm"&gt;.NET Reactor&lt;/a&gt;. So you open this nice little application and do something with it. And then you decide to close it. It shows following screen:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ReactorConfirmation" border="0" alt="ReactorConfirmation" src="http://lh5.ggpht.com/_RoSI5lOMR0E/S02SR1PM52I/AAAAAAAAAYo/xlS8iTunBHw/ReactorConfirmation%5B5%5D.png?imgmax=800" width="404" height="180" /&gt; &lt;/p&gt;  &lt;p&gt;Now this type of dialog is common. A lot of application confirms when you are leaving the application without saving your work. But what you normally get is:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;There are some unsaved changes in document. Would you like to save them?&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And you normally say &amp;quot;NO&amp;quot; to that dialog and get away. But .NET reactor is evil in this regard. It asks this question in a way that you have to say &amp;quot;YES&amp;quot; to get away.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To be fair to .NET reactor, its not necessarily wrong. But doing something different than most other software irritates the users. It sure irritates me!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5271118672136757633?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5271118672136757633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5271118672136757633'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/07/how-not-to-confirm-when-user-is-leaving.html' title='How NOT to confirm when user is leaving without saving his work'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_RoSI5lOMR0E/S02SR1PM52I/AAAAAAAAAYo/xlS8iTunBHw/s72-c/ReactorConfirmation%5B5%5D.png?imgmax=800' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6810752742716077210</id><published>2009-06-18T14:54:00.000+05:30</published><updated>2010-01-13T14:54:34.491+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><title type='text'>Getting creation, modified &amp; accessed date time of a file</title><content type='html'>&lt;p&gt;Here is the code snippet to get hold of various date-time values associated with a file in windows:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;procedure GetDateTime (fileFullName: &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;);&lt;br /&gt;var&lt;br /&gt;  systemTime: TSystemTime;&lt;br /&gt;  lastModified, lastAccessed, firstCreated, lastWrite: TDateTime;&lt;br /&gt;  sr : TSearchRec;&lt;br /&gt;begin&lt;br /&gt;  lastModified := 0;&lt;br /&gt;  lastAccessed := 0;&lt;br /&gt;  firstCreated := 0;&lt;br /&gt;  lastWrite := 0;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; sysUtils.FindFirst(fileFullName, faAnyFile, sr) = 0 then&lt;br /&gt;  begin&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt;      lastModified := FileDateToDateTime(sr.Time);&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftCreationTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;br /&gt;        firstCreated := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftLastAccessTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;br /&gt;        lastAccessed := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      FileTimeToSystemTime(sr.FindData.ftLastWriteTime, systemTime) ;&lt;br /&gt;      with systemTime &lt;span style="color: #0000ff"&gt;do&lt;/span&gt;&lt;br /&gt;        lastWrite := EncodeDateTime (wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds) ;&lt;br /&gt;&lt;br /&gt;      memo.Lines.Add (&lt;span style="color: #006080"&gt;'Last modified: '&lt;/span&gt; + DateTimeToStr (lastModified));&lt;br /&gt;      memo.Lines.Add (&lt;span style="color: #006080"&gt;'Created: '&lt;/span&gt; + DateTimeToStr (firstCreated));&lt;br /&gt;      memo.Lines.Add (&lt;span style="color: #006080"&gt;'Last access: '&lt;/span&gt; + DateTimeToStr (lastAccessed));&lt;br /&gt;      memo.Lines.Add (&lt;span style="color: #006080"&gt;'Last write: '&lt;/span&gt; + DateTimeToStr (lastWrite));&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;&lt;br /&gt;      FindClose(sr) ;&lt;br /&gt;    end&lt;br /&gt;  end;&lt;br /&gt;end;&lt;/pre&gt;&lt;br /&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/5540606804416143572-6810752742716077210?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6810752742716077210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6810752742716077210'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/06/getting-creation-modified-accessed-date.html' title='Getting creation, modified &amp;amp; accessed date time of a file'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-1590454779294624482</id><published>2009-06-12T15:11:00.001+05:30</published><updated>2010-01-13T15:13:36.377+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Base32Encoding Implementation For .NET</title><content type='html'>&lt;p&gt;I was working in a project which required me to send that data to one application in the form of a series of bytes. This data was to be processed by humans so it was necessary that proper &lt;a href="http://en.wikipedia.org/wiki/Encoding"&gt;encoding&lt;/a&gt; mechanism is used. I considered my alternatives:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hexadecimal"&gt;Hex Encoding&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Base64"&gt;Base64 Encoding&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Base32"&gt;Base32 Encoding&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://zooko.com/repos/z-base-32/base32/DESIGN"&gt;zBase32 Encoding&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Hex encoding is pretty simple (atleast simple for programmers). You just write the hex string in plain text. Resulting string is case insensitive but too long. If input data length is x bytes, you will end up with 2x character long string.&lt;/p&gt;  &lt;p&gt;Base64 encoding is pretty good in terms of efficiency since it uses approx. 4x/3 characters. It uses 0..9, A..Z, a..z and 2 special characters for encoding. This type of encoding is used widely (email processing, keys storage etc). .NET Framework library has &lt;a href="http://msdn.microsoft.com/en-us/library/system.convert.tobase64string.aspx"&gt;Convert&lt;/a&gt; class which takes care of this task.&lt;/p&gt;  &lt;p&gt;But Base64 encoding is not really suitable for humans considering it uses couple of special characters and it is case sensitive. Imagine someone is speaking the encoded text over phone! I didn’t settle for this one.&lt;/p&gt;  &lt;p&gt;Next one was Base32 encoding which is pretty similar in concept but it uses characters A..Z and 2..7. So it has the advantage of being case in-sensitive at the cost of somewhat bigger encoded text. Text that is encoded with Base32 method has approx 1.6x characters. I was OK with somewhat increased length because ease of use was more important. Exploring further revealed that there is one modified implementation of Base32 encoding which is called &lt;a href="http://zooko.com/repos/z-base-32/base32/DESIGN"&gt;zBase32&lt;/a&gt; encoding. This encoding:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Permutes the characters for encoding so that more frequent characters are easier to read (even from a hand scribbled page).&lt;/li&gt;    &lt;li&gt;Intelligently calculates the original data length which eliminates the need of padding. Padding increases encoded text length significantly.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So I finally decided to use zBase32 encoding in my project but whoa…I couldn’t find any implementation of zBase32 encoding for .NET. After searching for a while, I decided to write one myself.&lt;/p&gt;  &lt;p&gt;This library is pretty simple. It has 2 classes only:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Base32Encoder: Implements base 32 encoding&lt;/li&gt;    &lt;li&gt;ZBase32Encoder: Derived from Base32Encoderes Base32Encoder to implement ZBase32 encoding.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here is sample code:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Sample () {&lt;br /&gt;   var zBase32 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ZBase32Encoder ();&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] inputData = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] { 0xF0, 0xBF, 0xC7 };&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; encodedText = zBase32.Encode (inputData);&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] outputData = zBase32.Decode (encodedText);&lt;br /&gt;&lt;br /&gt;   Console.WriteLine (&lt;span style="color:#006080;"&gt;"Original: {0}, Encoded: {1}, Decoded: {2}"&lt;/span&gt;,&lt;br /&gt;       ToString (inputData), encodedText, ToString (outputData));&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;And here is the output of above code:&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt; &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;Original: F0BFC7, Encoded: 6n9hq, Decoded: F0BFC7&lt;/pre&gt;  &lt;/div&gt;&lt;p&gt;If you checkout the samples given on &lt;a href="http://zooko.com/repos/z-base-32/base32/DESIGN"&gt;zBase32 website&lt;/a&gt;, you will find the same results.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Comparison&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Here is a short comparison of encoded text lengths of both base32 encoding (all lengths are in bytes). You can easily realise that normal base32 encoding doesn’t encodes efficiently when input length is not exact multiple of 5.&lt;/p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Segoe UI Light'; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span   class="Apple-style-span" style=" color: rgb(34,34,34); font-family:calibri, tahoma, arial, sans-serif;font-size:15px;"&gt;&lt;table style="margin: 0.5em auto; border-collapse: collapse; empty-cells: show; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px" class="wiki-content-table"&gt;&lt;tbody&gt;        &lt;tr&gt;          &lt;th style="border-bottom: rgb(136,136,136) 1px solid; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; background-color: rgb(238,238,238); padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;Input Length&lt;/th&gt;          &lt;th style="border-bottom: rgb(136,136,136) 1px solid; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; background-color: rgb(238,238,238); padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;Base32 Encoded Text Length&lt;/th&gt;          &lt;th style="border-bottom: rgb(136,136,136) 1px solid; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; background-color: rgb(238,238,238); padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;zBase32 Encoded Text Length&lt;/th&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;1&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;2&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;2&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;4&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;3&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;5&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;4&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;7&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;5&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;6&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;10&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;7&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;12&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;8&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;13&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;9&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;15&lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;10&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;          &lt;td style="border-bottom: rgb(136,136,136) 1px solid; text-align: left; border-left: rgb(136,136,136) 1px solid; padding-bottom: 0.3em; padding-left: 0.7em; padding-right: 0.7em; border-top: rgb(136,136,136) 1px solid; border-right: rgb(136,136,136) 1px solid; padding-top: 0.3em"&gt;16&lt;/td&gt;        &lt;/tr&gt;      &lt;/tbody&gt;&lt;/table&gt;  &lt;/span&gt;&lt;/span&gt;You can download the &lt;a href="http://dl.dropbox.com/u/2731573/Blog/Base32Encoder.zip"&gt;assembly&lt;/a&gt; or &lt;a href="http://dl.dropbox.com/u/2731573/Blog/Base32Encoder%20-%20Source.zip"&gt;original source code&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-1590454779294624482?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1590454779294624482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1590454779294624482'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2009/06/base32encoding-implementation-for-net.html' title='Base32Encoding Implementation For .NET'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-8786275661535821891</id><published>2009-06-12T14:52:00.000+05:30</published><updated>2010-01-13T14:53:14.374+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Do you download ebooks from internet?</title><content type='html'>&lt;p&gt;If you ask this question from any programmer, you are likely to get no for an answer and it is likely to be a lie. We all know, no matter what our conscious tells us, we do download ebooks. An internet user doesn't just download ebooks. Songs, videos, movies, software are equally popular on file sharing sites and &lt;a href="http://www.torrentz.com/"&gt;torrent providers&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Do I download ebooks from internet? I can lie once again but you already know the answer. I do! But I still consider myself a noble soul.&lt;/p&gt;  &lt;p&gt;Why? Because I download ebooks only in 2 cases:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I live in Indian sub-continent. Many software books that are written and published in US do not get published locally here. Getting hold of those books mean ordering that book on some international online shopping site and paying international shipment. While it takes a lot of time (almost a month) to reach that item to owner's hands, price that you pay for that book is also pretty high after converting the dollars to Indian rupees. I do earn a decent salary but I cant afford super expensive books. So I end up downloading them.&lt;/li&gt;    &lt;li&gt;If I do plan to buy a book, I first download the ebook and go through it. I quickly scan the book and make sure that I am not throwing my money on some crap. Normally I do end up buying that book. For example, I did download the Jon Skeet's book "Cin Depth" and read few pages before ordering it. I loved the book and I do own a copy now.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Someone might argue against that type of illegal ebook usage but I consider them fair. In my opinion, if you are seriously planning to buy the book, there is no harm going through it once before you actually buy it. If you don't find it interesting enough to buy, you are most likely not going to read it even on stupid computer screen (Did I mention reading a book on computer sucks and I simply hate it?). Ask your fellow programmers and they might have dozens of ebook lying somewhere in their computer but they cant even name them (leave alone reading them).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-8786275661535821891?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8786275661535821891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8786275661535821891'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/01/do-you-download-ebooks-from-internet.html' title='Do you download ebooks from internet?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5484220125574092971</id><published>2009-04-18T13:28:00.000+05:30</published><updated>2010-01-13T14:32:44.985+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Using BouncyCastle .NET library for elliptical curve cryptography</title><content type='html'>&lt;p&gt;Encryption is a process of modifying some information in such a way that only the intended person can understand it. In software world it is normally done using various encryption algorithms. DES, Triple DES, AES are just some example of encryption algorithms. But these algorithms suffer from a basic problem of handing keys. Your encrypted information is as safe as the key you used to encrypt it. If you have encrypted something, you sure want someone to decrypt it. And for that, you need to send him/her the key. If the communication media is safe to send the key, why don’t you just send the information without encryption.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Public_key_encryption"&gt;Public key encryption&lt;/a&gt; solves the basic problem of handling and transferring keys. It uses different keys for encryption and decryption. Most widely used algorithm for public key encryption is RSA. But it has some problems:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Encrypted text produced by RSA is pretty long.&lt;/li&gt;    &lt;li&gt;The size of encrypted data depends on the key size but a key size of 2048 bits is recommended if you see your software being used after 2010.&lt;/li&gt;    &lt;li&gt;This algorithm is pretty slow compared to other symmetric key algorithms such as DES, AES etc.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Elliptical_curve_cryptography"&gt;Elliptical curve cryptography&lt;/a&gt; is a type of &lt;a href="http://en.wikipedia.org/wiki/Public_key_encryption"&gt;public key encryption&lt;/a&gt; but it uses much shorter keys without compromising the encryption strength. Elliptical curve encryption done using 128 bit key gives the same level of security as given by RSA using 3072 bit key.&lt;/p&gt;  &lt;p&gt;I needed to use elliptical curve encryption in one of my project and I was &lt;a href="http://stackoverflow.com/questions/690566/-net-implementation-libraries-of-elliptic-curve-cryptography"&gt;http://stackoverflow.com/questions/690566/-net-implementation-libraries-of-elliptic-curve-cryptography&lt;/a&gt; searching] for its implementation on .NET platform and then I found &lt;a href="http://www.bouncycastle.org/csharp/"&gt;Bouncy Castle&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;That was just a little background. This post is really about using the &lt;a href="http://www.bouncycastle.org/csharp/"&gt;Bouncy Castle library&lt;/a&gt; in a C# project. This library implements generating digital signatures using ECDSA.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Namespaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Following namespaces will need to be used by us:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Org.BouncyCastle.Crypto;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Org.BouncyCastle.Crypto.Generators;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Org.BouncyCastle.Crypto.Parameters;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Org.BouncyCastle.Security;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Key Sizes&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;It is normally possible to use different key sizes. ECDSA supports following key sizes:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;192 bit&lt;br /&gt;239 bit&lt;br /&gt;256 bit&lt;/pre&gt;  &lt;/div&gt;&lt;p&gt;&lt;strong&gt;Generating Keys&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We can use the library itself to generate the random keys:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;  &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; AsymmetricCipherKeyPair GenerateKeys (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; keySize) {&lt;br /&gt;  var gen = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ECKeyPairGenerator ();&lt;br /&gt;  var secureRandom = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SecureRandom ();&lt;br /&gt;  var keyGenParam = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; KeyGenerationParameters (secureRandom, keySize);&lt;br /&gt;  gen.Init (keyGenParam);&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; gen.GenerateKeyPair ();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Generating Signature&lt;/strong&gt;&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; VerifySignature (AsymmetricCipherKeyPair key, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; plainText,&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] signature) {&lt;br /&gt;  var encoder = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ASCIIEncoding ();&lt;br /&gt;  var inputData = encoder.GetBytes (plainText);&lt;br /&gt;  var signer = SignerUtilities.GetSigner (”ECDSA”);&lt;br /&gt;  signer.Init (&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;, key.Public);&lt;br /&gt;  signer.BlockUpdate (inputData, 0, inputData.Length);&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; signer.VerifySignature (signature);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Putting It All Together&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;Now we just need a function which calls above function in the right sequence so that we can see whether it really works:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre face="'Courier New', courier, monospace" size="8pt" color="black" style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ECDSASample (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; keySize) {&lt;br /&gt;  Console.WriteLine (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format (”======= Key Size: {0} =======”, keySize));&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; s = “Hello World!”;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt; {&lt;br /&gt;      var key = GenerateKeys (keySize);&lt;br /&gt;      var signature = GetSignature (s, key);&lt;br /&gt;      var signatureOK = VerifySignature (key, s, signature);&lt;br /&gt;      &lt;span style="color:#008000;"&gt;//Show it to me&lt;/span&gt;&lt;br /&gt;      var pubicKey = (ECPublicKeyParameters)(key.Public);&lt;br /&gt;      var privateKey = (ECPrivateKeyParameters)(key.Private);&lt;br /&gt;      Console.WriteLine (”Input Text: ” + s);&lt;br /&gt;      Console.WriteLine (”Key ({0} bytes): {1}”, privateKey.D.BitLength, privateKey.D);&lt;br /&gt;      Console.WriteLine (”Signature ({0} bytes): {1}”, signature.Length, ToString (signature));&lt;br /&gt;      Console.WriteLine (”Signature verified: {0}”, signatureOK);&lt;br /&gt;      Console.WriteLine ();&lt;br /&gt;  }&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (Exception ex) {&lt;br /&gt;      Console.WriteLine (ex.Message);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;Calling the above function 3 times for all keys sizes shows:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;======= Key Size: 192 =======&lt;br /&gt;Input Text: Hello World!&lt;br /&gt;Key (192 bytes): 5383271877913095293497459795960978936424465262977103383268&lt;br /&gt;Signature (56 bytes):&lt;br /&gt;303602190096736F03CB7AE4183590FE6185EFA900E6F4CD8B903100CF021900D5C0255ECC05921A9BC9EFD3AADB5B1FD8326CBA614713A3&lt;br /&gt;Signature verified: True&lt;br /&gt;======= Key Size: 239 =======&lt;br /&gt;Input Text: Hello World!&lt;br /&gt;Key (236 bytes): 83986687572262518000833780316201230289349432496423690059305652492588142&lt;br /&gt;Signature (66 bytes): 3040021E0DABDA56D88E2DEB633FBA399EBBA5F5E678AE8600791EBF65094B0CDB0A021E381C2A864523F306D808FD45335EF73D62C9B66E9F6F6A846A9E7CA447D8&lt;br /&gt;Signature verified: True&lt;br /&gt;======= Key Size: 256 =======&lt;br /&gt;Input Text: Hello World!&lt;br /&gt;Key (255 bytes): 37067712327984319889067683157535631380322797492360190963255045782768937377579&lt;br /&gt;Signature (71 bytes): 3045022100CFDB9F6DFB4C063C5C75CF4DCBC00F2CB79B61540BF982998C0F0810CAED7F2E022053DADF416C793AAB3EA8EB978A764B1E440C86C8BF897039EFCADEC7296790CA&lt;br /&gt;Signature verified: True&lt;/pre&gt;  &lt;/div&gt;&lt;p&gt;I am still confused about a few points though:&lt;/p&gt;&lt;ol&gt;  &lt;li&gt;Why it uses a key size of 239 bits. It seems so unnatural in binary world.&lt;/li&gt;  &lt;li&gt;If I increase the length on input text and generate the signature, I sometime get a signature with different length. For example key size of 192 generates signature of 56 bytes when I use the string “Hello World” but it generates the signature of 54 bytes with string “Hello World”.&lt;/li&gt;  &lt;li&gt;If I want to serialise the key to disk, which values actually should be saved.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/2731573/Blog/UsingBouncyCastle.cs"&gt;Here&lt;/a&gt; is the complete source file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5484220125574092971?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5484220125574092971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5484220125574092971'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2010/01/using-bouncycastle-net-library-for.html' title='Using BouncyCastle .NET library for elliptical curve cryptography'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-4707391698872380032</id><published>2007-08-22T21:50:00.000+05:30</published><updated>2007-08-22T21:51:59.641+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Did you know?</title><content type='html'>&lt;div class="entrybody"&gt;    &lt;div class="snap_preview"&gt;&lt;ul&gt;&lt;li&gt;William Huskisson was a British member of parliament. He was run down by a train during the opening of first railway in 1830.&lt;/li&gt;&lt;li&gt;Thomas Midgley was an American inventor who was strangled in 1944 by a machine he had invented to help him move after contracting polio. He invented three products that have since been found to be environmentally harmful: lead in petrol, CFCs in fridges and aerosols and the insecticide DDT.&lt;/li&gt;&lt;li&gt; Last words of French Queen Marie Antoinette (1893), who accidentally trod on her executioner’s foot as she went to the guillotine: “Pardonnez-moi monsieur” (Pardon me, Sir).&lt;/li&gt;&lt;li&gt;Last word of Joseph Henry Green, a British doctor (1863), after checking his own pulse: “Stopped.”&lt;/li&gt;&lt;li&gt;Some non-Catholic countries such as Britain refused to adopt the Gregorian calender at first. The Julian calender, previously used in Britain was based on a solar year, the time taken for the earth to rotate around the Sun. This is 365.25 days, which is fractionally too long (it is actually 365.24219 days), so the calender steadily fell out of line with the seasons. In 1752, Britain decided to correct this by abandoning the Julian calender in favour of the Gregorian. By doing so, 3 September instantly became 14 September - and, as a result, nothing whatsoever happened in British history between 3 and 13 September 1752. Many people believed their lives would be shortened. They protested in the streets, demanding, “Give us back our 11 days!”&lt;/li&gt;&lt;li&gt;If we put the history of the Universe into the scale of a calender year, i.e. Big Bang on 1 Jan (midnight), then: &lt;ul&gt;&lt;li&gt;Earth formed on 12 September&lt;/li&gt;&lt;li&gt;First many-celled life formed on 18 December&lt;/li&gt;&lt;li&gt;First dinosaur on 24 December&lt;/li&gt;&lt;li&gt;Extinction of dinosaurs on 28 December&lt;/li&gt;&lt;li&gt;Homo sapiens (modern human) appears on 31Dec (11:55 PM)&lt;/li&gt;&lt;li&gt;Everything that happened in last 475 years takes place in less than the last second of the last minute of the year!&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&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/5540606804416143572-4707391698872380032?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4707391698872380032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4707391698872380032'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/08/did-you-know.html' title='Did you know?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-1174876814694332360</id><published>2007-06-15T00:05:00.001+05:30</published><updated>2007-06-15T00:06:27.843+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>CodeGear's roadmap for Delphi and C++ Builder is published</title><content type='html'>CodeGear has published the &lt;a href="http://dn.codegear.com/article/36620"&gt;roadmap &lt;/a&gt;for 2 of it's major products Delphi and C++ builder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-1174876814694332360?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1174876814694332360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1174876814694332360'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/06/codegears-roadmap-for-delphi-and-c.html' title='CodeGear&apos;s roadmap for Delphi and C++ Builder is published'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-2305222178349573200</id><published>2007-06-15T00:02:00.000+05:30</published><updated>2007-06-15T00:07:28.164+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Top 5 most used commands in MS Office</title><content type='html'>Here is an interesting post I came across. Can you guess what are 5 most used commands in MS office?&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://blogs.msdn.com/jensenh/archive/2005/11/07/489864.aspx"&gt;answer&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-2305222178349573200?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2305222178349573200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2305222178349573200'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/06/top-5-most-used-commands-in-ms-office.html' title='Top 5 most used commands in MS Office'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6639705990821717943</id><published>2007-06-14T23:59:00.000+05:30</published><updated>2007-06-15T00:02:22.406+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Think before you speak</title><content type='html'>&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Taken from &lt;a href="http://blogs.msdn.com/techtalk/archive/2005/09/12/464152.aspx"&gt;another blog:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The classic example is the Sony Walkman which was universally panned because it did not record, but only played tapes. The rest is history. But here are a couple of quotes that are hard to believe these days:&lt;/span&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;In reference to the Apple Macintosh, Windows, and GUI&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"The Mac simply doesn't have the look or feel of a business computer." (InfoWorld, March 26, 1984)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"A few traditional computer users see the mouse, the windows, and the desktop metaphor as silly, useless frills."  (Byte, May 1984)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"'Icons represent an attempt to restrict what people do with computers, in the guise of user-friendliness.'  According to Currie, icon-based systems are appropriate for novice computer users, but will hinder the work of knowledgeable users." (Computerworld, August 20, 1984, interview with Edward H. Currie, president of Lifeboat Associates, a New York-based software publishing firm)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"Because &lt;name&gt; works the way you do, you don't waste time with a mouse or learning a Macintosh-like graphics environment.  &lt;name&gt; works the way PC software is supposed to work."  (Ashton-Tate brochure for Byline Desktop Publishing, 1988)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;In reference to the mouse peripheral device&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;[headline]  "Mice are nice ideas, but of dubious value for business users" (George Vinall, PC Week, April 24, 1984)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"I was having lots of fun, but in the back of my corporate mind, I couldn't help but think about productivity."  (George Vinall, PC Week, April 24, 1984)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"Does the mouse make the computer more accessible, more friendly, to certain target audiences such as executives? The answer is no."  (Computerworld, October 31, 1983)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"There is no possibility that this device will feel more comfortable to the executive than the keyboard. Because of its "rollability," the mouse has the aura of a gimmick...."  (Computerworld, October 31, 1983)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;"The mouse and its friends are merely diversions in this process. What sounds revolutionary does not necessarily help anyone with anything, and therein lies the true test of commercial longevity."  (David A. Kay, Datamation, October 1983)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-6639705990821717943?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6639705990821717943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6639705990821717943'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/06/think-before-you-speak.html' title='Think before you speak'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3063429130108955037</id><published>2007-05-22T00:00:00.000+05:30</published><updated>2007-05-22T00:05:51.265+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Disposable email ID</title><content type='html'>When was the last time you were surfing a site and want to try a software out. You click on download and it asks for your email id?&lt;br /&gt;When was the last time you want to see just a conversation thread in a forum and it forces you to register (asking your email Id) before letting you see the conversation?&lt;br /&gt;When was the last time you wanted to register to some site by are afraid of spams?&lt;br /&gt;&lt;br /&gt;If any of above web annoyances happened to you, the solution is &lt;a href="http://www.mailinator.com/"&gt;mailnator!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What mailnator does is exactly what you want. It creates a disposable email id for you every time you open mailnator homepage. And you can even check your emails (for registration confirmation, trial keys etc.) and email Id will automatically be deleted after few hours...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-3063429130108955037?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3063429130108955037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3063429130108955037'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/05/disposable-email-id.html' title='Disposable email ID'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6732266212721462753</id><published>2007-05-21T23:18:00.001+05:30</published><updated>2007-05-21T23:28:58.575+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Takes one to know one</title><content type='html'>&lt;span xmlns=""  style="font-size:85%;"&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Following article was written by &lt;a href="http://blogs.codegear.com/nickhodges/"&gt;Nick Hodges&lt;/a&gt; in one of his blog and I liked it so much that I took a copy of it. Since then he has changed to &lt;a href="http://www.codegear.com/"&gt;CodeGear&lt;/a&gt;'s official blog. Because I have my own blog now and I liked this article so much, I take the liberty to publish this (under his name off course &lt;/span&gt;&lt;span style="font-family:Wingdings;"&gt;J&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;It's a standard Dilbert joke that managers are idiots.  One doesn't have to hang around programmers too long to find out that many of them work for managers that don't have a clue about developing software and thus make many a nutty decision based on profound ignorance.  Plenty of  Delphi fans have had a boss that follows the "Nobody ever got fired for choosing Microsoft Development tools" rule and choose Visual Basic as a corporate standard. &amp;lt;&lt;em&gt;shudder&lt;/em&gt;&amp;gt;  And the old adage states that programmers make crappy managers.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;So, I guess, based on the above, it's impossible for someone to be a good manager of programmers.  If one doesn't know anything about programming and has never been a programmer, then apparently, he will suck as a manager.  And if one has been a programmer, and is so good at it that he gets promoted to be a manager, he,too, will suck as a manager.  Sounds like a lose/lose situation all around --   programmers doomed to a life of sucky supervisors.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Well, I'm not buying it.  Surely somewhere, somebody is managing programmers well.  &lt;em&gt;Somebody&lt;/em&gt; has to be leading folks to build some of the insanely good software projects that are going on out there.  So, what does it take to manage programmers well?  Good question.  I'd say that such skills and capabilities exist.  I'd also say that they are, sadly, in relatively short supply.  Too many Dilbert strips end up on too many cubicles in&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;First, to be a good manager of programmers you have to be, well, a good manager.  That's easier than people think, really.  Here's my basic list of things one can do and not do to be a good manager:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Place the careers of the people that work for you above your own.  Never, ever, ever, ever, &lt;em&gt;ever&lt;/em&gt; take a dump on an employee to make yourself look good to your boss.  &lt;em&gt;Always&lt;/em&gt; let the boss take a dump on you instead of your employee. Take responsibility for everything bad that happens under your watch.  Dole out all the credit for good things that happen to your people.  If you have some bizarre, overwhelming need to impress and brown-nose your boss, let your &lt;em&gt;employees&lt;/em&gt; make you look good.  It's your job to make your employees happy and productive.  It's not your job to get promoted.  (And do I need to say that if your employees are happy and motivated, then they'll do a good job, which means &lt;em&gt;you&lt;/em&gt; are doing a good job?)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Place the needs of the employees over your own.  What's the quickest way for a Marine Corps officer to be considered the biggest jerk since Josef Stalin? Get in the chow line ahead of his Marines.  Officers don't eat until the troops do.  Take the same attitude, and your people will love you and work hard for you.  Give them the good computers.  Give them the good chairs.  Don't take a perk for yourself until they all have it.  Believe me -- they will notice this.  Another way to state this is don't ask your employees to do anything you yourself aren't willing to do. If you want your folks to work 12 hours a day, you need to be there 13 hours a day.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Recognize that your employees know what they are talking about and might actually know more about some things than you do.  (If they &lt;em&gt;don't&lt;/em&gt; know more about some things than you do, then you need to get new employees).  If your employees seem to think that the WonderWidget is a much better solution to a problem than the SuperSprocket, then, hey, maybe, &lt;em&gt;just maybe&lt;/em&gt;, they are right.  Just because you read about the SuperSprocket in some magazine that takes $4.6 million dollars a year in advertising from SuperSprocket, Inc., doesn't mean that is the way to go.  know what they are talking about and they&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;As a follow on to that, don't try to impress your employees with your knowledge.  Don't spout buzzwords unless you know what they mean. They probably are going to think that you are an idiot anyway, so feel free to appear to be ignorant about things that, well, you &lt;em&gt;aredo&lt;/em&gt; ignorant about.  If you don't have a clue about what the best printer is for the needs of your team, then let the folks on your team that know about such things choose the printer.  If you don't know the answer to something, say so.  The quickest way to be thought an idiot is to try to act like you know what you are talking about when you don't.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Manage yourself out of a job.  The best managers are the ones that sit in their office all day surfing the internet because they've set things up so that their people can take care of everything and thus they don't have anything to do.  People love being the ones with the power, authority and skill to do the work. If you are in their shorts all day, making all the decisions, doing all the work, and taking all the credit, you will be a crappy manager.  Once you've managed yourself out of a job, then, besides surfing the net, you can spend all your time making things even better for your employees and protecting them from the foibles of &lt;em&gt;your&lt;/em&gt; boss.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Encourage your employees to tell you what is bugging them.  When I was running a 24/7 Intelligence Watch, I told my people that if they found a Dilbert cartoon that exactly described a stupid, irritating, or aggravating situation in our organization or something that I was doing that was "pointy-haird-boss-ish", they could bring it to me or put it on my desk anonymously.  If you are totally committed to the first two items on this list, they will come to you. If you aren't, they never will.  And if your employees &lt;em&gt;aren't&lt;/em&gt; bringing issues and complaints and problems to you, then &lt;em&gt;you&lt;/em&gt; have a big problem.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Reward your employees with what they want to be rewarded with.  Frankly, this is usually good old cash money. But if you can't do that,  perhaps they want better computers, a nicer deskchair, a day off, whatever.  If you want to reward someone, find out what they want and give it to them.  But please, &lt;em&gt;PLEASE&lt;/em&gt; -- I'm begging you here -- do not call a big meeting and pass out a "Worker of the Week" award with some cheesy certificate ginned up with Microsoft Publisher.  When I was in the Navy and at a joint command, I had an Air Force Colonel that did this, and he was &lt;em&gt;universally&lt;/em&gt; mocked and reviled for it. Everyone thought it was a joke.  No one wanted that silly certificate and everyone hoped and prayed that they wouldn't "win" the thing.  Those that did posted them like they post Dilbert cartoons on their cubicles -- sort of like a badge of "dishonor".&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Now, that's all general stuff.  It applies to all managers, whether they lead a team of auto workers or a group of Delphi programmers.  What does it take to manage &lt;em&gt;programmers&lt;/em&gt; well?&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;I think that to be a good manager of programmers, you have to be, or at least have been, a programmer yourself.  This goes against the conventional wisdom, I know, but I think that in order to understand the way programmers work, you really have to have done it yourself.  It's true that many programmers would make bad managers, but it doesn't follow that &lt;em&gt;every&lt;/em&gt; programmer guarantees that one will be a bad manager.  Programming is one of those strange professions that mixes right- and left-brained skills.  To program well, you have to have an ordered, mathematically oriented mind, but at the same time you have to come up with artistic, creative solutions to puzzles and problems.  One really needs to be one to understand one.  Now the hard part here is that most programmers don't want to be managers. Alas -- a quandry there, eh?  Well, if you run across one that &lt;em&gt;does, &lt;/em&gt;don't hesitate to consider it.  If you are a programmer and want to be a manager, let your bosses know, they'll probably be happy to hear it.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Give programmers what they want:  challenging work, a quite place to do that work, a good fast computer, a good salary, and the opportunity to expand their skillset.  Don't be cheap on these things.  This may cost a bit more,but you'll make it back in spades.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;To as large a degree as possible, let programmers choose the tools that they use.  I know, I know, this isn't always possible.  Sometimes those decisions are made above your paygrade.  But then again, if you use Delphi under the table to produce a solution twice as fast for half the cost, then maybe Delphi won't be under the table for long.  If one of your guys wants to try to build that new intranet application in &lt;a href="http://www.rubyonrails.org/"&gt;&lt;span style="text-decoration: underline;color:blue;" &gt;Ruby On Rails&lt;/span&gt;&lt;/a&gt;, let him.  Why not? Who's going to know?  If it works and gets deployed early, it's likely that no one will care what tool or language was used to make it, and now you have a new skill in your quiver.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Be flexible.  Some programmers do their best work between 10:00pm and 04:00am.  Let them.  Some hate to wear ties, dress shirts, khakis, etc.  Don't make them.  Some are flat out nuts.  Let them be.  Nothing wrong with all of that as long as they produce good code, eh?&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Okay, that's a pretty good list.  I've been on both sides of the fence, and as a consultant, I see all sorts of management types and methods.  I deal with programmers on a daily basis, and I are one myself, so I think I have a pretty good grip on what's going on from a lot of angles.  I'm sure you all will come up with more stuff and comment on it.  Please do.  After all, I'm not an expert on this stuff and I only write this to try to make &lt;em&gt;you&lt;/em&gt; look good.&lt;/span&gt;&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/5540606804416143572-6732266212721462753?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6732266212721462753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6732266212721462753'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/05/takes-one-to-know-one_21.html' title='Takes one to know one'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3977348348531207289</id><published>2007-05-20T22:20:00.001+05:30</published><updated>2007-05-20T22:22:27.865+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Moving to .NET Platform, A difficult choice?</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;I am working on a product which is developed using Delphi for Win32. Originally Delphi 7 was used and we then moved to Delphi 9 (Delphi 2005) and are now planning to move to Delphi 10 (Delphi 2006). I have to admit that despite the originally reluctance in accepting the Delphi as the long term development technology, I have now grown to simply love it. You know what I like about Delphi most? The fact that it solves the real world problems!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You know there is lot of technology talk always going on. Every second day you hear the announcement of a new language, new database technology, new framework which would just magically solve all your problems. But if you have worked even for few months in software industry (as I have), you will realize there is no such thing which can solve all our problems magically. Language, framework and components just assists you do your job and *nothing* can replace a good programmer. Still Delphi provides the simple to understand and simple to use framework which suits most developers. This is because real developers like to find the "most appropriate way" to solve a problem in given time and resources and not essentially the "best way". Lengthy and exhaustive time, performance, use analysis is luxury of few developers, who program in a garage and for fun.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Everything was working fine until my organization had to think "What to do about .NET platform? Do we need to go for it?"&lt;br /&gt;&lt;/p&gt;&lt;p&gt;After thinking for sometime, I concluded couple of points:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Developers (who actually get to work on product) like to work on a technology which is popular in market. Perhaps it makes them feel safer that it will not be too difficult to find another job, just in case. If you ask "Why you like to work on .NET?" it would be difficult for them to answer. Perhaps the only answer is "because every second person seems to talk about .NET".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It doesn't matter to the organization whether its developers are using .NET or Java or Delphi; it wants to deliver the right solutions to customer at right time.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;During my initial couple of months in software development, I used to find so many problems with existing code/structure/design etc. Even a stupidly named variable would drive me nuts. It's not that now I don't care about how variable are named but you just can't make everyone to name variables like you. You have to adjust somewhat somewhere. I always liked to do things the perfect way and I still do, but now I also think "what is more important? Renaming the variable to my taste in 20 odd units or shipping the product to customer next week?" Don't take me wrong, I am a real nasty person in this regard; I would still rename the variable in 20 odd units but only in next planned release!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In coming few days, a decision will be made by me and few senior people (who I actually admire). Lets see what comes up!&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/5540606804416143572-3977348348531207289?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3977348348531207289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3977348348531207289'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/05/moving-to-net-platform-difficult-choice.html' title='Moving to .NET Platform, A difficult choice?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5661449479642187045</id><published>2007-03-12T22:18:00.000+05:30</published><updated>2007-03-12T22:20:08.925+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>My Nerd Score</title><content type='html'>&lt;a href="http://www.nerdtests.com/ft_nq.php?im"&gt;&lt;img src="http://www.nerdtests.com/images/ft/nq.php?val=1768" alt="I am nerdier than 89% of all people. Are you nerdier? Click here to find out!" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5661449479642187045?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5661449479642187045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5661449479642187045'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/03/my-nerd-score.html' title='My Nerd Score'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-252600051861337511</id><published>2007-03-12T15:55:00.000+05:30</published><updated>2007-03-12T19:15:19.167+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>How to be highly paid manager even though you are a stupid moron?</title><content type='html'>&lt;ol&gt;&lt;li&gt;Start a subscription of good technology magazine. Whenever a new issue arrives, read the headlines (only) of all articles and recite few new names in it. You will need to utter one of those in big management meetings so that you sound most updated person.&lt;/li&gt;&lt;li&gt;Once in a while, open one of those fat books which you managed to steal from your library when you were pursuing your dumb management degree, and go through some of those chapters. Hey! You will find at least dozen management ideas which sound super cool but actually does nothing in practice. You can suggest those ideas to someone and pretend to be super-intelligent. Don’t worry, if ever, someone will try to work on those ideas, soon he will become more confused than ever and will never come to you again.&lt;/li&gt;&lt;li&gt;Don’t be too involved with your sub-ordinates. More you speak, more they will know the truth you are a stupid moron. So say few words straight from Oxford dictionary, sitback and relax.&lt;/li&gt;&lt;li&gt;Always use the ^professional^ language in your documents and emails. Don’t use witty sentences and humour ‘coz that will create an impression that you are not professional. Any yes, don’t forget to discourage your sub-ordinate who uses simple english to say things straight and little humour to enjoy his job/work. You can say something like “You need to work a lot on your communication skills”. It will make him feel you are perfect manager and he should improve a lot to be *such a nice manager*.&lt;/li&gt;&lt;li&gt;Whenever you are in a meeting, act like you an angel straight from heaven. Speak in a very low polite voice and sound a real gentleman. I know you are not actully like that but you need to pretend that you are a gentleman.&lt;/li&gt;&lt;li&gt;Don’t leave a single chance to mark your name on a good work done by your sub-ordinate. Do mention his name for good work also when he is present and a very few people are listening to you, otherwise maintain *your* larger than life image.&lt;/li&gt;&lt;li&gt;Instil a culture of ideals that don't actually mean anything practical, this involves coming up with a mantra that sub-ordinates are supposed to adopt like "we must all realise the max" or "strive  to achieve" etc. Essentially this means asking people to do more work without getting more money and still feeling good about it.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-252600051861337511?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/252600051861337511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/252600051861337511'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/03/how-to-be-highly-paid-manager-even.html' title='How to be highly paid manager even though you are a stupid moron?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-3819566651682799324</id><published>2007-03-06T18:32:00.000+05:30</published><updated>2007-03-06T18:35:57.823+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Delphi Compiler Version Directives</title><content type='html'>&lt;table style="border-collapse: collapse; width: 443pt;" border="0" cellpadding="0" cellspacing="0" width="590"&gt;   &lt;col style="width: 90pt;" width="120"&gt; &lt;col style="width: 353pt;" width="470"&gt; &lt;tbody&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td class="xl64" colspan="2" style="height: 15pt; width: 443pt;" height="20" width="590"&gt;       Here is a list of Delphi Compiler version directives. I searched few places but none could give me complete list (A &lt;a href="http://delphi.about.com/od/beginners/l/aa042401a.htm" title="page on About.com"&gt;page on About.com&lt;/a&gt; was closest to completion) so I thought of creating this list and publishing it.&lt;br /&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td style="height: 15pt;" height="20"&gt;      &lt;br /&gt;    &lt;/td&gt;     &lt;td class="xl63" style="width: 353pt;" width="470"&gt;      &lt;br /&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; background: rgb(79, 129, 189) none repeat scroll 0% 50%; height: 15pt; font-weight: 700; text-decoration: none; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Calibri;font-size:11pt;color:white;" height="20"&gt;       SYMBOL&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; background: rgb(79, 129, 189) none repeat scroll 0% 50%; width: 353pt; font-size: 11pt; color: white; font-weight: 700; text-decoration: none; font-family: Calibri; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="470"&gt;       COMPILER VERSION     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER80&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 1     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER90&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 2     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER100&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 3     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER120&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 4     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER130&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 5     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER140&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 6     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER150&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 7     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER160&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 8     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER170&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 2005     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       VER180&lt;span style=""&gt;  &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Delphi 2006     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       WIN32&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates that the operating environment is the Win32 API.     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       CONSOLE&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates that an application is being compiled as a console application.     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" height="20"&gt;       LINUX     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates that the operating environment is Linux.     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 15pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" height="20"&gt;       CPU386     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates that the CPU is an Intel 386 or better.     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 30pt;" height="40"&gt;     &lt;td style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 0.5pt medium medium 0.5pt; height: 30pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" height="40"&gt;       MSWINDOWS     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 0.5pt 0.5pt medium medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates that the operating environment is Windows. Use MSWINDOWS to test for any flavor of the Windows platform instead of WIN32.     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr style="height: 15pt;" height="20"&gt;     &lt;td    style="border-style: solid none solid solid; border-color: rgb(79, 129, 189) -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189); border-width: 0.5pt medium 0.5pt 0.5pt; height: 15pt; font-weight: 400; text-decoration: none;font-family:Calibri;font-size:11pt;color:black;" height="20"&gt;       CLR&lt;span style=""&gt; &lt;/span&gt;     &lt;/td&gt;     &lt;td class="xl63" style="border-style: solid solid solid none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; width: 353pt; font-size: 11pt; color: black; font-weight: 400; text-decoration: none; font-family: Calibri;" width="470"&gt;       Indicates the code will be compiled for the .NET platform.     &lt;/td&gt;   &lt;/tr&gt;   &lt;/tbody&gt; &lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-3819566651682799324?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3819566651682799324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/3819566651682799324'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/03/here-is-list-of-delphi-compiler-version.html' title='Delphi Compiler Version Directives'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-2408306522086089122</id><published>2007-02-27T13:11:00.000+05:30</published><updated>2007-02-27T14:07:25.158+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Sharing spreadsheets using Microsoft Excel</title><content type='html'>When was the last time you needed to quickly collect some information from you colleagues and you couldn't find an easy way to do this? When was the last time you opened an Excel Spreadsheet and it said "This workbook is locked for editing by user blah. What would you like to do?"&lt;br /&gt;&lt;br /&gt;Problem is many people doesn't know about a neat feature of Microsoft Excel which allows collaboration and sharing of Excel Spreadsheets. This essentially means, more than one user can edit a spreadsheet at the same time. Interested in how to do this?&lt;br /&gt;&lt;br /&gt;In Microsoft Excel 2003, you need to follow "Tools &amp;gt; Share Workbook" menu:&lt;br /&gt;&lt;br /&gt;&lt;img style="height: 271px; width: 587px;" title="Sharing Workbooks using Excel 2003" src="http://docs.google.com/File?id=dc7wr2pw_7gmt6vp" /&gt;&lt;br /&gt;&lt;br /&gt;In Microsoft Excel 2007, this option is located in "Review" ribbon:&lt;br /&gt;&lt;br /&gt;&lt;img style="height: 338px; width: 605px;" title="Sharing workbooks in Excel 2007" src="http://docs.google.com/File?id=dc7wr2pw_8fb97q3" /&gt;&lt;br /&gt;&lt;br /&gt;Firing above option shows a dialog presenting a check-box which says something like "Allow changes by more than one user at the same time..blah blah". Select this option and save the work book in a network location where all the persons who need to edit this workbook has write access and you are done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-2408306522086089122?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2408306522086089122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2408306522086089122'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/sharing-spreadsheets-using-microsoft.html' title='Sharing spreadsheets using Microsoft Excel'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-225122978037653502</id><published>2007-02-27T10:39:00.001+05:30</published><updated>2007-02-27T10:45:41.668+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Thinking of using constants in Delphi? Consider class properties!</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;If you have gone through any *real* software project you will understand the need of using constants in code. Your professor would have told you thousand times that don't use any magic numbers in code and if you need, define a constant and use *that* in code. I wouldn't go into the flexibility constants brings in (define and change at single place and use million times stuff).&lt;br /&gt;&lt;br /&gt;What I want to discuss is an alternative to constant. There are called "class properties". In C world, these would be called static properties. Yes, you guess right. These are properties which relate to a "class" rather than an "object" (instance of the class). With Delphi.NET, we now have:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Class Fields&lt;/li&gt;&lt;li&gt;Class Methods (Both procedures and functions)&lt;/li&gt;&lt;li&gt;Class Properties&lt;/li&gt;&lt;/ol&gt;Class fields and class properties and not available in Delphi for Win32 (well, programmers take "never say die" &lt;a href="http://delphi.about.com/library/weekly/aa031505a.htm"&gt;approach&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So class properties allows us to write something like:&lt;br /&gt;&lt;pre space="preserve" id="ctl00_LibFrame_ctl19CSharp" class="code"&gt;var&lt;br /&gt; number: Integer;&lt;br /&gt;begin&lt;br /&gt; number := TPredefinedNumbers.DefaultNumber;&lt;br /&gt; //do something with number&lt;br /&gt;end;&lt;/pre&gt;Here, "DefaultNumber" is a class property of TPredefinedNumbers class and we can access DefaultNumber using class name and without actually creating an instance of it. .NET framework makes extensive use of class properties. Refer &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.systemcolors.aspx"&gt;SystemColors&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.brushes.aspx"&gt;Brushes&lt;/a&gt; etc.&lt;br /&gt;&lt;br /&gt;Why class properties qualifies as an (perhaps better) alternative for constants? The reason is, you never know what crazy requirement will be raised by your sales or marketing person which calls for user control on that constant. Perhaps you would think that using the INI file for that constant value would be better so that you can control it. Perhaps day after tomorrow it will qualify to sit in a database field. Who knows?&lt;br /&gt;&lt;br /&gt;So class properties provide a great abstraction. When you want to change the location where that constant value resides, all you need to change the get method of class property. And everything works fine..&lt;br /&gt;&lt;pre space="preserve" id="ctl00_LibFrame_ctl19CSharp" class="code"&gt;type&lt;br /&gt; TPredefinedNumbers = class&lt;br /&gt; private&lt;br /&gt;   class function GetDefaultNumber: Integer;&lt;br /&gt;&lt;br /&gt; published&lt;br /&gt;   class property DefaultNumber: Integer read GetDefaultNumber;&lt;br /&gt;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;class function TPredefinedNumbers.GetDefaultNumber: Integer;&lt;br /&gt;begin&lt;br /&gt; //You can return a hard coded value&lt;br /&gt; Result := 0;&lt;br /&gt;&lt;br /&gt; //or you can get from INI file or database or whatever and return&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-225122978037653502?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/225122978037653502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/225122978037653502'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/thinking-of-using-constants-in-delphi.html' title='Thinking of using constants in Delphi? Consider class properties!'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-8371867709491116656</id><published>2007-02-24T21:57:00.001+05:30</published><updated>2007-02-24T23:05:32.402+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Back from Bihar!</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;So I am finally back from &lt;a href="http://www.tourismofindia.com/sts/stbihar.htm"&gt;Bihar&lt;/a&gt;. Though it wasn't the first time I was visiting Bihar but things are new every time you visit a place. Some bad food habits made me suffer in later part of tour but that's fine considering how much we enjoyed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Take a look at the sample photograph of some exotic location in Bihar. Not exactly like you heard about Bihar in many ghost stories. Right?&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RoSI5lOMR0E/ReB2qWuoHAI/AAAAAAAAACE/2ceE9x6ZXTY/s1600-h/IMG_0653.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RoSI5lOMR0E/ReB2qWuoHAI/AAAAAAAAACE/2ceE9x6ZXTY/s320/IMG_0653.jpg" alt="" id="BLOGGER_PHOTO_ID_5035154853427944450" border="0" /&gt;&lt;/a&gt;&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/5540606804416143572-8371867709491116656?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8371867709491116656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8371867709491116656'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/back-from-bihar.html' title='Back from Bihar!'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_RoSI5lOMR0E/ReB2qWuoHAI/AAAAAAAAACE/2ceE9x6ZXTY/s72-c/IMG_0653.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-2497200159289879315</id><published>2007-02-18T01:04:00.000+05:30</published><updated>2007-02-18T01:05:09.764+05:30</updated><title type='text'>A little Super-Man act</title><content type='html'>&lt;div style="TEXT-ALIGN: center"&gt;&lt;a href="http://bp2.blogger.com/_RoSI5lOMR0E/RddY7WuoG_I/AAAAAAAAAB8/Zl9eLUaTLf4/s1600-h/IMG_0351.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" alt="" src="http://bp2.blogger.com/_RoSI5lOMR0E/RddY7WuoG_I/AAAAAAAAAB8/Zl9eLUaTLf4/s320/IMG_0351.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;Pretty good Super-Man act in my home. Thanks to my friend Shripal for photo-timing...:)&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-2497200159289879315?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2497200159289879315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/2497200159289879315'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/little-super-man-act.html' title='A little Super-Man act'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_RoSI5lOMR0E/RddY7WuoG_I/AAAAAAAAAB8/Zl9eLUaTLf4/s72-c/IMG_0351.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6277460877998830859</id><published>2007-02-17T23:19:00.000+05:30</published><updated>2007-02-17T23:26:33.013+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Cricket tournament preparation</title><content type='html'>So we are fighting for Entity Cup. Here is our official team logo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RoSI5lOMR0E/RddAz2uoG2I/AAAAAAAAAAM/Ipa0mxY6fzM/s1600-h/Tez-Dhaar+Logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RoSI5lOMR0E/RddAz2uoG2I/AAAAAAAAAAM/Ipa0mxY6fzM/s320/Tez-Dhaar+Logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5032562368218405730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tez-Dhaar team is ready to take on any team. Beware opponents!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-6277460877998830859?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6277460877998830859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6277460877998830859'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/cricket-tournament-preparation.html' title='Cricket tournament preparation'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_RoSI5lOMR0E/RddAz2uoG2I/AAAAAAAAAAM/Ipa0mxY6fzM/s72-c/Tez-Dhaar+Logo.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-1933147459443007603</id><published>2007-02-16T11:53:00.000+05:30</published><updated>2007-02-16T12:19:09.407+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Using the HashTable in Delphi for hybrid collections</title><content type='html'>While working on one of my project I came across a problem of maintaining a collection of item who were of different types. As I was using Delphi.NET, I was able to use &lt;a href="http://msdn2.microsoft.com/en-us/library/system.collections.hashtable.aspx#Mtps_DropDownFilterText"&gt;HashTable&lt;/a&gt; class (in System.Collections namespace) for this purpose.&lt;br /&gt;&lt;br /&gt;Here is code snippet:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{$AUTOBOX ON}&lt;br /&gt;procedure UsingHashTable;&lt;br /&gt;var&lt;br /&gt;    hybridCollection: Hashtable;&lt;br /&gt;    stringValue: string;&lt;br /&gt;    dateTimeValue: DateTime;&lt;br /&gt;    integerValue: Integer;&lt;br /&gt;begin&lt;br /&gt;    hybridCollection := Hashtable.Create;&lt;br /&gt;&lt;br /&gt;    stringValue := 'A String...';&lt;br /&gt;    dateTimeValue := System.DateTime.Now;&lt;br /&gt;    integerValue := 1000;&lt;br /&gt;&lt;br /&gt;    //stuff different type of values in the collection&lt;br /&gt;    hybridCollection.Add (1, stringValue); //Add a string&lt;br /&gt;    hybridCollection.Add (2, dateTimeValue); //Add a datetime&lt;br /&gt;    hybridCollection.Add (3, integerValue); //Add an integer&lt;br /&gt;&lt;br /&gt;    //Get the values back&lt;br /&gt;    stringValue := hybridCollection[1] as System.&amp;String;&lt;br /&gt;    dateTimeValue := hybridCollection[2] as DateTime;&lt;br /&gt;    integerValue := hybridCollection[3] as Integer;&lt;br /&gt;&lt;br /&gt;    console.WriteLine (stringValue);&lt;br /&gt;    console.WriteLine (dateTimeValue);&lt;br /&gt;    console.WriteLine (integerValue);&lt;br /&gt;end;&lt;br /&gt;{$AUTOBOX OFF}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above code snippet produces following output:&lt;br /&gt;A String...&lt;br /&gt;16-Feb-07 12:15:05 PM&lt;br /&gt;1000&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-1933147459443007603?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1933147459443007603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/1933147459443007603'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/using-hashtable-in-delphi-for-hybrid.html' title='Using the HashTable in Delphi for hybrid collections'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-52166366186485095</id><published>2007-02-15T15:37:00.000+05:30</published><updated>2007-02-15T15:40:29.664+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Did you know?</title><content type='html'>&lt;ul&gt;&lt;li&gt;The original name for Windows was Interface Manager. &lt;/li&gt;&lt;li&gt;Windows 1.0 first released in 1985. By 1990, over 10 million copies had been sold.&lt;/li&gt;&lt;li&gt;In August 1995, Windows 95 was released in a buying fever so great that even people without home computers bought it. Over one million copies were sold in the first four days, and in the first seven weeks, over 7 million copies were sold worldwide.&lt;/li&gt;&lt;li&gt;Windows is the most widely used operating system in the world, with an estimated 300 million copies in current use.&lt;/li&gt;&lt;li&gt;Windows 3.1 (released in 1992) had three million lines of code, but less than 10 years later, Windows XP (released in 2001) had over 45 million lines of code. Windows Server 2003 has over 50 million lines of code. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-52166366186485095?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/52166366186485095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/52166366186485095'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/did-you-know.html' title='Did you know?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-6149664572229568388</id><published>2007-02-12T22:49:00.000+05:30</published><updated>2007-05-21T23:52:18.604+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>List of my favourite books</title><content type='html'>Software/Programming:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="sans"&gt;&lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/sr=1-1/qid=1171300256/ref=pd_bbs_sr_1/105-0295542-4074035?ie=UTF8&amp;s=books"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/a&gt;&lt;/span&gt; by &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/105-0295542-4074035?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;index=books&amp;amp;field-author=Frederick%20P.%20Brooks"&gt;Frederick P. Brooks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.charlespetzold.com/pw5/"&gt;Programming Windows&lt;/a&gt; by Charles Petzold&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.research.att.com/%7Ebs/3rd.html"&gt;The C++ Programming Language&lt;/a&gt; by Bjarne Stroustrup&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.marcocantu.com/md7/default.htm"&gt;Mastering Delphi 7&lt;/a&gt; by Marco Cantu&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Others:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Kite-Runner-Khaled-Hosseini/dp/1594480001/sr=1-2/qid=1171300892/ref=pd_bbs_2/105-0295542-4074035?ie=UTF8&amp;s=books"&gt;&lt;span class="sans"&gt;The Kite Runner &lt;/span&gt;&lt;/a&gt;by &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/105-0295542-4074035?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;index=books&amp;amp;field-author=Khaled%20%20Hosseini"&gt;Khaled  Hosseini&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="sans"&gt;&lt;a href="http://www.amazon.com/Catcher-Rye-J-D-Salinger/dp/0316769177/sr=1-1/qid=1171301098/ref=pd_bbs_sr_1/105-0295542-4074035?ie=UTF8&amp;s=books"&gt;The Catcher in the Rye&lt;/a&gt; &lt;/span&gt;by &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/105-0295542-4074035?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;index=books&amp;amp;field-author=J.D.%20Salinger"&gt;J.D. Salinger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Alchemist-Fable-About-Following-Dream/dp/0062502182"&gt;The Alchemist&lt;/a&gt; by Paulo Coelho&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Client by John Grisham&lt;/li&gt;&lt;li&gt;Train to Pakistan by Khushwant Singh&lt;/li&gt;&lt;li&gt;Electrical Machines by B.S. Bimbhra&lt;/li&gt;&lt;li&gt;The letter never sent by &lt;span style="font-size:-1;"&gt;Valerii Osipov&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-6149664572229568388?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6149664572229568388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/6149664572229568388'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/list-of-my-favourite-books.html' title='List of my favourite books'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-682420845785113496</id><published>2007-02-12T22:28:00.000+05:30</published><updated>2007-02-14T17:50:26.230+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>The Joel Test: 12 Steps to Better Code</title><content type='html'>Here is an interesting article I came across to judge where a software project stands:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;http://www.joelonsoftware.com/articles/fog0000000043.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Basically it has following questions each of which has to answered in either "Yes" or "No":&lt;br /&gt;&lt;p style="text-align: left;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:Arial Black,Arial,Helvetica;font-size:130%;"  &gt;    The Joel Test&lt;/span&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Do you use source control?  &lt;/li&gt;&lt;li&gt;Can you make a build in one step?  &lt;/li&gt;&lt;li&gt;Do you make daily builds?  &lt;/li&gt;&lt;li&gt;Do you have a bug database?  &lt;/li&gt;&lt;li&gt;Do you fix bugs before writing new code?  &lt;/li&gt;&lt;li&gt;Do you have an up-to-date schedule?  &lt;/li&gt;&lt;li&gt;Do you have a spec?  &lt;/li&gt;&lt;li&gt;Do programmers have quiet working conditions?  &lt;/li&gt;&lt;li&gt;Do you use the best tools money can buy?  &lt;/li&gt;&lt;li&gt;Do you have testers?  &lt;/li&gt;&lt;li&gt;Do new candidates write code during their interview?  &lt;/li&gt;&lt;li&gt;Do you do hallway usability testing? &lt;/li&gt;&lt;/ol&gt;Refer the link for details about these points.&lt;br /&gt;Basically the bottom line is "if your software project scores below 10, your project is in trouble".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-682420845785113496?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/682420845785113496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/682420845785113496'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/here-is-interesting-article-i-came.html' title='The Joel Test: 12 Steps to Better Code'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5799867388536027235</id><published>2007-02-12T21:27:00.000+05:30</published><updated>2007-02-12T22:45:00.951+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>5 Things to understand to make life easier for programmers</title><content type='html'>Here are 5 things understanding which will make life easier for programmers. Unfortunately, it is not the &lt;span style="font-style: italic;"&gt;programmers &lt;/span&gt;who has to understand this but their super headed bosses (so called managers).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;All resources are &lt;span style="font-style: italic;"&gt;not &lt;/span&gt;same. First of all, I don't like when people call programmers "resources". It indicates as if programmers are some kind of robots. Of different make and model but robots none the less. If you are working in software field for more than 6 months you will strongly agree with me. If you still have some doubts, you got to read &lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/sr=1-1/qid=1171300256/ref=pd_bbs_sr_1/105-0295542-4074035?ie=UTF8&amp;s=books"&gt;The Mythical Man-Month&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A design document can &lt;span style="font-style: italic;"&gt;never&lt;/span&gt; be complete unless the coding for that product is complete. Same is true for product specification document. I don't know why it is that hard to understand. My head starts burning when a person with a fat belly asks me "Is design complete? Have you started implementation phase? Why you are still modifying product specification?" It is roughly equivalent to asking "Is the foreplay complete? Have you started sex now?" Next time somebody says "Design for EagleWing is complete and it is in implementation phase", you know he is one of those moron managers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nobody else than a programmer can prepare a schedule for a project. Yes. Nobody else can. Doesn't matter your super smart project manager has just returned from a fancy software estimation training which costed your company more than his one month salary. Doesn't matter a coder is having just 6 months experience. She will still do it better. I bet last time you were given 1 week to complete import table feature in some ToDa application, you wanted to yell "You do this in a week and I will pay your salary for this month."&lt;/li&gt;&lt;li&gt;More bugs does &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; necessarily mean that programmer who implemented that darn thing was poor in programming. There are zillion reasons for more than average bugs being reported. Perhaps, the initial design of software was so bad that it is almost impossible to touch something without breaking the other. Perhaps the tester was far too intelligent and perfect and he found all the bugs at once which were left unnoticed in last couple of years. Perhaps the project is dealing with one of those customer who decide that their banking software should show a warning "Be careful of the snowy weather" after having a sneeze. Perhaps the programmer was &lt;span style="font-style: italic;"&gt;not &lt;/span&gt;given enough time to implement blah feature properly (side effect of point#1).&lt;/li&gt;&lt;li&gt;A design remains unaffected by the language, framework, platform. This is too good to be  true. Can one create an application on Unix with the exact same functionality and user interface as she would do on Windows. Deliberately or accidentally, designs are created to leverage the full power of framework/platform being used and I don't see any harm in that. Any design or specification without so much details of implementation is useless anyway and if they are detailed, they ought to have few things related to implementation scheme peek out.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5799867388536027235?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5799867388536027235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5799867388536027235'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/5-things-to-understand-to-make-life.html' title='5 Things to understand to make life easier for programmers'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-4993786424250969332</id><published>2007-02-12T17:22:00.000+05:30</published><updated>2007-02-14T17:47:46.825+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quotes'/><title type='text'>World of Quotes</title><content type='html'>Decisions in 10 minutes or less, or the next one is free.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- &lt;a href="http://www.microsoft.com/presspass/features/2000/02-16brianv.asp"&gt;Brian Valentine&lt;/a&gt;, the lead developer on Windows 2000&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A step from which we may never recover.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- C. A. R. Hoare (About pointers)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No programming technique solves all problems.&lt;br /&gt;No programming language produces only correct results.&lt;br /&gt;No programmer should start each project from scratch.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Axel-Tobias Schreiner (Author – Object Oriented Programming)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Object-orientation will not replace sliced bread.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Axel-Tobias Schreiner (Author – Object Oriented Programming)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If I had eight hours to chop down a tree, I'd spend six sharpening my axe.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Abraham Lincoln&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;God is real, unless declared integer.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Anonymous&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The purpose of most computer languages is to lengthen your resume by a word and a comma.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Larry Wal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nothing is impossible for the man who doesn't have to do it himself.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Weiler's Law&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A professional programmer is an amateur who never quit.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Morendil&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Alan Kay&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows away your whole leg.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Bjarne Stroustrup (Creator of C++)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The aim of science is not to open the door to infinite wisdom, but to set a limit to infinite error.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Bertolt Brecht, Life of Galileo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A mind trained to look for complex solutions is often stumped by simplicity at first.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Anonymous&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computers intimidate many people. Those who aren't intimidated, tend to become programmers.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Steve Oualline, Author of C Style of coding&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;...one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Robert Firth&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-4993786424250969332?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4993786424250969332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4993786424250969332'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/world-of-quotes.html' title='World of Quotes'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-5594644657320933631</id><published>2007-02-06T15:30:00.000+05:30</published><updated>2007-02-06T15:33:02.415+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'>Making Delphi applications Vista friendly</title><content type='html'>Here is an article I came across while surfing which mentions some basic steps needs to be performed to make Delphi application Vista friendly.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.installationexcellence.com/articles/VistaWithDelphi/Index.html"&gt;http://www.installationexcellence.com/articles/VistaWithDelphi/Index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-5594644657320933631?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5594644657320933631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/5594644657320933631'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/02/making-delphi-applications-vista.html' title='Making Delphi applications Vista friendly'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-8457093497169799081</id><published>2007-01-20T15:36:00.001+05:30</published><updated>2007-01-20T15:58:59.384+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Girl Falls off Motorcycle</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;embed style="width: 400px; height: 326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=4605743187019394414&amp;amp;hl=en" flashvars=""&gt;&lt;/embed&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Some idiot showing off on a bike with his girlfriend on the back. She flys off at about 50 mph.&lt;br /&gt;Watch &lt;a href="http://video.google.com/videoplay?docid=4605743187019394414"&gt;Girl Falls off motorcycle&lt;/a&gt; on Google. Very funny...&lt;br /&gt;&lt;br /&gt;And this one too: &lt;a href="http://video.google.com/videoplay?docid=203268312786159284"&gt;Sexy girl with funny Jim Carrey&lt;/a&gt;&lt;br /&gt;             &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-8457093497169799081?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8457093497169799081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8457093497169799081'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/01/girl-falls-off-motorcycle.html' title='Girl Falls off Motorcycle'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-4261511399153343140</id><published>2007-01-12T11:29:00.000+05:30</published><updated>2007-01-12T11:35:54.034+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'>Feeling like have to buy a restaurant to have dinner?</title><content type='html'>One time or another you might have felt this if you using Delphi 2006 (or Borland Developer Studio as they call it). I came across this Delphi 10 Lite while browsing yesterday and a guy (don't know who he/she is) has done a great job ripping BDS 2006 and making a light weigth developer environment. Loads in couple of seconds and is lightening fast.&lt;br /&gt;&lt;br /&gt;I don't know whether it is completely legal or not and I don't care either. Borland should learn from Delphi Configuration Manager and BDS 2006 start up managers. Why they couldn't add the functionality of various personalities in Delphi 2005 which they had to add later on in Delphi 2006 inspired by the success of Delphi 2005 configuration manager.&lt;br /&gt;&lt;br /&gt;Run a google search on "Delphi 10 Lite" and I am sure you will find some download links.&lt;br /&gt;&lt;br /&gt;Have Fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-4261511399153343140?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4261511399153343140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/4261511399153343140'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/01/feeling-like-have-to-buy-restaurant-to.html' title='Feeling like have to buy a restaurant to have dinner?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry><entry><id>tag:blogger.com,1999:blog-5540606804416143572.post-8635123208046513704</id><published>2007-01-12T11:20:00.000+05:30</published><updated>2007-01-12T11:23:07.391+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>What American accent do I have?</title><content type='html'>So I took a quiz sent by Simon and here are the results:&lt;br /&gt;&lt;br /&gt;&lt;table style="border: 1px solid gray; width: 320px; font-family: arial,verdana,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; background-color: white;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" style="padding: 5px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black;"&gt;&lt;b style="font-family: 'Times New Roman',serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 20px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; margin-bottom: 8px;"&gt;What American accent do you have?&lt;/b&gt; &lt;div style="font-size: 16px; margin-bottom: 4px;"&gt;Your Result: &lt;b&gt;The Inland North&lt;/b&gt;&lt;/div&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 200px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 78%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;p style="border: medium none ; margin: 10px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black;"&gt;You may think you speak "Standard English straight out of the dictionary" but when you step away from the Great Lakes you get asked annoying questions like "Are you from Wisconsin?" or "Are you from Chicago?"  Chances are you call carbonated drinks "pop."&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;The Northeast&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 61%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Philadelphia&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 60%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;The Midland&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;The South&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 38%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;North Central&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 36%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Boston&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 25%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;The West&lt;/td&gt;&lt;td style="padding: 3px; background: white none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="border: 1px solid black; background: white none repeat scroll 0% 50%; width: 100px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-top: 4px;"&gt;&lt;div style="background: red none repeat scroll 0% 50%; width: 25%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: 8px; line-height: 8px;"&gt; &lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2" style="padding: 8px; text-align: center;"&gt;&lt;a href="http://www.gotoquiz.com/what_american_accent_do_you_have"&gt;&lt;b&gt;What American accent do you have?&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gotoquiz.com/"&gt;Quiz Created on GoToQuiz&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I don't know whether the quiz creator did the good job or not because I am not really an American. So don't which "great lakes" quiz creator is talking about....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5540606804416143572-8635123208046513704?l=hemant-jangid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8635123208046513704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5540606804416143572/posts/default/8635123208046513704'/><link rel='alternate' type='text/html' href='http://hemant-jangid.blogspot.com/2007/01/so-i-took-quiz-sent-by-simon-and-here.html' title='What American accent do I have?'/><author><name>Hemant Jangid</name><uri>http://www.blogger.com/profile/09182598548197167953</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></entry></feed>
