<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Fri, 24 Sep 2004 20:55:20 GMT -->
<rss version="2.0">
	<channel>
		<title>Mark Michaelis&apos; Weblog</title>
		<link>http://mark.michaelis.net/weblog/</link>
		<description></description>
		<language>en-us</language>
		<copyright>Copyright 2004 Mark Michaelis</copyright>
		<lastBuildDate>Wed, 15 Dec 2004 04:15:20 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>mark@michaelis.net</managingEditor>
		<webMaster>mark@michaelis.net</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>18</hour>
			<hour>2</hour>
			<hour>3</hour>
			<hour>8</hour>
			<hour>4</hour>
			<hour>13</hour>
			<hour>0</hour>
			<hour>5</hour>
			</skipHours>
		<ttl>60</ttl>
		<item>
			<title>Moved my blog</title>
			<description>I have finally taken some time to get &lt;A href=&quot;http://mark.michaelis.net/Blog&quot;&gt;my blog&lt;/A&gt; running again.  The RSS feed is now &lt;A href=&quot;http://mark.michaelis.net/Blog/SyndicationService.asmx/GetRss&quot;&gt;here&lt;/A&gt;.</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/24.html#a626</guid>
			<pubDate>Wed, 15 Dec 2004 04:15:20 GMT</pubDate>
			<category></category>
			<comments></comments>
			</item>
		<item>
			<title>&quot;Instantiate an object&quot; vs. &quot;Instantiate a class&quot;</title>
			<description>&lt;P&gt;I raised this question at the office today and I was surprised by they debate which arose.&amp;nbsp; Generally developers seemed to immediately favor &quot;instantiate an object&quot; until they had participated in the debate a little.&amp;nbsp; Then the majority leaned on the side of &quot;instantiating a class.&quot;&lt;/P&gt;
&lt;P&gt;Which one do you think is correct?&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/24.html#a625</guid>
			<pubDate>Fri, 24 Sep 2004 20:55:20 GMT</pubDate>
			<category>Computer Related</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=625&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F24.html%23a625</comments>
			</item>
		<item>
			<title>Customizing Windows Install</title>
			<description>&lt;P&gt;I spent considerable time customizing the Windows XP/2003 install recently in order to slip-stream in&amp;nbsp;the SATA drivers.&amp;nbsp; In the process I came across several good links for this type of thing.&amp;nbsp; All appear to have their root at &lt;A href=&quot;http://www.msfn.org&quot;&gt;Microsoft Software Forum Network&lt;/A&gt;,&amp;nbsp;a great site especially for IT/Windows type of information.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://flyakite.msfnhosting.com/&quot;&gt;Creating Multi-Boot DVDs&lt;/A&gt; - Provides a step-by-step guide on creating multi-boot CDs and DVDs.&amp;nbsp; There is also&amp;nbsp;a &lt;A href=&quot;http://www.msfn.org/board/index.php?showtopic=25128&quot;&gt;beginners guide&lt;/A&gt;.&amp;nbsp;&amp;nbsp;An entire &lt;A href=&quot;http://www.msfn.org/board/index.php?showforum=82&quot;&gt;forum dedicated&lt;/A&gt; to the topic of Multi-Boot CD/DVDs is also available.&amp;nbsp; More instructions are available &lt;A href=&quot;http://www.tech-hints.com/xp.html&quot;&gt;here&lt;/A&gt;.
&lt;LI&gt;&lt;A href=&quot;http://unattended.msfn.org/index.htm&quot;&gt;Creating the ultimate unattended Windows install CD&lt;/A&gt; 
&lt;LI&gt;&lt;A href=&quot;http://greenmachine.msfnhosting.com/XPCREATE/&quot;&gt;XPCreate&lt;/A&gt; - a large batch file that slip-streams hot fixes and Windows install customizations into a new ISO image.&amp;nbsp; This program is great and I highly recommend it to anyone trying to slipstream drivers into their unattended install.&amp;nbsp; (It doesn&apos;t appear to support Windows 2003 AMD 64 bit :( but greenmachine provides excellent support and I would imagine he would add stuff if there was enough demand.&amp;nbsp; Incuded in this utility are&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;PRE&gt;CDImage - Command line creation of ISO files (an internal tool from MS but &lt;BR&gt; available none-the-less with the XPCreate download).  A GUI (currently Beta) version is&lt;BR&gt; available &lt;A href=&quot;http://www.tech-hints.com/xp.html&quot;&gt;here&lt;/A&gt; and rumor is that it wraps the command line version.&lt;BR&gt;&lt;A href=&quot;http://www.microsoft.com/Resources/Documentation/windowsserv/2003/all/techref/en-us/cdburn.asp&quot;&gt;CDBurn.exe&lt;/A&gt; - Command line CD burning given an ISO file&lt;BR&gt;&lt;A href=&quot;http://www.nu2.nu/bbie/&quot;&gt;BBIE&lt;/A&gt; (Bart&apos;s Boot Image Extractor) - Command line extraction of bootimages from CD/DVD/ISOs&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Just on&amp;nbsp;the own these utilities are quite useful in my opinion, never mind there use with XPCREATE&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://greenmachine.msfnhosting.com/READING/addraid.htm&quot;&gt;Slip-streaming SATA drivers&lt;/A&gt; - There are many other links for this such as &lt;A href=&quot;http://www.msfn.org/board/index.php?act=ST&amp;amp;f=88&amp;amp;t=13173&quot;&gt;this forum posting&lt;/A&gt;.&amp;nbsp; Just search google for Si3114r.&amp;nbsp; 
&lt;LI&gt;&lt;A href=&quot;http://xplode.voidfx.com&quot;&gt;XPlode&lt;/A&gt; - A tool for aiding the process of running unattended commands/installs during Windows install.&amp;nbsp; There is little documentation but the utility is actually a CMD/BAT file so it is self documenting to some extent (although the author certainly performed some wonders IMO).&amp;nbsp; The&amp;nbsp; &lt;A href=&quot;http://www.msfn.org/board/index.php?showtopic=15076&quot;&gt;top&amp;nbsp;&quot;How to run XPlode&quot; topic&lt;/A&gt;&amp;nbsp;on the &lt;A href=&quot;http://www.msfn.org/board/index.php?showforum=86&quot;&gt;forum&lt;/A&gt; provides the best introduction. 
&lt;LI&gt;Both XPCreate and Winnt.sif files use and INI format.&amp;nbsp; As a result I needed a commandline INI editor.&amp;nbsp; For some reason it took considerable time to find this program... so much so that I began writing one (in C++ of course) but avoided this at the last minute.&amp;nbsp; Fortunately, I came across &lt;A href=&quot;http://bobby.mydis.org/download/INIEDIT.ZIP&quot;&gt;EZ INIEdit&lt;/A&gt; &lt;A href=&quot;http://bobby.mydis.org/download/&quot;&gt;here&lt;/A&gt;&amp;nbsp;and then INIMAN.EXE/INITOOL.EXE tools called &lt;A href=&quot;http://www.ctyme.com/inityme.htm&quot;&gt;INITyme&lt;/A&gt;&amp;nbsp;which are part of the XPCreate download. 
&lt;LI&gt;One of my favorite windows unattended install tips is to open a command prompt at T-12.&amp;nbsp; Besides performing custom actions this is a great location to debug the cmdlines.txt file.&amp;nbsp; To open the command prompt simply add &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;PRE&gt;start /w cmd.exe&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;to the [Commands] section of &lt;A href=&quot;http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/prbc_cai_jteq.asp&quot;&gt;CmdLines.txt&lt;/A&gt;.&amp;nbsp; Alternatively, place that command along with other commands into a CMD/batch file as described &lt;A href=&quot;http://greenmachine.msfnhosting.com/READING/cmdlines.htm&quot;&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/15.html#a622</guid>
			<pubDate>Wed, 15 Sep 2004 18:50:14 GMT</pubDate>
			<category>Computer Related</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=622&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F15.html%23a622</comments>
			</item>
		<item>
			<title>Wrestling with Windows 2003 x64 AMD w/SP1 BETA</title>
			<description>&lt;P&gt;Last week I gave Windows 2003 x64 AMD w/SP1 BETA a spin on my new 64 bit AMD server.&amp;nbsp; I was disappointed at the viability of this.&amp;nbsp; Not because the OS is bad&amp;nbsp;(didn&apos;t use it enough to know) but because it had virtually no software or driver support.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here are my notes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Neither Microsoft Virtual PC nor Microsoft Virtual Server seem to have 64 bit versions and they don&apos;t even install on the 64 bit OS making them unavailable on that platform.&amp;nbsp; This was the biggest disappointment and caused me to uninstall. 
