<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6747067</id><updated>2012-01-12T05:18:46.002-08:00</updated><title type='text'>Darin Creason's Weblog</title><subtitle type='html'>A splat of all my blathering.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6747067.post-116794535399284011</id><published>2007-01-04T12:55:00.000-08:00</published><updated>2007-01-04T13:21:53.800-08:00</updated><title type='text'>What Superhero Am I?</title><content type='html'>&lt;TABLE&gt;&lt;TR&gt;&lt;TD&gt;Green Lantern&lt;/TD&gt;&lt;br /&gt;&lt;TD&gt;&lt;HR ALIGN=LEFT NOSHADE SIZE=4 WIDTH=75&gt;&lt;/TD&gt;&lt;TD&gt; 75%&lt;/TD&gt;&lt;br /&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;The Flash&lt;/TD&gt;&lt;br /&gt;&lt;TD&gt;&lt;HR ALIGN=LEFT NOSHADE SIZE=4 WIDTH=70&gt;&lt;/TD&gt;&lt;TD&gt; 70%&lt;/TD&gt;&lt;br /&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;IMG SRC="http://www.thesuperheroquiz.com/pics/lantern2.jpg"&gt;&lt;br /&gt;(Hot-headed. You have strong will power and a good imagination.)&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://www.thesuperheroquiz.com/"&gt;&lt;br /&gt;Click here to take the Superhero Personality Test&lt;/A&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-116794535399284011?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/116794535399284011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=116794535399284011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/116794535399284011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/116794535399284011'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2007/01/what-superhero-am-i.html' title='What Superhero Am I?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-109211819846882913</id><published>2004-08-09T23:06:00.000-07:00</published><updated>2004-08-09T23:09:58.470-07:00</updated><title type='text'>What OS am I?</title><content type='html'>It shouldn't suprise you all that much. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2003/01/os_quiz.php"&gt;&lt;img src="http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/xp.jpg" width="300" height="90" border="0" alt="You are Windows XP.  Under your bright and cheerful exterior is a strong and stable personality.  You have a tendency to do more than what is asked or even desired."&gt;&lt;br&gt;Which OS are You?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-109211819846882913?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/109211819846882913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=109211819846882913' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/109211819846882913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/109211819846882913'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/08/what-os-am-i.html' title='What OS am I?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108996016438183807</id><published>2004-07-15T23:37:00.000-07:00</published><updated>2004-07-15T23:42:44.380-07:00</updated><title type='text'>A new XP gem</title><content type='html'>I ran across this little gem today and thought I'd share it with everyone.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;As long as your computer is not a domain member, you don't have to limit the number of user accounts, and you don't need TweakUI to get Windows to skip the welcome screen or prompt the user to logon.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;At a command prompt, enter &lt;strong&gt;control userpasswords2&lt;/strong&gt;. This will launch the User Accounts application. On the Users tab, clear the check box for "Users must enter a user name and password to use this computer" and click OK. (If your computer is part of a domain, this box does not appear). The Automatically Log On dialog box appears. Type your user name and password, and click OK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;If you didn't know to look for it, you'd never find this handy dialog, which is available in both XP Professional and XP Home. And it's effective—two readers who found TweakUI didn't work for them were able to bypass the welcome screen using this technique. This dialog also lets you define a particular account as a Standard user, a status in between the Limited user and Administrator user categories available in the Control Panel's normal User Accounts applet.&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108996016438183807?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108996016438183807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108996016438183807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108996016438183807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108996016438183807'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/07/new-xp-gem.html' title='A new XP gem'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108983484107323125</id><published>2004-07-14T12:53:00.000-07:00</published><updated>2004-07-14T13:08:49.906-07:00</updated><title type='text'>Not all keys are created equal</title><content type='html'>Let's take a quick walk in the realm of things that are possibly reasonable but certainly not obvious.&lt;br /&gt;&lt;br /&gt;Given the following code, what are the values of b1-b4?&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;&amp;#160;&amp;#160;Hashtable h = new Hashtable();&lt;br /&gt;&amp;#160;&amp;#160;h.Add(1, 1);&lt;br /&gt;&amp;#160;&amp;#160;h.Add((uint)2, 1);&lt;br /&gt;&amp;#160;&amp;#160;bool b1 = h.ContainsKey(1);&lt;br /&gt;&amp;#160;&amp;#160;bool b2 = h.ContainsKey((uint)1);&lt;br /&gt;&amp;#160;&amp;#160;bool b3 = h.ContainsKey(2);&lt;br /&gt;&amp;#160;&amp;#160;bool b4 = h.ContainsKey((uint)2);&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;b1 is true&lt;br /&gt;b2 is false&lt;br /&gt;b3 is false&lt;br /&gt;b4 is true&lt;br /&gt;&lt;br /&gt;Furthermore, consider the following:&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;&amp;#160;&amp;#160;object i = 5;&lt;br /&gt;&amp;#160;&amp;#160;object j = (uint)5;&lt;br /&gt;&amp;#160;&amp;#160;int h1 = i.GetHashCode();&lt;br /&gt;&amp;#160;&amp;#160;int h2 = j.GetHashCode();&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;The values of h1 and h2 are both 5. What gives?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108983484107323125?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108983484107323125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108983484107323125' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108983484107323125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108983484107323125'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/07/not-all-keys-are-created-equal.html' title='Not all keys are created equal'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108965045297194639</id><published>2004-07-11T23:15:00.000-07:00</published><updated>2004-07-12T09:42:49.946-07:00</updated><title type='text'>Getting Winamp to play RealAudio streams</title><content type='html'>&lt;strong&gt;I take no credit for this. I just found it very useful but difficult to find so I thought I would re-post it for the masses.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;My friend Lars loves to listen to German radio. It could be because he is German but I'm not sure. ;) His favorite station is &lt;a href="http://www.fritz.de"&gt;Fritz.de&lt;/a&gt; and he listens to it via a RealAudio stream while he is staying here. That meant of course that he had to install the evil RealPlayer. I hate RealPlayer because it takes over my machine and makes me paranoid so I was compelled to seek another solution. I found a posting on a news forum that describes how to use the RealPlayer codecs by installing the &lt;a href="http://www.musiclivesonline.com/software/downloads/Tara_v1.0.3b.exe"&gt;Tara's RealAudio input plug-in&lt;/a&gt;. Thanks Tara whoever you are. This plug-in rocks and I appreciate you taking the time to write it. Also thanks to Arman68 for re-posting his older post so I could re-post it. I'm confused.&lt;br /&gt;&lt;br /&gt;This is the post unaltered and in its entirety. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;blockquote&gt;Arman68&lt;br /&gt;&lt;br /&gt;Here's a workaround that I found while perusing the Winamp forums. I'm afraid I don't know who came up with it but to them all credit is due. Eventhough it was written with Win 98/ME in mind, it works like a charm with Win2K assuming you do the necessary modifications like changing all references of C:\Windows to C:\WINNT etc. Enjoy. &lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;Real Player Workaround &lt;br /&gt;&lt;br /&gt;Winamp Realaudio plugins require Realplayer to be installed, I know that, there has been a lot of discussion about this here. Well, I think Realplayer is a bloated software which puts way too much entries in the registry and I hate those types of softwares. &lt;br /&gt;&lt;br /&gt;I found a way to keep the minimal components required in order to hear Realaudio content in winamp. (tested innover's and Tara's plugins, on Winamp 2.76, Win98SE, Realplayer 7 &amp; 8). Tara's plugin even allows playback of realvideo. &lt;br /&gt;&lt;br /&gt;Here is what you must do : &lt;br /&gt;&lt;br /&gt;1- Install Realplayer (I suggest a registry backup before, if you want to avoid the hundreds of registry entries it puts in your registry when only 3 are needed) &lt;br /&gt;&lt;br /&gt;2- Backup those 3 folders : &lt;br /&gt;&lt;br /&gt;c:\program files\common files\real\common &lt;br /&gt;c:\program files\common files\real\plugins &lt;br /&gt;and &lt;br /&gt;c:\program files\common files\real\codecs &lt;br /&gt;&lt;br /&gt;* almost forgot, also backup the pncrt.dll file located in c:\windows\system * (or C:\winnt\system) for Win2K &lt;br /&gt;&lt;br /&gt;3. Uninstall Realplayer and restore your registry if you did a backup as suggested in #1 &lt;br /&gt;&lt;br /&gt;4. Copy the 3 folders you backed up to their original locations, and pncrt.dll file to c:\windows\system &lt;br /&gt;&lt;br /&gt;5. Paste the text below in notepad and save as a .reg file &lt;br /&gt;&lt;br /&gt;REGEDIT4 &lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Software\RealNetworks\Preferenc&lt;br /&gt;es\DT_Plugins] &lt;br /&gt;@="C:\\Program Files\\Common files\\Real\\Plugins\\" &lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Software\RealNetworks\Preferenc&lt;br /&gt;es\DT_Codecs] &lt;br /&gt;@="C:\\Program Files\\Common files\\Real\\Codecs\\" &lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Software\RealNetworks\Preferenc&lt;br /&gt;es\DT_Common] &lt;br /&gt;@="C:\\Program Files\\Common files\\Real\\Common\\" &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Click on the .reg file you just saved. &lt;br /&gt;&lt;br /&gt;7. Enjoy, of course you must have one of the winamp realplayer plugins. (For example, Tara 1.0.3.b.exe)&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;(the post is slightly wrong in that on NT/Win200/WinXp/Win2003 the folder is system32 and not system)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108965045297194639?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108965045297194639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108965045297194639' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108965045297194639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108965045297194639'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/07/getting-winamp-to-play-realaudio.html' title='Getting Winamp to play RealAudio streams'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108742611180401189</id><published>2004-06-16T15:47:00.000-07:00</published><updated>2004-06-16T15:48:31.803-07:00</updated><title type='text'>What's the difference between I19 and I18N?</title><content type='html'>Nothing. But here's a load of useful stuff on both:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=c78a0757-ebd7-4e9e-b4f5-84f71c032e34"&gt;Iñtërnâtiônàlizætiøn&lt;/a&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108742611180401189?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108742611180401189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108742611180401189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108742611180401189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108742611180401189'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/06/whats-difference-between-i19-and-i18n.html' title='What&apos;s the difference between I19 and I18N?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108615882737811996</id><published>2004-06-01T23:47:00.000-07:00</published><updated>2004-06-01T23:55:30.410-07:00</updated><title type='text'>Best sci-fi/fantasy books of all time?</title><content type='html'>This is my list (in order)&lt;br /&gt;&lt;a href='http://photos1.blogger.com/img/297/1051/640/eye_of_sauron.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/297/1051/320/eye_of_sauron.jpg' align="right"&gt;&lt;/a&gt;&lt;br /&gt;1. &lt;a href="http://www.tolkien.co.uk/books/lotr.asp"&gt;Lord of the Rings Trilogy&lt;/a&gt; by &lt;a href="http://www.tolkien.co.uk/jrrtolkien/biography.asp"&gt;J.R.R Tolkien&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.dunenovels.com/books/dune.html"&gt;Dune&lt;/a&gt; by &lt;a href="http://www.dunenovels.com/books/dreamer.html"&gt;Frank Herbert&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.stephenking.com/DarkTower/"&gt;The Dark Tower Series&lt;/a&gt; by &lt;a href="http://www.stephenking.com/biography.php"&gt;Stephen King&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.dunenovels.com/books/children.html"&gt;Children of Dune&lt;/a&gt; by &lt;a href="http://www.dunenovels.com/books/dreamer.html"&gt;Frank Herbert&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If I had ever gotten around to reading Asimov I'm sure his Foundation Series would have ranked high as well.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108615882737811996?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108615882737811996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108615882737811996' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108615882737811996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108615882737811996'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/06/best-sci-fifantasy-books-of-all-time.html' title='Best sci-fi/fantasy books of all time?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108568199942116436</id><published>2004-05-27T11:17:00.000-07:00</published><updated>2004-05-27T11:19:59.420-07:00</updated><title type='text'>Optional SOAP headers</title><content type='html'>There is no way to specify if a header is optional or required within WSDL 1.1. The SOAP spec allows headers to be introduced to a SOAP message even when they are not declared in WSDL. For that reason, the WS-I Basic Profile 1.0 has chosen to interpret the presence of a header binding in the WSDL as always being required. &lt;br /&gt;&lt;br /&gt;The following two sections from the WS-I Basic Profile 1.0 describe this&lt;br /&gt;&lt;br /&gt;5.6.22 Required Headers&lt;br /&gt;&lt;br /&gt;WSDL 1.1 does not clearly specify whether all soapbind:headers specified on the wsdl:input or wsdl:output elements of a wsdl:operation element in the SOAP binding section of a WSDL description must be included in the resultant SOAP messages when they are transmitted. The Profile makes all such headers mandatory, as there is no way in WSDL 1.1 to mark a header optional.&lt;br /&gt;&lt;br /&gt;R2738 A MESSAGE MUST include all soapbind:headers specified on a wsdl:input or wsdl:output of a wsdl:operation of a wsdl:binding that describes it.&lt;br /&gt;&lt;br /&gt;5.6.23 Allowing Undescribed Headers&lt;br /&gt;&lt;br /&gt;Headers are SOAP's extensibility mechanism. Headers that are not defined in the WSDL description may need to be included in the SOAP messages for various reasons.&lt;br /&gt;&lt;br /&gt;R2739 A MESSAGE MAY contain SOAP header blocks that are not described in the wsdl:binding that describes it.&lt;br /&gt;&lt;br /&gt;R2753 A MESSAGE containing SOAP header blocks that are not described in the appropriate wsdl:binding MAY have the mustUnderstand attribute on such SOAP header blocks set to '1'.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108568199942116436?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108568199942116436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108568199942116436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568199942116436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568199942116436'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/05/optional-soap-headers.html' title='Optional SOAP headers'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108568180731781699</id><published>2004-05-27T10:52:00.000-07:00</published><updated>2004-05-27T11:16:47.316-07:00</updated><title type='text'>Regular expressions and Star Trek</title><content type='html'>I don't know what it is about regular expressions but I just love 'em.&lt;br /&gt;&lt;br /&gt;Do you remember that episode of Star Trek TNG where Ryker brought back a game from Risa? It looked like one of those new personal computers that people wear on their heads (only this one shot rays of light into the wearer's eyes). Anyway, as you played the game you became addicted because it somehow tapped into the pleasure centers of the player's brain. (How much would you pay for a Game Cube that could give you an orgasm?) As you progressed to higher and higher levels of the game the amount of 'whatever it was that it gave you' increased.  Each time a player completed a level they would get a pleasure reward.&lt;br /&gt;&lt;br /&gt;That's exactly how I feel when I find a new regular expression. Kind of perverse huh? If you know what I mean then you might find the list of &lt;a href="http://www.3leaf.com/resources/articles/regex.aspx"&gt;useful regex's maintained by Scott at 3 Leaf&lt;/a&gt; pleasuring.&lt;br /&gt;&lt;br /&gt;Thanks for doing this Scott. (And sorry for bringing you in on this sorted fetish.)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108568180731781699?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108568180731781699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108568180731781699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568180731781699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568180731781699'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/05/regular-expressions-and-star-trek.html' title='Regular expressions and Star Trek'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108568030639982265</id><published>2004-05-27T10:46:00.000-07:00</published><updated>2004-05-27T10:51:46.400-07:00</updated><title type='text'>Invoking WSDL and XSD</title><content type='html'>When you invoke WSDL.exe you need to make sure that you specify the names of all of the imported schema and WSDL files on the command line. Although, you probably gave a schemaLocation within the import statement this is just a hint at the location and these tools do not attempt to load the files from this location.&lt;br /&gt;&lt;br /&gt;If you are using WSDL and XSD a lot you &lt;strong&gt;MUST&lt;/strong&gt; take a look at &lt;a href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=80258a8c-bb4c-48e6-948b-05f6da568f55"&gt;Point2's code generation toolkit&lt;/a&gt;. It rocks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108568030639982265?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108568030639982265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108568030639982265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568030639982265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108568030639982265'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/05/invoking-wsdl-and-xsd.html' title='Invoking WSDL and XSD'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108267482824963916</id><published>2004-04-22T15:58:00.000-07:00</published><updated>2004-06-01T22:04:02.393-07:00</updated><title type='text'>Base64 and URL Encodings</title><content type='html'>Here's a useful site for testing encodings &lt;a href="http://ostermiller.org/calc/encode.html"&gt;http://ostermiller.org/calc/encode.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108267482824963916?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108267482824963916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108267482824963916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108267482824963916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108267482824963916'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/base64-and-url-encodings.html' title='Base64 and URL Encodings'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108242979466351178</id><published>2004-04-19T18:28:00.000-07:00</published><updated>2004-06-01T22:04:47.043-07:00</updated><title type='text'>Instant Runoff Voting</title><content type='html'>&lt;a href="http://fairvote.org/irv/whatis2.htm"&gt;http://fairvote.org/irv/whatis2.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why don't we use this form of voting? Makes me wonder...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108242979466351178?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108242979466351178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108242979466351178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108242979466351178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108242979466351178'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/instant-runoff-voting.html' title='Instant Runoff Voting'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108147306563246494</id><published>2004-04-19T16:39:00.000-07:00</published><updated>2004-06-01T22:05:04.596-07:00</updated><title type='text'>Mounting the projector </title><content type='html'>There are many different ways to mount a projector. I decided to mount mine to the ceiling so that it would be out of the way. I looked into the projector mount kits that are sold at projector retail sites. There are many, many to choose from. The first thing to check out is the plate that screws to your projector. They make some that are static (made specially to fit a project model) and some that are flexible (they have spider arms that adjust to any angle and reach) to fit almost any projector. The next thing you need to decide is how far the projector will extend from the base. In my case I needed the projector to drop down about 10" from the ceiling because the image would otherwise be blocked by the basement ducting. These &lt;a href="http://www.mountsandmore.com/asp/show_detail_2.asp?sku=PE0116&amp;catid2=173"&gt;extensions&lt;/a&gt; are also available but are really quite pricey considering what they are. In fact, the pipe they use is the same that you can buy at Home Depot for plumbing. It's just 1 1/2" NPT (National Pipe Thread, the kind we use in America) metal pipe. I bought my 6" piece at Home Depot for about $3. I also found a floor flange that I could bolt to the ceiling and screw the pipe into. That just left me with the plate that attaches to the projector. The plate comes with an attachment that has a female connector to connect to the pipe hanging from the ceiling. I bought &lt;a href="http://www.mountsandmore.com/asp/show_detail.asp?sku=PE0147"&gt;this part&lt;/a&gt; online at &lt;a href="http://www.mountsandmore.com/"&gt;Mounts and More&lt;/a&gt; for $149.50. I wanted to buy this part instead of making it myself so that I was sure that it would fit my projector and because it comes with a very nice ball-in-socket design for precision adjustments. You'd be surprised how much the image moves on a wall 16' away when you move the project 1" on axis. (In fact, the answer is that it moves 32".) It also comes with an easy way to detach the projector so that I can remove it for cleaning or using it elsewhere.&lt;br /&gt;&lt;br /&gt;I bought a can of black paint and painted both the flange and the threaded pipe that I bought from Home Depot. Then I mounted the flange to the ceiling using 2 1/2" machine bolts. I pre-drilled the holes in a ceiling joist for two of the bolts and used expansion anchors on the other two since they were in drywall only. I weight about 150lbs and was able to hang from it. I then screwed the threaded piece from the project mount part to the pipe. I attached the projector mount to the projector using the supplied screws and then finally attached the projector to the ceiling mount. Using an Allen wrench supplied with the mount plate I tightened down the screws that lock the project in place and was ready to go.&lt;br /&gt;&lt;br /&gt;The next thing was to wire the video cables and electrical outlet right next to the mount so that I wouldn't have to run exposed cables. I'll talk about making your own component video cables in an upcoming blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108147306563246494?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108147306563246494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108147306563246494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147306563246494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147306563246494'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/mounting-projector.html' title='Mounting the projector '/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108147223762473179</id><published>2004-04-19T15:20:00.000-07:00</published><updated>2004-06-01T22:05:24.640-07:00</updated><title type='text'>Choosing a home theater projector screen: Part 3 Size</title><content type='html'>Now lastly but perhaps most importantly I needed to decide how large of a screen I wanted. This is important because people who have no idea about all this work that goes into building a home theater really only comment about one thing... the size factor. "Wow, look at the size of that screen! That's awesome."&lt;br /&gt;&lt;br /&gt;I talked with several people about this topic at my local stores and as usual, I got several differing opinions. Some said that quality was more important than size (and that is the tradeoff) and some said that bigger was the only way to go.&lt;br /&gt;&lt;br /&gt;In my case I had some limitations because my room is quite small. I also had to figure in what my projector would be capable of doing in quality. I wanted around a 100" diagonal on my viewing area so that meant that I needed a screen that was 6 x 8 (recall that I went with the 4:3 format). I checked DaLite's site for a price on the Model C in this configuration and found that it was about $265. That was indeed very pleasing to me but I wasn't ready to give in just yet. I'm frugal (if you haven't already noticed) and I wanted to check around for better pricing. As it turns out DaLite's price was very good and the only reason that I didn't buy it directly from their website was that I found a local store that would price match. This turns out to have been a great idea because the screen was delivered damaged. I think that this is very rare and the local store was very apologetic (they could see the tears streaming down my face) and helpful. I got the replacement screen 5 business days later and installed it the following weekend.&lt;br /&gt;&lt;br /&gt;Since my room is still being finished I just have bare studs on the wall where the screen is going. I had some 3" x 1/4" lag bolts laying around so I put them into the wall and used washers to secure the screen frame. I just couldn't wait to see what my projector and screen would look like together.&lt;br /&gt;&lt;br /&gt;I hadn't mounted the projector yet because I still wanted some flexibility after seeing what it looked like with the screen. I sat the projector on top of a really heavy shelf and leveled it with a blanket. It turns out that I was within about 6" of my ideal size. With the 1.2x zoom capabilities of the X1 I could easily scale the image to the 100" diagonal. I was very pleased at how everything was turning out. My next task was to mount the projector on the ceiling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108147223762473179?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108147223762473179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108147223762473179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147223762473179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147223762473179'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/choosing-home-theater-projector-screen.html' title='Choosing a home theater projector screen: Part 3 Size'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108239764009794456</id><published>2004-04-19T10:50:00.000-07:00</published><updated>2004-06-01T22:05:48.163-07:00</updated><title type='text'>Step-up voltage transformers</title><content type='html'>Last week I wanted to buy a device that would take my 110V outlet and allow me to plug in a 220V appliance. I wanted the device to be installed permanently in the wall so that I could use it frequently.&lt;br /&gt;&lt;br /&gt;What I found is that I can't do this. First of all I couldn't find such a device anywhere. I also found out that putting such a device directly in the wall doesn't meet code. Apparently, the electric company doesn't like such things attached directly to the grid. The solution that I found was to buy a &lt;a href="http://www.220-electronics.com/Transformers/trans/simranconverter.htm"&gt;step-up voltage transformer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While I was researching I found a couple interesting sites.&lt;br /&gt;&lt;a href="http://www.currentsolutions.com/knowledge/country_spec_a-g.htm"&gt;http://www.currentsolutions.com/knowledge/country_spec_a-g.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.german-way.com/german/electric.html"&gt;http://www.german-way.com/german/electric.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108239764009794456?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108239764009794456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108239764009794456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108239764009794456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108239764009794456'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/step-up-voltage-transformers.html' title='Step-up voltage transformers'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108197918584893236</id><published>2004-04-14T14:20:00.000-07:00</published><updated>2004-07-14T09:22:11.783-07:00</updated><title type='text'>RCWs and reference counting</title><content type='html'>Over the last couple of days I have been working with a couple of my team members to identify a problem with our DCOM server interacting with a managed class implementing a CCW. In the method call to the CCW the DCOM server passes a COM interface which the managed class uses via an RCW. We were seeing the DCOM server crashing at pretty regular intervals and they always coincided with a .NET garbage collection. It turns out that the problem was in the DCOM server code but during our testing I found some important things that I didn't know before about RCWs.&lt;br /&gt;&lt;br /&gt;When an interface is passed to a managed object an RCW is used. As I understand it, in this simple case (no cross-AppDomain marshalling), the RCW will hold a single reference to this interface which effectively bumps the reference count by 1. When the RCW is no longer referenced it will be garbage collected and during this process Release will be called which will decrement the count by 1. Note, that this *could* result in the COM object being deleted. While inside the method call the interface is still being referenced so will not be garbage collected right away. This is true even if you call GC.Collect();GC.WaitForPendingFinalizers();. However, the very next time the GC is run this object could be collected.&lt;br /&gt;&lt;br /&gt;Please note that this behavior is not a bug. It is a known feature of the .NET runtime and well documented. I'm just pointing out that it may not be immediately obvious.&lt;br /&gt;&lt;br /&gt;Consider this example (error checking removed for brevity):&lt;br /&gt;&lt;br /&gt;&lt;DIV style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; OVERFLOW: auto; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid; HEIGHT: 177px"&gt;&lt;CODE&gt;&lt;PRE&gt;&lt;br /&gt;// in the DCOM server code&lt;br /&gt;void CServer::ExecutePlugin()&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;CComPtr&amp;ltIPlugin&amp;gt pPlugin = 0;&lt;br /&gt;&amp;#160;&amp;#160;HRESULT hr = pPlugin.CoCreateInstance(L"MyPlugin.MyPlugin", 0, CLSCTX_SERVER);&lt;br /&gt;&amp;#160;&amp;#160;CComPtr&amp;ltISession&amp;gt pSession = 0;&lt;br /&gt;&amp;#160;&amp;#160;hr = pSession.CoCreateInstance(L"Server.Session.1", 0, CLSCTX_SERVER);&lt;br /&gt;&amp;#160;&amp;#160;hr = pPlugin-&gt;Execute(pSession);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// in the plug-in code&lt;br /&gt;[ProgId("MyPlugin.MyPlugin")]&lt;br /&gt;[Guid("0B5AD27C-488E-4988-A069-83E8CB6BF27B")]&lt;br /&gt;class Plugin : IPlugin&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;public void Execute(MySession session)&lt;br /&gt;&amp;#160;&amp;#160;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;GC.Collect();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;GC.WaitForPendingFinalizers();&lt;br /&gt;&amp;#160;&amp;#160;}&lt;br /&gt;}&lt;br /&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;After the call to pPlugin-&gt;Execute(pSession) has returned the reference count on the pSession object will be (at least) 2. One for the initialize CCI and one for the RCW created for the managed plug-in. After the local CComPtr is deleted the reference count will be 1. This means that the object will not be deleted within the scope (or thread) of the CServer::Execute method. In fact, with some trivial tracing added you can see that the destructor of the pSession object is called from a different thread altogether. This thread must be the GC thread that is cleaning up the RCW for the ISession object.&lt;br /&gt;&lt;br /&gt;The reason why this is important to keep in mind is that if the DCOM server was not correctly following the rules of COM interface reference counting of the ISession object, then the resulting bug would not manifest itself so easily if the plug-in were written in unmanaged code as it would in the managed case.&lt;br /&gt;&lt;br /&gt;Most, implementors of the IPlugin interface would realize that the ISession interface handed to their Execute method does not require an AddRef and Release since it is not being copied and so the reference count would remain at 1 for the entire lifetime of the CServer::Execute call and the object would be destroyed when the CComPtr left scope. In this case the object would be destroyed on the same thread as it was created and not some other .NET GC thread.&lt;br /&gt;&lt;br /&gt;In the managed case the RCW will most likely be the last reference to the pSession object and therefore release it only when GC'd. If the COM object was deleted prematurely because of not following the rules of COM, this might manifest itself as some kind of null derefence exception or crash.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108197918584893236?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108197918584893236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108197918584893236' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108197918584893236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108197918584893236'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/rcws-and-reference-counting.html' title='RCWs and reference counting'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108189179330305323</id><published>2004-04-13T14:29:00.000-07:00</published><updated>2004-06-01T22:06:33.603-07:00</updated><title type='text'>Detecting which .NET Framework version is installed?</title><content type='html'>&lt;a href="http://blogs.msdn.com/robvi/archive/2004/02/17/75272.aspx"&gt;How do I detect what .NET Framework version is installed on a machine?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108189179330305323?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108189179330305323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108189179330305323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108189179330305323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108189179330305323'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/detecting-which-net-framework-version.html' title='Detecting which .NET Framework version is installed?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108188772153830950</id><published>2004-04-13T13:20:00.000-07:00</published><updated>2004-07-14T09:19:25.630-07:00</updated><title type='text'>Using CAPICOM and OpenSSL</title><content type='html'>I was recently challenged with a project that required sending a secure message from a Windows network to a *nix network. The client insisted that we use CAPICOM on the Windows side and the partner on the *nix side was adamant about using OpenSSL. I figured since both libraries were capable of support PKI they must be compatible but I was unsure of how. I was also skepticle because CAPICOM is notorious for its proprietary implementation. After many unsuccessful attempts, talking with folks at Microsoft, and reading gads of web pages on the subject I was becoming quite unsure that it could be done. However, MS suggested that it was possible and that the PKI implementation of CAPICOM did support the standards. The trick was to figure out how.&lt;br /&gt;&lt;br /&gt;After quite a bit of reading and playing with &lt;a href="http://www.slproweb.com/products/Win32OpenSSL.html"&gt;OpenSSL for Win32&lt;/a&gt;, I was able to come up with a way to use &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/intcapicom.asp"&gt;CAPICOM 2.0&lt;/a&gt; and OpenSSL together to send a secure message. The key was with the S/MIME capabilities of OpenSSL.&lt;br /&gt;&lt;br /&gt;In my situation I needed to sign and envelope a message using CAPICOM (on Windows of course) and send the message to a *nix machine using OpenSSL to decrypt and verify it.&lt;br /&gt;&lt;br /&gt;For this example I will use VB 6.0 (sorry) to drive the CAPICOM calls. I am following the best practices of PKI solutions such as PGP as closely as I could (I think). In particular, I am embedding the plain-text content within the signature for use in the verification process later. The signature is then encrypted within the envelope so that only a single file needs to be sent. This results in a slightly larger envelope but simplifies the process by not requiring separate messages to be sent.&lt;br /&gt;&lt;br /&gt;One thing to note is that CAPICOM is a scriptable COM interface and therefore uses BSTR as the string format of choice. This means that all content will be represented in UNICODE and will require translation on the server so that *nix tools like OpenSSL can interpret them.&lt;br /&gt;&lt;br /&gt;The following VB code shows 4 sub-routines that read, write, sign, and encrypt a clear-text text file as well as an event sub-routine for a simple form with a single button for kicking the process off.&lt;br /&gt;&lt;br /&gt;I am simplifying the example by removing the error handling and making some assumptions about the storage of the certificates being used. I am assuming that the certificates are stored in the local user store called “My” and that the certificate location is known. Almost certainly, neither of these would be the case in the real world.&lt;br /&gt;&lt;br /&gt;&lt;DIV style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; OVERFLOW: auto; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid; HEIGHT: 177px"&gt;&lt;CODE&gt;&lt;PRE&gt;' I do not claim any responsibility for the correctness or security of this code&lt;br /&gt;' and any or all portions should be used at your own risk.&lt;br /&gt;&lt;br /&gt;Option Explicit&lt;br /&gt;Const ForReading = 1, ForWriting = 2, TristateFalse = 0&lt;br /&gt;Const TemporaryFolder = 2&lt;br /&gt;&lt;br /&gt;Private Sub Command1_Click()&lt;br /&gt;&amp;#160;&amp;#160;SignFile "c:\temp\in.txt", "c:\temp\signed.txt"&lt;br /&gt;&amp;#160;&amp;#160;EnvelopeFile "c:\temp\signed.txt", "c:\temp\smime.txt"&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub SignFile(ByVal sInFile As String, ByVal sOutFile As String)&lt;br /&gt;&amp;#160;&amp;#160;' Open the MY store and retrieve the first certificate from the&lt;br /&gt;&amp;#160;&amp;#160;' store. The signing operation will only work if this certificate is&lt;br /&gt;&amp;#160;&amp;#160;' valid and has access to the signer's private key.&lt;br /&gt;&amp;#160;&amp;#160;Dim oCertStore As New Store&lt;br /&gt;&amp;#160;&amp;#160;oCertStore.Open CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;Dim oSigner As New signer&lt;br /&gt;&amp;#160;&amp;#160;' The signer's certificate is at index 1&lt;br /&gt;&amp;#160;&amp;#160;oSigner.Certificate = oCertStore.Certificates.Item(1)&lt;br /&gt;&amp;#160;&amp;#160;Set oCertStore = Nothing&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;' Set the content to be signed.&lt;br /&gt;&amp;#160;&amp;#160;Dim oSignedData As New SignedData&lt;br /&gt;&amp;#160;&amp;#160;oSignedData.Content = ReadFile(sInFile)&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;' Save the time the data was signed as a signer attribute&lt;br /&gt;&amp;#160;&amp;#160;' NOTE: the name 'Attribute' is not a unique name&lt;br /&gt;&amp;#160;&amp;#160;' and must be preceded by 'CAPICOM.'&lt;br /&gt;&amp;#160;&amp;#160;Dim oSigningTimeAttr As New CAPICOM.Attribute&lt;br /&gt;&amp;#160;&amp;#160;oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME&lt;br /&gt;&amp;#160;&amp;#160;oSigningTimeAttr.Value = Now&lt;br /&gt;&amp;#160;&amp;#160;oSigner.AuthenticatedAttributes.Add oSigningTimeAttr&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;' Sign the content using the signer's private key.&lt;br /&gt;&amp;#160;&amp;#160;' A value of 'True' in the second parameter indicates that the&lt;br /&gt;&amp;#160;&amp;#160;' content signed is not included in the signature string.&lt;br /&gt;&amp;#160;&amp;#160;' A value of 'False' indicates that it is&lt;br /&gt;&amp;#160;&amp;#160;Dim s As String&lt;br /&gt;&amp;#160;&amp;#160;s = oSignedData.Sign(oSigner, False, CAPICOM_ENCODE_BASE64)&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;' Strip off the last blank line&lt;br /&gt;&amp;#160;&amp;#160;s = Mid(s, 1, Len(s) - 2)&lt;br /&gt;&amp;#160;&amp;#160;' Add the PKCS #7 header and footer so that the signature conforms to what&lt;br /&gt;&amp;#160;&amp;#160;' OpenSSL expects.&lt;br /&gt;&amp;#160;&amp;#160;s = "-----BEGIN PKCS7-----" + vbCrLf + s + vbCrLf + "-----END PKCS7-----"&lt;br /&gt;&amp;#160;&amp;#160;WriteFile sOutFile, s&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;Set oSignedData = Nothing&lt;br /&gt;&amp;#160;&amp;#160;Set oSigner = Nothing&lt;br /&gt;&amp;#160;&amp;#160;Set oSigningTimeAttr = Nothing&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub EnvelopeFile(ByVal sInFile As String, ByVal sOutFile As String)&lt;br /&gt;&amp;#160;&amp;#160;' Open the MY store and retrieve the first certificate from the&lt;br /&gt;&amp;#160;&amp;#160;' store. The signing operation will only work if this certificate is&lt;br /&gt;&amp;#160;&amp;#160;' valid and has access to the signer's private key.&lt;br /&gt;&amp;#160;&amp;#160;Dim oCertStore As New Store&lt;br /&gt;&amp;#160;&amp;#160;oCertStore.Open CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;' Declare and initialize an EnvelopedData object&lt;br /&gt;&amp;#160;&amp;#160;Dim oEnvelopedData As New EnvelopedData&lt;br /&gt;&amp;#160;&amp;#160;oEnvelopedData.Content = ReadFile(sInFile)&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;' The signer's certificate is at index 1&lt;br /&gt;&amp;#160;&amp;#160;' NOTE that you can add as many recipient certs as you like.&lt;br /&gt;&amp;#160;&amp;#160;oEnvelopedData.Recipients.Add oCertStore.Certificates.Item(1)&lt;br /&gt;&amp;#160;&amp;#160;Set oCertStore = Nothing&lt;br /&gt;&amp;#160;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;'  Set the encryption algorithm and key length. Comment out&lt;br /&gt;&amp;#160;&amp;#160;'  or remove the following lines to use the default algorithm&lt;br /&gt;&amp;#160;&amp;#160;'  and key length. The triple DES algorithm and 128 bit key&lt;br /&gt;&amp;#160;&amp;#160;'  length may not be supported.&lt;br /&gt;&amp;#160;&amp;#160;oEnvelopedData.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_3DES 'or ENCRYPTION_ALGORITHM_RC4&lt;br /&gt;&amp;#160;&amp;#160;oEnvelopedData.Algorithm.KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;'Declare the string that will hold the enveloped message.&lt;br /&gt;&amp;#160;&amp;#160;Dim sEnvelopedMessage As String&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;'Encrypt the message into sEnvelopedMessage. The enveloped message&lt;br /&gt;&amp;#160;&amp;#160;'string contains everything that an intended recipient will need to&lt;br /&gt;&amp;#160;&amp;#160;'decrypt the message, including information on the encryption algorithm 'key length.&lt;br /&gt;&amp;#160;&amp;#160;sEnvelopedMessage = oEnvelopedData.Encrypt&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;' Release the EncryptedData object and the Store object.&lt;br /&gt;&amp;#160;&amp;#160;Set oEnvelopedData = Nothing&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;' Add the MIME headers to the content&lt;br /&gt;&amp;#160;&amp;#160;Dim sMimeHeader As String&lt;br /&gt;&amp;#160;&amp;#160;sMimeHeader = "MIME-Version: 1.0" + vbCrLf&lt;br /&gt;&amp;#160;&amp;#160;sMimeHeader = sMimeHeader + "Content-Disposition: attachment; filename=""smime.p7m""" + vbCrLf&lt;br /&gt;&amp;#160;&amp;#160;sMimeHeader = sMimeHeader + "Content-Type: application/x-pkcs7-mime; name=""smime.p7m""" + vbCrLf&lt;br /&gt;&amp;#160;&amp;#160;' these last two line feeds are important&lt;br /&gt;&amp;#160;&amp;#160;sMimeHeader = sMimeHeader + "Content -Transfer - Encoding: base64" + vbCrLf + vbCrLf&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;sEnvelopedMessage = sMimeHeader + sEnvelopedMessage&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;WriteFile sOutFile, sEnvelopedMessage&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub WriteFile(ByVal sFileName As String, ByVal sText As String)&lt;br /&gt;&amp;#160;&amp;#160;Dim oFS, oTF As Object&lt;br /&gt;&amp;#160;&amp;#160;Set oFS = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;&amp;#160;&amp;#160;Set oTF = oFS.OpenTextFile(sFileName, ForWriting, True, TristateFalse)&lt;br /&gt;&amp;#160;&amp;#160;oTF.Write (sText)&lt;br /&gt;&amp;#160;&amp;#160;oTF.Close&lt;br /&gt;&amp;#160;&amp;#160;Set oTF = Nothing&lt;br /&gt;&amp;#160;&amp;#160;Set oFS = Nothing&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Function ReadFile(ByVal sFileName As String) As String&lt;br /&gt;&amp;#160;&amp;#160;Dim oFS, oTF As Object&lt;br /&gt;&amp;#160;&amp;#160;Set oFS = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;&amp;#160;&amp;#160;Set oTF = oFS.OpenTextFile(sFileName, ForReading, False, TristateFalse)&lt;br /&gt;&amp;#160;&amp;#160;ReadFile = oTF.ReadAll&lt;br /&gt;&amp;#160;&amp;#160;oTF.Close&lt;br /&gt;&amp;#160;&amp;#160;Set oTF = Nothing&lt;br /&gt;&amp;#160;&amp;#160;Set oFS = Nothing&lt;br /&gt;End Function&lt;br /&gt;&lt;/PRE&gt;&lt;/CODE&gt;&lt;/DIV&gt;&lt;br /&gt;Then to decrypt and verify the message you can use the OpenSSL command-line tools with the smime command.&lt;br /&gt;&lt;br /&gt;This first command will take the envelope and decrypt it to find the signature (containing the plain-text content).&lt;br /&gt;&lt;code&gt;&lt;br /&gt;openssl smime -decrypt -in smime.txt -recip ..\cert.pem -inkey ..\privkey.pem -out signature.unicode.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Recall that the output from CAPICOM is always UNICODE so we need to translate the files back to ANSI before proceeding. I use a simple tool that I wrote to do this.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Unicode2AnsiConvert.exe signature.unicode.txt signature.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This second command will take the signature and verify it. If the signature is verified the tool will write “Verification successful” to the console. Please note that verification requires correct certificate resolution to be configured for the machine but this is necessary for security.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;openssl smime -verify -in signature.txt -inform PEM -out message.unicode.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Finally, translate the message to ANSI.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Unicode2AnsiConvert.exe message.unicode.txt message.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The resulting message.txt file will contain the original message input into CAPICOM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108188772153830950?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108188772153830950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108188772153830950' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108188772153830950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108188772153830950'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/using-capicom-and-openssl.html' title='Using CAPICOM and OpenSSL'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108187061217143608</id><published>2004-04-13T08:35:00.000-07:00</published><updated>2004-06-01T22:07:24.023-07:00</updated><title type='text'>The Man In The Arena</title><content type='html'>Why can't we get a president that can speak like this again?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theodore-roosevelt.com/trsorbonnespeech.html"&gt;http://www.theodore-roosevelt.com/trsorbonnespeech.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108187061217143608?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108187061217143608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108187061217143608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108187061217143608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108187061217143608'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/man-in-arena.html' title='The Man In The Arena'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108187042006243367</id><published>2004-04-13T08:32:00.000-07:00</published><updated>2004-06-01T22:07:43.846-07:00</updated><title type='text'>DateTime formatting and best practices</title><content type='html'>&lt;a href="http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/datetimecode.asp"&gt;http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dndotnet/html/datetimecode.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108187042006243367?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108187042006243367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108187042006243367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108187042006243367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108187042006243367'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/datetime-formatting-and-best-practices.html' title='DateTime formatting and best practices'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181677398573144</id><published>2004-04-12T17:38:00.000-07:00</published><updated>2004-06-01T22:02:10.823-07:00</updated><title type='text'>Do I use Load, LoadFile, or LoadFrom?</title><content type='html'>From Suzzanne Cook's blog:&lt;br /&gt;&lt;a href="http://blogs.gotdotnet.com/suzcook/PermaLink.aspx/53e2a77b-9ff1-4ff6-b19d-131b01f58b4b"&gt;http://blogs.gotdotnet.com/suzcook/PermaLink.aspx/53e2a77b-9ff1-4ff6-b19d-131b01f58b4b&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181677398573144?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181677398573144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181677398573144'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/do-i-use-load-loadfile-or-loadfrom.html' title='Do I use Load, LoadFile, or LoadFrom?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181648190704257</id><published>2004-04-12T17:36:00.000-07:00</published><updated>2004-06-01T22:08:07.530-07:00</updated><title type='text'>Any given Monday?</title><content type='html'>I was recently tasked with finding out the calendar date of of the first day of any week. I came up with the following code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;       DateTime GetFirstDayOfWeekDate(DateTime reference, DateTimeFormatInfo dtfi)&lt;br /&gt;       {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;Calendar cal = dtfi.Calendar;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;DayOfWeek dow = cal.GetDayOfWeek(reference);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;DateTime firstDayOfWeek = dtReference.AddDays((((int)dtfi.FirstDayOfWeek - (int)dow) - 7) % 7);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;return firstDayOfWeek;&lt;br /&gt;       }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I have run it through a test that uses all 7 days as the first day of the week and calculates the date for 10,000 days. Upon spot checks of the results it seems to work. I have only tested it with the EN-us culture. I don't know how it works with other cultures.&lt;br /&gt;&lt;br /&gt;Does anyone know of a different\better way or see any problems with this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181648190704257?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108181648190704257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108181648190704257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181648190704257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181648190704257'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/any-given-monday.html' title='Any given Monday?'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181630027440056</id><published>2004-04-12T17:28:00.000-07:00</published><updated>2004-06-01T22:08:33.333-07:00</updated><title type='text'>Using SQL bigint in your applications</title><content type='html'>You can use SQL bigint in your applications but be careful that you use the appropriate integer size in your code. For a quick reference see the following list:&lt;br /&gt;&lt;br /&gt;SQL bigint             =  9223372036854775808&lt;br /&gt;XSD unsignedLong = 18446744073709551615 &lt;br /&gt;.NET ulong             = 18446744073709551615&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181630027440056?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108181630027440056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108181630027440056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181630027440056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181630027440056'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/using-sql-bigint-in-your-applications.html' title='Using SQL bigint in your applications'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181580711501684</id><published>2004-04-12T17:23:00.000-07:00</published><updated>2004-06-01T22:08:59.336-07:00</updated><title type='text'>ReleaseComObject</title><content type='html'>Chris Brumme to the rescue again...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.gotdotnet.com/cbrumme/commentview.aspx/940d1191-3cc5-4b8d-a8b3-68b47f2f8dcb"&gt;http://blogs.gotdotnet.com/cbrumme/commentview.aspx/940d1191-3cc5-4b8d-a8b3-68b47f2f8dcb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181580711501684?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108181580711501684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108181580711501684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181580711501684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181580711501684'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/releasecomobject.html' title='ReleaseComObject'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181575935127025</id><published>2004-04-12T17:22:00.000-07:00</published><updated>2004-06-01T22:09:21.680-07:00</updated><title type='text'>Side-by-side execution in .NET</title><content type='html'>Good overview of side-by-side execution.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.3leaf.com/resources/articles/sbs.aspx"&gt;http://www.3leaf.com/resources/articles/sbs.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181575935127025?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108181575935127025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108181575935127025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181575935127025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181575935127025'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/side-by-side-execution-in-net.html' title='Side-by-side execution in .NET'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108181521769994193</id><published>2004-04-12T17:13:00.000-07:00</published><updated>2004-06-01T22:10:24.596-07:00</updated><title type='text'>The XmlSerializer Generates Code At Runtime</title><content type='html'>The XmlSerializer inspects your serialized type and generates code on the fly using the Code Document Object Model (CodeDom) to serialize and deserialize instances of it. Normally this code is deleted as soon as it is compiled into an assembly. To see the code generated by the compiler, you must add a switch to the machine.config (or web.config) file to keep compiler-generated files around. To do this, follow these steps: &lt;br /&gt;Open the machine.config file in a text editor, such as Notepad. &lt;br /&gt;Add an XmlSerialization.Compilation switch to the system.diagnostics section of the code, as follows: &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;#160;&amp;lt;system.diagnostics&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;lt;switches&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;lt;add name="XmlSerialization.Compilation" value="4"/&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;lt;/switches&amp;gt;&lt;br /&gt;&amp;#160;&amp;lt;/system.diagnostics&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Run the client application that does XML Serialization.&lt;br /&gt;&lt;br /&gt;Look in the %temp% directory for a recently created .cs file. There will be several others as well. Note: if this is a web app (i.e. web service) then look under %windir%\temp. The .cs file is the generated source. The .out file should have any compiler errors.&lt;br /&gt;&lt;br /&gt;You should also be aware of the permissions needed to do this: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;823196"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;823196&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108181521769994193?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108181521769994193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108181521769994193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181521769994193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108181521769994193'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/xmlserializer-generates-code-at.html' title='The XmlSerializer Generates Code At Runtime'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108180698887432832</id><published>2004-04-12T14:50:00.000-07:00</published><updated>2004-06-01T22:10:52.600-07:00</updated><title type='text'>.NET Garbage Collection of Unmanaged Objects</title><content type='html'>Some very interesting articles on problems with the GC and unmanaged objects. They gave me some insight into proper handling of non-memory unmanaged resources (like handles) in .NET.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cbrumme/archive/2003/04/19/51365.aspx"&gt;Lifetime, GC.KeepAlive, handle recycling&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=24128"&gt;TSS.NET Article: Garbage Collection and Interoperability in .NET&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemgcclasskeepalivetopic.asp"&gt;GC.KeepAlive Method&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx"&gt;Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/default.aspx"&gt;Garbage Collection—Part 2: Automatic Memory Management in the Microsoft .NET Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I found some interesting replies to &lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=24128"&gt;one of the articles&lt;/a&gt; above. It so happens that some readers looked into some of the claims in this article further and found them left wanting. An &lt;a href="http://www.theserverside.net/discussions/thread.tss?thread_id=24128"&gt;"almost" heated discussion&lt;/a&gt; ensued over the conclusions that the author drew. In particular, &lt;a href="http://www.theserverside.net/discussions/thread.tss?thread_id=24128#112364"&gt;one reader took issue&lt;/a&gt; with the claim that the object was not referenced and therefore needed the GC.KeepAlive call.&lt;br /&gt; &lt;br /&gt;"The problem you experienced must be related to something else. I really don't understand how adding GC.KeepAlive(h) solved the problem..."&lt;br /&gt; &lt;br /&gt;One of the &lt;a href="http://www.theserverside.net/discussions/thread.tss?thread_id=24128#112579"&gt;follow-up postings&lt;/a&gt; contained a few more links to even more interesting articles on this topic. These are particularly relevent to those of us designing managed classes and even more so if those classes are wrapping unmanaged "things". &lt;a href="http://blogs.msdn.com/adam_nathan/archive/2003/06/05/56697.aspx"&gt;One link&lt;/a&gt; includes a quiz and a reference to a tool called &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=c7b955c7-231a-406c-9fa5-ad09ef3bb37f"&gt;CLR SPY&lt;/a&gt; that can be used to help debug related problems.&lt;br /&gt;&lt;pre class="code"&gt; &lt;br /&gt;  // This code has a bug!&lt;br /&gt;  public static void Main () &lt;br /&gt;  { &lt;br /&gt;    // Open the key for read-only access &lt;br /&gt;    RegistryKey key = Registry.LocalMachine.OpenSubKey( &lt;br /&gt;      "Software\\Microsoft\\.NETFramework"); &lt;br /&gt;    Console.WriteLine("Install root: " + &lt;br /&gt;      key.GetValue("InstallRoot")); &lt;br /&gt;  } &lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt; &lt;br /&gt;I found the &lt;a href="http://blogs.msdn.com/adam_nathan/archive/2003/06/05/56697.aspx#56703"&gt;answers to the quiz&lt;/a&gt; very revealing.&lt;br /&gt; &lt;br /&gt;"When the current instance gets collected as the PInvoke call to RegQueryValueEx is initiated, RegCloseKey ends up being called before the unmanaged implementation of RegQueryValueEx executes. By the time the RegQueryValueEx API processes the handle, the handle is invalid! This problem is easy to introduce in any managed classes that wrap unmanaged handles. Yet the time window for failure can be so small that it would usually take a really long time for you to discover the bug."&lt;br /&gt; &lt;br /&gt;In particular, I found it interesting that part of the solution includes the correct use of the IDisposable pattern.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108180698887432832?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108180698887432832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108180698887432832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108180698887432832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108180698887432832'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/net-garbage-collection-of-unmanaged.html' title='.NET Garbage Collection of Unmanaged Objects'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108147217613829883</id><published>2004-04-08T17:52:00.000-07:00</published><updated>2004-06-01T22:11:15.363-07:00</updated><title type='text'>Choosing a home theater projector screen: Part 2 Aspect ratio</title><content type='html'>The next big question I needed to ask myself is which format to choose from? 4:3 or 16:9? Again, I had many choices and in this case I found out that my choice was really dependent mostly on my personal preference. &lt;a href="http://www.projectorcentral.com/"&gt;Projector Central&lt;/a&gt; has a great article to read about &lt;a href="http://www.projectorcentral.com/formats.htm"&gt;screen and projector formats&lt;/a&gt; and I can't say anything that they didn't. It was pretty much the only article that I read about this subject before making my decision and I highly recommend it.&lt;br /&gt;&lt;br /&gt;Since I wanted to view mostly DVDs and am way too cheap for HDTV at this point, I chose the 4:3 format and I have been very happy with this choice. I can still view 16:9 or widescreen if I choose but I really prefer the look of 4:3 when I'm at home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108147217613829883?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108147217613829883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108147217613829883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147217613829883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108147217613829883'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/choosing-home-theater-projector-screen_08.html' title='Choosing a home theater projector screen: Part 2 Aspect ratio'/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108146364888406255</id><published>2004-04-08T14:20:00.000-07:00</published><updated>2004-06-01T22:12:52.650-07:00</updated><title type='text'>Choosing a home theater projector screen: Part 1 Configuration and Material </title><content type='html'>If you have been following my posts then you know that I am completely new to the world of home theater and therefore have and had a lot of learning to do. I sat down at my computer to figure out which screen I wanted to buy for my home theater. I had no idea....&lt;br /&gt;&lt;br /&gt;Manual or electric, permantent tension or rolled, the list goes on. I spent two nights online doing research and then decided to go to some local stores to ask for help. As I found out with the projector earlier no one seems to know much about this stuff. Or maybe I just didn't ask the right people. At any rate I was determined to learn.&lt;br /&gt;&lt;br /&gt;Once again, my choices were limited by my fictitious budget. That and the fact that no way am I so lazy that I cannot get off my *ss and pull the screen down myself. ;)&lt;br /&gt;&lt;br /&gt;I also decided that I didn't want the screen to be permanently visable. My room is quite small already and having an entire wall with a huge white canvas covering it was probably not a good idea. Besides, permanently tensioned screens are considerably more money.&lt;br /&gt;&lt;br /&gt;As usual, I started with a google search but quickly found myself at &lt;a href="http://www.dalite.com/"&gt;DaLite.com&lt;/a&gt;. At this site I found a wealth of knowledge on screens. I think they deserve a lot of credit for making it easier for people like me to get up-to-speed and understanding the technology. Good job, DaLite.&lt;br /&gt;&lt;br /&gt;The one thing that was quickly becoming apparent to me though was that there are a lot of screens out there. However, DaLite offers a page that guides you through the process of finding a screen that's right for you. Well, to be more exact they guide you through finding a screen material. However, this turns out to be one of the most important criteria and probably the one that most people like me wouldn't have a clue about. It all has to do with something called the "gain" factor of the screen. Some materials can make the picture look brighter than others. To accomplish this they need to use certain materials like glass beads or polymers. These materials come at a price though and this mostly manifests itself in the viewing angle. For instance, if you have a high-gain screen you may not be able to place your audience at wide angles to the screen.&lt;br /&gt;&lt;br /&gt;Why would you need a high-gain screen? Well, that depends upon a few of factors:&lt;br /&gt;&lt;br /&gt;1. What is your projector's output in lumens?&lt;br /&gt;2. How many square feet will your projected image be?&lt;br /&gt;3. How much control do you have over ambient light conditions in your home theater?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://htrgroup.com/cgi-local/main.pl?tab=projector-docs&amp;section=brightness"&gt;Determining your foot-lumens&lt;/a&gt; is pretty simple. The lumens output should be obvious from your projector's documentation. For the X1, it's about 1100 max or about 700 after tuning for watching DVDs. The ambient light question should also be obvious after taking a quick review of your room. DaLite.com's helpful pages will guide you through this process nicely.&lt;br /&gt;&lt;br /&gt;It turns out that since my theater is in my former garage and I have completely walled off the room from any windows I have complete control over the ambient light situation. It also turns out that my X1 setup was about 27 foot-lumens. This meant that I could go for a 1.0 gain screen. That's great because that meant I could buy the relatively inexpensive Matte White material for my screen.&lt;br /&gt;&lt;br /&gt;So now that I've decided on Matte White and a manual pull-down screen I could narrow my choices of screens considerably. DaLite offers the &lt;a href="http://www.dalite.com/products/product.php?cID=9&amp;pID=230"&gt;Model C&lt;/a&gt; screen for a very reasonable price. They also offer most of their screens with something called &lt;a href="http://www.dalite.com/products/product.php?cID=9&amp;pID=231"&gt;Control Screen Return (CSR)&lt;/a&gt;. I thought about getting this option for awhile but in the end I felt that I could trust myself to return the screen carefully and save my money for more important things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108146364888406255?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108146364888406255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108146364888406255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108146364888406255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108146364888406255'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/choosing-home-theater-proj_108146364888406255.html' title='Choosing a home theater projector screen: Part 1 Configuration and Material '/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108145839479423700</id><published>2004-04-08T11:40:00.000-07:00</published><updated>2004-06-01T22:12:20.486-07:00</updated><title type='text'>Choosing the right projector for your home theater </title><content type='html'>I knew that one of the most expensive pieces was going to be the projector so that's where I started my research. As with almost every aspect that I'm going to cover on this topic my search always begins with google. How did we ever live without this tool folks? :)&lt;br /&gt;&lt;br /&gt;I figured that there must be droves of information on creating your own home theater. I even thought that I would find the perfect website explaining everything I ever wanted to know and more. I was horribly wrong. In fact, it's one reason that I decided to sit down and create this blog to share my experience.&lt;br /&gt;&lt;br /&gt;I started doing a lot of research on projectors to find out what the state of the technology was. I kind of knew what I wanted but also was afraid to find out what that was going to cost me. I looked at many projectors from Panasonic, InFocus, Sony, Dell, IBX, and Gateway. I probably looked at others as well but can't recall all of them now. To my surprise it really didn't take me that long to decide on the InFocus X1. It was receiving &lt;a href="http://www.extremetech.com/article2/0,3973,897158,00.asp"&gt;great reviews&lt;/a&gt; and made the &lt;a href="http://www.projectorcentral.com/rpt_top_10_free.cfm"&gt;top 10&lt;/a&gt; list in it's price range.&lt;br /&gt;&lt;br /&gt;Since I was looking for a projector primarily for playing DVDs, the X1 had exactly what I needed and for about 1/2 the price of the competitors. The following reviews will give you the skinny on the X1.&lt;br /&gt;&lt;br /&gt;InFocus X1 Reviews:&lt;br /&gt;&lt;a href="http://www.myhometheater.homestead.com/X1Review.html"&gt;http://www.myhometheater.homestead.com/X1Review.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.projectorcentral.com/infocus_x1.htm"&gt;http://www.projectorcentral.com/infocus_x1.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I found the &lt;a href="http://www.onlinemicro.com/prodLG.jsp?prodId=fa87e8dd34.1"&gt;X1 online for $915&lt;/a&gt; at &lt;a href="http://www.onlinemicro.com"&gt;www.onlinemicro.com&lt;/a&gt;. Last I looked it was even cheaper. :L&lt;br /&gt;&lt;br /&gt;I got the projector about a week later and hooked it up immediately to my DVD player. I watched The Matrix: Reloaded on my dining room wall complete with shadows from the chandelier and a vase on the table. It was pure ecstasy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108145839479423700?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108145839479423700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108145839479423700' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108145839479423700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108145839479423700'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/choosing-right-projector-for-your-home.html' title='Choosing the right projector for your home theater '/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6747067.post-108144601369271130</id><published>2004-04-08T10:34:00.000-07:00</published><updated>2004-06-01T22:11:57.530-07:00</updated><title type='text'>Creating a home theater on a budget </title><content type='html'>About two years ago I bought a house in SE Portland. I started doing some home improvement shortly thereafter. I had a nice 3-car (stacked) garage under the house and the layout was perfect for turning the one space into an entertainment room. I started by partitioning the space with a wall (and door) and things were moving along nicely. Then I hit the home improvement equivalent of writers block. That and the fact that I was un-motivated at the time. To make the story short and to keep things interesting I'll fast-forward to about 6-months ago.&lt;br /&gt;&lt;br /&gt;I made a decision to start working on it again and made some choices about what I wanted to do. For better or worse. :)&lt;br /&gt;&lt;br /&gt;I decided to create a home theater. I knew that this would be expensive but I figured that since I would be doing most of the work I could offset some of my costs for the equipment and still come in under my "flexible", okay let's say non-existent budget.&lt;br /&gt;&lt;br /&gt;To get the project re-started I drafted up blue-prints of the room (including wiring diagrams) and hired an electrician to re-configure my main electrical box and run heavy-guage wire to a sub-panel in the new room. I am handy with most things required for this project but this part made me a little nervous. Needless to say I was extremely happy with his work and it gave me the exact kick in the pants that I needed to get inspired.&lt;br /&gt;&lt;br /&gt;In subsequent posts on this topic I will talk about what I learned while doing this project and try to share some of my experience in the hope that it helps somebody.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6747067-108144601369271130?l=darinc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://darinc.blogspot.com/feeds/108144601369271130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6747067&amp;postID=108144601369271130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108144601369271130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6747067/posts/default/108144601369271130'/><link rel='alternate' type='text/html' href='http://darinc.blogspot.com/2004/04/creating-home-theater-on-budget.html' title='Creating a home theater on a budget '/><author><name>Unknown</name><uri>http://www.blogger.com/profile/11986207138920842170</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
