<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>annotated in parsing</title><link>http://blogs.msdn.com/santoshz/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>My Dev team is bigger than yours.</title><link>http://blogs.msdn.com/santoshz/archive/2005/10/20/483071.aspx</link><pubDate>Thu, 20 Oct 2005 17:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:483071</guid><dc:creator>santoshz</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/483071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=483071</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;On my drive in today I heard a piece on NPR entitled "&lt;/FONT&gt;&lt;A href="http://www.npr.org/templates/story/story.php?storyId=4966602"&gt;&lt;FONT face=Verdana&gt;Corporate Influence Seen Harming Entertainment Industry&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt;"&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Some analysts and producers say the entertainment industry is struggling because of the corporatization of movie and TV studios. The pressure to keep stock prices and revenues up contributes to less risk-taking on the screen.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana&gt;And I kept thinking how true much of thepiece was about software too.&amp;nbsp;&amp;nbsp;Which then reminded me of Paul Graham's essay "&lt;/FONT&gt;&lt;A href="http://www.paulgraham.com/usa.html"&gt;&lt;FONT face=Verdana&gt;Made in USA&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt;"&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;[Here is a couple of snippets, but I am so tempted to paste almost all of it here]&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;... It sounds like making movies works a lot like making software. Every movie is a Frankenstein, full of imperfections and usually quite different from what was originally envisioned. But interesting, and finished fairly quickly.....&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;... But it's not just that software and movies are malleable mediums. In those businesses, the designers (though they're not generally called that) have more power. Software companies, at least successful ones, tend to be run by programmers. And in the film industry, though producers may second-guess directors, the director controls most of what appears on the screen. And so American software and movies, and Japanese cars, all have this in common: the people in charge care about design-- the former because the designers are in charge, and the latter because the whole culture cares about design...&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT size=3&gt;In the NPR piece, Kim Masters compared movies with television and talked about how the issue of corporate influence is quite different for the two.&amp;nbsp; Since I work for a pretty big software company,&amp;nbsp;I got to wondering if we make movies or television series.&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT size=3&gt;With movies you tell one good story in one sitting (sometimes two, but rarely in a triology).&amp;nbsp; On the other hand with a TV series, you take a context and then stretch out a series of stories that keeps the viewer coming back for more goodness.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT size=3&gt;If, like my company does, you version your software, then I am inclined to believe I in the TV series business, not the movie one.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana&gt;So my question is, what is the best size for a software product team to produce a great series?&amp;nbsp; How big does your corporate parent have to be before it starts getting in the way between you and your loyal viewer?&lt;/FONT&gt;&lt;FONT face=Verdana size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=483071" width="1" height="1"&gt;</description></item><item><title>Old school problem solvers wanted</title><link>http://blogs.msdn.com/santoshz/archive/2005/03/04/385282.aspx</link><pubDate>Fri, 04 Mar 2005 17:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:385282</guid><dc:creator>santoshz</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/385282.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=385282</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;My commute was longer than usual today, so I had some extra time to read and think.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;The April 2005 issue of &lt;/font&gt;&lt;a href="http://www.sdmagazine.com/"&gt;&lt;font face="Verdana"&gt;Software Development&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; (available only in print form at this moment – See! advertisers still prefer eyeballs on paper to eyeballs on pixels) has an interesting piece of “Feedback” (why not just call it Letters to the Editor?) from a James S. Taylor.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;In that, James’ son says “Fewer and fewer projects need problem solvers of the old school.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What’s needed are a crew of programmers who can implement the deliverables in the time available, and if it takes gigahertz or terabytes, so what?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They’re cheap.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Only when you’re deep in some embedded system where you can’t solve the problem by throwing hardware at it do you require a real problem solver, and no one does that any more.”&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;I liked James’ short letter because it hit two points I have been thinking about quite a bit lately, and it did so in a thought-provoking way.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The first, as alluded to above, is about “What type of engineering is Software Development really?”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The second, is about “What makes a good hire?”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Anyway, I was reminded of a comment that I want to share here.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It was made by a fellow-employee when we took our &lt;em&gt;Interview Training&lt;/em&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(Yes, we do take interview training at Microsoft.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And I personally think that it a good thing, because of how important the whole hiring process is.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If you rank the things you do in terms of their impact on your company per minute you spend on it, there is nothing that comes out higher than interviews.)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;After two or three hours of being drilled on the fine art of judging a candidate, this person had had enough and threw up his hands.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;He said "If you come to me and tell me that you are one heck of a runner, do I ask you ‘Tell me about a time in your past when you ran well?’ or ‘If you were going to have to run this race in five minutes, and you could not find your track shoes, how would you do it?’&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;or ‘Tell me how you would deal with such and such on a team of runners?’&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Dammit, NO!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I'd say&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;‘Okay, let’s see you run.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then I will know if you are a good runner or not.’ "&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;And something that James Taylor said, suddenly went click, and I realized that just like an actor, or singer, or other performer has to show up at an audition, get in a long line, and then strut his or her stuff for a few minutes, there comes a point during every Microsoft interview (the dreaded &lt;em&gt;whiteboard&lt;/em&gt;) when you have to strut your stuff.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And each of the interviewers sitting there watching you has to decide inidividually whether you demonstrate creativity and intuition, and can leverage it effectively to solve problems.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;(That was James' point, that these are what&amp;nbsp;predict a good&amp;nbsp;programmer hire.)&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;If you want to strut your stuff, we still have some positions available in C# (&lt;a class="listitem" id="CategoryDisplay1_Categories_CatList__ctl3_LinkList__ctl1_Link" href="http://msdn.microsoft.com/vcsharp/jobs"&gt;&lt;font color="#5c9a3d"&gt;both in Test&amp;nbsp;&amp;amp; Dev,&amp;nbsp;junior and senior)&lt;/font&gt;&lt;/a&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Unlike the stage audition, I believe we also give you bus-fare home, so what's to lose?&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=385282" width="1" height="1"&gt;</description></item><item><title>Cool!</title><link>http://blogs.msdn.com/santoshz/archive/2005/02/09/369829.aspx</link><pubDate>Wed, 09 Feb 2005 15:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:369829</guid><dc:creator>santoshz</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/369829.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=369829</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;Yesterday, I was so pleasantly surprised by a product, that I actually went and got all my colleagues, and showed this to them.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;I was installing &lt;/font&gt;&lt;a href="http://www.microsoft.com/windows/virtualpc/default.mspx"&gt;&lt;font face="Arial"&gt;Virtual PC&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; for the first time, and when it came time to configure my first virtual machine, a dialog asked me to name it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So, quite predictably, I typed in "MyWin98".&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;(Yes, we still do support the C# compiler on Win98, and part of my team’s job is to make sure all the newest and fanciest and greatest continues to work on your ancient heap.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In this case, I needed to install Win98, Second Edition, Japanese.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When I said ‘your’ back there, I was including myself since I still have a machine at home running Win95 that gets daily use. But I digress…)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;The next step of the dialog was to select an Operating System for the virtual machine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; Here comes the cool part.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;Windows 98, had &lt;i style="mso-bidi-font-style: normal"&gt;already&lt;/i&gt; been selected in the drop down list!&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;I have never seen a Microsoft product anticipate me this well.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of course, my office-mate’s (soon to be my ex-office mate because he gets his own office next week) first reaction was to try a host of other names to see if he could trip it up.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Typical QA….. doesn’t want to know what it &lt;i style="mso-bidi-font-style: normal"&gt;can&lt;/i&gt; do, just wants to find out what it can’t.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Well, suffice to say that I was happy it recognized versions of Win2k3 too.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;Thanks &lt;/font&gt;&lt;a href="http://www.microsoft.com/windows/virtualpc/default.mspx"&gt;&lt;font face="Arial"&gt;Ben&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;, and/or those on the Virtual PC team who thought this up and took the trouble to implement it.&amp;nbsp; (I can picture some Tester in a design meeting rolling her eyes and thinking, "Yeah, now we have to figure out what Norwegians like to call their personal electronic friends and test all variations of that.")&amp;nbsp; Actually, I am willing to wager that a tester thought up this idea."&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=369829" width="1" height="1"&gt;</description></item><item><title>Wanna have fun?</title><link>http://blogs.msdn.com/santoshz/archive/2005/02/05/367645.aspx</link><pubDate>Sat, 05 Feb 2005 09:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:367645</guid><dc:creator>santoshz</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/367645.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=367645</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;If you &lt;em&gt;know&lt;/em&gt; what having fun means for you, tell us at &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/vcsharp/jobs"&gt;&lt;font face="Verdana"&gt;http://msdn.microsoft.com/vcsharp/jobs&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;(Tell them&amp;nbsp;the guy on the park bench&amp;nbsp;sent you.&amp;nbsp; And if you are tempted to send &lt;A href="http://blogs.msdn.com/jobsblog/"&gt;Gretchen &lt;/a&gt;flowers, ... I'd wait another week or so, and &lt;em&gt;do &lt;/em&gt;avoid daffodils, especially the sidewalk variety)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=367645" width="1" height="1"&gt;</description></item><item><title>It’s not sexy.  But it sure is fun.</title><link>http://blogs.msdn.com/santoshz/archive/2005/02/03/366845.aspx</link><pubDate>Fri, 04 Feb 2005 05:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:366845</guid><dc:creator>santoshz</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/366845.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=366845</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Don’t tell anyone, but it is spring here in &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;Seattle&lt;/st1:City&gt;&lt;/st1:place&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The daffodils in the patch of dirt outside my front door have started peeping out.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;A blossom tree on my way to work is in full bloom.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And I saw an e-mail thread yesterday trying to get a crowd together to go to the nearest ski-able snow - in Tahoe.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;All this feels strange, because all the Valentine’s Day books I have been reading with my son recently have had pictures of snow in them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Maybe it is only adults who see these incongruities.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;After all, during my childhood in the tropics I read my fair share of American and British children’s books (I won’t date myself by telling you which ones), but I don’t recall ever being perturbed that I was not likely to ever see any real snow in my life.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Segue to the other big sign of new beginnings in the &lt;st1:place w:st="on"&gt;Puget Sound&lt;/st1:place&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;At work, we recently concluded our first &lt;i style="mso-bidi-font-style: normal"&gt;Test Day &lt;/i&gt;– an in-house, one-day conference devoted to Testing.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It was like any regular conference, except you did not have to catch a plane and stay in a hotel.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It even had a little trade show.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However, it was different from a regular conference (like the &lt;/font&gt;&lt;a href="http://www.stpcon.com/"&gt;&lt;font face="Verdana"&gt;one&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; I attended in &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Baltimore&lt;/st1:place&gt;&lt;/st1:City&gt; back in Dec.) in that there were some very good career track sessions where senior Testers talked about career paths and options.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Another difference was that you did not get any time to stand around and chat with people who are total strangers, yet with whom you share this special bond. (Like being on the slopes or the greens, I guess.)&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Of late, I’ve also noticed a lot more blog activity from the Testing community here are Microsoft.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(Of course, maybe it was always there, but, as usual, I wake up to the party when it is just finishing.)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(&lt;i style="mso-bidi-font-style: normal"&gt;No&lt;/i&gt;, I am not going to waste any more time searching for a bunch of links)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;A lot of this blogging seems to be about what it means to be a &lt;/font&gt;&lt;A href="http://blogs.msdn.com/jobsblog/archive/2005/01/19/356412.aspx"&gt;&lt;font face="Verdana"&gt;Tester at Microsoft&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is almost as if this community has hit adolescence – the outward swagger along with the internal nerve-wracking quest for self-identity.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;This raising of the public profile of Testing is interesting, because I normally think of Testers as being on the dour end of the spectrum.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of course, I work daily with all sorts of people - the chaotic, the orderly, the quiet, the flamboyant, those who rush into action, and those who plan excessively – so I should not be tarring them all with the same brush.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But as a breed I think we Testers are conservative, and a bit pessimistic.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We are not the creative energy of an organization.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Rather we have the reputation of being the naysayers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We don’t build anything, yet constantly argue that it is broke. It is our business to know what can go wrong (and like &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Tom&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Ridge&lt;/st1:PlaceName&gt;&lt;/st1:place&gt; we even color code the status of our features).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We are not people who can do a Steve (Ballmer or Jobs, your pick) in front of the faithful.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Verdana"&gt;The spurt of blogging is positively uplifting when compared with the reading I have been doing recently about Software metrics, and Defect Analysis: 6σ, CMM, Blackbelts, TSP, PSP, ODC, QGM, TQM, and on and on and on.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So much process!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Of course, if you are Boeing (you forget, I live in &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Jet&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;City&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;), or GE (the six sigma kings who make the engines for Boeing) all this matters a great deal.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is easy for you and me to see what an airplane falling out of the sky can do to their bottom lines. (Mind you, with each passing Windows security bug, Microsoft moves one step closer to that.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And if Air New &lt;st1:place w:st="on"&gt;Zealand&lt;/st1:place&gt; takes delivery of the first 787 - yes, the 7E7 got its official name last Friday - before we ship Longhorn, then &lt;i style="mso-bidi-font-style: normal"&gt;maybe&lt;/i&gt; we should consider changing things around so we become more like Boeing.)&lt;span style="FONT-SIZE: 8.5pt; FONT-FAMILY: 'MS Shell Dlg'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;All this - the Baltimore conference, Test Day, Testing blogs, Quality Processes, Boeing &amp;amp; GE – all this finally kinda gelled in my mind this morning as I drove in to work, &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;We – the Testing community at Microsoft&lt;i style="mso-bidi-font-style: normal"&gt; - are&lt;/i&gt; different.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We &lt;i style="mso-bidi-font-style: normal"&gt;do&lt;/i&gt; live in a different land – where the trees are in bloom and there is no snow in February.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We do feel out of place amidst the regular Testing literature and conferences.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maybe we just need to be children again, and not be so bothered by the difference.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Here’s why we are different.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In my mind, software projects at Microsoft are bit chaotic. (you may detect the lingering after-taste of Paul Graham’s &lt;/font&gt;&lt;a href="http://www.paulgraham.com/usa.html"&gt;&lt;font face="Verdana"&gt;Made in USA&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; essay here.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I myself did not realize it until many hours after I first wrote this para.)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The product grows bit by bit around bursts of intense creativity by individuals or very small teams.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Designs change for technical reasons.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Market pressures come to bear.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Stuff gets ripped out.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;New stuff gets put in.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Things that were previously not possible, suddenly become.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Stuff that was carefully planned gets canned.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The mass of features, both old and new, aggregate in to the final package, with interconnections to the rest of our product line.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Almost from the first sketch on a napkin, to the final shrink wrap on the glitzy box, we in Test are there -hovering over every process, like clucking mother hens worried about what almost surely is going wrong right now.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We are constantly trying every thing we can to make sure that there is nothing wrong in the product, as well as everything right in it.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;If you think of a software project as akin to building a large, new public garden, then we are the groundsmen in the ever-shifting landscape.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If we don’t choose the seeds, and we don’t plant or water them, and we don’t lay down the pathways through which the users will enjoy our garden – since there are other people (maybe even non-dour ones) who do this, and who do it extremely well – then what &lt;i style="mso-bidi-font-style: normal"&gt;is&lt;/i&gt; it we do then?&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Well, when we first see the plans we might remark that service trucks might not be able to get to the back of the buildings.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We might observe that the sidewalk is not wide enough for the crowd on a busy day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We might point out that it is not intuitive as you round the first corner that you should keep going to the right, rather than cross over to the left.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maybe that tree is going to leave a lot of leaves on the ground in the fall.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And if you dropped in a paved path just here, it would make testing much quicker easier.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;As construction gets under way, we are there every day, sitting in the benches, walking down the pathways, reading the signs.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And each time we hope we see it just the way the first-time visitor would, and just as the old-timer would too. Where is the nearest rest-room?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Is it sign-posted?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if you came at the sign from the other side?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if you did not read English.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if you could not see?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Why do I always have to go all the way around to get to it?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Can a wheelchair go on this path?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Does that tree block the view of the lake from this bench?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Is the bench back in the same place after they ripped it out to lay the new plumbing?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Did they put the sign back too? Did they paint it just the right color?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What would happen to the lake if it rained four days straight.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if it rained four days straight with one foot of snow on the ground?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if the rain was warm?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if the power went during the snow and did not come back when it started to rain?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What if someone held a banquet at night?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Or a rock concert?&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;When the first alpha and beta visitors come in, we wait with bated breath to see what they will find.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Oops, no one caught the possibility of splinters on those benches.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Hey, we used that same wood for the picnic table across there.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The signage is not working, we are going to have to re-think this.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Note to self: Sign got repainted and repositioned - Did they stick with the correct color? &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Is the post blocking any views in the new place?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Damn, they extended the parking lot without extending the sidewalk; too late to fix that now.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;And so on and on it goes, with more and more tension until the last service truck (and Program Manager, and Developer, and Architect, and Usability Expert and User Educator, and Setup Team member) leaves before opening day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then, it is just us and the final product, and a few short hours for the final walk-through.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It is almost like the mother of the bride, proud of what waits on the other side, yet reluctant to let her baby go.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(For a blow-by-blow account of the last week of our first VS 2005 Beta, see &lt;/font&gt;&lt;A href="http://blogs.msdn.com/somasegar/archive/2004/07/09/178789.aspx"&gt;&lt;font face="Verdana"&gt;this blog&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; by Soma, ex-tester, now VP of our Division.)&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;That’s what we do – except we ‘walk’ and ‘look’ and ‘read’ and ‘sit’ and ‘cause storms’ in a real software application, using little code golf carts we write, and little code binoculars we write, and little code rainmakers we write, and big harnesses we write that let us do this again and again for months without going crazy.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;But if you’ve ever worked in QA - as is very likely if you are this far into my ramble - then all this is old hat for you.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“Tell me something new” you say.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;The key is - and this came to me only today – the key is that while we are inextricably linked into each part of the process, we Testers at Microsoft also need to be as transparent and frictionless as possible.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We can’t weigh down the creative, and at times chaotic, flow with layers and layers of process that bring the whole creaking machine to a halt.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;It is our role to apply only just as much pressure as necessary at each step to ensure a high quality product, on time and on budget.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some times this could be the barest of nudges.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Sometimes we might have to refuse to sign-off.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When we do the former, we our doing our job well – we’ve been looking in the right places, at right time, in the right way, and we know exactly &lt;i style="mso-bidi-font-style: normal"&gt;where&lt;/i&gt;,&lt;i style="mso-bidi-font-style: normal"&gt; when&lt;/i&gt; and &lt;i style="mso-bidi-font-style: normal"&gt;how&lt;/i&gt; hard to nudge.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If we find ourselves doing the latter, we obviously failed to intervene adequately at all the previous points.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;So, … do we know how to do this process-free, just-in-time QA?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Heck, no!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You never &lt;i style="mso-bidi-font-style: normal"&gt;know&lt;/i&gt; how to do such things.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You just &lt;i style="mso-bidi-font-style: normal"&gt;constantly, constantly, constantly&lt;/i&gt; try to get better, and then one day it looks to others like you know what you are doing.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s then you realize that you are no longer an adolescent – You &lt;i style="mso-bidi-font-style: normal"&gt;know&lt;/i&gt; what music you like, what clothes you like, what food you like, and what having fun means – especially while at work.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Of course, since this is Microsoft and the landscape is an application, you have to understand software.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Nay, it has to be in your blood and at your every synapse.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You have to be able to design and write code like the best.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Otherwise you would not know where to look, how to look, and when to look for bugs.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You would not be able to get it all done in time, with confidence.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But in Test it is a lot, lot more than that.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s also about people, about processes, about organizations, about customers.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s both about keeping bugs out of the product and about getting those that are in fixed.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;It’s about being transparent.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s about leaving your mark, with not a line of shipping code to your name.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;It’s not sexy.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;But it sure is fun.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana" color="#0000ff"&gt;&lt;/font&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" color="#0000ff" size="2"&gt;[I owe this blog to Suma on the C# IDE team.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This piece began as a conversation with her, and she urged me to blog it, and then stuck around to provide very useful comments on a draft version.]&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana" color="#0000ff" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=366845" width="1" height="1"&gt;</description></item><item><title>Guilty!</title><link>http://blogs.msdn.com/santoshz/archive/2005/02/02/366085.aspx</link><pubDate>Thu, 03 Feb 2005 06:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:366085</guid><dc:creator>santoshz</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/366085.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=366085</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;The defense would like to enter a plea of guilty to the charge of “1&lt;sup&gt;st&lt;/sup&gt; degree hypocrisy.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;Since my last posting, I have put on weight, eaten more chocolate than I care to confess, and had not an iota of exercise (what &lt;i style="mso-bidi-font-style: normal"&gt;is&lt;/i&gt; the official unit of exercise? &lt;font size="2"&gt;You can try &lt;/font&gt;&lt;/font&gt;&lt;a href="http://beta.search.msn.com/"&gt;&lt;font face="Verdana" size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;, but I did not have much luck.&lt;/font&gt;)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Meanwhile the official &lt;/font&gt;&lt;a href="http://www.msnbc.msn.com/id/6816952/"&gt;&lt;font face="Verdana"&gt;recommendation for exercise&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt; has gone up again, to 60 minutes a day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To which my office-mate who runs daily, come pain or rain, remarked “Well, now the average American gets 60 minutes less exercise than they ought to.”&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;a href="http://www.smartmoney.com/debt/advice/index.cfm?story=bankruptcy22004"&gt;&lt;font face="Verdana"&gt;Today’s scary news&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana"&gt;:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Would $12000 of after-insurance medical expenses be enough to send you into chapter 7 or 13?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(Why call it insurance, if it is does not provide catastrophic coverage?)&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;(Btw, &lt;em&gt;Search&lt;/em&gt; - don't you like it how old words take on new meanings - has a long, long way to go.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Five sentences into this piece, and I have already spent at least 30 minutes in search-engine land with nothing to show for it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I have one question (unit of exercise) still unanswered, and two (Federal exercise recommendations and the Harvard Consumer Bankruptcy Project) for which I cannot track down the original sources.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As for a link to a recent article about Google versus MSN, I guess maybe there just aren’t any. &lt;span style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;)&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Verdana"&gt;I was going to write about &lt;strong&gt;Testing at Microsoft&lt;/strong&gt;, but now that’s going to have to wait for another day (Thanks MSN, thanks Google).&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Verdana"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=366085" width="1" height="1"&gt;</description></item><item><title>Obesity inversely linked to income</title><link>http://blogs.msdn.com/santoshz/archive/2004/08/17/215826.aspx</link><pubDate>Tue, 17 Aug 2004 17:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:215826</guid><dc:creator>santoshz</dc:creator><slash:comments>22</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/215826.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=215826</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana"&gt;It's been pretty obvious to my wife and myself that to eat 'well' in the US you need to be 'rich.'&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;Finally, a news story from NPR's Morning Edition that quantifies this succinctly. (&lt;span class="pagetitle"&gt;&lt;a class="headline" href="javascript:getMedia('ME', '17-Aug-2004', 8, 'WM,RM');"&gt;&lt;font face="Times New Roman"&gt;Obesity Often Linked to Income&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;font face="Times New Roman"&gt;Americans eat about 50 percent of their meals in restaurants and fast-food counters, a habit tied to the nation's obesity epidemic.)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;&lt;font face="Times New Roman"&gt;&lt;font face="Verdana"&gt;The &lt;a href="http://www.whitehouse.gov/fsbr/income.html"&gt;median household income&lt;/a&gt; in the US is&amp;nbsp;currently hovering at about $42,000.&amp;nbsp; If your family&amp;nbsp;earns more than this, you could consider yourself rich - certainly not poor.&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;&lt;font face="Times New Roman"&gt;&lt;font face="Verdana"&gt;The median family apparently spends about $25 per person per week on food (($3.50/day or $1300/year - approximately 12% of gross income; probably closer to 25% once you have deducted taxes,&amp;nbsp;insurance premiums,&amp;nbsp;and housing).&amp;nbsp; Thus half of the United States can afford about &lt;font color="#0000ff"&gt;&lt;em&gt;$1.80 per 1000 calories per day&lt;/em&gt;&lt;/font&gt;, assuming a 2000 Calorie diet.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;Now come the interesting numbers.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;If you limit yourself to 2000 Calories a day and to Oreo cookies (not that you would!), you can manage on $1.50.&amp;nbsp; If you stuck to apples, that would cost you about $8-$10 a day for the same 2000 Calories.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;More realistically, bread, chips, cookies, and off-the-shelf prepared foods run about &lt;em&gt;&lt;font color="#0000ff"&gt;$1 per 1000&lt;/font&gt;&lt;/em&gt; Calories.&amp;nbsp; Whereas fresh fruit, fruit juices, and fresh produce will cost you about &lt;em&gt;&lt;font color="#0000ff"&gt;$5-$10/1000 Calories&lt;/font&gt;&lt;/em&gt;.&amp;nbsp; If you add lean meats and fish to the mix, your costs go even higher.&amp;nbsp; The Atkins diet has apparently been costed at $15 per person per day (at $5,500 per person per year, that's&amp;nbsp;more than four times what the median American can afford!)&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;This more or less confirms&amp;nbsp;another new story I remember from many years ago, where one of the people interviewed ate 3 meals a day, 7 days a week, at McDonalds, because that was all he could afford.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;If you assume that a good, employer-provided health insurance plan costs about $3,600 today, that is &lt;em&gt;&lt;font color="#000000"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;(!) times what the median American spends on food. (Admitedly, the health plan usually covers the whole family - still the cost of food and health care are now almost comparable.)&amp;nbsp;&amp;nbsp;For each&amp;nbsp;overweight/obese person in the family, add a 10%-20% premium for additional healthcare expenses.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;Now that you can get your HMO to pay for your quit-smoking and weight-loss programs, how long before they start contributing to your groceries too?&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana"&gt;&lt;span class="pagetitle"&gt;Follow this &lt;a href="http://depts.washington.edu/uwcphn/inthenews.html"&gt;link &lt;/a&gt;for more news stories.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=215826" width="1" height="1"&gt;</description></item><item><title>New car models and not lost in translation.</title><link>http://blogs.msdn.com/santoshz/archive/2004/06/28/168149.aspx</link><pubDate>Mon, 28 Jun 2004 22:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:168149</guid><dc:creator>santoshz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/168149.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=168149</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Two compare-and-contrast scenarios consumed some idle cycles in my brain over the weekend.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;One was a recurring &amp;#8220;What if?&amp;#8220; I tend to ponder over.&amp;nbsp; What if someone with a product cycle or two from the automotive industry under his/her belt moved to software development?&amp;nbsp; What new ideas would they bring?&amp;nbsp; (Obviously I see a good number of parallels between the automotive and software industries.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The latest bout of this train of thought was provoked when I took our Subaru Legacy wagon in for an oil change, and admired the new 2005 model.&amp;nbsp; Little did I know that they were offering me $25 to take a test drive - only&amp;nbsp;later that day did I happen to find the coupon in the latest installment of Subaru's little monthly mailing to owners called &lt;EM&gt;&lt;A href="http://www.drive.subaru.com/"&gt;Drive&lt;/A&gt; &lt;/EM&gt;- they devoted the entire issue to a summary of the 5-year process that brings a new model to market.&amp;nbsp; Of course it was all PR and marketing, but it did get me thinking again about the parallels, especially since the product I work on is coming to the tail end of a similar process as it readies itself for the release of its 2005 model.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;[Place holder for my thoughts - if I ever get the time.]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The other train of thought was prompted by recent discussions with &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/daigoh"&gt;&lt;FONT face=Verdana size=2&gt;Daigo&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt;&amp;nbsp;and some basic reading on compilers that I am currently doing.&amp;nbsp; Daigo is very particular that code read well - and he is very clear when he reads code if is well-written or not.&amp;nbsp; This is an aesthetic I would dearly love to have (your suggestions on how to develop this are most welcome).&amp;nbsp; I do have it for English - both fiction and non-fiction (at least I know, like Daigo, what I like and don't like).&amp;nbsp; Now English is a dynamic language, with a vocabulary, a grammar, and an idiom (relevant to your locale) - If one were to cultivate a style that was free of ambiguity, easily revised, edited, and translated, what would that be?&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;[Yet another place holder .....]&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=168149" width="1" height="1"&gt;</description></item><item><title>If it aint broke.....</title><link>http://blogs.msdn.com/santoshz/archive/2004/06/16/157125.aspx</link><pubDate>Wed, 16 Jun 2004 14:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:157125</guid><dc:creator>santoshz</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/157125.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=157125</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;At what point does a system become so broke that you can't fix it, and must build a completely new one from scratch?&lt;/SPAN&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;As one working in the trenches of QA/Test, I lean towards the viewpoint that we do what we can to uncover defects and quantify the level of quality, but by ourselves we can't ensure the customer experience.&amp;nbsp; Hence my sympathy last week with Mike Unum.&amp;nbsp; Of course, we constantly try to be more effective, efficient and innovative - but always within an existing process.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;However, if, as may well be the case, the proportional cost of QA/Test in the product lifetime is going up, then do we still have time to reverse the trend before it comes time to sell our processes to management trainers to use as case studies?&amp;nbsp; Or should we be reading the writing on the wall ...? (I acknowledge that software quality keeps getting better.&amp;nbsp; But is the economic cost sustainable?)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Why the sudden pessimism?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;Driving in to work today an item from the new headlines got me thinking - the quality of health care is steadily getting better for those whose companies can afford the double-digit inflation.&amp;nbsp; And those who cant?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The Census Bureau estimates that over 43 million Americans did not have &lt;EM&gt;any&lt;/EM&gt; health insurance in all of 2002. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="http://www.familiesusa.org/site/PageServer"&gt;Families &lt;/A&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:country-region w:st="on"&gt;&lt;A href="http://www.familiesusa.org/site/PageServer"&gt;USA&lt;/A&gt;, &lt;/st1:country-region&gt;&lt;/st1:place&gt;looking only&amp;nbsp;at the Census Bureau data, has concluded that almost 82 million Americans under 65 &lt;EM&gt;(1 in 3)&lt;/EM&gt; did not have health insurance at some point in&amp;nbsp;2002 and 2003 - and a good number of these were employed, often with good paying jobs. (And this does not even address those who have insurance, with reduced coverages.)&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Among the key findings of their &lt;A href="http://www.familiesusa.org/site/DocServer/82million_uninsured_report.pdf?docID=3641"&gt;report&lt;/A&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;One out of three people in the &lt;st1:country-region w:st="on"&gt;&lt;st1:place w:st="on"&gt;United States&lt;/st1:place&gt;&lt;/st1:country-region&gt; under the age of 65 went without health insurance for all or part of the two-year period from 2002-2003 (approximately 81.8 million uninsured people&amp;#8212;32.2 percent of those under the age of 65).&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT,Bold; mso-bidi-font-family: 'AmerigoBT,Bold'"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #231f20; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;Two-thirds (65.3 percent) of the 81.8 million uninsured people were without health insurance coverage for six months or longer during 2002-2003. Over half (50.6 percent) of the uninsured were without health coverage for nine or more months.&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;More than four in five individuals (84.5 percent) who went without health insurance during 2002-2003 were connected to the workforce in December 2003&amp;#8212;78.8 percent were employed, and 5.7 percent were actively looking for employment.&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT,Bold; mso-bidi-font-family: 'AmerigoBT,Bold'"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #231f20; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;A quarter (25.2 percent) of working individuals and their families with incomes between 300 and 400 percent of the federal poverty level (from $55,980 to $74,040 a year for a family of four in 2003) were uninsured.&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;SPAN&gt;Hispanic and African American people were much more likely to be uninsured compared to white, non-Hispanic people: 59.5 percent of Hispanics and 42.9 percent of African Americans were uninsured, compared to 23.5 percent of white, non-Hispanics.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;What are they going to say about us (QA/Test)&amp;nbsp;5 or 10 years from now?&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: AmerigoBT; mso-bidi-font-family: AmerigoBT"&gt;Of course, our customers will vote with their feet before it comes to this, but that does not rule out the obituaries ...&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=157125" width="1" height="1"&gt;</description></item><item><title>The XA/21 bug</title><link>http://blogs.msdn.com/santoshz/archive/2004/06/10/153035.aspx</link><pubDate>Thu, 10 Jun 2004 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:153035</guid><dc:creator>santoshz</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/153035.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=153035</wfw:commentRss><description>&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;In the feedback to my last posting, Balaji said&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana size=2&gt;&amp;#8220;It has been by personal experience too. If we devote much time and effort to architecture, design, clarifying requirements, attention to detail etc, the outcoming product/feature is usually pretty good with very few bugs.&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;No doubt &amp;#8220;pretty good with very few bugs&amp;#8221; is relative to the application market you are in.&amp;nbsp; Still, I am sure that every tester knows only too well the feeling of someone else finding this &lt;EM&gt;impossible&lt;/EM&gt; bug, and then wondering &amp;#8220;Could we have improved out testing methodology so that we caught that one before the egg hit our faces?&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;At this point I think the world (deep down aren&amp;#8217;t we all testers?) divides into two camps &amp;#8211; one which accepts the occasional smell of egg as fact of life, and another that says it is time to learn from past mistakes and re-engineer the process so it can never happen again?&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;So how do you think the folks at GE Power Systems felt when they finally found the&amp;nbsp;&lt;A href="http://www.securityfocus.com/news/8016"&gt;XA/21 bug&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;?&amp;nbsp; Before I tell you, let me give you more detail.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;GE Power is no Johnny-come-lately &amp;#8211; their annual revenues are in excess of $ 20 billion &amp;#8211; and their &lt;A href="http://www.gepower.com/prod_serv/products/scada_software/en/xa21.htm"&gt;XA/21 system&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt; has over 3 million operational hours (340 years!) since it was first introduced in 1990.&amp;nbsp; So, on August 14th, 2003, when 50 million people in the Northeast United States and Canada lost power, I am guessing that their QA staff in Florida went home pretty unconcerned that their XA/21 energy management and supervisory control and data acquisition (EMS/SCADA) system had any role to play in the &amp;#8216;&lt;A href="http://www.noaanews.noaa.gov/stories/s444.htm"&gt;perfect storm&lt;/A&gt;&amp;#8217;&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Verdana&gt; that hit that day. &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;But by late October, after GE and their energy consultants from KEMA Inc spent weeks going through 4 million of lines of C/C++ code, they had identified&amp;nbsp;the race condition that led to operators at FirstEnergy Corp&amp;#8217;s Akron, Ohio control room being in the dark while three of the company's high voltage lines sagged into unkempt trees and tripped.&amp;nbsp; Because the alarm portion of the XA/21 system failed silently, control room operators didn't know they were relying on outdated information; apparently, choosing to trust their systems, they even discounted phone calls warning them about worsening conditions on their grid.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;There is an interesting fractal symmetry here, with the XA/21 encountering its own little perfect storm that caused the unknown race condition to be hit, which in its way was an ingredient in the larger storm in North America that day.&amp;nbsp; The drama in &lt;A href="http://www.theregister.co.uk/2004/04/08/blackout_bug_report/"&gt;The Register&amp;#8217;s&lt;/A&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face=Verdana&gt;reporting is not something I normally associate with the software industry.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;FONT face=Verdana&gt;
&lt;P align=justify&gt;&lt;BR&gt;&lt;FONT size=2&gt;Sometimes working late into the night and the early hours of the morning, the team pored over the approximately one-million lines of code that comprise the XA/21's Alarm and Event Processing Routine, written in the C and C++ programming languages. Eventually they were able to reproduce the Ohio alarm crash in GE Energy's Florida laboratory, says Mike Unum [manager of commercial solutions at GE Energy]. "It took us a considerable amount of time to go in and reconstruct the events." In the end, they had to slow down the system, injecting deliberate delays in the code while feeding alarm inputs to the program. About eight weeks after the blackout, the bug was unmasked as a particularly subtle incarnation of a common programming error called a "race condition," triggered on August 14th by a perfect storm of events and alarm conditions on the equipment being monitoring. The bug had a window of opportunity measured in milliseconds.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;BR&gt;&lt;FONT size=2&gt;&amp;#8220;There was a couple of processes that were in contention for a common data structure, and through a software coding error in one of the application processes, they were both able to get write access to a data structure at the same time," says Unum. "And that corruption lead to the alarm event application getting into an infinite loop and spinning."&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;BR&gt;&lt;FONT size=2&gt;After the alarm function crashed in FirstEnergy's controls center, unprocessed events began to cue [sic] up, and within half-an-hour the EMS server hosting the alarm process folded under the burden, according to the blackout report. A backup server kicked-in, but it also failed. By the time FirstEnergy operators figured out what was going on and restarted the necessary systems, hours had passed, and it was too late.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;So in which of my camps might GE find itself?&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=justify&gt;&lt;FONT size=2&gt;The company did everything it could, says Unum. "We test exhaustively, we test with third parties, and we had in excess of three million online operational hours in which nothing had ever exercised that bug," says Unum. "I'm not sure that more testing would have revealed that. Unfortunately, that's kind of the nature of software... you may never find the problem. I don't think that's unique to control systems or any particular vendor software."&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=justify&gt;&lt;BR&gt;Even if Unum is a manager, I am guessing he has some grease under his fingernails, knows is customers, and has to get a product out the door while maintaining his company&amp;#8217;s share value.&amp;nbsp; On the other hand&amp;nbsp; &lt;A href="http://www.csl.sri.com/users/neumann/neumann.html"&gt;Peter Neumann&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;, a principal scientist at SRI International, can take a more detached, academic, arm&amp;#8217;s-length view.&amp;nbsp; (&amp;#8220;My main research interests continue to involve security, crypto applications, overall system survivability, reliability, fault tolerance, safety, software-engineering methodology, systems in the large, applications of formal methods, and risk avoidance.&amp;#8221;) &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana size=2&gt;[He says] that the root problem is that makers of critical systems aren't availing themselves of a large body of academic research into how to make software bulletproof.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana&gt;
&lt;P align=justify&gt;&lt;BR&gt;&lt;FONT size=2&gt;"We keep having these things happen again and again, and we're not learning from our mistakes," says Neumann. "There are many possible problems that can cause massive failures, but they require a certain discipline in the development of software, and in its operation and administration, that we don't seem to find. ... If you go way back to the AT&amp;amp;T collapse of 1990, that was a little software flaw that propagated across the AT&amp;amp;T network. If you go ten years before that you have the ARPAnet collapse.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;BR&gt;&lt;FONT size=2&gt;"Whether it's a race condition, or a bug in a recovery process as in the AT&amp;amp;T case, there's this idea that you can build things that need to be totally robust without really thinking through the design and implementation and all of the things that might go wrong," Neumann says.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr align=justify&gt;&lt;FONT face=Verdana&gt;Which camp are you in?&amp;nbsp; Or is there a middle ground?&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=153035" width="1" height="1"&gt;</description></item><item><title>"How do I ..." drive quality upstream?</title><link>http://blogs.msdn.com/santoshz/archive/2004/06/04/148669.aspx</link><pubDate>Fri, 04 Jun 2004 18:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:148669</guid><dc:creator>santoshz</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/148669.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=148669</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&amp;lt;sheepish grin&amp;gt;Well, my first attempt at something technical fell flat on it face.&amp;lt;/sheepish grin&amp;gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Indranil Banerjee (see feedback) pointed out that the Mathew Wilson&amp;#8217;s approach, which I was advocating, effectively killed the symmetry of &lt;FONT face="Courier New"&gt;(a.Equals(b)) == (b.Equals(a))&lt;/FONT&gt; if one is derived from the other.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;RIP, unless you can suggest a way around this that does not involve GetType().&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;I&amp;#8217;m going to switch gears here to introduce two subjects close to my heart (for purely personal reasons, as &lt;A href="http://www.cnn.com/2004/WORLD/europe/06/04/tenet.europe.ap/index.html"&gt;George Tenet said&lt;/A&gt;).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;The first relates to documentation.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;One of my pet peeves is that our (Microsoft&amp;#8217;s) products are not used to their full potential because we don&amp;#8217;t do a good enough job of educating users about 'features' - features that could be useful to them&amp;nbsp;if only they knew about them and how to use them.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is, of course, not at all easy, and is one of those things differentiating experts from novices.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Experts know where to find appropriate information and they absorb it much quicker than novices do.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus they learn faster.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;Software is an interesting product to provide documentation support for.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Firstly, the way that developers acquire new information and skills is very different &amp;#8211; you don&amp;#8217;t usually see a builder opening up a product manual while sitting on a half-framed roof, or surgeons hitting F1 in the middle of a tricky procedure.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Secondly, experts and novices use pretty much the same version of the product, notwithstanding any &lt;A href="http://msdn.microsoft.com/vcsharp/howtobuy/choosing.aspx"&gt;industrial and consumer SKU&amp;#8217;s&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;One piece in this big puzzle is the revered FAQ.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We have &lt;A href="http://www.msdn.microsoft.com/vcsharp/team/faq/"&gt;one on C#&lt;/A&gt; at MSDN&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Verdana&gt; and are always looking for appropriate questions to add to that list.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Leave your suggestions in the feedback here, or &lt;A href="http://blogs.msdn.com/csharpfaq"&gt;there&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;The other subject relates to making Quality Assurance (QA) more effective and efficient.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(Now, if you think that good documentation for a wide variety of developers is an easy challenge, try this one!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The world will thank you.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;A phrase that one increasingly hears in testing corridors is &amp;#8220;moving quality upstream.&amp;#8221;&amp;nbsp; One indication of this is how we increasingly call ourselves &lt;EM&gt;QA&lt;/EM&gt; instead of &lt;EM&gt;Test&lt;/EM&gt;.&amp;nbsp; I&lt;/FONT&gt;&lt;FONT face=Verdana&gt;n the back page column of the first issue* of &lt;A href="http://www.stpmag.com/ "&gt;Software Test &amp;amp; Peformance&lt;/A&gt; &amp;#8211; a magazine that plans to devote itself to &amp;#8216;getting it right the first time' - &lt;/FONT&gt;&lt;FONT face=Verdana&gt;Adam Kolawa (CEO &lt;A href="http://www.parasoft.com/ "&gt;Parasoft Corp&lt;/A&gt;) goes as far as to say&amp;nbsp;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;that we really need to start over from scratch.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;His basic thesis is that, instead of devoting ever-increasing resources to finding and removing errors from the product (testing-out bugs), we need to reinvent the software lifecycle to prevent errors from entering it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;#8220;This belief that testing can create quality software systems is a fundamental problem in the software industry.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We don&amp;#8217;t think of the whole process of building and deploying software in a way that would &lt;I style="mso-bidi-font-style: normal"&gt;prevent&lt;/I&gt; errors, because we don&amp;#8217;t believe that it can actually be done.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Yet this error-prevention approach is not only possible but necessary.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Every mature industry has a already figured this out and stopped relying on testing as a way to make products work.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We continue to have faith that testing will deliver quality &amp;#8211; but it never does.&amp;#8221;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Verdana&gt;Of course Mr Kolawa would say that, considering he has a product to sell.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But what do you think?&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Verdana&gt;[*Issue 1 of ST&amp;amp;P is available as a &lt;A href=" http://www.stpmag.com/stp001.htm"&gt;pdf download&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you go that far, do read the editorial too.]&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=148669" width="1" height="1"&gt;</description></item><item><title>‘Optimizing’ over-rides of object.Equals and overloads of operator ==</title><link>http://blogs.msdn.com/santoshz/archive/2004/06/01/145542.aspx</link><pubDate>Tue, 01 Jun 2004 16:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:145542</guid><dc:creator>santoshz</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/145542.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=145542</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;For the past year, as the whole world and its dog have blogged themselves onto the NY Times bestseller list (and in many cases off it too), I have gazed at my navel, and wondered if the lint there is the same color the world over.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Then today, I read &lt;A href="http://stlsoft.org/"&gt;Mathew Wilson&amp;#8217;s&lt;/A&gt; piece &amp;#8220;Identity &amp;amp; Equality In .NET&amp;#8221; (&lt;A href="http://www.ddj.com/"&gt;Dr Dobb&amp;#8217;s Journal&lt;/A&gt; Windows supplement, June 2004) .&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Which caused me to sit up, hastily button my shirt (yes some of us at Microsoft do wear real shirts) and seek out a &lt;A href="http://dottextwiki.scottwater.com/default.aspx/Dottext.HomePages"&gt;blog-editor&lt;/A&gt; &amp;#8211; just so I could summarize what Mathew said for all non DDJ readers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Like most (all?) C# programmers, I&amp;#8217;ve undergone the baptism ritual of over-riding object.Equals.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Having done that once, I now keep &lt;A href="http://blogs.msdn.com/jaybaz_ms"&gt;Jay Bazuzi&amp;#8217;s&lt;/A&gt; Equals-in-a-box in a safe place (alongside &lt;A href="http://blogs.msdn.com/kevinpilchbisson"&gt;Kevin&amp;#8217;s&lt;/A&gt; addition) [See the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconequals.asp"&gt;full list &lt;/A&gt;of guidelines at MSDN, including the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconimplementingequalsoperator.asp"&gt;guidance&lt;/A&gt; for operator ==]&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Here&amp;#8217;s what Jay gives to those who say the magic word (It is pretty much the same as the code sample on MSDN - the Visual Studio formatting is just free publicity.)&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: green"&gt;&lt;o:p&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: green"&gt;&lt;FONT size=2&gt;// override object.Equals&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: green"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; Equals(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; obj)&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (obj == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; || GetType() != obj.GetType())&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;o:p&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// TODO: write your implementation of Equals() here.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.NotImplementedException();&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.Equals(obj); &lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;o:p&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;And for completeness here is operator == and GetHashCode()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;operator&lt;/SPAN&gt; ==(SomeType o1, SomeType o2)&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; Object.Equals(o1, o2);&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;o:p&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: green"&gt;&lt;FONT size=2&gt;// override object.GetHashCode&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; GetHashCode()&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// TODO: write your implementation of GetHashCode() here.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.NotImplementedException();&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.GetHashCode();&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Lucida Console'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;These are pretty much the canonical forms of the overrides/overloads&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Now, if you expect that you are going to be testing equality a bunch of times (sorry for the jargon), you may be tempted to see how fast you can make your code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;[Sadly, &lt;A href="http://www.bartleby.com/61/15/O0071550.html"&gt;omerta&lt;/A&gt; prevents me from telling you the real reason why developers flog their code to the extreme.]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;So, starting from this point, Mathew (who seems to have a penchant for seeing how fast something will go) goes on to systematically derive his optimal versions.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He then did some simple performance comparisons. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;It was the performance differences that caused me to sit up so sharply.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;In Jay&amp;#8217;s over-ride of object.Equals(), above, if you replace the calls to GetType() with our own beloved &lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;as&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt; operator, like so&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: green"&gt;&lt;FONT size=2&gt;//if (obj == null || GetType() != obj.GetType())&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (obj == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; || Object.ReferenceEquals(obj &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; SomeType, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;))&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Mathew says you can knock off about 60% of the original cost.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Now admittedly the semantics of this version is modified ever so slightly, as the &lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: blue; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;as&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt; will return non-null if &lt;I style="mso-bidi-font-style: normal"&gt;obj&lt;/I&gt; is derived from SomeType.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, typically that is what you want, isn&amp;#8217;t it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;I&amp;#8217;ll quickly summarize the rest of Mathews findings just to underline the significance of the 60%.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Replacing &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Object.ReferenceEquals(obj &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; SomeType, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) &lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;with &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;((Object) obj &lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt; SomeType)==&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;) &lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;netted about 4%.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;And all the effort of working around the virtual call to Equals in the operator == overload, and narrowly surviving two potential gotcha&amp;#8217;s, to end up at&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;operator&lt;/SPAN&gt; ==(SomeType o1, SomeType o2)&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;{&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//return Object.Equals(o1, o2);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; (Object)o1 == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; ? (Object)o2 == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; : o1.Equals(o2);&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;}&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Shaved off just 2.5%.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Hardly worth the potential errors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Ordering the member comparisons with fastest comparisons first (in Mathews case ints before strings) took off a respectable 18%.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;All told, Mathew was able to knock off 80% from his original canonical form.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;Just to convince myself, I ran his suite on both the Everett and Whidbey Community Preview versions of Visual Studio.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In my case, &lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="COLOR: blue"&gt;as&lt;/SPAN&gt;&lt;/I&gt; knocked off only 27 to 37% of the execution time, while reordering member comparisons contributed 25 to 39%.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In both versions, combining all the tweaks reduced execution time by 65% (YMMV - drive safely, wear your seatbelt, and remember to override GetHashCode).&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;All this give me new respect for the &lt;EM&gt;&lt;FONT color=#0000ff&gt;isinst&lt;/FONT&gt; &lt;/EM&gt;MSIL instruction, and underlines something I hear time and again.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Which is &amp;#8220;beware of premature optimization, and don&amp;#8217;t optimize until you know where the bottleneck/s are.&amp;#8221;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=145542" width="1" height="1"&gt;</description></item><item><title>What do you want to do today?</title><link>http://blogs.msdn.com/santoshz/archive/2004/05/20/136127.aspx</link><pubDate>Thu, 20 May 2004 20:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:136127</guid><dc:creator>santoshz</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/santoshz/comments/136127.aspx</comments><wfw:commentRss>http://blogs.msdn.com/santoshz/commentrss.aspx?PostID=136127</wfw:commentRss><description>&lt;DIV&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;Today is the first anniversary of the day I started working at Microsoft &amp;#8211; in the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://msdn.microsoft.com/vcsharp/"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;C#&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana&gt; compiler quality assurance team.&amp;nbsp; After 21 straight years in Universities, either as a student or in the lab, the past year has been quite a change.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;It&amp;#8217;s a great &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://blogs.msdn.com/gusperez/archive/2004/03/07/85698.aspx"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;team&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;, and a nice company - &amp;#8220;Where do you want to go today?&amp;#8221;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;A year is but a tick of the cosmic wheel.&lt;SPAN&gt; &lt;/SPAN&gt;About 35 years ago, when I was barely 4, on July 20, 1969 the lunar module Eagle landed on the surface of the moon, at &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.spaceimaging.com/gallery/ioweek/archive/00-07-17/moon_tranquility800.jpg"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;Tranquility Base&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;.&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Aldrin&lt;/SPAN&gt; and Armstrong were there less than 24 hours, but they left their mark, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://nssdc.gsfc.nasa.gov/planetary/lunar/apollo_11_30th.html"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;literally and figuratively&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;; their footprints in the lunar soil are expected to last millions of years.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;&lt;IMG height=220 src="http://www.winisp.net/santoshzachariah/WhereDoYouWantToGoToday3%5Ffiles/image003.jpg" width=320 border=0&gt;&lt;IMG height=221 src="http://www.winisp.net/santoshzachariah/WhereDoYouWantToGoToday3%5Ffiles/image002.jpg" width=141 border=0&gt;&lt;IMG height=205 src="http://www.winisp.net/santoshzachariah/WhereDoYouWantToGoToday3%5Ffiles/image004.gif" width=288 border=0&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;Back on earth, and 3.75 million years earlier, two other individuals - one smaller than the other - took maybe 30 seconds to leave their own trail in the moist volcanic ash near the village of &lt;SPAN&gt;Laetoli&lt;/SPAN&gt; &lt;SPAN&gt;in &lt;/SPAN&gt;the eastern Serengeti Plain.&amp;nbsp; Not quite 10 years after television brought the images of Apollo 11 home, &lt;SPAN&gt;Mary Leakey excavated a 75 foot long trail that included these footprints .&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;(See Scientific American September 1998 for a good article).&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Although not yet fully bipedal, the shape of the early hominid foot is already uncannily similar to the modern human (on right above).&lt;SPAN&gt; After&lt;/SPAN&gt;&lt;SPAN&gt; spending over 5 decades of their professional careers at &lt;SPAN&gt;Olduvai&lt;/SPAN&gt; Gorge and &lt;SPAN&gt;Laetoli&lt;/SPAN&gt; in &lt;/SPAN&gt;&lt;?xml:namespace prefix = ns0 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;ns0:place&gt;&lt;SPAN&gt;East Africa&lt;/SPAN&gt;&lt;/ns0:place&gt;&lt;SPAN&gt;&amp;#8217;s Rift Valley, &lt;/SPAN&gt;Mary and &lt;SPAN&gt;Louis Leakey&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;too left their &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.npr.org/programs/re/archivesdate/2003/aug/leakey/"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;mark&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt; on our understanding of where we came from.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;So what&amp;#8217;s the connection between &lt;SPAN&gt;Laetoli&lt;/SPAN&gt;, Tranquility, and &lt;ns0:City&gt;&lt;ns0:place&gt;Redmond&lt;/ns0:place&gt;&lt;/ns0:City&gt;?&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Or between Leaky, Armstrong, and myself?&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;Or between a hand pick, a spacecraft, and a piece of software?&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;To me it&amp;#8217;s in the images. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;Imagine now that it is late evening, and you - that juvenile hominid above - are returning from a seasonal watering hole to the safety of the trees at the edge of the savannah.&lt;SPAN&gt; &lt;/SPAN&gt;As you walk hand-in-hand with your parent, the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://nssdc.gsfc.nasa.gov/planetary/lunar/images/as11_44_6552.jpg"&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;full moon&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt; rises ahead of you, and both of you pause to gaze at it in awe.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;SPAN&gt;&lt;FONT face=Verdana&gt;Dare you imagine where you want to go today?&lt;SPAN&gt; &lt;/SPAN&gt;What footprints will you leave in the sands of time?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=justify&gt;&lt;FONT face=Verdana&gt;&lt;IMG height=312 src="http://www.winisp.net/santoshzachariah/WhereDoYouWantToGoToday3%5Ffiles/image005.jpg" width=500 border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=136127" width="1" height="1"&gt;</description></item></channel></rss>