<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkEARX44eip7ImA9WxJUEkw.&quot;"><id>tag:blogger.com,1999:blog-11467244</id><updated>2009-07-10T03:24:04.032-04:00</updated><title>Christopher Miller's random thoughts</title><subtitle type="html">Semi-random notes on programming, adoption, and life in general</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://anotherlab.rajapet.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>424</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/ChristopherMillersRandomThoughts" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CEMMQXk5fip7ImA9WxJWEkQ.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-1371842410770191852</id><published>2009-06-17T22:34:00.001-04:00</published><updated>2009-06-17T22:34:40.726-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-17T22:34:40.726-04:00</app:edited><title>Facebook does not need a “dislike” button</title><content type="html">&lt;p&gt;With just about everything you get to see view in &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt;, there’s usually a button or a link displayed as “like” associated with the topic.&amp;#160; If you click that button, the person who posted that link gets a little note on his Facebook page that you liked what ever it was that they had put up.&lt;/p&gt;  &lt;p&gt;When I first saw the ‘like” button, the first thing I thought of was my &lt;a href="https://www3.tivo.com/store/merchandise.do"&gt;TiVo remote&lt;/a&gt; with it’s “Thumbs Up” and “Thumbs Down” buttons.&amp;#160; You can thumb up or down a program while you are watching it.&amp;#160; This information gets stored on the TiVo and it uses that information to pick shows it think you might like to watch.&amp;#160; A completely optional feature, but very cool none the less.&lt;/p&gt;  &lt;p&gt;With the TiVo ‘Thumbs Down” feature in mind, I wondered why there wasn’t a “dislike” button.&amp;#160; If you believe in &lt;a href="http://c2.com/cgi/wiki?SturgeonsLaw"&gt;Sturgeon’s Law&lt;/a&gt; (ninety percent of everything is crap), then there is going to be stuff on Facebook that you won’t like.&amp;#160; Since they let you express your approval with the “like' button, why not be able to express your disapproval?&lt;/p&gt;  &lt;p&gt;I’m not the only one who has wondered about that.&amp;#160; There’s at least one poll on Facebook that asks “Should Facebook get a dislike button?”&amp;#160; if you have a Facebook account, you can hit that poll from this &lt;a href="http://apps.facebook.com/my_polls/vote.php?poll_id=83&amp;amp;src=url_share"&gt;link&lt;/a&gt;.&amp;#160; I saw it because a friend of mine had already voted “Yes”.&lt;/p&gt;  &lt;p&gt;Voting “Yes” was my initial inclination, but I decided to think about it for minute.&amp;#160; The more I thought about it, the more convinced I became that it would be a bad idea to have a “dislike” button.&amp;#160; It would be a tool for expressing a negative opinion and that’s not what Facebook is about.&lt;/p&gt;  &lt;p&gt;A large part of the early appeal of Facebook was that it was closed community.&amp;#160; If you want to see someone’s Facebook page, you had to be a member of Facebook and probably need to be a “friend” as Facebook defines it) of that person before being able to view that page.&amp;#160; &lt;/p&gt;  &lt;p&gt;Since you have to have a Facebook account to access Facebook user pages, there are no anonymous users on Facebook.&amp;#160; If the Facebook administrators catch you using a fake name (like the way a certain B-List actress &lt;a title="Invoke the power of Google to display this information" href="http://www.google.com/search?hl=en&amp;amp;safe=off&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=Ic7&amp;amp;q=lohan+facebook+fake+account&amp;amp;aq=0p&amp;amp;oq=loha&amp;amp;aqi=g%3Ap1g%3Az1g8"&gt;did&lt;/a&gt; last winter), they will disable the account.&amp;#160; What ever you do on Facebook, it will always be associated with your account.&lt;/p&gt;  &lt;p&gt;If you could click a “dislike” button for something that a friend had posted, your friend is going to know you didn’t like what they had posted.&amp;#160; No one is going to want to see a little thumbs down image next to the picture of their new kitten/cat/tattoo/etc.&amp;#160; There will be a percentage of users who will be offended when their post is disliked.&amp;#160; That can lead to bad feelings between the two people and add a negative tone to the Facebook experience.&lt;/p&gt;  &lt;p&gt;If you feel strongly against something, you can still leave a comment and express your opinion.&amp;#160; That can actually be helpful.&amp;#160; If you wanted to press the “dislike” button on something because you found it inaccurate or offensive, you can actually write why you feel that way.&amp;#160; Constructive criticism means a lot more than a little image of thumb pointing down.&amp;#160; Some people will still be offended by critical posts, but now you will have a starting point to discuss it.&amp;#160; So I’m not taking that poll and I’m hoping that Facebook doesn’t implement a “dislike” feature.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-1371842410770191852?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=8rmo83s-sao:RGkr2gV3_NQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=8rmo83s-sao:RGkr2gV3_NQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/8rmo83s-sao" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/1371842410770191852/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/06/facebook-does-not-need-dislike-button.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1371842410770191852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1371842410770191852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/8rmo83s-sao/facebook-does-not-need-dislike-button.html" title="Facebook does not need a “dislike” button" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/06/facebook-does-not-need-dislike-button.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIGQH4-eSp7ImA9WxJWEUs.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-6151669710246548542</id><published>2009-06-15T12:05:00.001-04:00</published><updated>2009-06-16T11:35:21.051-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-16T11:35:21.051-04:00</app:edited><title>Checking to see Microsoft Report Viewer 2008 SP1 has been installed</title><content type="html">&lt;p&gt;We are updating the installer for one of our applications and that app now requires the Microsoft Report Viewer 2008 Service Pack 1 to be installed first.&amp;#160; The fun part is determining if it’s installed or not.&amp;#160; Usually, I check the registry keys to see if an application is installed.&amp;#160; If the user has installed the Report Viewer as a separate application, you’ll find it under the key &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Report Viewer Redistributable 2008 SP1&lt;/strong&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you want to read a value from that key, look for VersionMajor.&amp;#160; It should be a DWORD value of 1.&lt;/p&gt;  &lt;p&gt;Of course that’s not the only way to get Report Viewer SP1 installed.&amp;#160; If you have Visual Studio 2008 and you have applied SP1, then you’ll have Report Viewer SP1 as part of the Service Pack.&amp;#160; Under that scenario, you wont have the “Microsoft Report Viewer Redistributable 2008 SP1” key.&amp;#160; &lt;/p&gt;  &lt;p&gt;What you need to do is to check to see if VS 2008 SP1 is installed.&amp;#160; That key is located at &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\InstalledProducts\KB945140&lt;/strong&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you want to read a value for that key, look for string value for “PID”.&lt;/p&gt;  &lt;p&gt;[Update on 6/16]&lt;/p&gt;  &lt;p&gt;From the &lt;a href="http://www.versatrans.com/"&gt;home office&lt;/a&gt; in Latham, NY, a reader sent in the suggested to also check the registry for 64 bit based machines.&amp;#160; On 64-bit editions of Windows, the Report Viewer Redistributable runs in 32-bit more.&amp;#160; It sees a virtualized version of the registry.&amp;#160; The actual registry location is &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Report Viewer Redistributable 2008 SP1&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; Note the “Wow6432Node”, that tells that it’s a 32 bit application installed on a 64 bit OS.   &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-6151669710246548542?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=L6OAtAd6v1o:qJKamtjEOu4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=L6OAtAd6v1o:qJKamtjEOu4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/L6OAtAd6v1o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/6151669710246548542/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/06/checking-to-see-microsoft-report-viewer.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6151669710246548542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6151669710246548542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/L6OAtAd6v1o/checking-to-see-microsoft-report-viewer.html" title="Checking to see Microsoft Report Viewer 2008 SP1 has been installed" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/06/checking-to-see-microsoft-report-viewer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMDSXk9fCp7ImA9WxJQE0g.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5847524407736525866</id><published>2009-05-26T12:13:00.001-04:00</published><updated>2009-05-26T12:14:38.764-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T12:14:38.764-04:00</app:edited><title>If this isn’t the first sign of the apocalypse, nothing is. (Jon &amp; Kate &amp; American Chopper)</title><content type="html">&lt;p&gt;A few months back, I posted &lt;a title="On this episode of “Jon and Kate and an American Chopper”…" href="http://anotherlab.rajapet.net/2009/02/on-this-episode-of-jon-and-kate-and.html"&gt;this&lt;/a&gt; as a joke.&amp;#160; Now I’m seeing pictures like this floating across the Internet:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_natoSxTaPFU/ShwVQtBk1sI/AAAAAAAAARU/BX6EasKES6U/s1600-h/GosselinsTuetuls%5B2%5D.jpg"&gt;&lt;img title="The Gosselins riding with the Tuetuls" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="208" alt="The Gosselins riding with the Tuetuls" src="http://lh6.ggpht.com/_natoSxTaPFU/ShwVQ5liRjI/AAAAAAAAARY/l-D4rhUemhI/GosselinsTuetuls_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It looks like Kate is riding off with Paul Senior and she’s the only one that looks happy.&amp;#160; I think it was for some TLC promotion, not an actual episode of either one of their shows.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5847524407736525866?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=6JCviu2yQi0:EGPG9CewsrU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=6JCviu2yQi0:EGPG9CewsrU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/6JCviu2yQi0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5847524407736525866/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/05/if-this-isnt-first-sign-of-apocalypse.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5847524407736525866?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5847524407736525866?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/6JCviu2yQi0/if-this-isnt-first-sign-of-apocalypse.html" title="If this isn’t the first sign of the apocalypse, nothing is. (Jon &amp;amp; Kate &amp;amp; American Chopper)" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/05/if-this-isnt-first-sign-of-apocalypse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcERHYyeip7ImA9WxJREEo.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-8463099657897717050</id><published>2009-05-11T16:00:00.001-04:00</published><updated>2009-05-11T16:00:05.892-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-11T16:00:05.892-04:00</app:edited><title>Tag your junk mail before it gets sent to you.</title><content type="html">&lt;p&gt;Even though we live in the &lt;a href="http://www.bairdtelevision.com/RCA.html"&gt;world of tomorrow&lt;/a&gt;, we still get junk mail.&amp;#160; The old fashioned kind made of out paper and stuff like that.&amp;#160; Junk email annoys me, but physical junk mail is just a waste of physical resources.&amp;#160;&amp;#160; I try to prevent junk mail from being sent at all, but sometimes it still comes in.&amp;#160; What seems to invariably happen is that I’ll get junk mail from some company that I have not had a prior relationship with.&amp;#160; They probably bought my contact information from some other company.&lt;/p&gt;  &lt;p&gt;I came up with a little trick to make that mail easy identifiable so that it can be recycled without ever having to open up.&amp;#160; Whenever I register for something online and it asks for my title, I put in “Disposable”.&amp;#160; When that mail comes in and my title is printed on it, when I see the work “Disposable” on it, I know I don’t have to spend any time on it.&amp;#160; At our office, the receptionist delivers all the mail.&amp;#160; I’ve told her that if something comes in for me and it has “Disposable” printed below my name, she doesn’t have to bring it to me.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-8463099657897717050?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9gCeHTbKmvw:3B5Ovm0-DQg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9gCeHTbKmvw:3B5Ovm0-DQg:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9gCeHTbKmvw:3B5Ovm0-DQg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=9gCeHTbKmvw:3B5Ovm0-DQg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9gCeHTbKmvw:3B5Ovm0-DQg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=9gCeHTbKmvw:3B5Ovm0-DQg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/9gCeHTbKmvw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/8463099657897717050/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/05/tag-your-junk-mail-before-it-gets-sent.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8463099657897717050?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8463099657897717050?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/9gCeHTbKmvw/tag-your-junk-mail-before-it-gets-sent.html" title="Tag your junk mail before it gets sent to you." /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/05/tag-your-junk-mail-before-it-gets-sent.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIDQX4-fCp7ImA9WxJSEUw.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-3983037488240083070</id><published>2009-04-30T13:29:00.001-04:00</published><updated>2009-04-30T13:29:30.054-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-30T13:29:30.054-04:00</app:edited><title>A followup to my post about SC Johnson not manning a customer hotline.</title><content type="html">&lt;p&gt;A few days ago, I posted about &lt;a href="http://anotherlab.rajapet.net/2009/04/if-you-sell-poison-i-think-your.html"&gt;my experience trying to get a hold of customer support after my dog ate some ant bait&lt;/a&gt;.&amp;#160; SC Johnson has a contract with a health and safety clearinghouse that is manned 24/7.&amp;#160; I have spoken to those people and they are very professional.&amp;#160; Their phone number is not listed on the ant traps.&amp;#160; The number that is listed, goes directly to SC Johnson.&amp;#160; When I called that number, I got a recorded messaged that they were closed and to call back Monday through Friday, between the hours of 8am and 6pm (CST).&amp;#160; That’s all I remembered hearing when I called that number.&amp;#160; When I called SC Johnson on Tuesday, they insisted that the emergency contact number was on the message.&amp;#160; I don’t remember hearing that at all.&lt;/p&gt;  &lt;p&gt;I received a call today from a physician from the Health and Safety hotline.&amp;#160; He had been contacted by SC Johnson after someone had read my blog posting.&amp;#160; They asked him to clarify with me that the SC Johnson hotline did list the emergency number.&amp;#160; I thought that was pretty odd as the clearing house was not responsible for the SC Johnson hotline.&lt;/p&gt;  &lt;p&gt;I am willing to concede that an emergency number may have been at the end of the message.&amp;#160; If it was on the message, it did not play soon enough and I thought the call was over.&amp;#160; I still maintain that the number for the Health and Safety hotline should have been printed on the ant bait station and on SC Johnson’s product web page for the ant bait.&amp;#160; For this particular bait station, the dosage of the poison was below the level to cause any ill effects with my dog.&amp;#160; If I had a smaller dog (or puppy) and that dog had eaten all of the bait traps, there could have been a problem.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-3983037488240083070?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=dHzWAwkPawg:V8VuV9bVlcc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=dHzWAwkPawg:V8VuV9bVlcc:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=dHzWAwkPawg:V8VuV9bVlcc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=dHzWAwkPawg:V8VuV9bVlcc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=dHzWAwkPawg:V8VuV9bVlcc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=dHzWAwkPawg:V8VuV9bVlcc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/dHzWAwkPawg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/3983037488240083070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/04/followup-to-my-post-about-sc-johnson.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3983037488240083070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3983037488240083070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/dHzWAwkPawg/followup-to-my-post-about-sc-johnson.html" title="A followup to my post about SC Johnson not manning a customer hotline." /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/04/followup-to-my-post-about-sc-johnson.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDQXYyeip7ImA9WxJTGU8.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-31327044074855594</id><published>2009-04-28T09:29:00.001-04:00</published><updated>2009-04-28T09:29:30.892-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-28T09:29:30.892-04:00</app:edited><title>If you sell poison, I think your customer hotline should be manned 24/7</title><content type="html">&lt;p&gt;A couple of weeks ago, we had some unwanted visitors coming in from under the front door.&amp;#160; Pavement ants.&amp;#160; You know, &lt;a href="http://www.ento.psu.edu/extension/factsheets/pavement_ant.htm"&gt;Tetramorium caespitum&lt;/a&gt;.&amp;#160; They are tiny and they come from under the door frame.&amp;#160; It usually happens every year at about this time.&amp;#160; I usually spray around the outside of the house with a pesticide and the problem goes away.&lt;/p&gt;  &lt;p&gt;This year, that didn’t work.&amp;#160; I did some research online and found that spraying outside was needed, but only part of the treatment.&amp;#160; Another part was to put down ant bait traps indoors, near where they come in.&amp;#160; They provide a poison that the ants take back to nest, eliminating the source of the problem.&amp;#160; That was a bit overkill, but the since ants were not taking the hint it was time to take it up a notch.&lt;/p&gt;  &lt;p&gt;Last Sunday I went to the &lt;a href="http://www.gardens.com/go/view/2536/"&gt;local lawn and garden shop&lt;/a&gt; and bought some &lt;a href="http://www.killsbugsdead.com/fop_dc_ab.asp"&gt;Raid® Double Control Ant Baits&lt;/a&gt;.&amp;#160; The bait stations were very effective.&amp;#160; After placing the four bait stations near my door, the was a surge in ant activity (“treats for us?”) around the bait stations.&amp;#160; After a couple of days, the ant activity dropped down to nearly zero.&lt;/p&gt;  &lt;p&gt;We left the bait stations at the door all week.&amp;#160; On Wednesday, one of the bait stations disappeared.&amp;#160; For some reason, that didn’t trip the alarm circuit in the back of my head.&amp;#160; Ant traps typically don’t move by them selves.&amp;#160; I figured that the housekeeper had vacuumed one of them up.&amp;#160; That was my mistake, I should have paid more attention to this.&lt;/p&gt;  &lt;p&gt;Cut to Saturday.&amp;#160; I was mowing the lawn when Anne ran out to get my attention.&amp;#160; I shut off the mower and she said that the dog had just tried to eat one of the ant traps.&amp;#160; She had grabbed it from her before the dog could ingest the contents of the trap, but we now knew where the other trap had gone.&lt;/p&gt;  &lt;p&gt;Now we had to figure out what to do with the dog.&amp;#160; She’s a 60lb Lab, so she’s a good size.&amp;#160; Still, poison is not a recommended part of her diet.&amp;#160; I grabbed one of the remaining bait stations and flipped it over.&amp;#160; It had a 800 number to call as the customer hotline.&amp;#160; So I called the number and received a recorded message that they were closed and to call back on Monday during business hours.&lt;/p&gt;  &lt;p&gt;This is poison, you can’t have a consumer hotline that is only available during regular business hours.&amp;#160; What if It had been a toddler that ingested the poison bait?&amp;#160; I knew that I could call an emergency animal hospital over in Latham, but I decided to do some basic research on the Internet first.&lt;/p&gt;  &lt;p&gt;The active ingredient of the bait station was something called “&lt;a href="http://en.wikipedia.org/wiki/Avermectin"&gt;Avermectin B1&lt;/a&gt;”.&amp;#160; I searched “avermectin” and discovered that dogs find it tasty and this problem occurs more often than you would expect.&amp;#160; I found numerous pages like &lt;a href="http://www.lab-retriever.net/board/help-my-dog-t7292375.html?p=1963580289#post1963580289"&gt;the following&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Thanks for the advice! I called the e-vet and they gave me poison control numbers. I called them and because the active ingredient in the spikes are 0.05% avermectin, which according to them is only poisonous if he were to consume 30 of the spikes. The biggest concern they said was the plastic. Thankfully, Wally didn't eat the plastic part.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That was from a Labrador chat board called “&lt;a href="http://www.lab-retriever.net/board/"&gt;Labrador Retriever Dogs Chat Forum Board&lt;/a&gt;”.&amp;#160;&amp;#160; You figure that the ant spike would be the same amount of poison, if not not more than the bait station.&amp;#160; Apparently Avermectin is commonly used to treat fleas and worms on dogs and small doses will not harm the dog.&amp;#160; In fact, that’s one of ingredients for heartworm pills.&lt;/p&gt;  &lt;p&gt;We were a lot calmer after reading a few pages with the same stuff.&amp;#160; After three days since the last “tasty treat”, the dog is showing no signs of illness.&amp;#160;&amp;#160; We just know now that we can’t put out bait stations anymore.&lt;/p&gt;  &lt;p&gt;I’m not terribly thrilled with the SC Johnson company.&amp;#160; If you sell a chemical that is designed to kill other creatures, you should have a 24/7/365 support line.&amp;#160; It doesn’t have to be monitored by humans all the time.&amp;#160; A properly designed phone tree (“Press 1 if a pet ingested a Raid® Double Control Ant Bait”) would have helped.&amp;#160; At the very least, we would have know than the dog was not in serious danger and we would not have to induce vomiting.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you call during business hours, you do get a phone tree before you get a human.&amp;#160; I called this morning to find out why this product doesn’t have a hotline on the week end.&amp;#160; I was told that there is a 24/7 Health and Safety hot line and that number is (866) 231-5406.&amp;#160; It’s not run by SC Johnson, it’s a clearing house for emergency information.&amp;#160; &lt;/p&gt;  &lt;p&gt;Because of the toxicity of the bait station, SC Johnson is not required by law to have that number anywhere on the packaging.&amp;#160; That’s just wrong.&amp;#160; When your pet (or a child for that matter) eats some poison, you need to find out how toxic it is immediately.&amp;#160;&amp;#160; You would think that number would be on the home page for the bait stations, but it’s not.&amp;#160; I was able to use Google to search the SC Johnson site afterwards and I found it on their Material Safety Data Sheets (MSDS) &lt;a href="http://www.scjohnson.com/msds_us_ca/default_en.asp"&gt;home page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;At any rate, the ants are gone and the dog is still here.&amp;#160; I’m not sure what I’m going to do if this happens next year.&amp;#160; It would be really nice if they came out with ant bait that dogs would not eat.&amp;#160; I doubt that would happen as there are very few things that a dog wont eat.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-31327044074855594?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=I6oPq-XNkp8:3PV6igCT7U8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=I6oPq-XNkp8:3PV6igCT7U8:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=I6oPq-XNkp8:3PV6igCT7U8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=I6oPq-XNkp8:3PV6igCT7U8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=I6oPq-XNkp8:3PV6igCT7U8:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=I6oPq-XNkp8:3PV6igCT7U8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/I6oPq-XNkp8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/31327044074855594/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/04/if-you-sell-poison-i-think-your.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/31327044074855594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/31327044074855594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/I6oPq-XNkp8/if-you-sell-poison-i-think-your.html" title="If you sell poison, I think your customer hotline should be manned 24/7" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/04/if-you-sell-poison-i-think-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIDRXg4eip7ImA9WxJTE0k.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-8040651612619817111</id><published>2009-04-21T16:09:00.001-04:00</published><updated>2009-04-21T16:09:34.632-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-21T16:09:34.632-04:00</app:edited><title>Remembering Alivia Lovell</title><content type="html">&lt;p&gt;Last October, our company &lt;a href="http://www.cbs6albany.com/news/project_1257705___article.html/latham_annual.html"&gt;constructed 8 playhouses that were donated to some patients&lt;/a&gt; at the &lt;a href="http://www.amc.edu/PATIENT/services/childrens/services/hemotology.html"&gt;Center for Childhood Cancer and Blood Disorders&lt;/a&gt; at Albany Medical Center.&amp;#160; We do something like that every year.&amp;#160; It’s partly a team building exercise and partly a way a way to give back something to the community.&amp;#160; We put them together at the New Scotland Armory, across from the AMC.&amp;#160; Later on they were delivered to the homes, courtesy of &lt;a href="http://www.bennettcontracting.com/"&gt;Bennett Contracting&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;While we were assembling the playhouses, the children were brought in to see the playhouses.&amp;#160; It was a pretty emotional scene for all of us.&amp;#160; I remember one little girl, cute as button. She was very shy and but she was excited about getting a new playhouse.&amp;#160; We just found out that Alivia Lowell passed away from leukemia last week at the age of 4. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cotaforalivial.com/node/35"&gt;&lt;img title="Alivia&amp;#39;s Clubhouse." style="display: block; float: none; margin-left: auto; margin-right: auto" alt="Alivia&amp;#39;s Clubhouse." src="//www.cotaforalivial.com/files/active/0/244_small.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;(click on the picture for more information about Alivia)&lt;/p&gt;  &lt;p&gt;My heart goes out to the Lovell family.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-8040651612619817111?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=peRoqBR_0PU:_TlMn8yedxo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=peRoqBR_0PU:_TlMn8yedxo:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=peRoqBR_0PU:_TlMn8yedxo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=peRoqBR_0PU:_TlMn8yedxo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=peRoqBR_0PU:_TlMn8yedxo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=peRoqBR_0PU:_TlMn8yedxo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/peRoqBR_0PU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/8040651612619817111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/04/remembering-alivia-lovell.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8040651612619817111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8040651612619817111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/peRoqBR_0PU/remembering-alivia-lovell.html" title="Remembering Alivia Lovell" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/04/remembering-alivia-lovell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUHR3szfip7ImA9WxVUFEo.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-1563001318947953056</id><published>2009-03-19T11:23:00.001-04:00</published><updated>2009-03-19T11:23:56.586-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T11:23:56.586-04:00</app:edited><title>Natasha Richardson</title><content type="html">&lt;p&gt;I was shocked when I first heard about the tragic accident that took the life of Natasha Richardson.&amp;#160; I am finding it hard to accept that a small fall could cause a fatal brain injury.&amp;#160; While the privacy of her family out weighs everything else, I do hope that they announce the results of her autopsy.&amp;#160; &lt;/p&gt;  &lt;p&gt;There haven’t been any details about the accident itself.&amp;#160; I wonder how much force was involved.&amp;#160; I can remember two other high profile skiing accidents that involved fatal brain injuries.&amp;#160; There was Michael Kennedy’s fatal collision with a tree on the slopes of Aspen, back in December of 1997.&amp;#160; That was followed by Sonny Bono’s tragic death a week later under similar circumstances.&amp;#160; Speed does kill, a helmet could saved their lives.&lt;/p&gt;  &lt;p&gt;I’m wondering if Richardson had a pre-existing condition.&amp;#160; She could have had a brain aneurysm.&amp;#160; That could have triggered the fall, or more likely, the fall made the aneurysm worse.&amp;#160; My father had a brain aneurysm once and he had many of the same symptoms that Richardson had reported.&amp;#160; He was lucky, surgeons were able to clamp the aneurysm before it caused any permanent damage to his brain.&amp;#160; With Natasha Richardson, a blood vessel that was already leaking started opening up after the fall and by the time they got her to the hospital it was already too late.&amp;#160; My heart goes out to her sons and her husband, this is a a tragic loss.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-1563001318947953056?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-aBhKYaNjT4:Us1H1DGfxCY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-aBhKYaNjT4:Us1H1DGfxCY:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-aBhKYaNjT4:Us1H1DGfxCY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=-aBhKYaNjT4:Us1H1DGfxCY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-aBhKYaNjT4:Us1H1DGfxCY:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=-aBhKYaNjT4:Us1H1DGfxCY:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/-aBhKYaNjT4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/1563001318947953056/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/03/natasha-richardson.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1563001318947953056?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1563001318947953056?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/-aBhKYaNjT4/natasha-richardson.html" title="Natasha Richardson" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/03/natasha-richardson.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUASXw6cSp7ImA9WxVUE0Q.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4043893251350434414</id><published>2009-03-18T13:10:00.001-04:00</published><updated>2009-03-18T13:10:48.219-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T13:10:48.219-04:00</app:edited><title>What to do before your camera is stolen</title><content type="html">&lt;p&gt;I just read about a guy in Poland who bought a camera on an on-line auction and it came with a memory card with someone’s travel pictures. He figured that the camera had been or lost or stolen. Based on a picture, he guessed the owner was from Australia.&amp;#160; So he registered as a new member on a &lt;a href="http://www.photoforum.com.au/"&gt;Australian photography web forum&lt;/a&gt; and solicited the members for help.&amp;#160; &lt;/p&gt;  &lt;p&gt;With a little bit of sleuthing, they tracked down the owners and sent them their pictures.&amp;#160; The last few postings on the forum indicated that he was trying to get his money back from the auction site so that he could send the camera to it’s rightful owners.&amp;#160; You can read the full message thread &lt;a href="http://www.photoforum.com.au/showthread.php?t=11247"&gt;here&lt;/a&gt;.&amp;#160; It’s a great story about how good people can be.&lt;/p&gt;  &lt;p&gt;If I ever lose a camera, I hope that happens to me.&amp;#160; I would pay a reward to one back.&amp;#160; If not the camera, at least the memory card.&amp;#160; You can always get another camera, but you will never get back the memories that were recorded by that camera.&amp;#160;&amp;#160; One that you can do is place a file on your memory card that would provide your contact information in case someone comes across your card.&lt;/p&gt;  &lt;p&gt;Just create a text file with a file name of something like “If found.txt” and with add something like the following text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;This memory card was from a camera that was lost or stolen.&amp;#160; I will pay a reward and cover the costs of shipping to get this memory card back, with no questions asked.  Please mail the card to this address:&lt;br /&gt;&lt;br /&gt;John Smith&lt;br /&gt;123 Main St&lt;br /&gt;Springfield, NY 12345&lt;br /&gt;USA&lt;br /&gt;&lt;br /&gt;If you include a return address, I will send a money order to cover the cost of shipping and for your time. If you would prefer alternative arrangements you can email me at someaddress@something.com&lt;br /&gt;&lt;br /&gt;thank you&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It’s simple enough to do and it could get you pictures back if you lose camera on vacation.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4043893251350434414?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=CFBzMxonw-E:7lZwJIq4D2A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=CFBzMxonw-E:7lZwJIq4D2A:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=CFBzMxonw-E:7lZwJIq4D2A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=CFBzMxonw-E:7lZwJIq4D2A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=CFBzMxonw-E:7lZwJIq4D2A:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=CFBzMxonw-E:7lZwJIq4D2A:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/CFBzMxonw-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4043893251350434414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/03/what-to-do-before-your-camera-is-stolen.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4043893251350434414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4043893251350434414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/CFBzMxonw-E/what-to-do-before-your-camera-is-stolen.html" title="What to do before your camera is stolen" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/03/what-to-do-before-your-camera-is-stolen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcDRnY4fyp7ImA9WxVVGEs.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2713146736389637547</id><published>2009-03-12T10:27:00.001-04:00</published><updated>2009-03-12T10:27:57.837-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-12T10:27:57.837-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>Getting back the Ctrl-N shortcut with SQL Server 2008’s SSMS</title><content type="html">&lt;p&gt;After I installed SQL Server 2008, I noticed that the Ctrl-N keyboard shortcut in the SQL Server Management Studio (SSMS) no longer worked.&amp;#160; What it’s supposed to do is to open up a new query tab.&amp;#160; In my install of SSMS 2008, the Ctrl-N key did nothing.&amp;#160; Pressing Ctrl-N was burned into my brain. It was a serious &lt;a href="http://havemacwillblog.com/2008/10/16/productivity-and-the-context-switch/"&gt;context switch&lt;/a&gt; for me to have to select a menu item or press a button to get a new query tab.&amp;#160; &lt;/p&gt;  &lt;p&gt;A &lt;a title="Alex Silverstein" href="http://twitter.com/AlexSilverstein"&gt;friend&lt;/a&gt; of mine gave me a simple tip that fixed it.&amp;#160; Change the keyboard layout to “SQL Server 2000” and then back to “Standard” and that will restore the default keyboard mappings.&amp;#160; That fixed it and I belatedly found it documented &lt;a href="http://sqlblog.com/blogs/tibor_karaszi/archive/2008/08/26/missing-f8-or-ctrl-n-in-ssms-2008.aspx"&gt;here&lt;/a&gt;, &lt;a href="http://forum.cornerstone.se/blogs/sql/archive/2008/08/26/missing-f8-or-ctrl-n-in-ssms-2008.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=362331"&gt;here&lt;/a&gt;.&amp;#160; I don’t know why I didn’t check the &lt;a href="http://www.boingboing.net/2006/07/02/sen-stevens-hilariou.html"&gt;series of tubes&lt;/a&gt; for the answer, it was pretty obvious how to fix it.&lt;/p&gt;  &lt;p&gt;To change the keyboard mappings, select Tools-&amp;gt;Options from the SSMS menu and then go to Environment-&amp;gt;Keyboard.&amp;#160; From that spot, you can change the keyboard layout.&amp;#160; Change the layout and press the “Ok” button to save the changes.&amp;#160; Then, repeat the steps and select the standard layout and press “Ok” again.&amp;#160; That will set the default keyboard mappings, which will include the Ctrl-N mapping.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2713146736389637547?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=d5lTN0h0QHA:JfQecrTENVE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=d5lTN0h0QHA:JfQecrTENVE:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=d5lTN0h0QHA:JfQecrTENVE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=d5lTN0h0QHA:JfQecrTENVE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=d5lTN0h0QHA:JfQecrTENVE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=d5lTN0h0QHA:JfQecrTENVE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/d5lTN0h0QHA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2713146736389637547/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/03/getting-back-ctrl-n-shortcut-with-sql.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2713146736389637547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2713146736389637547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/d5lTN0h0QHA/getting-back-ctrl-n-shortcut-with-sql.html" title="Getting back the Ctrl-N shortcut with SQL Server 2008’s SSMS" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/03/getting-back-ctrl-n-shortcut-with-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACQ3wzeyp7ImA9WxVWGU4.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-6255313355186533462</id><published>2009-03-01T13:39:00.001-05:00</published><updated>2009-03-01T13:39:22.283-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-01T13:39:22.283-05:00</app:edited><title>And the Chess King is gone</title><content type="html">&lt;p&gt;2009 Me: And by 1995, the last &lt;a href="http://en.wikipedia.org/wiki/Chess_King"&gt;Chess King&lt;/a&gt; had closed it’s doors &lt;a href="http://the80srule.blogspot.com/2006/01/and-what-of-chess-king.html"&gt;for good&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;1979 Me: And you thought that was a &lt;a href="http://83.223.124.20/mrdaz.com/wp-content/uploads/2007/09/ffe_d3_1.jpg"&gt;bad thing&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;2009 Me: Well, it was a store that was around back in 1979.&amp;#160; It was once of those places we would have to walk by on the way out of the &lt;a href="http://www.shop-cliftonparkcenter.com/"&gt;mall&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;1979 Me: I didn’t shop &lt;a href="http://onesizeneverfitsall.oes.org/2007/11/19/sorry-we-dont-carry-anything-your-size/"&gt;there&lt;/a&gt;.&amp;#160; Please, please don’t tell me that I shopped there in the future&lt;/p&gt;  &lt;p&gt;2009 Me: No, we never did.&amp;#160; Well, we walked in, and we walked right back out without buying &lt;a href="http://www.hookedonvintage.com/home/hov/page_1380_78/1970s_vintage_black_leather_vest_by_chess_king.html"&gt;anything&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;1979 Me: Thank you.&amp;#160; Or thank me, or us.&lt;/p&gt;  &lt;p&gt;2009 Me: But we did go through a phase in the early ‘80s where we wore skinny ties….&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-6255313355186533462?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=n0gE-ixf7kw:pH1FDYgmpSA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=n0gE-ixf7kw:pH1FDYgmpSA:2nqncYFp4_M"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=2nqncYFp4_M" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=n0gE-ixf7kw:pH1FDYgmpSA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?i=n0gE-ixf7kw:pH1FDYgmpSA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=n0gE-ixf7kw:pH1FDYgmpSA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?a=n0gE-ixf7kw:pH1FDYgmpSA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChristopherMillersRandomThoughts?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/n0gE-ixf7kw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/6255313355186533462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/03/and-chess-king-is-gone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6255313355186533462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6255313355186533462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/n0gE-ixf7kw/and-chess-king-is-gone.html" title="And the Chess King is gone" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/03/and-chess-king-is-gone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGQH0-eCp7ImA9WxVXGUo.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5501089271408100028</id><published>2009-02-18T12:45:00.001-05:00</published><updated>2009-02-18T12:45:21.350-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-18T12:45:21.350-05:00</app:edited><title>Have you had any bizarre IM messages from a person with “coho” in his screen name?</title><content type="html">&lt;p&gt;I was moving some Visual Studio projects around when an odd &lt;a title="AOL Instant Messenger (AIM)" href="http://en.wikipedia.org/wiki/AOL_Instant_Messenger"&gt;AIM&lt;/a&gt; window popped up.&amp;#160; It was from someone named “limbercoho” and the message was “Hail, Fellow”.&amp;#160; I usually close unsolicited AIM messages without even looking at them.&amp;#160; There are other ways to get in tougc with me, I view anything unsolicited from AIM or &lt;a title="The .NET Messenger Service (formerly MSN Messenger Service[1] and now called Windows Live Messenger Service[2]) is an instant messaging and presence system developed by Microsoft" href="http://en.wikipedia.org/wiki/.NET_Messenger_Service"&gt;MSN&lt;/a&gt; with more than a little suspicion.&lt;/p&gt;  &lt;p&gt;At that momemt, my PC was busy moving files around, so I had a some spare bandwidth and decided to see what was going on.&amp;#160; I responded back with “Hail” and it got a little wierd:&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;limbercoho:&lt;/font&gt; Hail, fellow!     &lt;br /&gt;&lt;font color="#800000"&gt;me:&lt;/font&gt; Hail     &lt;br /&gt;&lt;font color="#000080"&gt;limbercoho:&lt;/font&gt; hail?     &lt;br /&gt;&lt;font color="#800000"&gt;me:&lt;/font&gt; Yes?     &lt;br /&gt;&lt;font color="#000080"&gt;limbercoho:&lt;/font&gt; hell yes?     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;It didn’t take long to realize that something was just not right.&amp;#160; Going on the assumption that limberoho was some sort of &lt;a href="http://www.nonfamous.com/wp/2004/09/02/rabid-eyed-whack-jobs-and-stalkers-too/"&gt;whack job&lt;/a&gt;, I decided to do a Google check on that name.&amp;#160; The second hit was on &lt;a href="http://nixiepixel.com/blog/index.php?blog=8"&gt;Nixie Pixel&lt;/a&gt;’s blog, &lt;a href="http://nixiepixel.com/blog/index.php/list-of-aim-fish-bots-salmon-coho-and-tr"&gt;List of AIM Fish Bots – Salmon, Coho, and Trout&lt;/a&gt;.&amp;#160; There is an organization called “&lt;a href="http://project-upstream.awardspace.com/"&gt;Project Upstream&lt;/a&gt;” that created the robotic fishbots. &lt;/p&gt;  &lt;p&gt;The fishbot takes two random IM users and sends a greeting to each one and then connects each user to each other user.&amp;#160; They don’t see the other person’s screen name, they see a fishbot generated name like LimberCoho or BakedCoho.&amp;#160; Basically a random word plus “coho”.&amp;#160; Previous incarnations used “Salmon” and “Trout”.&lt;/p&gt;  &lt;p&gt;Once I figured out what was going on, I IM’d the link from Nixie’s blog.&amp;#160; Understandably, he responded back with “I’m not going to click that link”.&amp;#160; That made sense, I wouldn’t have clicked a link that a stranger had send me.&amp;#160; So I explained what was going on and he asked how to block it.&amp;#160; That would be the annoying part, you can’t block randomly generated names.&amp;#160; There is an opt-out mechanism, but you wouldn’t know about it unless you knew what was going on.&amp;#160; The Project Upstream site does not mention, but someone claiming to be part of Project Upstream posted the instructions &lt;a href="http://community.livejournal.com/themissinghat/profile"&gt;The Missing Hat&lt;/a&gt;’s &lt;a title="LiveJournal (often abbreviated LJ) is a virtual community where Internet users can keep a blog, journal or diary." href="http://en.wikipedia.org/wiki/LiveJournal"&gt;LiveJournal&lt;/a&gt; site:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font face="Arial" size="4"&gt;Opt-out support introduced            &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;Greetings, hat missers. We are Project Upstream.       &lt;br /&gt;      &lt;br /&gt;We have chosen to provide you with a new ability. You may now send a message such as &amp;quot;$optout&amp;quot; to any of our robotic fish. This will permanently prevent all Project Upstream communications from reaching your account.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Some additional information can be found on the Wikipedia entry for &lt;a title="TheGreatHatsby is an AIM bot which instigates conversations between pairs of AIM accounts." href="http://en.wikipedia.org/wiki/TheGreatHatsby"&gt;TheGreatHatsby&lt;/a&gt;.&amp;#160; That seems easy, but unless you know how to look for that sort of thing, you’ll never figure it out on your own.&amp;#160; It’s an interesting idea, connecting two complete strangers using social networks.&amp;#160; The flaw is that most people are not going to know anything about Project Upstream and and they are going to think that other person is up to no good.&amp;#160; There should be some information about the project in that opening message.&amp;#160; You could make a new friend, but it’s more likely to freak the other person out.&lt;/p&gt;  &lt;p&gt;I chatted with the other person for a few minutes and we exchanged Twitter accounts.&amp;#160; It turns out that we really have nothing in common and we doubt that we will keep in touch.&amp;#160; It’s an interesting experiment and I think I’ll stay in it for a while.&lt;/p&gt;  &lt;p&gt;The other thing to remember is that you are not directly connected to the other person.&amp;#160; Your message goes to the fishbot and the fishbot relays that message to the other user.&amp;#160; The same would be true for other user.&amp;#160; That’s great because if you don’t want to have an IM conversation with the other person, that person has no way of making contact with you again.&amp;#160; &lt;/p&gt;  &lt;p&gt;That does raise an interesting privacy concern in that the fishbot is monitoring both sides of the conversation.&amp;#160; It needs to do that to relay the conversation and to be able to handle the “$optout” request.&amp;#160; But, what are they doing with that information?&amp;#160; The web site for Project Upstream only tells you how to opt in, there is nothing about privacy issues or how to opt out.&amp;#160; Just remember the security issues if you decide to play with a robotic fish.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5501089271408100028?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=OxHpcvmK"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=8uXPyFA7"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=BjvZ3MjD"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=BjvZ3MjD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=EMCgBlRg"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=KtURxTsS"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/z2U3WJJgA8c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5501089271408100028/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/02/have-you-had-any-bizarre-im-messages.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5501089271408100028?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5501089271408100028?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/z2U3WJJgA8c/have-you-had-any-bizarre-im-messages.html" title="Have you had any bizarre IM messages from a person with “coho” in his screen name?" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/02/have-you-had-any-bizarre-im-messages.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4ERns9eSp7ImA9WxVXFE0.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-6014854369794223991</id><published>2009-02-11T21:48:00.001-05:00</published><updated>2009-02-11T21:48:27.561-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-11T21:48:27.561-05:00</app:edited><title>On this episode of “Jon and Kate and an American Chopper”…</title><content type="html">&lt;p&gt;On this episode of “&lt;a href="http://tlc.discovery.com/tv/jon-and-kate/jon-and-kate.html"&gt;Jon and Kate and&lt;/a&gt;&lt;a href="http://turbo.discovery.com/american-chopper/american-chopper.html"&gt; an American Chopper&lt;/a&gt;”, &lt;a href="http://en.wikipedia.org/wiki/Jon_And_Kate_Plus_8"&gt;Kate&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Paul_Teutul,_Sr."&gt;Paul Sr&lt;/a&gt; have it out over how dirty the &lt;a href="http://en.wikipedia.org/wiki/Orange_County_Choppers"&gt;OCC&lt;/a&gt; office appears to be.&amp;#160; Jon struggles to find his place at OCC.&amp;#160; &lt;a href="http://en.wikipedia.org/wiki/Paul_Teutul,_Jr."&gt;Paulie&lt;/a&gt; nearly loses his mind when he takes the girls shopping for new shows.&amp;#160; &lt;a href="http://en.wikipedia.org/wiki/Michael_Teutul"&gt;Mikey&lt;/a&gt; and &lt;a href="http://www.imdb.com/name/nm2767892/"&gt;Aaden&lt;/a&gt; continue to work on their concept bike.&lt;/p&gt;  &lt;p&gt;Paul Sr organizes a dodge ball match between the OCC camera crew and the Gosselin camera crew.&amp;#160; Hilarity ensues when Kate shows off her new tattoo and Jon tells her “That’s not the Korean word for love&amp;quot;, but it’s kind of similar.”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-6014854369794223991?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=Cz1H8nps"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=24FVE72v"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=DW4i61Cq"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=DW4i61Cq" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=3ANAkSBS"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=6dWqEUZE"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/SPK0FZ4iFDo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/6014854369794223991/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/02/on-this-episode-of-jon-and-kate-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6014854369794223991?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6014854369794223991?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/SPK0FZ4iFDo/on-this-episode-of-jon-and-kate-and.html" title="On this episode of “Jon and Kate and an American Chopper”…" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/02/on-this-episode-of-jon-and-kate-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMASH4-eSp7ImA9WxVXEkU.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2775050177647452793</id><published>2009-02-10T12:54:00.001-05:00</published><updated>2009-02-10T12:54:09.051-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T12:54:09.051-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>Resetting the mouse cursor</title><content type="html">&lt;p&gt;Some app on my XP development PC left the mouse cursor stuck in the “move” state.&amp;#160; The mouse was behaving correctly, but it was stuck in move image, the one with the four direction arrows.&amp;#160; Normally, the mouse cursor is application specific.&amp;#160; One the apps is coloring outside the lines and the cursor image was stuck for all of the running applications.&amp;#160; I’m using a beta version of a Twitter client app, it’s the obvious suspect, but I still need to prove that.&lt;/p&gt;  &lt;p&gt;I couldn’t figure out which app was doing this and I was in the middle of editing some code and I didn’t want to break my concentration by restarting everything.&amp;#160; So I decided to address the symptom and not the problem.&amp;#160; The question is how to do you reset the mouse cursor?&lt;/p&gt;  &lt;p&gt;First, I tried the simple solution and just removed the mouse.&amp;#160; It’s plugged into a USB port on my monitor so I just turned off the monitor and turned it back on.&amp;#160; After coming back on, the mouse still had the wrong cursor.&amp;#160; What I did next was to bring up the Mouse applet in the control panel.&amp;#160; I selected the “Pointers” tab and it was obvious that something was a little off.&amp;#160; On this tab, you can select the theme to associate with the nouse cursors and the preview display shows the “move” cursor image for each possible mouse cursor image.&amp;#160; &lt;/p&gt;  &lt;p&gt;I selected another theme and then went back to the current theme.&amp;#160; Now the preview showed the correct images.&amp;#160; I clicked the “Apply” button and the mouse was back to normal.&amp;#160; There’s probably a command line for doing this, but I’m not going to spend the cycles looking for it unless this happens again.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2775050177647452793?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=iGZjlkfc"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=tVZ6csV1"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=rYmOAeB3"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=rYmOAeB3" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=vPW5MUWS"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=q4Qmn7Ks"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/hyBl07EfzxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2775050177647452793/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/02/resetting-mouse-cursor.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2775050177647452793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2775050177647452793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/hyBl07EfzxI/resetting-mouse-cursor.html" title="Resetting the mouse cursor" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/02/resetting-mouse-cursor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHRXg8cCp7ImA9WxVXEko.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-7983381458409085047</id><published>2009-02-10T10:18:00.001-05:00</published><updated>2009-02-10T10:18:54.678-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T10:18:54.678-05:00</app:edited><title>Sorry it didn’t work out</title><content type="html">&lt;p&gt;My work email inbox had a lot of spam this morning.&amp;#160; The messages were very similar in content with subtle variations in the sender and subject fields.&amp;#160; Nothing unusual there.&amp;#160; The odds are that someone got hit with a virus and my email address was in their address book.&amp;#160; That’s the tax we pay for free transmission of email.&amp;#160; &lt;a title="Obligatory Officer Barbrady reference" href="http://www.nationmaster.com/encyclopedia/Officer-Barbrady#Quotes"&gt;Okay people, move along, there’s nothing to see here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As collateral damage, I also received an automated error message from someone else’s email server.&amp;#160; That person got spammed from the first guy’s virus and the spam email used my email address as the sender.&amp;#160; Once again, typical tactics.&amp;#160; I usually delete these messages without even looking at them, but the error message caught me eye.&amp;#160; The message contained the following text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Hi. This is the qmail-send program at something.something.something.net.     &lt;br /&gt;I'm afraid I wasn't able to deliver your message to the following addresses.      &lt;br /&gt;This is a permanent error; I've given up. Sorry it didn't work out.&lt;/p&gt;    &lt;p&gt;&amp;lt;somebody@alaska.net&amp;gt;:     &lt;br /&gt;qmail-spawn unable to open message. (#4.3.0) I'm not going to try again; this message has been in the queue too long.&lt;/p&gt;    &lt;p&gt;--- Below this line is a copy of the message.&lt;/p&gt;    &lt;p&gt;Return-Path: &amp;lt;theguywithavirus@yahoo.co.uk&amp;gt;     &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The email addresses were changed to protect the innocent.&amp;#160; I found that text to be greatly amusing.&amp;#160; I’m working on a some error handling code for one our products and I am going to find a way to work in the text “This is a permanent error; I've given up. Sorry it didn't work out.”.&amp;#160; It’s a subtle bit of humor and for the use case that I working on, entirely appropriate.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-7983381458409085047?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=riZPBnpf"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=QaZCHawd"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=EWXzJDkt"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=EWXzJDkt" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=iqNpVjjL"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=R5xbaxv2"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/dLo6d6sTh5I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/7983381458409085047/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/02/sorry-it-didnt-work-out.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7983381458409085047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/7983381458409085047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/dLo6d6sTh5I/sorry-it-didnt-work-out.html" title="Sorry it didn’t work out" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/02/sorry-it-didnt-work-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIMQXs6fyp7ImA9WxVSGUQ.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-4719277749241971190</id><published>2009-01-14T22:36:00.001-05:00</published><updated>2009-01-14T22:36:20.517-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T22:36:20.517-05:00</app:edited><title>Dealing with static electricity during winter</title><content type="html">&lt;p&gt;Lately I’ve had bad luck plugging in USB devices into my home development PC. I would go to sync up my Zen (or since Christmas, my iPod Touch) and bad things would happen.&amp;#160; As soon as the USB cable touched the device, the PC would reboot.&amp;#160; I hate it when that happens.&amp;#160; I learned to touch some metal object to ground myself, but that didn’t always work.&lt;/p&gt;  &lt;p&gt;It’s pretty dry in my house during winter.&amp;#160; Walking across the carpet, I seem to pick up a critical amount of static electricity.&amp;#160; Oddly enough, the reboot never happened when I sync’ed&amp;#160; my daughters' iPods to the family PC that we all share.&amp;#160; Same dry air, nearly the same carpet.&amp;#160; But different PC hardware.&amp;#160; The family PC is a basic Dell Core Duo box.&amp;#160; Nothing fancy, but good enough.&amp;#160; &lt;/p&gt;  &lt;p&gt;My machine is one that I had custom built.&amp;#160; Roughly the same CPU, just the AMD flavor, but with more bells and whistles.&amp;#160; I wanted dual NICs, RAID 5, FireWire, beefier PSU, and a quieter case.&amp;#160; I wrote &lt;a href="http://anotherlab.rajapet.net/2007/05/time-to-get-new-pc.html"&gt;about that machine&lt;/a&gt; a while back, it’s worked out pretty well so far.&lt;/p&gt;  &lt;p&gt;It seems that it was the case that’s doing me in.&amp;#160; I’ve been a big fan of &lt;a href="http://www.antec.com"&gt;Antec&lt;/a&gt; cases, and this case is a &lt;a href="http://www.antec.com/usa/productDetails.php?lan=us&amp;amp;id=15137"&gt;Sonata II&lt;/a&gt;.&amp;#160; Nice design and very easy to work.&amp;#160; It has the extra touches that you would want, like a dust filter in front of the fan that pulls air into the case.&amp;#160; But it appears that that there are grounding issues with the USB connectors on the front panel.&amp;#160; I did a few quick searches through the series of tubes and found way too many hits for &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=antec+sonata+usb+ground+static&amp;amp;btnG=Search"&gt;“antec sonata usb ground static”&lt;/a&gt; to be coincidental.&lt;/p&gt;  &lt;p&gt;The obvious solution would be connect a wire to the front panel that has the USB ports and ground it to the case.&amp;#160; That will be a weekend project because the internal drive bays block access to the front panel.&amp;#160; In the meanwhile, I’m taking the lazy way out.&amp;#160; I had a spare 4 port USB hub that Microsoft gave out at DevConnections a few months back and I connected it to one of the USB ports on the motherboard shield at the back of the PC.&amp;#160; Those ports are grounded.&amp;#160; I also an running a vaporizer in my office when I’m working.&amp;#160; I need to get a humidifier, but the vaporizer was handy.&lt;/p&gt;  &lt;p&gt;Between those two hacks, the static discharge problem appears to have been eliminated.&amp;#160; I’m not thrilled with Antec at the moment.&amp;#160; These are premium cases (or at least more expensive than the budget cases) and you would think that all of the ports would be grounded.&amp;#160; After skimming through the various message boards about this problem with multiple Antec cases, I wonder this will be my last Antec case.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-4719277749241971190?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=4grXbcqD"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=iYBGyYJC"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=MnW1D6lV"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=MnW1D6lV" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=TCWEcNuL"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nfaVPyU5"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/JdKzQzc7Vbk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/4719277749241971190/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/01/dealing-with-static-electricity-during.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4719277749241971190?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/4719277749241971190?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/JdKzQzc7Vbk/dealing-with-static-electricity-during.html" title="Dealing with static electricity during winter" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/01/dealing-with-static-electricity-during.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4GRX8yfCp7ImA9WxVSEks.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-1705572167467052403</id><published>2009-01-06T11:55:00.001-05:00</published><updated>2009-01-06T11:55:24.194-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-06T11:55:24.194-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="virus" /><category scheme="http://www.blogger.com/atom/ns#" term="support" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><category scheme="http://www.blogger.com/atom/ns#" term="mcafee" /><title>What to do when an antivirus vendor has flagged your software as a virus</title><content type="html">&lt;p&gt;I usually don’t talk about where I work, this is my personal blog and where I work really doesn’t matter to the content of blog posts.&amp;#160; This post is a little different, it’s work related and knowing where I work adds some needed context.&amp;#160; I’m a senior software engineer for &lt;a href="http://www.tylertech.com/"&gt;Tyler Technologies&lt;/a&gt;, in their &lt;a href="http://www.versatrans.com/"&gt;VersaTrans Solution&lt;/a&gt;. The &lt;a href="http://www.versatrans.com/products/versatrans_rp.cfm"&gt;VersaTrans product line&lt;/a&gt; provides school transportation software and services for the K-12 schools.&lt;/p&gt;  &lt;p&gt;About a month ago, I came into work to find people waiting at my cubical.&amp;#160; That’s usually not a good way to start off a morning, and it wasn’t.&amp;#160; Apparently McAfee pushed out a virus definition file out the night before and it was flagging our software as a trojan.&amp;#160; Two of our executable files were being flagged.&amp;#160; Our customers were calling in to our technical support department, and they were understandably concerned.&amp;#160; The McAfee antivirus software wanted to quarantine our applications.&amp;#160; That would prevent our customers from using our applications, which is not a good thing.&amp;#160; They use our bus routing and planning software on a daily basis.&amp;#160; Not being able to use our software can cause a lot of problems for a school’s transportation department.&amp;#160; We needed to immediately resolve this.&amp;#160; I usually don’t get involved with technical support issues, but I had the bandwidth to immediately jump on this problem.&lt;/p&gt;  &lt;p&gt;The immediate order of business was to replicate the actions of the A/V software.&amp;#160; We wanted to make sure that our software was being actually being flagged before we reported it to McAfee.&amp;#160; We don’t use any of the McAfee products in house, so one of our QA specialists (David) started downloading a trial copy of McAfee’s Enterprise solution.&amp;#160; This is the application that our clients were reporting that they were using.&amp;#160; David would install that copy into a virtual machine and test it in an isolated environment. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Thursday, 10:00am&lt;/strong&gt;.&amp;#160; I decided to save some time and upload a copy of our application to my home PC.&amp;#160; I have a copy of the home version of the McAfee A/V product.&amp;#160; It comes free as part of my FiOs package.&amp;#160; I’ve been planning on removing it and replacing it with one of the free A/V products, but fortunately it was still installed.&amp;#160; Sure enough, the app was flagged as &lt;a href="http://vil.nai.com/vil/content/v_153569.htm"&gt;“BackDoor-AWQ.svr.gen.e”&lt;/a&gt;, which is some type of generic server type of trojan that was added to version 5460 of the McAfee A/V database.&amp;#160; Version 5460 was the one that had been just pushed out to all of McAfee’s clients.&amp;#160; David would eventually duplicate the A/V hit, but it would take a while.&amp;#160; Armed with immediate proof from my home PC, I could proceed to the next step.&amp;#160; By the way, it can be very handy to be able securely access your home PC from your office PC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:15am.&lt;/strong&gt;&amp;#160; I made my initial call to McAfee.&amp;#160; I went was passed to several CSRs, most of them refused to provide any identification other than their first name.&amp;#160; With each CSR, I was asked for a “grant number”, which was some form of customer identifier.&amp;#160; With each CSR I needed to explain that I was not calling as a McAfee customer, but as a representative of Tyler Technologies and they were false identifying our software as malware.&amp;#160; Each CSR tried to redirect me to their home product support.&amp;#160; With each CSR, I would request to speak with their supervisor when it became obvious that I would not get the support.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:30am. &lt;/strong&gt; I spoke with “Mike”, who identified himself as Corporate Service Program Supervisor.&amp;#160; He refused to escalate the issue or provide a last name and phone number.&amp;#160; Once again, I asked to speak to his supervisor.&amp;#160; He did not want to do this and we went back and forth a few times and I was persistent.&amp;#160; He finally transferred me to their Consumer Customer Department and provided that phone number (866-622-3911) with great reluctance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:30-10:42am.&lt;/strong&gt;&amp;#160; Waited on hold.&lt;/p&gt;  &lt;p&gt;While I was on hold, our sales department sent out a mass email to all of our clients.&amp;#160; The email explained that McAfee was falsely identifying our application as a virus and they should not be alarmed and that we were working with McAfee to remedy the situation.&amp;#160; As soon as you can reliably identify that some version of your software is being falsely flagged as a virus, contact your customers.&amp;#160; Trust me, they will appreciate it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:42am.&lt;/strong&gt; Spoke to another CSR who couldn’t help resolve the problem, but could transfer me to someone who would be able to help.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:45-11:00am.&lt;/strong&gt;&amp;#160; Waited on hold.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11:01-11:30am.&lt;/strong&gt; I reached a CSR named Juan at the Dallas office of McAfee.&amp;#160; Juan’s title is Tier III Customer Service and he provided me with his direct phone number and email address.&amp;#160; He asked me to submit a copy of the file being flagged to a web site that they provide for online scanning of files.&amp;#160; This is McAfee Avert® Labs WebImmune and is located at &lt;a href="https://www.webimmune.net/default.asp"&gt;https://www.webimmune.net/default.asp&lt;/a&gt;.&amp;#160;&amp;#160; I registered an account on their site and tried to upload the Routing and Planning (RP) executable known to trigger the McAfee scanner.&amp;#160; I was unable to upload the file because the RP executable is 7.7MB in size and WebImmue would only accept files up to 3MB in size.&amp;#160; Our executable is pre-compressed and there isn’t any other method of shrinking the size down to below 3MB.&amp;#160; This 3MB limitation basically defeats the purpose of having that site.    &lt;br /&gt;    &lt;br /&gt;I then tried emailing the file to Juan, but our own email server blocked the email because of the file attachment.&amp;#160; That’s bad on our part, but there is more than one way to email a file.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11:45am.&lt;/strong&gt;&amp;#160; I emailed the file to Juan via my personal Hotmail account.&amp;#160; It took a while to make it to Juan, but by 3:00PM, I had an email confirmation from Juan that he had received the file.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11:58am.&lt;/strong&gt;&amp;#160; I received an email from Juan with the following text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Mr. Miller,&lt;/p&gt;    &lt;p&gt;I just received an email in regards to the issue that you are currently facing.&lt;/p&gt;    &lt;p&gt;An issue that was incorrectly indentifying some large applications executables files as Backdoor.awq.svr.gen.e has been resolved.&lt;/p&gt;    &lt;p&gt;Attached is an ED to suppress this detection. We have tested the ED against the limited number of files we have received thus far. If the ED doesn't work and DAT 5461 hasn't shipped then please gather a sample (FTP site in pwd protected zip if larger than 3mb) and escalate via MSTeg.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I forwarded the message to David in QA.&amp;#160; David had set up a virtual machine with a trial version of the McAfee Enterprise virus scanner and could duplicate the problem using the 5460 DAT file.&amp;#160; The “ED” supplied by Juan did not fix the problem, but I am not 100% certain that we had installed it correctly.&amp;#160; Their ED file did not come with any instructions on how to install it and we I promptly notified Juan that it was still a problem for us.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3:00pm.&lt;/strong&gt;&amp;#160; Juan emailed me to notify me that he had received the RP executable from my Hotmail account and he requested a copy of the other executable that was being falsely identified (Ascii Scheduler).&amp;#160; I immediately sent him that file from my Hotmail account.&amp;#160; I did not receive emails from Juan (or any other McAfee representative) after that point.&amp;#160; Both files share about 98% of the same code, I was pretty sure if they fixed the scanner for one of them, it would be fixed for the other.&amp;#160; Especially since we were not the only company affected.&amp;#160; Juan wouldn’t tell me who else had been false identified, but he hinted that they were big companies and they were not happy.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Friday 9:00am.&lt;/strong&gt;&amp;#160; I was told by our QA Manage that DAT version 5461 was pushed out by McAfee overnight and it no longer flags our files as false positives.&amp;#160; We received many happy emails from clients thanking us for the prompt attention paid to the matter.&lt;/p&gt;  &lt;p&gt;So what do you do if this happens to you?&amp;#160; I recommend doing the following when a customer reports that your software is being flagged as a virus:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ask the customer for the product name and version number of the antivirus software.&amp;#160; If possible, get the version number and date of the virus database used by the software.&amp;#160; Start taking detailed notes during this process.&amp;#160; You want an audit trail to give your boss to explain where your day went, plus it gives you ammunition when you get stuck with a CSR that wont help your or escalate your call.&lt;/li&gt;    &lt;li&gt;Ask for the name of the virus or trojan that your software is being flagged as.&lt;/li&gt;    &lt;li&gt;Get the version number of your executable that is being flagged as a virus.&lt;/li&gt;    &lt;li&gt;Get a trial version of the A/V software and attempt to duplicate the false positive match.&amp;#160; If you can not duplicate the results, ask the client to send a password encrypted zip archive of the executable being flagged.&amp;#160; You have to consider the possibility that the client’s machine has been infected with a virus and that your application was infected on the client’s machine.&amp;#160; By sending it in a password encrypted zip file, it should pass through the client’s email server and your server without flagging any additional virus checks.&lt;/li&gt;    &lt;li&gt;Submit your executable to the A/V vendors online support.&amp;#160; Most of them have a web page for submitting a questionable file.&amp;#160; You wont get a fast response back, but when you call their support, they will ask you to do this step so you might as well get it out of the way.&lt;/li&gt;    &lt;li&gt;Call the A/V vendor and ask for support.&amp;#160; Do not identify yourself as a customer of their A/V software, but as an ISV who has been falsely identified by their software.&amp;#160; If you identify yourself as a customer, you may get shunted down lower priority support queue.&amp;#160; If you have an expensive support contract, that would be different.&amp;#160; Basically, just use the best tools at your disposal.&lt;/li&gt;    &lt;li&gt;Ask for the CSR’s name and phone number, with extension.&amp;#160; Tell them that you need this information to provide an audit trail for your supervisor.&amp;#160; Be polite but persistent.&amp;#160; If they can not help you, ask for their supervisor and just work your way up their chain of command until you get a CSR that can help you.&lt;/li&gt;    &lt;li&gt;Stay polite and professional with the CSR.&amp;#160; It’s not their fault that their software is falsely identifying your software as a virus.&amp;#160; They are more likely to expedite a remedy if you are not beating up on them.&amp;#160; It’s likely that you are not the only one being affected by this.&lt;/li&gt;    &lt;li&gt;When you have a CSR that can help you, work out a plan with target times for how to resolve this.&amp;#160; Let them know that you will be in phone and email contact with them until the matter is resolved.&amp;#160; Basically, you want to get the file or files to them and have enough time for them to test the files and work out a solution.&amp;#160; You do not want to be waiting for hours just to get them the file.&amp;#160; You will want acknowledgement when they have received the file and when they have duplicated the problem.&amp;#160; Your goal is to get them to issue out a new virus update file on the same day.&lt;/li&gt;    &lt;li&gt;Once you get the problem resolved, send a “thank you” email to the CSR that helped resolve the problem.&amp;#160; If the problem ever occurs again, you want to be able to start with that CSR and not have to waste time going up the CSR tree.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Having to go through all of this was not how I planned on spending my day. I lost the better part of the day dealing with McAfee’s mistake when I could have been working on my own mistakes.&amp;#160; This kind of stuff happens and it’s good to have a plan for dealing with it.   &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-1705572167467052403?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=ABXd1Moy"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=5vnekbJu"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=5TePJdKv"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=5TePJdKv" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=PgR3KS35"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=9KRBkxn3"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/gOvuhvbjeSY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/1705572167467052403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/01/what-to-do-when-antivirus-vendor-has.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1705572167467052403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1705572167467052403?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/gOvuhvbjeSY/what-to-do-when-antivirus-vendor-has.html" title="What to do when an antivirus vendor has flagged your software as a virus" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/01/what-to-do-when-antivirus-vendor-has.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cGR3w9fyp7ImA9WxVSEkg.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-5973885478735032139</id><published>2009-01-06T10:14:00.001-05:00</published><updated>2009-01-06T10:17:06.267-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-06T10:17:06.267-05:00</app:edited><title>Renabling maintenance plans on SQL Server 2005</title><content type="html">&lt;p&gt;We have a couple of SQL Server boxes that we use in our department and of them has some mission critical databases.&amp;#160; Our defect tracking and source control databases are the big ones, but there are a few others.&amp;#160; We back them up and then copy them to a folder on a netwrk share.&amp;#160; From the network share, the files get backup up to tape and are stored offsite.&lt;/p&gt;  &lt;p&gt;On the database server, I have a maintenance plan that runs each night and backups the critical databases.&amp;#160; It runs at 2am.&amp;#160; At 5am, I have a scheduled task run on the database server that does the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Purges the old backups and compresses copies of the backups. &lt;/li&gt;    &lt;li&gt;Copies the latest backup of each database to a new folder. &lt;/li&gt;    &lt;li&gt;Compresses the backups using &lt;a href="http://www.7-zip.org/"&gt;7-Zip&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Compresses our technical spec documents. &lt;/li&gt;    &lt;li&gt;Backup the MSQL database that has our department’s wiki.&amp;#160; We are a .NET shop, but I really like how the &lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;MediaWiki&lt;/a&gt; software works, so we use that. Getting that to work a 64-bit Windows Server is a story best left for another day. &lt;/li&gt;    &lt;li&gt;Copy the compressed backups to the network share. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So that has been working without any hitches for about 12 months.&amp;#160; We did a spot check of the backups last week and noticed that it stopped working a few weeks ago.&amp;#160; After a bit of poking around with how the scheduled task was scheduled, running it manually, and so forth, I ended up at the database server.&lt;/p&gt;  &lt;p&gt;I tried to view the maintenance plan that handles the backups and I was presented with the following error message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;'Agent XPs' component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Agent XPs' by using sp_configure. For more information about enabling 'Agent XPs', see &amp;quot;Surface Area Configuration&amp;quot; in SQL Server Books Online. (ObjectExplorer)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That’s not good.&amp;#160; But easily fixable.&amp;#160; I Google’d the first sentence and found a fix on the first page &lt;a href="http://www.treeratfishing.com/2008/01/15/enabling-agent-xps-on-sql-2005/"&gt;Enabling &amp;quot;Agent XPs&amp;quot; on SQL 2005&lt;/a&gt; in a post by Jeff Story on the &lt;a title="Tree Rat Fishing: Windows Administration and Development. It’s all about the tools and code." href="http://www.treeratfishing.com/"&gt;Tree Rat Fishing&lt;/a&gt; blog.&amp;#160; In short if you run the following T-SQL commands, you’ll get the functionality back:&lt;/p&gt; &lt;font color="#800000" size="2"&gt;&lt;font color="#800000" size="2"&gt;sp_configure &lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;'show advanced options'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;;          &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;GO        &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;RECONFIGURE&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;;          &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;GO        &lt;br /&gt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&lt;font color="#800000" size="2"&gt;sp_configure&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;'Agent XPs'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;;          &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;GO        &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;RECONFIGURE          &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;GO&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;  &lt;p&gt;I still don’t know what disabled Agent XPs, my guess was a Service Pack update for SQL Server or someone messing around with the server.&amp;#160; I’m thinking of setting up a developer dashboard page to display stuff like when were the database backups done, what projects were built for QA.&amp;#160; Not knowing that the backups were not performed was a giant flaw in the backup plan.&amp;#160; We were lucky on this one.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-5973885478735032139?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=kx5hQ2r0"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=2wH3LjWa"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=NC63nB5d"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=NC63nB5d" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=1I4SqgNu"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=pzRWM9v4"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/Oatm1I6uYKI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/5973885478735032139/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2009/01/renabling-maintenance-plans-on-sql.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5973885478735032139?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/5973885478735032139?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/Oatm1I6uYKI/renabling-maintenance-plans-on-sql.html" title="Renabling maintenance plans on SQL Server 2005" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2009/01/renabling-maintenance-plans-on-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEFRXg6eSp7ImA9WxRbE0w.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-2618306709102167916</id><published>2008-12-03T10:36:00.001-05:00</published><updated>2008-12-03T10:36:54.611-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-03T10:36:54.611-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="workplace" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>Dealing with meetings that run late and run into your meeting</title><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Wikiepedia bio" href="http://en.wikipedia.org/wiki/Raymond_Chen"&gt;Raymond Chen&lt;/a&gt; just posted a great post on his &lt;a href="http://blogs.msdn.com/oldnewthing/default.aspx"&gt;The New Old Thing&lt;/a&gt; blog about &lt;a title="The Old New Thing : Raymond&amp;#39;s technique for getting people to leave a meeting room when their meeting runs over" href="http://blogs.msdn.com/oldnewthing/archive/2008/12/02/9162407.aspx"&gt;getting people out of a meeting room when their time is up&lt;/a&gt;.&amp;#160; You either barge right in and say “Oops! Sorry about that” and then back right out.&amp;#160; Or you just sit right down and apologize for being late for your own meeting.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you are in a meeting and your time is up, it’s just proper etiquette to end the meeting if that room is booked for another meeting.&amp;#160; While your topic may be more important for the next meeting, making other people wait will push back everyone’s schedule.&amp;#160; It can ripple through the company and come back and bite you on the Blackberry..&amp;#160; It’s just a poor business decision to make everyone else wait.&lt;/p&gt;  &lt;p&gt;Either politely ask if the next meeting can be be delayed a few minutes, or just book another meeting at another time to finish your stuff up.&amp;#160; With so many meetings include people calling in for remote offices, you really need to make an effort to keep your meeting on track.&lt;/p&gt;  &lt;p&gt;If your one hour status meeting always seems to run 90 minutes, then you have a time management problem.&amp;#160; Either your meeting isn’t staying on topic, or the scope of the meeting doesn’t fit the time allotted.&amp;#160; Cut back on the scope or just book the room for 90 minutes.&lt;/p&gt;  &lt;p&gt;At the last place I worked, our daily team staff meetings were “stand up” meetings.&amp;#160; We all stood in a quite away near our workspace, and we just stood and talked for a few minutes.&amp;#160; No beverages were allowed and off topic conversations were verboten.&amp;#160; This fails when you have remote team mates, then you would need to book a small room and everyone just stares at the conference phone.&amp;#160; The no sitting down and no beverage rules are still in effect.&lt;/p&gt;  &lt;p&gt;I still think that Dave Barry &lt;a title="from QuoteDB.com" href="http://www.quotedb.com/quotes/773"&gt;said it best&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Meetings are an addictive, highly self-indulgent activity that corporations and other large organizations habitually engage in only because they cannot actually masturbate.&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-2618306709102167916?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nfyE5UhB"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=xxFQ35uV"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=3eoe7ehz"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=3eoe7ehz" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=3wEdVmAM"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=VRNN6QUq"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/ebonjM2eLqw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/2618306709102167916/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/12/dealing-with-meetings-that-run-late-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2618306709102167916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/2618306709102167916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/ebonjM2eLqw/dealing-with-meetings-that-run-late-and.html" title="Dealing with meetings that run late and run into your meeting" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/12/dealing-with-meetings-that-run-late-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFQnY7fSp7ImA9WxRUFEg.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-8946092958424129562</id><published>2008-11-23T09:26:00.001-05:00</published><updated>2008-11-23T09:26:53.805-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-23T09:26:53.805-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="YouTube" /><category scheme="http://www.blogger.com/atom/ns#" term="TiVo" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>Some odd TiVo issues</title><content type="html">&lt;p&gt;I have&amp;#160; couple a couple of Series2 &lt;a href="http://www.tivo.com"&gt;TiVo&lt;/a&gt; DVRs and they just received the &lt;a title="TiVo 9.3.2 Software Priority Request Form" href="http://research.tivo.com/932priority/index.htm"&gt;TiVo Fall 2008 Service Update&lt;/a&gt; for 9.3.2.&amp;#160; It’s basically a few tweaks to the UI, but the odd thing was that I needed to manually restart the TiVo.&amp;#160; Usually the TiVo restarts itself after getting a new system update.&amp;#160; Very odd, but hopefully just a one time glitch.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;My in-laws have a TiVO HD and sometime last week it decided to stop recording the shows on the season passes.&amp;#160; I went over and took a look.&amp;#160; The season passes were in order and when you selected view upcoming episodes, the shows would be listed, but not listed as being recorded.&amp;#160; Very odd.&amp;#160; The fix was simple, but annoying.&amp;#160; I selected each season pass and saved it without making any changes.&amp;#160; After saving the pass, the correct shows were marked as going to be recorded.&amp;#160; Fortunately they only had a handful of season passes, it took a minute or two to update all of them.&amp;#160; &lt;/p&gt;  &lt;p&gt;After fixing the season passes, I tried to bring up YouTube on the TiVo HD.&amp;#160; When I selected YouTube from the menu, the TiVo froze and stopped responding.&amp;#160; I gave it a few minutes to figure it on it’s own and I restarted their TiVo the hard way.&amp;#160; Thanks to TiVo not having a reset button, I had to unplug and plug it back in again.&amp;#160; After waiting a few minutes to boot abck up, it was back to normal.&lt;/p&gt;  &lt;p&gt;That was the first time I have ever had to reboot a TiVo, their software has been very stable.&amp;#160; As with my Series2 units, I’m hoping that this was a one time glitch caused by system updates being pushed down the to TiVo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-8946092958424129562?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=1r8dIFcK"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=gs6UgXng"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=se3nPyFt"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=se3nPyFt" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=ZBOfUKQo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=2ghFuVR9"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/jphER4Q5y5Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/8946092958424129562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/11/some-odd-tivo-issues.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8946092958424129562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/8946092958424129562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/jphER4Q5y5Y/some-odd-tivo-issues.html" title="Some odd TiVo issues" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/11/some-odd-tivo-issues.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYGQHszfip7ImA9WxRUEkw.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-6310704136074625800</id><published>2008-11-20T16:22:00.001-05:00</published><updated>2008-11-20T16:22:01.586-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-20T16:22:01.586-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2003" /><category scheme="http://www.blogger.com/atom/ns#" term="ESX Server" /><title>Fast way to resize a virtual disk with VMware ESX Server</title><content type="html">&lt;p&gt;We’re starting some &lt;a href="http://en.wikipedia.org/wiki/Sharepoint"&gt;SharePoint&lt;/a&gt; development and I needed to create a &lt;a href="http://weblogs.asp.net/erobillard/archive/2007/02/23/build-a-sharepoint-development-machine.aspx"&gt;development environment&lt;/a&gt; on Windows Server 2003.&amp;#160; So I created a new virtual machine (VM) of Server 2003 on our &lt;a href="http://en.wikipedia.org/wiki/VMware_ESX"&gt;VMware ESX&lt;/a&gt; box and gave it a 1GB of RAM and 8GB of disk space.&amp;#160; I installed the OS and configured it for &lt;a href="http://en.wikipedia.org/wiki/Windows_SharePoint_Services"&gt;Windows SharePoint Services&lt;/a&gt; (WSS) and then installed Visual Studio 2008.&amp;#160; That left us with about 1.5GB of disk space.&amp;#160; Oops, time to resize the drive.&lt;/p&gt;  &lt;p&gt;The beauty of working with virtual machines is that it’s relatively easy to increase or decrease the memory and disk storage.&amp;#160; In this case, I wanted to add another 4GB to the virtual disk.&amp;#160; I powered down the virtual machine and went into the “Virtual Machine Properties” from the &lt;a href="http://www.vmware.com/products/vi/"&gt;VMware Infrastructure Client&lt;/a&gt; (VIC).&amp;#160; I selected the hard drive and it provided a entry field for the new size.&amp;#160; I increased the size to 12GB, adding an additional 4GB.&lt;/p&gt;  &lt;p&gt;That takes us part way there.&amp;#160; I increased the size if the virtual disk from 8GB to 12GB, but it still has an 8GB partition, the OS wont see the additional space.&amp;#160; I saw all some &lt;a href="http://vmware-land.com/Resizing_Virtual_Disks.html"&gt;tips&lt;/a&gt; on that &lt;a href="http://seriesoftubes.net/archives/2-Its-Not-A-Truck...Its-A-Series-Of-Tubes.html"&gt;Series of Tubes&lt;/a&gt; that recommended downloading Linux boot disks and boot the the VM from the Linux CD images as an .ISO file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://news.yahoo.com/s/ap/20081117/ap_on_re_eu/eu_britain_new_word"&gt;Meh&lt;/a&gt;, that’s too much work.&amp;#160; I took a simpler path.&amp;#160; I powered down another Server 2003 VM that was already running on the ESX box and added new VM’s virtual disk as a second virtual drive.&amp;#160; I booted up the second VM and opened up a command shell.&amp;#160; From the command shell, I ran the &lt;a href="http://technet.microsoft.com/en-us/library/cc766465.aspx"&gt;diskpart&lt;/a&gt; utility to extend the partition.&amp;#160; I did the following commands through diskpart:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;diskpart&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Microsoft DiskPart version 5.1.3565&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Copyright (C) 1999-2003 Microsoft Corporation.&lt;/p&gt;&lt;p&gt;On computer: XXXXX&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;DISKPART&amp;gt; list volume&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160; Volume ###&amp;#160; Ltr&amp;#160; Label&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Fs&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size&amp;#160;&amp;#160;&amp;#160;&amp;#160; Status&amp;#160;&amp;#160;&amp;#160;&amp;#160; Info&lt;/p&gt;&lt;p&gt;&amp;#160; ----------&amp;#160; ---&amp;#160; -----------&amp;#160; -----&amp;#160; ----------&amp;#160; -------&amp;#160; ---------&amp;#160; --------&lt;/p&gt;&lt;p&gt;&amp;#160; Volume 0&amp;#160;&amp;#160;&amp;#160;&amp;#160; E&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DVD-ROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 B&lt;br /&gt;&amp;#160; Volume 1&amp;#160;&amp;#160;&amp;#160;&amp;#160; C                NTFS&amp;#160;&amp;#160; Partition&amp;#160;&amp;#160;&amp;#160;&amp;#160; 12 GB&amp;#160; Healthy&amp;#160;&amp;#160;&amp;#160; Boot&lt;br /&gt;&amp;#160; Volume 2&amp;#160;&amp;#160;&amp;#160;&amp;#160; D                NTFS&amp;#160;&amp;#160; Partition&amp;#160;&amp;#160;&amp;#160; 8 GB&amp;#160; Healthy&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;DISKPART&amp;gt; select volume 2 &lt;br /&gt;&amp;#160; &lt;br /&gt;Volume 2 is the selected volume.&lt;br /&gt;&amp;#160; &lt;br /&gt;DISKPART&amp;gt; extend&lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;DISKPART&amp;gt; exit&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Leaving DiskPart...&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;I basically typed that in from memory, some of the numbers may be off, but it shows how to extend the size of the partition.&amp;#160; After exiting out of diskpart, I then shut down the second VM.&amp;#160; Next, I removed the virtual drive that belongs to the new VM.&amp;#160; Remember to select remove only and not remove and delete.&amp;#160; At this point I was able to power both VM’s back up.&amp;#160; The second VM will be slightly confused about the missing drive, but it was back to normal.&amp;#160; The new VM took some time to check out the resized partition after I logged back in.&amp;#160; With my VM, it declared it to be new hardware and wanted to reboot.&amp;#160; After it rebooted, it was happy and recognized that it had a 12GB partition.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-6310704136074625800?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=yFziYQCT"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=Jv4HK7wz"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=lUPiBkPk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=lUPiBkPk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nBCJ3yXe"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=0K0oHpMK"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/mrz2MQuRmNs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/6310704136074625800/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/11/fast-way-to-resize-virtual-disk-with.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6310704136074625800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/6310704136074625800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/mrz2MQuRmNs/fast-way-to-resize-virtual-disk-with.html" title="Fast way to resize a virtual disk with VMware ESX Server" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/11/fast-way-to-resize-virtual-disk-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04FQnc9eyp7ImA9WxRXFkw.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-9118591143456021871</id><published>2008-10-21T15:05:00.001-04:00</published><updated>2008-10-21T15:05:13.963-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-21T15:05:13.963-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>DevTrack woes with build 1833 of mfc80.dll</title><content type="html">&lt;p&gt;We use TechExcel’s &lt;a href="http://www.techexcel.com/products/devsuite/devtrack.html" target="_blank"&gt;DevTrack&lt;/a&gt; tool to track our defects and project modifications.&amp;#160; A few weeks ago, one of our QA specialists installed SQL Server 2008 Express.&amp;#160; That broke DevTrack.&amp;#160; After SQL Express 2008 was installed, DevTrack would crash after loading.&amp;#160; After contacting DevTrack support, we were advised that the mfc80.dll installed with SQL Express was causing the problem.&amp;#160; &lt;/p&gt;  &lt;p&gt;Their suggested work around?&amp;#160; They asked us to overwrite the version of mfc80.dll (8.0.50727.1833) located in one of the SQL Express folders with an older one (8.0.50727.762).&amp;#160; Ok, there is something wrong this picture.&amp;#160; You don’t replace a dll in another application’s folder.&amp;#160; That violates the integrity of the installation of the other application.&amp;#160; You have no idea of what the possible consequences will be for that application.&amp;#160; It could work fine, it could blow up in your face, or something in between.&lt;/p&gt;  &lt;p&gt;The problem is that when DevTrack requests mfc80.dll, it’s being redirected through the &lt;a href="http://blogs.msdn.com/martynl/archive/2005/10/13/480880.aspx" target="_blank"&gt;WinSxS&lt;/a&gt; policy files to the latest and greatest version, version 8.0.50727.1833.&amp;#160; And there is something in MFC 1833 that just kills DevTrack.&amp;#160; The problem isn’t specific to DevTrack, apparently Corel’s WinDVD has the same problem.&amp;#160; I read a thread &lt;a href="http://phpbb.ulead.com.tw/EN/viewtopic.php?t=33599&amp;amp;start=0&amp;amp;postdays=0&amp;amp;postorder=asc&amp;amp;highlight=&amp;amp;sid=226024f303477f0f7c3ec05632a6b4d8" target="_blank"&gt;about people hacking the WinSxS policy files&lt;/a&gt; to force calls to mfc80.dll to use an older version.&amp;#160; That might work under XP, but will really break things under Vista.&lt;/p&gt;  &lt;p&gt;I thought the Side-by-Side assembly model was supposed to eliminate “DLL Hell”.&amp;#160; For DevTrack to work, they have two choices.&amp;#160; They can patch their code so that it doesn’t crash with the 1833 version of mfc80.dll, or they can install their own local copy and not use the WinSxS version.&amp;#160; We’ve been waiting for a few weeks for a solution, that’s been a real frustrating point. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-9118591143456021871?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=wOuJWn4R"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=fwyzuyHz"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=tU1Tv5hd"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=tU1Tv5hd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=jeW7fdoF"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=JMZhG2t8"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=278" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=K0uAoOGW"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/bZfkYVH8doI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/9118591143456021871/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/10/devtrack-woes-with-build-1833-of.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/9118591143456021871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/9118591143456021871?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/bZfkYVH8doI/devtrack-woes-with-build-1833-of.html" title="DevTrack woes with build 1833 of mfc80.dll" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/10/devtrack-woes-with-build-1833-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08EQnwycSp7ImA9WxRXFU4.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-1569442828179562925</id><published>2008-10-20T15:43:00.001-04:00</published><updated>2008-10-20T15:43:23.299-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-20T15:43:23.299-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Install" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Installer" /><title>Installation is not configuration</title><content type="html">&lt;p&gt;Christopher Painter has a &lt;a title="DeploymentEngineering.com - The Blog: RFC: SQL Scripts Are Almost Declared Evil" href="http://blog.deploymentengineering.com/2008/10/rfc-sql-scripts-are-almost-declared.html" target="_blank"&gt;good post about the problems inherent with with having installers run SQL scripts&lt;/a&gt;.&amp;#160; Having an installer communicate with a database server just opens the door to all sorts of issues.&amp;#160; Just handling the connection to the server requires making sure that you have all of the required bits installed and that you can locate, and connect to the server.&amp;#160; None of that code is rocket science, we’ve been using it for years. I just don’t think having it in an installer is the right place for that type of code.&lt;/p&gt;  &lt;p&gt;The problem is that you are running that code from inside a relatively fragile box, your installer.&amp;#160; Most installer authoring tools provide rudimentary support for running SQL scripts at install time.&amp;#160; They work just fine when all of your ducks are lined up in a row.&amp;#160;&amp;#160; However your clients may be missing an odd duck or two, and you end up with fragile code wrapped inside a DLL that your installer will call.&lt;/p&gt;  &lt;p&gt;I’ve always treated the installer package as just part of the actual installation process for the end user.&amp;#160; The main task of the installer is to get the bits of your application in place and handle any prerequisite runtime library your code may need.&amp;#160; When it comes to initializing or updating a database, I leave that to the main application and/or it’s support utilities.&amp;#160; if a SQL script is flawed and or doesn’t handle some edge condition that only one customer has, you can break the install.&lt;/p&gt;  &lt;p&gt;By using a full blown application to handle the database task, your life (and your customer’s life) becomes much easier.&amp;#160; By running your own application, you have (or should have) a much richer environment for developing code.&amp;#160; You have complete control over the UI and you do not have to be concerned with trying match the UI style of the installer.&amp;#160;&amp;#160; Also the testing and debugging of the database utility code becomes much easier as no longer need to account for the installer.&lt;/p&gt;  &lt;p&gt;You also have the ability to run the application at any time after the install, without having to invoke the installer.&amp;#160; If it turns out the problem was a SQL script that didn’t work for that customer, you can immediately email or post online an updated SQL script, without forcing the user to run the installation process again.&lt;/p&gt;  &lt;p&gt;We use a mixture of script based installers and Windows Installers and none of them make any attempt to run a SQL script.&amp;#160; I wrote a database utility application that gets launched after an install.&amp;#160; I wrote it when our company supported the MSDE, back in the day of SQL Server 7.&amp;#160; Back then, Microsoft provided absolutely zero for tools to manage the MSDE.&amp;#160; So this utility, by necessity needed to be able to attach and detach databases, back up and restore databases, manage the server and database logins, and perform schema updates.&amp;#160; &lt;/p&gt;  &lt;p&gt;Over the years, this utility has matured and is very easy for the end user to use.&amp;#160; We provide all of schema updates in a single, compressed file.&amp;#160; For the use to apply an update the database schema, they just run my utility and it reads the update file and it knows which updates have already been applied and only runs the ones it needs to.&lt;/p&gt;  &lt;p&gt;All very easy for the end use, but it would have been a nightmare to get that level of functionality running as part of the installer.&amp;#160; As soon as you add an outside dependency (in this case, the database server), you have added a point of failure that you will have absolutely no control over.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-1569442828179562925?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=33HComQk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=A3i5mMly"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=m99sOVaD"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=m99sOVaD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nv4TGvGO"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nizeWGsk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=278" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=cxg7dnmx"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/qW28Kag3Oyc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/1569442828179562925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/10/installation-is-not-configuration.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1569442828179562925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/1569442828179562925?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/qW28Kag3Oyc/installation-is-not-configuration.html" title="Installation is not configuration" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/10/installation-is-not-configuration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EAR349cSp7ImA9WxRXEko.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-374993624409849938</id><published>2008-10-17T16:34:00.001-04:00</published><updated>2008-10-17T16:34:06.069-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-17T16:34:06.069-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Strange 64-bit error with LayoutKind.Explicit</title><content type="html">&lt;p&gt;I have a C# service that collects data from another company that we do business with.&amp;#160; They send the data in a binary format from one of their C++ applications.&amp;#160; To read their data with .NET, I needed to &lt;a href="http://en.wikipedia.org/wiki/Marshalling_(computer_science)" target="_blank"&gt;marshal&lt;/a&gt; their data to a set of structs defined in C#.&amp;#160; I created a structure that looked something like this.&amp;#160; &lt;/p&gt;  &lt;pre class="csharpcode"&gt;    [StructLayout(LayoutKind.Explicit, Size = 48)]&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; SampleHeader&lt;br /&gt;    {&lt;br /&gt;        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]&lt;br /&gt;        [FieldOffset(0)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] RecordType;&lt;br /&gt;&lt;br /&gt;        [MarshalAs(UnmanagedType.U4)]&lt;br /&gt;        [FieldOffset(8)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; Version;&lt;br /&gt;&lt;br /&gt;        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]&lt;br /&gt;        [FieldOffset(12)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] SystemCode;&lt;br /&gt;&lt;br /&gt;        [MarshalAs(UnmanagedType.U4)]&lt;br /&gt;        [FieldOffset(20)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; LocalID;&lt;br /&gt;&lt;br /&gt;        [MarshalAs(UnmanagedType.U4)]&lt;br /&gt;        [FieldOffset(24)]&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; HostID;&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The actual struct had more fields, but this is enough to show the the problem. During development and testing, the code worked fine. Until we tried it on a 64-bit edition of Windows Server 2003. That's when it broke. As soon as I instantiated an instance of this struct, the service would throw an error. Something like this: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;System.TypeLoadException: &lt;br /&gt;Could not load type 'SampleNameSpace.SampleHeader' &lt;br /&gt;from assembly ''Sample, Version=1.2.3.4, Culture=neutral, PublicKeyToken=null' &lt;br /&gt;because it contains an object field at offset 12 that is incorrectly aligned or overlapped by a non-object field.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To get it to fail, all I needed to do was to create a SampleHeader like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;SampleHeader sh = &lt;span class="kwrd"&gt;new&lt;/span&gt; SampleHeader();&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That didn't make any sense.&amp;#160; I couldn’t see any reason why it would work in 32-bit land, but not in 64-bit.&amp;#160; Since it was complaining about the “SystemCode” field, I commented out the other fields and played with the field offsets.&amp;#160; If I changed the offset from 12 to 16, I could create a SampleHeader object without any runtime errors.&amp;#160; Mind you, I could actually use it in my code, those offsets had to match the data my service was receiving.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So I went to plan “B”, getting rid of the explicitly laid out struct.&amp;#160; I created a new one without the StructLayout, MarshalAs, and FieldOffset attributes.&amp;#160; It looked like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;struct&lt;/span&gt; SampleHeader&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] RecordType;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; Version;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] SystemCode;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; LocalID;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; HostID;&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pretty much the same thing, except .NET defined the field alignments.&amp;#160; Instead of using marshalling to copy the data, I just used the BitConverter class.&amp;#160; I had already put the received data into a byte[] array, that made it easy to use BitConverter.&amp;#160; For this struct, I only needed the LocalID and HostID fields, so the following code was all that I needed:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    MyHeader.LocalID = BitConverter.ToUInt32(RawData, 20);&lt;br /&gt;    MyHeader.HostID = BitConverter.ToUInt32(RawData, 24);&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This replaced the marshalling code that looked like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;    GCHandle handle = GCHandle.Alloc(RawData, GCHandleType.Pinned);&lt;br /&gt;    SampleHeader MyHeader = (NewStuff)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(SampleHeader));&lt;br /&gt;    handle.Free();&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I still don’t understand why Windows 64-bit&amp;#160; requires fields in a struct to be aligned on 4 byte boundaries, but the replacement code works and is easier to follow.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-374993624409849938?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=2dzz8GzP"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=omWnJ1el"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=bGyKrrIJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=bGyKrrIJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=IQiJ63K1"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=6TF6bgT0"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=278" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=AzUVfbuy"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/c2701VpZvcE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/374993624409849938/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/10/strange-64-bit-error-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/374993624409849938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/374993624409849938?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/c2701VpZvcE/strange-64-bit-error-with.html" title="Strange 64-bit error with LayoutKind.Explicit" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/10/strange-64-bit-error-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8HQH88fip7ImA9WxRQGUQ.&quot;"><id>tag:blogger.com,1999:blog-11467244.post-3811954980267497982</id><published>2008-10-14T11:22:00.001-04:00</published><updated>2008-10-14T11:23:51.176-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-14T11:23:51.176-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Delphi" /><category scheme="http://www.blogger.com/atom/ns#" term="Annoyances" /><title>Restoring missing Build Events in Delphi 2007</title><content type="html">&lt;p&gt;If you have a Delphi 2007 project that was ported from Delphi 2006, then you may be missing the build event project options.&amp;#160; The &lt;a title="Files that end with .dproj are Delphi project files." href="http://www.file-extensions.org/dproj-file-extension" target="_blank"&gt;.dproj&lt;/a&gt; file that Delphi 2006 creates is does not have a final XML element named PropertyGroup that Delphi 2007 uses.&amp;#160; Without that final PropertyGroup, Delphi 2007 will not enable Build Events as an option.&amp;#160; If you manually edit your .dproj file, just the following lines:&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:da2a10e2-7036-44ac-8a94-39d7f45089c9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So that the .dproj files looks like this at the end of the file:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:c1c1b623-10c6-4295-9d13-9436e294b192" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Project&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;After making that change, the next time you open that project with Delphi 2007 and select Options from the Project menu, you’ll see Build Events listed.&amp;#160; This only appears to happen if you migrate a Delphi 2006 project over to Delphi 2007.&amp;#160; If you create the project from scratch, you’ll see Build Events list.&amp;#160; That’s how I was able to determine what was missing, I just created a new project and compared the .dproj files.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11467244-3811954980267497982?l=anotherlab.rajapet.net'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=1GYEL1VA"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=GppaKkeP"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=287" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=QNZR4Tt9"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?i=QNZR4Tt9" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=nMQSVSNN"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=peSYHpBg"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=278" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?a=JAdMVEgo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ChristopherMillersRandomThoughts?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherMillersRandomThoughts/~4/n_Memup87HQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://anotherlab.rajapet.net/feeds/3811954980267497982/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://anotherlab.rajapet.net/2008/10/restoring-missing-build-events-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3811954980267497982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11467244/posts/default/3811954980267497982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ChristopherMillersRandomThoughts/~3/n_Memup87HQ/restoring-missing-build-events-in.html" title="Restoring missing Build Events in Delphi 2007" /><author><name>Chris Miller</name><uri>http://www.blogger.com/profile/07265018778273203357</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="10716448619272595213" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://anotherlab.rajapet.net/2008/10/restoring-missing-build-events-in.html</feedburner:origLink></entry></feed>