&lt;LI&gt;&lt;A href=&quot;http://www.daemon-tools.cc&quot;&gt;Daemon tools ISO reader&lt;/A&gt; didn&apos;t work&amp;nbsp; (this was my number 2 disappointment)&lt;BR&gt;They know there is&amp;nbsp;demand for a 64 bit version and they are planning on releasing one but there is no ETA. 
&lt;LI&gt;I wanted to try VSTS but there is not 64 bit versions yet although MS will provide them in time. 
&lt;LI&gt;The Java based&amp;nbsp;SATA RAID software doesn&apos;t appear to have a 64 bit version voiding any RAID configurations on this platform. 
&lt;LI&gt;Tyan provided&amp;nbsp;beta 64 bit SATA drivers (Si3114r) 
&lt;LI&gt;The Windows 2003 CD structure is different than normal Windows Cd&apos;s.&amp;nbsp; There is very little in the I386 directory and lots in the AMD directory.&amp;nbsp; This makes sense but it is hard to know how to customize the install.&amp;nbsp; Where does $OEM$ go for example?&lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/15.html#a621</guid>
			<pubDate>Wed, 15 Sep 2004 18:32:45 GMT</pubDate>
			<category>Computer Related</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=621&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F15.html%23a621</comments>
			</item>
		<item>
			<title>AMD 64 Server Purchase</title>
			<description>&lt;P&gt;I recently built an AMD 64 server using the following components.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.supermicro.com/products/chassis/4U/742/SC742T-550.cfm&quot;&gt;SuperMicro SC742T-550&lt;/A&gt; Black ($286.00) 
&lt;LI&gt;1 X &lt;A href=&quot;http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_8832,00.html&quot;&gt;OPTERON&lt;/A&gt;&amp;nbsp;(AMD 64) &lt;A href=&quot;http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_9240,00.html&quot;&gt;246&lt;/A&gt; 2.0 GHz ($485.00) 
&lt;LI&gt;&lt;A href=&quot;http://www.tyan.com/products/html/thunderk8spro.html&quot;&gt;Thunder K8S Pro (S2882)&lt;/A&gt; mother board&amp;nbsp;($519.99) 
&lt;LI&gt;Western Digital 7200RPM 80GB Hard drive WD800JB% ($63.50) 
&lt;LI&gt;2 X Seagate 7200RPM &amp;nbsp;SATA Hard drive&amp;nbsp;ST3200822AS% ($128.00 each) 
&lt;LI&gt;Pioneer DVR-108&amp;nbsp;DVD+/-RW ($91.99) 
&lt;LI&gt;2 X DDRAM Transcend PC2700 1GB ECC ($235.00)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Everything was purchased from &lt;A href=&quot;http://www.newegg.com&quot;&gt;www.newegg.com&lt;/A&gt;&amp;nbsp;except the mother board which came from &lt;A href=&quot;http://www.buy.com&quot;&gt;www.buy.com&lt;/A&gt; because NewEgg was out of stock.&amp;nbsp; This was my first experience with NewEgg and I have to say their prices were considerable better than I found else where on virtually every item.&amp;nbsp; Very impressive!&amp;nbsp; The big drawback is that they have a restocking fee if you wish to return something even if you are just replacing it with a different item.&amp;nbsp; Only replacing defective materials with the exact same item avoids the restocking fee.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Comments about the hardware are as follows:&lt;/P&gt;
&lt;UL dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;LI&gt;The chassis supports 7 SATA drives but the mother board only supports 4. 
&lt;LI&gt;Both the motherboard and the chassis include SATA drive cables and the chassis provide normal power connectors so it isn&apos;t necessary to hook up special SATA power cables (although the mother board does provide some). 
&lt;LI&gt;The RAID management software uses Java and requires the Java VM get installed.&amp;nbsp; It also leaves a DOS box around after launching when you log in.&amp;nbsp; This software left something to be desired. 
&lt;LI&gt;The SATA card on the motherboard does not have Windows 2003 build in drivers making the disks inaccessible during Windows 2003 install without providing a floppy or slip-streaming the drivers into the Windows 2003 CD. 
&lt;LI&gt;There are two ACT cables (I think they are LEDs for the SATA drives) coming from the Chassis that don&apos;t seem to have a connection on the mother board. 
&lt;LI&gt;The motherboard doesn&apos;t have a Power Source LED light. 
&lt;LI&gt;Researching and building&amp;nbsp;the server&amp;nbsp;myself&amp;nbsp;was way too time consuming but I haven&apos;t done it for several years so it was good to have a refresher.
&lt;LI&gt;The fan on the chassis power supply doesn&apos;t work.&amp;nbsp; I suspect (but I am not an authority on this) the problem is due to the fact that there is a square 4 prong connector coming out of the power supply but there is no destination connector on the mother board.
&lt;LI&gt;The lack of built in support for SATA drives in Windows XP/2003 is an absolute pain (but now I digress to software so I will post these turmoils separately.)&lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/15.html#a620</guid>
			<pubDate>Wed, 15 Sep 2004 18:19:57 GMT</pubDate>
			<category>Computer Related</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=620&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F15.html%23a620</comments>
			</item>
		<item>
			<title>Benjamin Michaelis.Net</title>
			<description>&lt;P&gt;While at his my Mom and Dad&apos;s a few weeks ago my 4 year old son got into a conversation about his last name.&amp;nbsp; Granny told him that his last name was, &quot;Michaelis,&quot; making his full name &quot;Benjamin Michaelis.&quot;&amp;nbsp; To which he promptly replied that his full name was, &quot;Benjamin Michaelis.NET.&quot;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=red size=4&gt;&lt;STRONG&gt;VERY SCARY!!!!&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/13.html#a618</guid>
			<pubDate>Mon, 13 Sep 2004 14:34:06 GMT</pubDate>
			<category>MyFamily</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=618&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F13.html%23a618</comments>
			</item>
		<item>
			<title>Applications: Running 32-Bit Applications with Windows Running on AMD Opteron and AMD Athlon 64 Systems</title>
			<description>&lt;P&gt;I came across this title in the release notes for the beta version of Windows 2003 for 64 bit AMD with SP1.&amp;nbsp; It seems innocuous enough at first.&amp;nbsp; The problem is in the details which I quote below:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;!--StartFragment --&gt;&amp;nbsp;Generally, you can run 32-bit applications on Windows Server&amp;nbsp;2003, Standard Edition; Windows Server&amp;nbsp;2003, Enterprise Edition; and Windows&amp;nbsp;XP 64-Bit Edition without making any changes. Applications that meet the following criteria, however, are not compatible with Windows products running on AMD Opteron and Athlon 64 systems: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Applications with 16-bit installers 
&lt;LI&gt;Applications that install 32-bit kernel-mode drivers 
&lt;LI&gt;&lt;FONT color=red&gt;Applications with dependencies on &lt;STRONG&gt;any&lt;/STRONG&gt; version of Microsoft .NET Framework&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We recommend that you contact your software vendors to verify whether one of these exceptions applies to your software.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Hmmmmm... I think that could be a problem for me.&amp;nbsp; Uggghhhhhhh!!!!!!&amp;nbsp;&amp;nbsp;Besides, wasn&apos;t the .NET Framework supposed to deal explicitly with this problem?&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/11.html#a617</guid>
			<pubDate>Sun, 12 Sep 2004 06:08:54 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=617&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F11.html%23a617</comments>
			</item>
		<item>
			<title>System.Diagnostics.Stopwatch in .NET 2.0</title>
			<description>&lt;P&gt;&lt;IMG alt=&quot;A picture named System.Diagnostics.Stopwatch.jpg&quot; hspace=15 src=&quot;http://mark.michaelis.net/weblog/2004/09/10/System.Diagnostics.Stopwatch.jpg&quot; align=right vspace=5 border=0&gt;One omission from .NET 1.0 that would have been extremely useful is a Stopwatch that can report accurate time (presumably using the high performance counter APIs).&amp;nbsp; It is needed especially for doing any type of&amp;nbsp;small scale&amp;nbsp;testing.&amp;nbsp; Unfortunately, there is no such class in .NET 1.0.&amp;nbsp; However, 2.0 does have such a class in the &lt;A href=&quot;http://msdn2.microsoft.com/library/System.Diagnostics.aspx&quot;&gt;System.Diagnostics&lt;/A&gt; namespace called &lt;A href=&quot;http://msdn2.microsoft.com/library/System.Diagnostics.Stopwatch.aspx&quot;&gt;Stopwatch&lt;/A&gt;.&lt;/P&gt;
&lt;P align=left&gt;If you are stuck in the 1.0 world still then&amp;nbsp;&lt;A href=&quot;http://www.hh-system.com/danielstrigl&quot;&gt;Daniel Strigl&lt;/A&gt; has defined a class on &lt;A href=&quot;http://www.codeproject.com&quot;&gt;CodeProject&lt;/A&gt; called &lt;A href=&quot;http://www.codeproject.com/csharp/highperformancetimercshar.asp&quot;&gt;HiPerfTimer&lt;/A&gt; that could easily be converted to look like the &lt;A href=&quot;http://msdn2.microsoft.com/library/System.Diagnostics.Stopwatch.aspx&quot;&gt;Stopwatch&lt;/A&gt;&amp;nbsp;class in 2.0.&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/09/10.html#a616</guid>
			<pubDate>Fri, 10 Sep 2004 17:24:59 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=616&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F09%2F10.html%23a616</comments>
			</item>
		<item>
			<title>Completing a half Ironman - TROIKA</title>
			<description>&lt;P&gt;Yesterday I competed in a &lt;A href=&quot;http://www.racecenter.com/troika/&quot;&gt;TROIKA&lt;/A&gt;, a half Ironman (&lt;A href=&quot;http://www.racecenter.com/troika/course.htm&quot;&gt;1.2 mile swim, 56 mile bike, 13.1 mile run&lt;/A&gt;).&amp;nbsp; My goal was to finish and finish I did.&amp;nbsp; Wahoooo!!!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Swimming is tons easier with a wet suit. 
&lt;LI&gt;Flat tires don&apos;t magically fix themselves when you pump them up.&amp;nbsp; You must fix the flat or change the tire.&amp;nbsp; Duh! 
&lt;LI&gt;Energy bars are too chewy to eat while biking.&amp;nbsp; I imagine that energy goo would be a lot better. 
&lt;LI&gt;The race is significantly harder without any support from folks you know, cheering you on, collecting your gear, providing encouragement, pushing you not to take it easy, etc.&amp;nbsp; Along the way were chalk writings on the pavement along with spectators spurring contestants on and I am sure having someone you know cheering for you makes a huge difference. 
&lt;LI&gt;My goal was to finish and at the end of the bike section I was confident I could do this.&amp;nbsp; As a result, I felt fine about walking a significant part of the run.&amp;nbsp; Next time (if there is such&amp;nbsp;a thing) I need a goal that will motivate me to try harder. 
&lt;LI&gt;Don&apos;t use your equipment for the first time on race day.&amp;nbsp; (Another Duh :) )&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A full description of my race can be found &lt;A href=&quot;http://mark.michaelis.net/Weblog/stories/2004/08/02/troikaMyFirstHalfIronman.html&quot;&gt;here&lt;/A&gt;.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/08/02.html#a614</guid>
			<pubDate>Mon, 02 Aug 2004 16:35:31 GMT</pubDate>
			<category>My Sports</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=614&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F08%2F02.html%23a614</comments>
			</item>
		<item>
			<title>Trying intraVnews, another Outlook Add-in RSS Reader </title>
			<link>http://www.intravnews.com/download.htm</link>
			<description>&lt;P&gt;In the past I have been a big fan of &lt;A href=&quot;http://www.newsgator.com/&quot;&gt;NewsGator&lt;/A&gt; and pretty much used it exclusively.&amp;nbsp; However, one particularly irritating feature of some blogs is that they only supply the title, posting URL,&amp;nbsp;and date in the RSS feed, forcing one to go to the website to view the body.&amp;nbsp; &lt;A href=&quot;http://www.intravnews.com/&quot;&gt;intraVnews&lt;/A&gt; deals with this issue displaying the&amp;nbsp;posting URL content&amp;nbsp;below the blog content.&amp;nbsp; This is a fantastic feature that allows one to still follow blogs that don&apos;t provide a body.&amp;nbsp; (This begs the question that perhaps blogs that don&apos;t provide a body should continue to be boycotted regardless of the tools to overcome the problem.)&lt;/P&gt;
&lt;P&gt;I am currently giving &lt;A href=&quot;http://www.intravnews.com/&quot;&gt;intraVnews&lt;/A&gt;&amp;nbsp;a try and so far I am reasonably pleased.&amp;nbsp; In fact, I have NewsGator and intraVnews installed simultaneously without problem.&amp;nbsp; My two negative comments on intraVnews relate to &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Moving blog folders -&amp;nbsp; The UI for this is rather cumbersome and time consuming if there are lots of blogs.&lt;/LI&gt;
&lt;LI&gt;The scheduler to download doesn&apos;t appear to autostart (presumably a setting I haven&apos;t found yet.)&amp;nbsp;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;One of the key items I need to investigate soon relates to exporting the settings of the RSS reader and then importing them once I re-install&amp;nbsp;the OS.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/03.html#a613</guid>
			<pubDate>Thu, 03 Jun 2004 07:34:50 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=613&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F03.html%23a613</comments>
			</item>
		<item>
			<title>From Cassette to Digital File with PlusDeck 2</title>
			<link>http://www.em411.com/show/hardware/188/1/plusdeck_2.html</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://www.em411.com/show/hardware/188/1/plusdeck_2.html&quot;&gt;Here&lt;/A&gt; is an interesting device&amp;nbsp;especially if you already own a Windows Media PC and want to add cassette capabilities.&amp;nbsp; The &lt;A href=&quot;http://www.em411.com/show/hardware/188/1/plusdeck_2.html&quot;&gt;PlusDeck 2&lt;/A&gt; is an internal cassette deck for your computer that can help convert cassettes to their WMA/MP3 equivalent.&amp;nbsp; I have lots of cassettes, especially talks from Willow Creek, that I would love to convert just so they can be digitally organized.&amp;nbsp; I would then listen to the MP3s on my not-yet-existent mini Smart Phone with built in MP3 player (and Bluetooth of course).&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/02.html#a611</guid>
			<pubDate>Thu, 03 Jun 2004 05:59:23 GMT</pubDate>
			<category>Miscellaneous</category>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=611&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F02.html%23a611</comments>
			</item>
		<item>
			<title>Defining a Component in Software Engineering</title>
			<link>http://blogs.msdn.com/michael_platt/archive/2004/05/17/133201.aspx</link>
			<description>&lt;P&gt;When .NET was first released I was disappointed by the fact that they had not provided a definition for the term &quot;component.&quot;&amp;nbsp; The term was common in the COM days but it was never clearly defined as referring to a particular COM object or the DLL in which&amp;nbsp;the COM object&amp;nbsp;was implemented.&lt;/P&gt;
&lt;P&gt;Under .NET the definitions remain ambiguous and&amp;nbsp;at this point too many leading engineers have placed a stake in the ground one side or the other so it is unlikely to get resolved any time soon.&amp;nbsp;&amp;nbsp;Some, like Juval Lowy, firmly believe it corresponds to a class.&amp;nbsp; Other sway more&amp;nbsp;toward&amp;nbsp;it referring to an entire assemble.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I share &lt;A href=&quot;http://blogs.msdn.com/michael_platt/archive/2004/05/17/133201.aspx&quot;&gt;Michael Platt&apos;s amazement&lt;/A&gt; that these terms remain ambiguous given the length of time they have been pervasive in the industry.&amp;nbsp; Furthermore, the frequent need to create designs that include&amp;nbsp;classes as well as the containers of the class definitions would lead one to expect that their definitions were firmly established.&amp;nbsp; Perhaps what makes this even worse is that &quot;module&quot; now has a definite meaning in the .NET space.&amp;nbsp; Therefore, it cannot be used as the generic term for a container of&amp;nbsp;compiled code.&lt;/P&gt;
&lt;P&gt;Personally, I prefer the component to mean assembly (or container of compiled code)&amp;nbsp;as I don&apos;t believe there is any need to provide another word for object or class as these have firm O.O. definitions.&amp;nbsp; Furthermore, there is not really any generic term for the files (or streams)&amp;nbsp;that contain a series of bytes implementing a feature (or class etc.)&amp;nbsp; Component seems like a great term to fill this hole.&amp;nbsp; Recently I read &lt;A href=&quot;http://blogs.msdn.com/michael_platt/&quot;&gt;Michael Platt&apos;s&lt;/A&gt; &lt;A href=&quot;http://blogs.msdn.com/michael_platt/archive/2004/05/17/133201.aspx&quot;&gt;discussion of the terms Object, Component, Model, and Service&lt;/A&gt; and was pleased to hear I am not alone in my leanings.&lt;/P&gt;
&lt;P&gt;Thoughts?&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/02.html#a610</guid>
			<pubDate>Thu, 03 Jun 2004 00:10:32 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=610&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F02.html%23a610</comments>
			</item>
		<item>
			<title>Creating a Toggle Anchor Lock macro for images in word</title>
			<description>&lt;P&gt;I recently wanted a button or keystroke that could automatically toggle the Lock Anchor state for&amp;nbsp;shapes in Microsoft Word.&amp;nbsp; Unfortunately, there didn&apos;t seem to be a built-in Word action for doing this.&amp;nbsp;&amp;nbsp;Using a tip from&amp;nbsp;&lt;A href=&quot;http://homepage.swissonline.ch/cindymeister/CMpriv.htm&quot;&gt;Cindy Meister&lt;/A&gt; I created the following macro that does the trick nicely:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;Sub ToggleShapeAnchor()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim newlockAnchorSetting As Boolean&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Selection.Type = wdSelectionShape Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Selection.ShapeRange.Count &amp;gt;= 1) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newlockAnchorSetting = Not Selection.ShapeRange(1).LockAnchor&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each Shape In Selection.ShapeRange&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Shape.LockAnchor = newlockAnchorSetting&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;End Sub&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;I also had a problem with trying to make fine adjustments of the shapes.&amp;nbsp; Each adjustment caused the shape to jump a couple inches up the page.&amp;nbsp; Further adjustment caused it to jump again.&amp;nbsp; Cindy informed me that this was generally indicative of damage in the binary structures of the control page layout and advised I tried round tripping the file to RTF, WordML, or HTML.&amp;nbsp; I also found that turning on and off the anchor sometimes seemed to get particular images positioning correctly again.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/01.html#a608</guid>
			<pubDate>Wed, 02 Jun 2004 04:40:54 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=608&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F01.html%23a608</comments>
			</item>
		<item>
			<title>Viewing MSDN help externally from Visual Studio May 2005 Tech. Preview</title>
			<link>http://blogs.msdn.com/robcaron/archive/2004/05/27/143485.aspx</link>
			<description>&lt;P&gt;VS.NET external help didn&apos;t work for me until &lt;A href=&quot;http://www.breaman.net/&quot;&gt;Michael Stokesbary&lt;/A&gt; recommended&amp;nbsp;&lt;A href=&quot;http://blogs.msdn.com/robcaron/archive/2004/05/27/143485.aspx&quot;&gt;this post&lt;/A&gt; from &lt;A href=&quot;http://blogs.msdn.com/robcaron/&quot;&gt;Rob Caron&lt;/A&gt;.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/01.html#a607</guid>
			<pubDate>Wed, 02 Jun 2004 04:24:24 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=607&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F01.html%23a607</comments>
			</item>
		<item>
			<title>Comparison Operators not Behaving Equally</title>
			<link>http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=227150</link>
			<description>&lt;P&gt;The current &lt;A href=&quot;http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5e-f87a44af3db9/SpecificationVer2.doc&quot;&gt;C# 2.0 specification&lt;/A&gt; includes the following quote: &lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;&quot;A comparison operator (&lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;==&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;!=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;lt;=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;gt;=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;) has a lifted form when the operand types are both non-nullable value types and the result type is &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;bool&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;. The lifted form of a comparison operator&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;is formed by adding a &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt; modifier to each operand type (but not to the result type). Lifted forms of the &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;==&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt; and &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;!=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt; operators consider two null values equal, and a null value unequal to a non-null value. Lifted forms of the &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;lt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;lt;=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;, and &lt;/SPAN&gt;&lt;SPAN class=Codefragment&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-bidi-font-family: &apos;Times New Roman&apos;&quot;&gt;&lt;FONT face=&quot;Lucida Console&quot;&gt;&amp;gt;=&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt; operators return false if one or both operands are null.&quot;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;What does this mean?&lt;/P&gt;
&lt;P dir=ltr&gt;Perhaps the most significant concept in this paragraphs is at the end where it declares that&amp;nbsp;the operators &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;= &lt;/FONT&gt;and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;=&lt;/FONT&gt; versus the operator &lt;FONT face=&quot;Courier, Monospace&quot;&gt;==&lt;/FONT&gt; behave differently for &lt;FONT face=&quot;Courier, Monospace&quot;&gt;Nullable&amp;lt;T&amp;gt;&lt;/FONT&gt; types when that have the value &lt;FONT face=&quot;Courier, Monospace&quot;&gt;null&lt;/FONT&gt;.&amp;nbsp; As a result, even though &lt;FONT face=&quot;Courier, Monospace&quot;&gt;==&lt;/FONT&gt; may return true, the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;gt;=&lt;/FONT&gt; operator and the&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;=&lt;/FONT&gt; operator will sometimes return false.&amp;nbsp; Let&apos;s consider an example.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&lt;FONT color=blue&gt;int&lt;/FONT&gt;&lt;FONT color=blue&gt;?&lt;/FONT&gt; x, y;&amp;nbsp;&amp;nbsp; &lt;FONT color=green&gt;&lt;A href=&quot;http:///&quot;&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt;&lt;/A&gt; Declares two variables of type Nullable&amp;lt;int&amp;gt; &lt;/FONT&gt;&lt;BR&gt;x = &lt;FONT color=blue&gt;null&lt;/FONT&gt;;&lt;BR&gt;y = &lt;FONT color=blue&gt;null&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Courier&gt;Assert.IsTrue(x == y);&lt;BR&gt;Assert.IsFalse(x &amp;lt;= y);&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;When &lt;FONT face=&quot;Courier, Monospace&quot;&gt;null&lt;/FONT&gt; is involved with a nullable type, therefore, the &amp;gt;= operator would not be equivalent to the combination of the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;gt;&lt;/FONT&gt; and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;==&lt;/FONT&gt; operators.&amp;nbsp; In other words,&amp;nbsp; the&amp;nbsp;expression&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;x&amp;gt;=y&lt;/FONT&gt;&amp;nbsp;would not be equivalent to the combination of &lt;FONT face=&quot;Courier, Monospace&quot;&gt;x&amp;gt;y || x==y&lt;/FONT&gt;.&amp;nbsp; Perhaps what is most unusual about this is generally they operator &amp;gt;= is called greater-then-or-equal but in the case of both operands being null, the result of the &amp;gt;= operator would be not equal even though the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;==&lt;/FONT&gt; operator&amp;nbsp;indicates they are equal.&lt;/P&gt;
&lt;P dir=ltr&gt;Furthermore if you were to sort a list of &lt;FONT face=&quot;Courier, Monospace&quot;&gt;Nullable&amp;lt;T&amp;gt;&lt;/FONT&gt; types using the&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;gt;&lt;/FONT&gt; operator for ascending order and the&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;&lt;/FONT&gt; operator for descending order then regardless, all items with the value &lt;FONT face=&quot;Courier, Monospace&quot;&gt;null&lt;/FONT&gt; would sort to the same location regardless of which operator (&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;&lt;/FONT&gt; or &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;gt;&lt;/FONT&gt;) was used (&lt;FONT face=&quot;Courier, Monospace&quot;&gt;null&lt;/FONT&gt; items would always sort to the top or the bottom regardless of which operator is used.)&lt;/P&gt;
&lt;P dir=ltr&gt;Note that currently the May 2005 Visual Studio.NET Tech. Preview does not support the&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;gt;=&lt;/FONT&gt; and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;&amp;lt;=&lt;/FONT&gt; operators.&amp;nbsp; Also, the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;==&lt;/FONT&gt; operator is marked as obsolete.&lt;/P&gt;
&lt;P dir=ltr&gt;I would be curious to know what folks think about this implementation?&lt;/P&gt;
&lt;P dir=ltr&gt;(This topic is also being discussed at on the &lt;A href=&quot;http://www.gotdotnet.com/Community/MessageBoard/MessageBoard.aspx?id=5627&quot;&gt;GotDotNet C# Language Message&lt;/A&gt; board &lt;A href=&quot;http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=227150&quot;&gt;here&lt;/A&gt;.)&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/01.html#a606</guid>
			<pubDate>Tue, 01 Jun 2004 23:21:35 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=606&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F01.html%23a606</comments>
			</item>
		<item>
			<title>Accident Recovery</title>
			<description>&lt;P&gt;It has now been one month since my bicycle accident.&amp;nbsp; I would like to say everything is back to normal but there are a few hitches.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Mental state&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I will let you draw your on conclusions based on interactions with me and the following additional data points:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pushed the undock button when leaving work but I ended up forgetting my laptop at work for one night last week.&amp;nbsp; Normally an allergic reaction starts when I get to far from&amp;nbsp;the laptop&amp;nbsp;and I didn&apos;t even realize the mistake until I got home. 
&lt;LI&gt;I left my wallet on the bus (my means of commuting while I can&apos;t ride a bicycle) last week and didn&apos;t realize it was missing until half way through the day.&amp;nbsp; (Fortunately, this is Spokane and not &amp;lt;enter city name here&amp;gt; because I picked it up intact with all cash and cards 2 days later&amp;nbsp;at lost and found.) 
&lt;LI&gt;I asked my son to put&amp;nbsp;his used paper napkins into the dishwasher 3 times one evening.&amp;nbsp; Fortunately, my beautiful wife was there to point out my nonsensicalness. 
&lt;LI&gt;Today I took a bus from work to the transit station.&amp;nbsp; I then moved to another bus and waited for it to leave.&amp;nbsp; Five minutes into the journey I realized that the bus I boarded at the transit station was taking me back to work&amp;nbsp;rather than home.&amp;nbsp; I disembarked soon enough to be in walking distance from home and this was the first time taking this particular route but still, it wasn&apos;t particularly bright of me.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Physical state&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;On Friday I had a &lt;A href=&quot;http://www.heartcenteronline.com/Tilt_Table_Test.html&quot;&gt;tilt table test&lt;/A&gt; in the morning, an appointment with an orthopedic surgeon for my AC separation&amp;nbsp;in the early after noon, followed by a &lt;A href=&quot;http://www.heartcenteronline.com/myheartdr/common/articles.cfm?ARTID=23&quot;&gt;stress (treadmill) test&lt;/A&gt; and meeting with the cardiologist toward the end of the day.&amp;nbsp; Earlier that week I also had a &lt;A href=&quot;http://www.heartcenteronline.com/myheartdr/common/articles.cfm?ARTID=388&quot;&gt;CAT scan of my heart&lt;/A&gt;.&amp;nbsp; The orthopedic went so far as to say that I should come and see him in six months if I still have a problem but that it should heal on its own&amp;nbsp;(I responded that is wasn&apos;t personal but I hoped I wouldn&apos;t need to see him again either.)&amp;nbsp; At the very end of the &lt;A href=&quot;http://www.heartcenteronline.com/Tilt_Table_Test.html&quot;&gt;tilt table test&lt;/A&gt;&amp;nbsp;I went pale and sweaty but I didn&apos;t faint (the goal if it was to be a positive test).&amp;nbsp; In the end the cardiologist concluded that all the tests were negative except for the &lt;A href=&quot;http://www.heartcenteronline.com/Tilt_Table_Test.html&quot;&gt;tilt table test&lt;/A&gt; which was abnormal but inconclusive.&amp;nbsp; Therefore, he recommended that I go for a &lt;A href=&quot;http://www.heartcenteronline.com/myheartdr/common/articles.cfm?ARTID=14&quot;&gt;Catheter Ablation&lt;/A&gt;.&amp;nbsp; He also cleared me for driving but not exercise.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Emotional state&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Looking forward to this all being over.&amp;nbsp; Frustrated by my lack of productivity both at work and with writing.&amp;nbsp; Perhaps this is normal but I am blaming it on my accident regardless.&amp;nbsp; :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;I am uncomfortable with doing the&amp;nbsp;&lt;A href=&quot;http://www.heartcenteronline.com/myheartdr/common/articles.cfm?ARTID=14&quot;&gt;Catheter Ablation&lt;/A&gt;&amp;nbsp;and I don&apos;t think there is enough evidence to warrant putting&amp;nbsp;a tube&amp;nbsp;into my heart. 
&lt;LI&gt;They have&amp;nbsp;also not been able to&amp;nbsp;show any&amp;nbsp;exercise related syncope and it frustrates me that they are still asking me not to do any exercise,&amp;nbsp;especially when my two &lt;A href=&quot;http://www.heartcenteronline.com/myheartdr/Common/articles.cfm?ARTID=363&quot;&gt;syncope&lt;/A&gt; related incidents immediately following my accident have more in common with&amp;nbsp;driving than exercise.&lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/06/01.html#a605</guid>
			<pubDate>Tue, 01 Jun 2004 18:09:13 GMT</pubDate>
			<category>MyFamily</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=605&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F06%2F01.html%23a605</comments>
			</item>
		<item>
			<title>TechEd Webcasts</title>
			<description>&lt;P&gt;For those of you who were not able to make it to&amp;nbsp;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://www.microsoft.com/seminar/teched2004/default.mspx&quot;&gt;Tech Ed 2004&lt;/A&gt;&amp;nbsp;this year, here are several of the developer related&amp;nbsp;talks that will be broadcast over the web (in date order):&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=dlSearchResults style=&quot;BORDER-COLLAPSE: collapse&quot; cellSpacing=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;1.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250704&quot;&gt;MSDN Webcast: Live from TechEd: Visual Studio Tools for Office - Nuts and Bolts &amp;#150; Level 200 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/24/2004 12:15 PM&lt;/I&gt; &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;2.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250706&quot;&gt;MSDN Webcast: Live from TechEd: How Hackers Hack &amp;#150; Level 200 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/25/2004 12:15 PM&lt;/I&gt; &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;3.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250526&quot;&gt;MSDN Webcast: Head-Spinning Interoperability in Managed C++ &amp;#150; Level 400 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/26/2004 11:00 AM&lt;/I&gt; &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;4.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250528&quot;&gt;MSDN Architecture Webcast: patterns &amp;amp; practices Live: New Developments and Releases &amp;#150; Level 200 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/27/2004 11:00 AM&lt;/I&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;5.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250708&quot;&gt;MSDN Webcast: Live from TechEd: Whidbey IDE enhancements &amp;#150; Level 200 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/27/2004 11:45 AM &lt;/I&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=1 cellPadding=0 width=&quot;100%&quot; border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=searchEventList vAlign=center width=&quot;3%&quot;&gt;&lt;B&gt;7.&lt;/B&gt; &lt;/TD&gt;
&lt;TD class=searchLink vAlign=center noWrap align=left&gt;&lt;A onclick=&quot;WindowSetFocus(this.href);return false;&quot; href=&quot;http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032250709&quot;&gt;MSDN Webcast: Live from TechEd: Identity Management in ASP.NET &amp;#150; Level 200 &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=left width=&quot;100%&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=searchEventList colSpan=3&gt;
&lt;DIV&gt;&lt;I&gt;5/28/2004 12:15 PM&lt;/I&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;I am not sure why these are the only ones showing up on the &lt;A href=&quot;http://msevents.microsoft.com&quot;&gt;Microsoft Event Search pages&lt;/A&gt;&amp;nbsp;so if you come across others please let me know.</description>
			<guid>http://mark.michaelis.net/weblog/2004/05/23.html#a604</guid>
			<pubDate>Mon, 24 May 2004 05:05:05 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=604&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F05%2F23.html%23a604</comments>
			</item>
		<item>
			<title>Qualifying for the Saved-by-the-Helmet Club</title>
			<description>&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;On May 2 I qualified to join the &lt;A href=&quot;http://www.doh.wa.gov/hsqa/emtp/download/sbhcstor.pdf&quot;&gt;Washington Saved-by-the-Helmet Club&lt;/A&gt; by having a serious accident on my bicycle and living to tell about it because of my helmet.&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; Eric Brady and I were making our now annual bicycle ride to the &lt;A href=&quot;http://www.bloomsdayrun.org/&quot;&gt;Bloomsday race of Spokane&lt;/A&gt;.&amp;nbsp; This is our third year of biking down and racing, but this year was an exception because I didn&apos;t actually make it there.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;On the corner of Pines and Montgomery&amp;nbsp;in Spokane Valley I had a bicycle accident.&amp;nbsp; Montgomery is at the bottom of an incline and I fell trying to cross over a triangular median with ramps for wheeled traffic.&amp;nbsp; &lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;I don&apos;t remember anything except what the median looked like before the accident.&amp;nbsp; &lt;/SPAN&gt;Eric described the accident, &lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&quot;...when you went over the ramp on the pedestrian island, it kicked the rear tire up and threw your weight forward.&amp;nbsp;&amp;nbsp; You then landed on the front tire, went over the handlebars, skidded/bounced one time maybe twice on the pavement, and contacted the curb.&amp;nbsp;&amp;nbsp; It all happened very, very fast.&quot;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;In other words, after going over my handlebars, I skidded&amp;nbsp;about 6 to&amp;nbsp;8 feet and my head collided against the curb, cracking my helmet.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;Following the accident I went by ambulance to the emergency&amp;nbsp;room trauma services at&amp;nbsp;&lt;A href=&quot;http://www.deaconess-spokane.org/&quot;&gt;Deaconess hospital&lt;/A&gt; in downtown Spokane.&amp;nbsp; From there I was admitted to ICU (Intensive Care Unit) where I remained for three days before being released to the neurological ward and home the next day.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;STRONG&gt;Diagnosis&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;A href=&quot;http://web1.tch.harvard.edu/cfapps/A2ZtopicDisplay.cfm?Topic=Intraventricular%20Hemorrhage&quot;&gt;Intra-ventricular&amp;nbsp;hemorrhage&lt;/A&gt;&amp;nbsp;(bleeding in the brain).&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;/SPAN&gt;No broken bones.&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;Road rash on my left shoulder, knee, arm, ear and face.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;AC separation of my left shoulder.&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;STRONG&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;STRONG&gt;How&amp;nbsp;am I&amp;nbsp;doing?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;Considering what happened I am doing really well.&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;I am experiencing more tiredness than normal and I am essentially sleeping during the day at the same time my one-and-a-half year old daughter takes naps.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;I have pretty constant headaches but I am learning to just accept them as &quot;expected.&quot;&amp;nbsp; I take &lt;FONT size=2&gt;Acetaminophen (Tylenol)&amp;nbsp;with Codeine at night for them and regular Acetaminophen during the day as needed.&amp;nbsp; I am also on some meds. to reduce the chance of seizures.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;According to my neurologist I am not currently allowed to bike or drive which makes getting to work rather difficult (I normally bike to work year round).&amp;nbsp; Fortunately, the doctor has also recommended I not work for two weeks following my hospital stay.&amp;nbsp; Still, this puts pressure on Elisabeth as we always have to take the kids with us in order for me to go out.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;I don&apos;t get to exercise until my cardiologist grants permission just in case my accident was caused by an exercise induced blackout.&amp;nbsp; This makes my preparation for &lt;A href=&quot;http://www.racecenter.com/troika/index.htm&quot;&gt;Troika Half Ironman&lt;/A&gt;&amp;nbsp;difficult at best.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;The &lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;Intra-ventricular&amp;nbsp;hemorrhage&amp;nbsp;has caused a loss of short term memory and my mind is a lot slower.&amp;nbsp; (This would be a great time to challenge me in Go or chess or throw some puzzle my way.)&amp;nbsp; Fortunately my thinking is improving but it is slow and I still find it takes me a lot longer to work through stuff that I previously did instantly.&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;My arm hurts, especially when lifting my daughter.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;I feel frustrated at my lack of ability to do anything productive (work and writing are the key sources of frustration) but slowly I am starting to be able to sit at the computer for short durations.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style=&quot;MARGIN: 0in 0in 0pt&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/05/12.html#a599</guid>
			<pubDate>Wed, 12 May 2004 14:56:06 GMT</pubDate>
			<category>MyFamily</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=599&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F05%2F12.html%23a599</comments>
			</item>
		<item>
			<title>Beware of Inequalities with Floating Point Types</title>
			<description>&lt;P&gt;I have been playing around with the inaccuracies of floats and decided to share some of the simplest comparisons that might surprise folks that use the equality comparisons of floats indiscriminately.&lt;/P&gt;
&lt;P&gt;The following code listing pretty much captures the issues:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&lt;FONT color=blue&gt;using&lt;/FONT&gt; System.Diagnostics;&lt;BR&gt;...&lt;BR&gt;&lt;FONT color=blue&gt;decimal&lt;/FONT&gt;&amp;nbsp;decimalNumber = 4.2M;&lt;BR&gt;&lt;FONT color=blue&gt;double&lt;/FONT&gt;&amp;nbsp;doubleNumber1 = 0.1F * 42F;&lt;BR&gt;&lt;FONT color=blue&gt;double&lt;FONT color=#000000&gt;&amp;nbsp;doubleNumber2 = 0.1D * 42D;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&lt;FONT color=blue&gt;float&lt;/FONT&gt;&amp;nbsp;floatNumber = 0.1F * 42F;&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(decimalNumber != (&lt;FONT color=blue&gt;decimal&lt;/FONT&gt;)doubleNumber1);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.2 != 4.20000006258488&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, decimalNumber, (&lt;FONT color=blue&gt;decimal&lt;/FONT&gt;)doubleNumber1);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert((&lt;FONT color=blue&gt;double&lt;/FONT&gt;)decimalNumber != doubleNumber1);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.2 != 4.20000006258488 &lt;BR&gt;&lt;/FONT&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, (&lt;FONT color=blue&gt;double&lt;/FONT&gt;)decimalNumber, doubleNumber1);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert((&lt;FONT color=blue&gt;float&lt;/FONT&gt;)decimalNumber != floatNumber);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.2 != 4.2&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, (&lt;FONT color=blue&gt;float&lt;/FONT&gt;)decimalNumber, floatNumber);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(doubleNumber1 != (&lt;FONT color=blue&gt;double&lt;/FONT&gt;)floatNumber);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.20000006258488 != 4.20000028610229&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, doubleNumber1, (&lt;FONT color=blue&gt;double&lt;/FONT&gt;)floatNumber);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(doubleNumber1 != doubleNumber2);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.20000006258488 != 4.2 &lt;BR&gt;&lt;/FONT&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, doubleNumber1, doubleNumber2);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(floatNumber != doubleNumber2);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Displays: 4.2 != 4.2&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, floatNumber, doubleNumber2);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert((&lt;FONT color=blue&gt;double&lt;/FONT&gt;)4.2F != 4.2D);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Display: 4.19999980926514 != 4.2&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, (&lt;FONT color=blue&gt;double&lt;/FONT&gt;)4.2F, 4.2D);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(4.2F != 4.2D);&lt;BR&gt;&lt;FONT color=green&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; Display: 4.2 != 4.2&lt;/FONT&gt; &lt;BR&gt;System.Console.WriteLine(&quot;{0} != {1}&quot;, 4.2F, 4.2D);&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;I find&amp;nbsp;the results notable&amp;nbsp;in several regards: 
&lt;P&gt;&lt;/P&gt;
&lt;OL dir=ltr&gt;
&lt;LI&gt;
&lt;DIV&gt;You can use a &lt;FONT face=&quot;Courier, Monospace&quot;&gt;double&lt;/FONT&gt;&amp;nbsp;to expose the&amp;nbsp;inaccuracy of a float.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Comparing&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;decimalNumber&lt;/FONT&gt; and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;floatNumber&lt;/FONT&gt; reveals they are not equal even though printing the values out to 20 decimal places indicates they are equivalent.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;doubleNumber1&lt;/FONT&gt; and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;floatNumber&lt;/FONT&gt; are not equivalent even though they are both assigned the exact same calculated value in the code.&amp;nbsp;&amp;nbsp;(In fact, the IL reveals the values are different.)&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;This is not just an issue of calculation as the last two assertions reveal.&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P dir=ltr&gt;The obvious question at this point is why?&lt;/P&gt;
&lt;OL dir=ltr&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;float&lt;/FONT&gt; is only accurate to 7 digits so if you cast it to a data type that can hold more than that you will inevitable expose the &quot;insignificant&quot; portion such that it becomes significant.&amp;nbsp; (This is why &lt;FONT face=&quot;Courier, Monospace&quot;&gt;(double)4.2F&lt;/FONT&gt;&lt;FONT face=Courier&gt;&amp;nbsp;does not equal&amp;nbsp;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;4.2D&lt;/FONT&gt;.)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;decimal, float&lt;/FONT&gt;&amp;nbsp;and &lt;FONT face=&quot;Courier, Monospace&quot;&gt;double&lt;/FONT&gt; get initialized with different calculated values because they require different levels of accuracy.&amp;nbsp; The decompiled IL code is as follows:&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;FONT face=Courier&gt;&lt;FONT color=#0000ff&gt;decimal&lt;/FONT&gt;&amp;nbsp;decimalNumber = 4.2;&lt;BR&gt;&lt;FONT color=blue&gt;double&lt;/FONT&gt;&amp;nbsp;doubleNumber1 = 4.200000062584877;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;&lt;FONT face=Courier&gt;double&lt;/FONT&gt;&lt;FONT face=Courier color=#000000&gt;&amp;nbsp;doubleNumber2 = 4.2000000000000002;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Courier&gt;&lt;FONT color=blue&gt;float&lt;/FONT&gt;&amp;nbsp;floatNumber = 4.2000003;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;
&lt;HR&gt;

&lt;P&gt;In response to and appreciation of &lt;A href=&quot;http://falafelsoft.com/Flogs/julian/articles/FloatEquality.aspx&quot;&gt;Julian&apos;s post here&lt;/A&gt; I took the time to correct my&amp;nbsp;post.&amp;nbsp; Thanks Julian!&lt;/P&gt;
&lt;P&gt;I should perhaps delete the entire post but I think my carelessness requires a correction.&amp;nbsp; The primary modifications are as follows:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;I updated the IL code.&amp;nbsp; Converting the hex values displayed by ILDasm. 
&lt;LI&gt;Deleted the &amp;nbsp;&quot;&lt;FONT face=Courier&gt;Trace.Assert((&lt;FONT color=blue&gt;decimal&lt;/FONT&gt;)4.2F != 4.2M);&lt;/FONT&gt;.&quot;&amp;nbsp; &quot;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;Trace.Assert(!4.2M.Equals(4.2F));&lt;/FONT&gt;&quot; was what I should have posted.&amp;nbsp; 
&lt;LI&gt;I updated the variable names to be slightly better. 
&lt;LI&gt;Deleted: &quot;Even though &lt;FONT face=&quot;Courier, Monospace&quot;&gt;floatNumber &lt;/FONT&gt;and&amp;nbsp;&lt;FONT face=Courier&gt;doubleNumber2&lt;/FONT&gt; are assigned the same values in IL they still don&apos;t evaluate as equal.&quot;&amp;nbsp; This was incorrect.&amp;nbsp; They are not assigned the same value in IL, only in C#. 
&lt;LI&gt;Delete: &quot;Any time you compare one &amp;lt;of these&amp;gt; types against another the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;Equals(object value)&lt;/FONT&gt; method is called and it returns false if the data type is not the same. &quot;&amp;nbsp; It didn&apos;t really fit as I didn&apos;t use the &lt;FONT face=&quot;Courier, Monospace&quot;&gt;Equals()&lt;/FONT&gt; method in any of my code and generally the Equals() method is overloaded with a parameter that takes the class type. 
&lt;LI&gt;Deleted: &quot;If you remove the calculations and simply assign 4.2F ....&quot;&amp;nbsp; This was just incorrect (see colophon).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Colophon:&amp;nbsp; &lt;BR&gt;&lt;/STRONG&gt;The root cause of all the errors was the fact that I was using csc.exe for compiling and not VS.NET.&amp;nbsp; As a result, I forgot the /D:TRACE switch so assertions were ignored.&amp;nbsp; I am amazed that only one of the assertions in the end was invalid but regardless I should have been more careful.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/25.html#a598</guid>
			<pubDate>Mon, 26 Apr 2004 03:07:40 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=598&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F25.html%23a598</comments>
			</item>
		<item>
			<title>Cyruslink - 802.11b Enabled Stereo System and More</title>
			<link>http://www.cyrus.co.uk/cyruslink/cl_detail.htm</link>
			<description>&lt;P&gt;For the past year my wonderful wife has been complaining about the hand-me-down stereo system that we have.&amp;nbsp; Although the system is relatively good the CD player has packed up and the amplifier takes about 20 minutes to warm up due to a bad capacitor that I haven&apos;t taken the time to fix.&amp;nbsp; We temporarily replaced it with a boom box but the CD player gave out on that to?&amp;nbsp; We also purchased and under-the-counter CD player and radio but last week the CD player on that died to.&amp;nbsp; What is the deal with CD player reliability or is it just me?&lt;/P&gt;
&lt;P&gt;Anyway, I would like to replace it with a network (802.11b/g or Ethernet)&amp;nbsp;enabled stereo system but it appeared that no such thing existed unless of course one goes with a Windows Media Center PC or Linux.&amp;nbsp; The problem with Windows Media Center PCs, however, is they require a monitor and I just want a stereo (I don&apos;t want a TV, I am not disciplined enough for that.)&amp;nbsp; A Windows Mobile powered stereo an an x86 processor&amp;nbsp;would be great and I would love the challenge of trying to build one but writing drivers for FM receivers, CD players and the like seems beyond my time constraints.&amp;nbsp; This leaves me with Linux but this too seems like a time sink waiting to happen.&lt;/P&gt;
&lt;P&gt;Today I ran across a pretty the &lt;A href=&quot;http://www.cyrus.co.uk/cyruslink/cl_overview.htm&quot;&gt;Cyruslink system&lt;/A&gt; which appears to be running a Pocket PC OS.&amp;nbsp; This seems to be an ideal solution except for one significant factor: &amp;#163;2,999 just for the &quot;lowend&quot; Linkserver.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/24.html#a597</guid>
			<pubDate>Sun, 25 Apr 2004 00:25:26 GMT</pubDate>
			<category>Miscellaneous</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=597&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F24.html%23a597</comments>
			</item>
		<item>
			<title>Outlook&apos;s &quot;I&apos;m sorry.... MapiExcption...&quot; Dialog</title>
			<description>&lt;P&gt;I unexpectedly received the following dialog from Microsoft Outlook 2003 after dialing in to my VPN.&lt;/P&gt;
&lt;P&gt;&lt;IMG alt=&quot;A picture named I&apos;mSorryMapiException.jpg&quot; src=&quot;http://mark1.michaelis.net/weblog/2004/04/23/I&apos;mSorryMapiException.jpg&quot;&gt;&lt;/P&gt;
&lt;P&gt;Perhaps what puzzles me most is exactly who &quot;I&apos;m&quot; is referring to.&amp;nbsp; I was not aware that my computer had feelings of remorse --&amp;nbsp;or any feelings for that matter.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a596</guid>
			<pubDate>Sat, 24 Apr 2004 05:51:41 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=596&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a596</comments>
			</item>
		<item>
			<title>News Readers for Microsoft Outlook</title>
			<description>&lt;P&gt;I came across two NNTP news reader add-ins for Microsoft Outlook recently.&amp;nbsp; The first is &lt;A href=&quot;http://www.ghytred.com/NewsLook/about.aspx&quot;&gt;NewsLook&lt;/A&gt; and the second is from &lt;A href=&quot;http://www.mapilab.com/outlook/nntp/&quot;&gt;MAPILab&apos;s&lt;/A&gt;. It appears none of the have the fast efficient newsgroup reading support that comes with Agent Newsreader but still, the idea of integrating email, newsgroups and RSS (via NewsGator) is intriguing.&lt;/P&gt;
&lt;P&gt;By the way, why doesn&apos;t Outlook support the efficiencies of Agent?&amp;nbsp; I can go through hundreds of messages in Agent in short order and Outlook is an order of magnitude slower.&amp;nbsp; Perhaps the key differentiating factor is the single key accelerator keys (R versus CTRL+R for example) but I think there is more than that.&lt;/P&gt;
&lt;P&gt;Note that there is a &lt;A href=&quot;http://www.mapilab.com/outlook/&quot;&gt;host of Outlook&lt;/A&gt; tools from MAPILab&apos;s including a Redirector, Mailing List Service, Duplicate Email Remover and more that I would really like to try.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a595</guid>
			<pubDate>Fri, 23 Apr 2004 11:45:10 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=595&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a595</comments>
			</item>
		<item>
			<title>NAS Versus SAN</title>
			<link>http://www.ftponline.com/wss/2003_05/magazine/features/tclark/default.aspx</link>
			<description>&lt;P&gt;This article contains a good introduction into the NAS and SAN storage options.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I recently&amp;nbsp;received a quote for a custom built&amp;nbsp;half-terabyte computer with hot swappable hard drives and an ATA serial controller.&amp;nbsp; The price was over $2,500, however, and this seemed higher than necessary.&amp;nbsp; You can by off the shelf NAS devices for less than that.&amp;nbsp; The unexpected costs were in the case (&lt;SPAN style=&quot;FONT-SIZE: 12pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;SuperMicro SC742T-550 for $600) and the AMD mother board (&lt;SPAN style=&quot;FONT-SIZE: 12pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;TYAN AMD-8000 Chipset Model: Tomcat K8S for $295).&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt; FONT-FAMILY: &apos;Times New Roman&apos;; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: &apos;Times New Roman&apos;; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA&quot;&gt;I am interested to learn more about the &lt;A href=&quot;http://www.microsoft.com/windowsserversystem/storage/default.mspx&quot;&gt;Microsoft storage solutions&lt;/A&gt; that are coming out but the OEM hardware I have seen so far is similarly priced to the custom system.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a594</guid>
			<pubDate>Fri, 23 Apr 2004 11:31:08 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=594&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a594</comments>
			</item>
		<item>
			<title>To write a book?</title>
			<link>http://www.simplegeek.com/commentview.aspx/d0eaf161-1a37-4562-acc4-61156e2943f7</link>
			<description>There is little that can be added to Chris Anderson&apos;s post on writing a book.&amp;nbsp; As an author of several, I think he hits the mark quite well.&amp;nbsp; However, I must agree with &lt;A href=&quot;http://www.mikepope.com/blog/&quot;&gt;Mike&apos;s&lt;/A&gt;&amp;nbsp;comment that, &quot;Writing is a great way to learn something.&quot;&amp;nbsp; This is perhaps the greatest motivator for me.</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a592</guid>
			<pubDate>Fri, 23 Apr 2004 11:19:54 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=592&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a592</comments>
			</item>
		<item>
			<title>Mobile/Wireless highlights from around the Web</title>
			<link>http://www.computerworld.com/mobiletopics/mobile/story/0,10801,74404,00.html?nas=MW-74404</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://www.computerworld.com/mobiletopics/mobile/story/0,10801,74404,00.html?nas=MW-74404&quot;&gt;This story&lt;/A&gt; is noteworthy just because it puts Spokane on the map in a technology rag which is a pretty rare occurrence.&amp;nbsp; I confess, however, I have never connected to the &lt;A href=&quot;http://www.newsalert.com/bin/story?StoryId=Cqf_eubKbmdGZyJe4mdK&amp;amp;FQ=Vivato&amp;amp;Nav=na-search-&amp;amp;StoryTitle=Vivato&quot;&gt;&quot;city-wide&quot; wireless network&lt;/A&gt; as I rarely go downtown (although it is only 20 minutes drive from my house) and when I do it is usually for recreational purposes and my laptop doesn&apos;t accompany me.&lt;/P&gt;
&lt;P&gt;As it turns out, I am more likely to use the &lt;A href=&quot;http://www.suntimes.com/output/business/cst-fin-wifi10.html&quot;&gt;wireless networks in Chicago&apos;s airports&lt;/A&gt; than the ones in Spokane as I travel there and through relatively frequently and I really like to connect when I travel.&lt;/P&gt;</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a591</guid>
			<pubDate>Fri, 23 Apr 2004 11:15:38 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=591&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a591</comments>
			</item>
		<item>
			<title>RSS and SourceSafe</title>
			<link>http://www.rassoc.com/gregr/weblog/archive.aspx?post=615</link>
			<description>Today I updated the &lt;A href=&quot;http://www.michaelis.net/SourceSafe/Faq.htm&quot;&gt;Source Safe FAQ&lt;/A&gt; with information about the &lt;A href=&quot;http://www.rassoc.com/gregr/weblog/archive.aspx?post=615&quot;&gt;RSS Feed for Source Safe&lt;/A&gt; that Greg Reinacker posted.</description>
			<guid>http://mark.michaelis.net/weblog/2004/04/23.html#a590</guid>
			<pubDate>Fri, 23 Apr 2004 11:01:29 GMT</pubDate>
			<category>Software Engineering</category>
			<comments>http://radiocomments.userland.com/comments?u=114349&amp;amp;p=590&amp;amp;link=http%3A%2F%2Fmark.michaelis.net%2Fweblog%2F2004%2F04%2F23.html%23a590</comments>
			</item>
		</channel>
	</rss>
