<?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:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Dk8CQXcycSp7ImA9Wx5TE0o.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388</id><updated>2010-07-28T20:41:00.999-07:00</updated><title>devfuel.com</title><subtitle type="html">Developing software in the wilds of Washington State</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.devfuel.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.devfuel.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>133</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Devfuel" /><feedburner:info uri="devfuel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Devfuel</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DEEEQXY-fip7ImA9WxFUEkk.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-249590802918506943</id><published>2010-06-22T10:06:00.001-07:00</published><updated>2010-06-22T15:43:20.856-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-22T15:43:20.856-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="separator" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="workaround" /><category scheme="http://www.blogger.com/atom/ns#" term="stackpanel" /><title>Workaround: WPF Separator hidden if in a horizontal StackPanel</title><content type="html">&lt;p&gt;The other day I was working with a series of TextBlock controls in a horizontally-oriented StackPanel. When I wanted some visible separation, I naturally chose the Separator control. When it didn’t show up, I was bemused and confused. This is getting to be a familiar place to be as I spelunk the deep caverns of WPF. &lt;/p&gt; &lt;p&gt;It took some digging, but I finally &lt;a href="http://stackoverflow.com/questions/1274370/wpf-toolbar-separator-shrinks-to-nothing-when-inside-a-stackpanel/1274444#1274444"&gt;came across&lt;/a&gt; a workable solution:&lt;/p&gt;&lt;!-- Start block. Created with Code4Blog for Microsoft Visual Studio 2010. Copyright (c)2010 Vitaly Zayko http://zayko.net --&gt; &lt;div style="width: 99.5%; color: black; overflow: auto"&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;StackPanel&lt;span style="color: #ff0000"&gt; Orientation&lt;span style="color: #0000ff"&gt;="Horizontal"&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;TextBlock&lt;span style="color: #ff0000"&gt; Text&lt;span style="color: #0000ff"&gt;="A" /&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;Separator&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;Separator.LayoutTransform&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;RotateTransform&lt;span style="color: #ff0000"&gt; Angle&lt;span style="color: #0000ff"&gt;="90" /&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;span style="color: #a31515"&gt;Separator.LayoutTransform&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;span style="color: #a31515"&gt;Separator&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #a31515"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;span style="color: #a31515"&gt;TextBlock&lt;span style="color: #ff0000"&gt; Text&lt;span style="color: #0000ff"&gt;="B" /&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;span style="color: #a31515"&gt;StackPanel&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/pre&gt;&lt;pre style="margin: 0em"&gt; &lt;/pre&gt;&lt;/div&gt;&lt;p&gt; It seems the Separator control is not set up to be "self righting" if the parent control has an alternate orientation. Thus the 90 degree twist. After this, the Separator shows as expected.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-249590802918506943?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/AntYSN5G98s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/249590802918506943/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2010/06/workaround-wpf-separator-hidden-if-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/249590802918506943?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/249590802918506943?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/AntYSN5G98s/workaround-wpf-separator-hidden-if-in.html" title="Workaround: WPF Separator hidden if in a horizontal StackPanel" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2010/06/workaround-wpf-separator-hidden-if-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EAQno4cSp7ImA9WxFWFkw.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-5116666430758509305</id><published>2010-04-22T09:56:00.000-07:00</published><updated>2010-06-03T18:40:43.439-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-03T18:40:43.439-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="social media" /><category scheme="http://www.blogger.com/atom/ns#" term="template" /><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><title>Blogger: Add Facebook "Like" button to each post</title><content type="html">&lt;p&gt;
Amit, over at Digital Inspiration, &lt;a href="http://www.labnol.org/internet/add-facebook-plugins-to-website/13505/"&gt;laid out some simple steps&lt;/a&gt; to getting the new FaceBook "Like" button onto your Blogger site. &lt;b&gt;If only&lt;/b&gt; it had worked for me...&lt;/p&gt;

&lt;p&gt;
But, being a developer, I dug a bit into the Blogger templating engine and figured out how to make it work for real in a modern template. The snippet you want is:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; font-family: Consolas, 'Courier New', Courier, Monospace; font-size: 10pt; color: black; background: white; background-color: #FFFFCC; padding: .5em; overflow:scroll; border-top: 1px solid #eee; border-left: 1px solid #eee;"&gt; &lt;pre style="margin: 0px;"&gt;&amp;lt;iframe 
   allowTransparency='true' 
   frameborder='0' 
   scrolling='no' 
   expr:src='"http://www.facebook.com/plugins/like.php?href=" 
             + data:post.url 
             + "&amp;amp;amp;layout=standard&amp;amp;amp;show_faces=true&amp;amp;amp;"
             + "width=530&amp;amp;amp;height=60&amp;amp;amp;action=like&amp;amp;amp;"
             + "colorscheme=light"' 
   style='border:none; overflow:hidden; width:530px; height:60px'/&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
The "expr:src" tells the engine to interpret the XML attribute as an expression. The single quotes allow you to nest double quotes inside. The quoted sections are the parts that won't change, and the "data:post.url" is replaced with the fixed url for the given post.&lt;/p&gt;

&lt;p&gt;
As to where to put it, that really depends on your intention and current blogger template. In general, though, you need to edit your HTML template:&lt;/p&gt;

&lt;pre&gt;Layout Tab -&gt; Edit HTML&lt;/pre&gt;

&lt;p&gt;
&lt;b&gt;Warning! Manually editing your template can hose your entire blog if done wrong. Be sure to back it up (instructions are on the Edit HTML page), and don't blame anyone but yourself if you mess it up!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In the edit box, search for "&amp;lt;b:includable id='post' var='post'&amp;gt;". That is the beginning of the post template. You should be able to make out the various parts of the post (comments, edit button, title, etc.) Try pasting the above snippet in various areas and then pressing the "Preview" button. (This lets you try it before you "buy" it ;) If you get a working "Like" button on each post, you are done!&lt;/p&gt;

&lt;p&gt;
Good Luck!&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;UPDATE 1 - No Line Breaks&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
In case you have issues, here is the version with all the clarifying formatting removed and no line breaks:&lt;/p&gt;

&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; font-family: Consolas, 'Courier New', Courier, Monospace; font-size: 10pt; color: black; background: white; background-color: #FFFFCC; padding: .5em; overflow:scroll; border-top: 1px solid #eee; border-left: 1px solid #eee;"&gt; &lt;pre style="margin: 0px;"&gt;&amp;lt;iframe allowTransparency='true' expr:src='&amp;quot;http://www.facebook.com/plugins/like.php?href=&amp;quot; + data:post.url + &amp;quot;&amp;amp;amp;layout=standard&amp;amp;amp;show_faces=true&amp;amp;amp;width=530&amp;amp;amp;height=60&amp;amp;amp;action=like&amp;amp;amp;colorscheme=light&amp;quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:530px; height:60px'/&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Note: When you paste this into the HTML editor, ensure that the snippet begins with "&amp;lt;iframe" and not "&amp;amp;lt;iframe". The snippet had to be escaped in order to display correctly in the HTML of this blog, but you need the real deal.&lt;/p&gt;

&lt;p&gt;
In addition, if you are using the blogger in draft template designer, be aware that there are some HTML editor errors that occur under certain conditions. If you are getting a mysterious error code, try switching to the draft HTML editor. (while on the Edit HTML page, replace "www" in the address bar with "draft") I had to change some attributes from having the value "" to having " " (a space) in order to work.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;UPDATE 2 - String escapes&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As reported by some readers, the previous drafts of this post were not correctly formatted. Inside the expr:src quoted strings, you need "&amp;amp;amp;" instead of "&amp;amp;". The above examples have been updated to allow for direct copy and paste.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-5116666430758509305?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/OedgAJkwkTE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/5116666430758509305/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2010/04/blogger-add-facebook-like-button-to.html#comment-form" title="39 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5116666430758509305?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5116666430758509305?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/OedgAJkwkTE/blogger-add-facebook-like-button-to.html" title="Blogger: Add Facebook &quot;Like&quot; button to each post" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>39</thr:total><feedburner:origLink>http://www.devfuel.com/2010/04/blogger-add-facebook-like-button-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04GSH07cCp7ImA9WxFSGUg.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-3757727492472766809</id><published>2010-02-02T12:05:00.001-08:00</published><updated>2010-04-22T10:05:29.308-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-22T10:05:29.308-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="atom" /><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="seo" /><category scheme="http://www.blogger.com/atom/ns#" term="sitemap" /><category scheme="http://www.blogger.com/atom/ns#" term="mvc" /><category scheme="http://www.blogger.com/atom/ns#" term="asp.net" /><title>Free, automated Google Sitemap for your Blogger site</title><content type="html">&lt;p&gt;I am sure that this is well-known for an elite few SEO-type folks, but it is new to me, and thus I am posting it for posterity.&lt;/p&gt;&lt;p&gt;Strayed across some choice tidbits today. Was doing the work to make a custom &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt; site have an automated &lt;a href="http://www.sitemaps.org/"&gt;Sitemap&lt;/a&gt; stream and suddenly realized that various blogs that I maintain did not have this service either.&lt;/p&gt;
&lt;p&gt;Ever wary of &lt;em&gt;re-Inventing wheel-like structures&lt;/em&gt;, I did some digging and came across &lt;a href="http://theos.in/hakuna-matata/adding-google-sitemap-to-bloggercom-blog-account/"&gt;this&lt;/a&gt; (slightly outdated) reference on how to use the ATOM feed of a blogger site as a sitemap. More important, however, was the user comments that suggested using the following URL for a live sitemap feed:&lt;/p&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; font-family: Consolas, 'Courier New', Courier, Monospace; font-size: 10pt; color: black; background: white; background-color: #FFFFCC; padding: .5em; overflow:scroll; border-top: 1px solid #eee; border-left: 1px solid #eee;"&gt; &lt;pre style="margin: 0px;"&gt;atom.xml?redirect=false&amp;start-index=1&amp;max-results=100&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Since &lt;a href="http://www.google.com/webmasters/tools/"&gt;Google Webmaster Tools&lt;/a&gt; no longer allows a full sitemap URL, copying and pasting that value into the sitemap add UI will yield delicious, automated discovery of Blogger.com content.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-3757727492472766809?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/-F9LCIXmsUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/3757727492472766809/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2010/02/free-automated-google-sitemap-for-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3757727492472766809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3757727492472766809?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/-F9LCIXmsUE/free-automated-google-sitemap-for-your.html" title="Free, automated Google Sitemap for your Blogger site" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2010/02/free-automated-google-sitemap-for-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UGRX8_fSp7ImA9WxNbF0k.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-3216630299419592368</id><published>2009-11-20T10:19:00.000-08:00</published><updated>2009-11-20T10:20:24.145-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T10:20:24.145-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Flocking together</title><content type="html">&lt;a href="http://twitter.com/devfuel"&gt;DevFuel is now tweeting&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-3216630299419592368?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/BV6agFB4R3o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/3216630299419592368/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/11/flocking-together.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3216630299419592368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3216630299419592368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/BV6agFB4R3o/flocking-together.html" title="Flocking together" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/11/flocking-together.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8ERHo_fCp7ImA9WxNVFko.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-6651420693452349784</id><published>2009-10-27T13:18:00.001-07:00</published><updated>2009-10-27T13:20:05.444-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T13:20:05.444-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="win7" /><category scheme="http://www.blogger.com/atom/ns#" term="autopublish" /><category scheme="http://www.blogger.com/atom/ns#" term="windows7" /><category scheme="http://www.blogger.com/atom/ns#" term="virtual application" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="xpmode" /><title>Windows 7 XP Mode: Manually Add Virtual Application Link</title><content type="html">&lt;p&gt;I was playing around with Windows 7 on my work machine and got the Windows XP Mode working. I loved how installing an application on the virtual machine creates a “virtual application” link in the host Windows 7 environment. However, while the first application I installed worked perfectly, the second failed to autopublish a link to Windows 7. &lt;/p&gt; &lt;br/&gt; &lt;p&gt;Turns out that you need to have the install link available for all users in order to autopublish. So I just dragged and dropped a shortcut into Documents and Settings\All Users\Programs and logged off the virtual machine. Voila, the link autopublished. &lt;/p&gt; &lt;br/&gt; &lt;p&gt;In the future, I will make sure to install applications for “all users” to avoid having to do this step. Someone mentioned that they thought the autopublish only worked for Microsoft Installer based applications, but I am skeptical. Instead I am betting that certain non-Microsoft installers are more likely to default to installing for the current user/and/or the suggestor of this idea chose “install for current user” on these applications (as was in the case of my second, non-publishing install).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-6651420693452349784?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/T9osAo2YEtc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/6651420693452349784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/10/windows-7-xp-mode-manually-add-virtual.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6651420693452349784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6651420693452349784?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/T9osAo2YEtc/windows-7-xp-mode-manually-add-virtual.html" title="Windows 7 XP Mode: Manually Add Virtual Application Link" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/10/windows-7-xp-mode-manually-add-virtual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMESHY5fip7ImA9WxNVE00.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-710141947943412492</id><published>2009-10-23T07:30:00.000-07:00</published><updated>2009-10-23T07:33:29.826-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-23T07:33:29.826-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="workaround" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Google Chrome 4.0.223.9 Crashes (development branch workaround)</title><content type="html">Was getting pretty regular crashes when clicking on links in Chrome. After disabling the RSS extension, everything is hunky-dorey again:&lt;br/&gt;&lt;div&gt;&lt;span style="font-weight:bold;"&gt;
Wrench Menu-&gt;Extensions-&gt;disable button on RSS extension&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-710141947943412492?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/f-deW9HP1vw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/710141947943412492/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/10/google-chrome-402239-crashes.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/710141947943412492?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/710141947943412492?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/f-deW9HP1vw/google-chrome-402239-crashes.html" title="Google Chrome 4.0.223.9 Crashes (development branch workaround)" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/10/google-chrome-402239-crashes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4HRXwzfCp7ImA9WxNXF0s.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-4485904382698294413</id><published>2009-10-05T10:15:00.001-07:00</published><updated>2009-10-05T10:15:34.284-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-05T10:15:34.284-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sync" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Chrome Bookmark Sync on by default? (development branch)</title><content type="html">&lt;p&gt;This morning I noticed some links at the bottom of the excellent Google Chrome “New Tab” page. Although I am running the development build of Chrome, I hadn’t specified the command line parameters that enable &lt;a href="http://googlesystem.blogspot.com/2009/08/sync-google-chrome-bookmarks.html"&gt;bookmark sync&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;So I went out on a limb and tried it out. Indeed, it does what one would expect. Previously I had been using evernote to share/log links. This looks like a much better system for having my organized links on any machine I work on. I should have tried it when it was first released, but oh well…just a bit behind the curve. If you have the development branch of Chrome, give it a try!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-4485904382698294413?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/2TS97Ld-ljU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/4485904382698294413/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/10/chrome-bookmark-sync-on-by-default.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4485904382698294413?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4485904382698294413?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/2TS97Ld-ljU/chrome-bookmark-sync-on-by-default.html" title="Chrome Bookmark Sync on by default? (development branch)" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/10/chrome-bookmark-sync-on-by-default.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBRHY7eyp7ImA9WxJXGE8.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-3041351743674291510</id><published>2009-06-12T09:10:00.000-07:00</published><updated>2009-06-12T10:05:55.803-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-12T10:05:55.803-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="msdn" /><category scheme="http://www.blogger.com/atom/ns#" term="documentation" /><category scheme="http://www.blogger.com/atom/ns#" term="search engine" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Google Custom Search + MSDN + Chrome Omnibox = bliss</title><content type="html">&lt;p&gt;So, this is a technology fusion post. The ability to do this has been around for a while, but I have just recently put &lt;span style="font-weight:bold;"&gt;one and one and one together to get three&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;MSDN is well known for being a monolithic, barely navigable Leviathan of a programmer resource. For the most part, I have avoided it by using the local version installed by Visual Studio. However, at my home machine, I have opted out of the huge MSDN install and started using the online version instead. Typically this consisted of doing a google search with "msdn" as a keyword.&lt;/p&gt;
&lt;p&gt;Recently, while &lt;a href="http://www.google.com/support/chrome/bin/answer.py?answer=95653"&gt;setting up a custom search engine&lt;/a&gt; for the &lt;a href="http://www.google.com/support/chrome/bin/answer.py?answer=95440&amp;hl=en"&gt;Omnibox in Chrome&lt;/a&gt;, it occurred to me that there is a better way.&lt;/p&gt;
&lt;p&gt;After a bit of time, i have tacked together the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find a &lt;a href="http://www.google.com/cse?cx=018205968162215846785:zeur6t7rqb8"&gt;Google Custom Search tailored for MSDN&lt;/a&gt; (tip of the hat to &lt;a href="http://stackoverflow.com/users/3043/joel-coehoorn"&gt;Joel Coehoorn&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Familiarize yourself with the &lt;a href="http://www.google.com/support/chrome/bin/answer.py?answer=95655"&gt;Omnibox search shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/support/chrome/bin/answer.py?answer=95653"&gt;Set up a custom search engine for Chome&lt;/a&gt; that points to your custom google search:&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Name:&lt;/span&gt;MSDN&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Shortcut:&lt;/span&gt;msdn&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;URL:&lt;/span&gt;&lt;pre&gt;http://www.google.com/cse?cx=018205968162215846785:zeur6t7rqb8 
&amp;ie=UTF-8&amp;q=%s&amp;sa=Search&lt;/pre&gt;
[Note: Although this URL is on two lines for long line wrapping purposes, you will need to rejoin them for entry in Chrome.]&lt;/blockquote&gt;
&lt;p&gt;So now a reasonable MSDN search can be accomplished in the browser via shortcuts. Typing "msdn" [TAB] "object" gives the System.Object entry as the first result. Next on my list would be getting the results to be in the &lt;a href="http://weblogs.asp.net/jgalloway/archive/2008/08/30/msdn-low-bandwidth-bookmarklet.aspx"&gt;loband version of MSDN&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-3041351743674291510?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/gUeJmsx43gw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/3041351743674291510/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/06/google-custom-search-msdn-chrome.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3041351743674291510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3041351743674291510?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/gUeJmsx43gw/google-custom-search-msdn-chrome.html" title="Google Custom Search + MSDN + Chrome Omnibox = bliss" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/06/google-custom-search-msdn-chrome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQDQH85eSp7ImA9WxVRFUs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-6517052296742440089</id><published>2009-01-21T10:24:00.001-08:00</published><updated>2009-01-21T10:26:11.121-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-21T10:26:11.121-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="quote" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><title>Classic C++ Quote</title><content type="html">Referring to a particularly heinous block of legacy code:   &lt;blockquote&gt;In a COM-Wrapped DLL, having a class named &amp;quot;CGlobals&amp;quot;  that is both global and static is like having a class named &amp;quot;CMemoryLeak&amp;quot; - TSE &lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-6517052296742440089?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/xLtoi7V_YvE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/6517052296742440089/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/01/classic-c-quote.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6517052296742440089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6517052296742440089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/xLtoi7V_YvE/classic-c-quote.html" title="Classic C++ Quote" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/01/classic-c-quote.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUFRnkzfCp7ImA9WxVSGEs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-4176182279481307780</id><published>2009-01-13T09:18:00.001-08:00</published><updated>2009-01-13T09:20:17.784-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-13T09:20:17.784-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="xmltextwriter" /><category scheme="http://www.blogger.com/atom/ns#" term="quotes" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><category scheme="http://www.blogger.com/atom/ns#" term="xmldocument" /><title>Howto: Save an XmlDocument with single-quoted attributes</title><content type="html">&lt;p&gt;There are some cases in which one has to deal with non-standard XML serialization. We all know why this can happen, (cough, cough, legacy code) but then we have to make things work anyway. So...say you are reading and writing XML that uses single quotes instead of double quotes to surround attributes (its valid, just non-standard). If you used XmlDocument.Save() to write out the DOM, you then may have been dismayed to see double quotes. So how to make .NET spit out single quotes?&lt;/p&gt;  &lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white; font-family: Consolas, 'Courier New', Courier, Monospace; font-size: 10pt; color: black; background: white; background-color: #FFFFCC; padding: .5em; overflow:scroll; border-top: 1px solid #eee; border-left: 1px solid #eee;"&gt; &lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WriteSingleQuotedXml(&lt;span style="color: #2b91af;"&gt;XmlDocument&lt;/span&gt; document, &lt;span style="color: blue;"&gt;string&lt;/span&gt; path)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;XmlTextWriter&lt;/span&gt; writer = &lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;XmlTextWriter&lt;/span&gt;(path, System.Text.&lt;span style="color: #2b91af;"&gt;Encoding&lt;/span&gt;.Default))&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Save using single quotes around attributes, etc&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; writer.QuoteChar = &lt;span style="color: #a31515;"&gt;'\''&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Write XML data.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; document.Save(writer);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now that that is out of the way, perhaps you need to &lt;a href="http://www.devfuel.com/2007/03/xmlserializer-now-with-less-xmlnsxsi.html"&gt;get rid of the leading  &amp;quot;&amp;lt; ? x m l &amp;gt;&amp;quot;, &amp;quot;xmlns:xsi&amp;quot; and &amp;quot;xmlns:xsd&amp;quot; stuff?&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-4176182279481307780?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/JlSLR4PQ7eI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/4176182279481307780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/01/howto-save-xmldocument-with-single.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4176182279481307780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4176182279481307780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/JlSLR4PQ7eI/howto-save-xmldocument-with-single.html" title="Howto: Save an XmlDocument with single-quoted attributes" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/01/howto-save-xmldocument-with-single.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8HSHgzfyp7ImA9WxVREE0.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-7910613724242788040</id><published>2009-01-11T01:15:00.000-08:00</published><updated>2009-01-14T22:27:19.687-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T22:27:19.687-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="gcal" /><category scheme="http://www.blogger.com/atom/ns#" term="free" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar" /><category scheme="http://www.blogger.com/atom/ns#" term="gcalview" /><category scheme="http://www.blogger.com/atom/ns#" term="aggregate" /><category scheme="http://www.blogger.com/atom/ns#" term="widget" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>gcalview - Free Google Calendar Blogger Widget</title><content type="html">&lt;a href="http://code.google.com/p/gcalview/wiki/AddToBlogger"&gt;Click to add gcalview to Blogger&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-7910613724242788040?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/wZ5ElskSYSo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/7910613724242788040/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/01/gcalview-free-google-calendar-blogger.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7910613724242788040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7910613724242788040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/wZ5ElskSYSo/gcalview-free-google-calendar-blogger.html" title="gcalview - Free Google Calendar Blogger Widget" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/01/gcalview-free-google-calendar-blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EBRXw7eyp7ImA9WxVSFks.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-7143776564444329897</id><published>2009-01-11T00:51:00.001-08:00</published><updated>2009-01-11T01:20:54.203-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-11T01:20:54.203-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gcal" /><category scheme="http://www.blogger.com/atom/ns#" term="gdata" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar" /><category scheme="http://www.blogger.com/atom/ns#" term="gcalview" /><category scheme="http://www.blogger.com/atom/ns#" term="aggregate" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="feed" /><title>gcalview - Display events from multiple Google Calendars in your website</title><content type="html">&lt;p&gt;&lt;img src="http://gcalview.googlecode.com/svn/wiki/img/preview.png" align="right"/&gt; &lt;/p&gt;&lt;h1&gt;gcalview&lt;/h1&gt;&lt;i&gt;HTML+Javascript for aggregating and displaying multiple public Google Calendar Feeds&lt;/i&gt;&lt;p&gt;&lt;a href="http://calendar.google.com" &gt;Google Calendar&lt;/a&gt; makes it easy to have and maintain a public calendar. There is even an official Google Calendar Widget that can be &lt;a href="http://www.google.com/support/calendar/bin/answer.py?hl=en&amp;amp;answer=41207" &gt;embedded&lt;/a&gt; into a web page. However, this project seeks to be an alternative widget that is themeable, compact, and supports multiple public feeds (feed aggregation). &lt;/p&gt;&lt;p&gt;Built in &lt;a href="http://code.google.com/p/gcalview/wiki/JavaScriptAndHtml"&gt;Javascript and HTML&lt;/a&gt;, this project allows simple embedding of a Google Calendar Aggregation widget using JSON and gdata. &lt;/p&gt;&lt;h2&gt;Features&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Aggregate multiple Google Calendar feeds into a single &lt;a href="http://code.google.com/p/gcalview/wiki/JavaScriptAndHtml"&gt;Javascript+HTML&lt;/a&gt; widget. &lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gcalview/wiki/AddingGcalView"&gt;Manually adding gcalview&lt;/a&gt; to your web page is easy. &lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gcalview/wiki/StylingGcalView"&gt;Styling gcalview&lt;/a&gt; with your own colors, text styles, and layouts in CSS is also easy. &lt;/li&gt;&lt;li&gt;Upcoming events are ordered by &amp;quot;proximity&amp;quot; to the current date. &lt;/li&gt;&lt;li&gt;Intuitive categories of &amp;quot;Today&amp;quot;, &amp;quot;This Week&amp;quot;, &amp;quot;Next Week&amp;quot;, etc. are used to organize and prioritize. &lt;/li&gt;&lt;li&gt;Event details are hidden and shown inline (by clicking the &amp;quot;+&amp;quot;) to allow for a compact representation. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-7143776564444329897?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/ljiYZmtfNo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/7143776564444329897/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2009/01/gcalview-display-events-from-multiple.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7143776564444329897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7143776564444329897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/ljiYZmtfNo0/gcalview-display-events-from-multiple.html" title="gcalview - Display events from multiple Google Calendars in your website" /><author><name>ee</name><uri>http://www.blogger.com/profile/04169823041316352346</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17160689644974108558" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2009/01/gcalview-display-events-from-multiple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMDQnc9eip7ImA9WxRaGUs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-2742490596595812638</id><published>2008-12-22T08:37:00.000-08:00</published><updated>2008-12-22T08:47:53.962-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-22T08:47:53.962-08:00</app:edited><title>Using C# delegates to call C++ functions and get a string back</title><content type="html">C# delegate stuff:
&lt;blockquote&gt;
public delegate void MyFuncDelegate(string sIn, StringBuilder sOut);
public event MyFuncDelegate MyFuncEvent;

&lt;/blockquote&gt;

C++ prototype:
&lt;blockquote&gt;static void MyFunc(LPCTSTR sIn, LPTSTR sOut);&lt;/blockquote&gt;

Tie them together with:
&lt;blockquote&gt;
public void RegisterDelegateMyFunc(IntPtr ptrCallback)
{
            MyFuncDelegate d =          Marshal.GetDelegateForFunctionPointer(ptrCallback,typeof(MyFuncDelegate)) as MyFuncDelegate;
            if (d != null)
            {
                        MyFuncEvent += d;
            }
}
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-2742490596595812638?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/BGw0LHdW9LE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/2742490596595812638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/12/using-c-delegates-to-call-c-functions.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/2742490596595812638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/2742490596595812638?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/BGw0LHdW9LE/using-c-delegates-to-call-c-functions.html" title="Using C# delegates to call C++ functions and get a string back" /><author><name>tse</name><uri>http://www.blogger.com/profile/00370789341167257997</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17461128803673836350" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/12/using-c-delegates-to-call-c-functions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUADR305eSp7ImA9WxRUEE4.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-3684397959176646317</id><published>2008-11-18T10:42:00.001-08:00</published><updated>2008-11-18T10:42:56.321-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-18T10:42:56.321-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="quick reference" /><category scheme="http://www.blogger.com/atom/ns#" term="cheat sheet" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><title>C# Cheat Sheet Cache</title><content type="html">&lt;p&gt;As described &lt;a href="http://www.devfuel.com/2008/11/programming-language-cheat-sheet.html"&gt;here&lt;/a&gt;, this is a cache/cheat sheet of commonly forgotten (and thus Googled) details for the C# language.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="100%" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="107"&gt;Category&lt;/td&gt;        &lt;td valign="top" width="86"&gt;Item&lt;/td&gt;        &lt;td valign="top" width="326"&gt;Sample&lt;/td&gt;        &lt;td valign="top" width="206"&gt;Notes&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="107"&gt;Anonymous Delegate/Method&lt;/td&gt;        &lt;td valign="top" width="92"&gt;Inline Syntax&lt;/td&gt;        &lt;td valign="top" width="326"&gt;         &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;           &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;delegate&lt;/span&gt;(&lt;span style="color: blue"&gt;int&lt;/span&gt; i) { &lt;span style="color: blue"&gt;return&lt;/span&gt; 0.0; }&lt;/p&gt;         &lt;/div&gt;       &lt;/td&gt;        &lt;td valign="top" width="206"&gt;Creates a delegate that takes an int and returns a double. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="107"&gt;Anonymous Delegate/Method&lt;/td&gt;        &lt;td valign="top" width="92"&gt;Sort List&amp;lt;T&amp;gt;&lt;/td&gt;        &lt;td valign="top" width="326"&gt;         &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;           &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt; lst = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;();&lt;/p&gt;            &lt;p style="margin: 0px"&gt;lst.Sort(&lt;/p&gt;            &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;delegate&lt;/span&gt;(&lt;span style="color: blue"&gt;int&lt;/span&gt; i1, &lt;span style="color: blue"&gt;int&lt;/span&gt; i2) &lt;/p&gt;            &lt;p style="margin: 0px"&gt;{&lt;/p&gt;            &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; i1.CompareTo(i2); &lt;/p&gt;            &lt;p style="margin: 0px"&gt;});&lt;/p&gt;         &lt;/div&gt;       &lt;/td&gt;        &lt;td valign="top" width="206"&gt;Sorts a templated list using an inline function that shares the local scope.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-3684397959176646317?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/luobOlRvCDQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/3684397959176646317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/11/c-cheat-sheet-cache.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3684397959176646317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/3684397959176646317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/luobOlRvCDQ/c-cheat-sheet-cache.html" title="C# Cheat Sheet Cache" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/11/c-cheat-sheet-cache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8BRno6cCp7ImA9WxRUEE4.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-1143896424696801961</id><published>2008-11-18T10:03:00.001-08:00</published><updated>2008-11-18T10:44:17.418-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-18T10:44:17.418-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="quick reference" /><category scheme="http://www.blogger.com/atom/ns#" term="cheat sheet" /><category scheme="http://www.blogger.com/atom/ns#" term="languages" /><title>Programming Language Cheat Sheet Caching</title><content type="html">&lt;p&gt;After perusing a &lt;a href="http://stackoverflow.com/questions/175244/whats-on-your-c-cheatsheet"&gt;question on stackoverflow.com&lt;/a&gt;, I realized that it would, indeed, be useful to have a quick reference of various languages. As a developer that is constantly switching language contexts, there is definitely an overhead associated with doing so. Work in C++ long enough, for example, and your knowledge of C# generics blurs towards the template side, and vice versa. &lt;/p&gt;  &lt;p&gt;A fair amount of programming is consistent across multiple languages. However, there are items that particularly are difficult to remember or re-learn. Rather than having quick references that attempt to cover everything, I have made the realization that it is better to just have quick entries for imformation that you always end up Googling anyway. It’s not like C#’s anonymous delegate syntax changes, I just have a hard time remembering the specifics and syntactic sugaring. &lt;/p&gt;  &lt;p&gt;In programming, the repeated re-derivation of a result is inefficient. Dynamic Programming encourages one to &lt;strong&gt;cache commonly used results to improve efficiency&lt;/strong&gt;. And so I present the devfuel.com Quick Reference Caches (A work in progress that will be updated as I use the listed language):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C Cheat Sheet Cache &lt;/li&gt;    &lt;li&gt;C++ Cheat Sheet Cache &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.devfuel.com/2008/11/c-cheat-sheet-cache.html"&gt;C# Cheat Sheet Cache&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;VB Cheat Sheet Cache &lt;/li&gt;    &lt;li&gt;VB.NET Cheat Sheet Cache &lt;/li&gt;    &lt;li&gt;Python Cheat Sheet Cache &lt;/li&gt;    &lt;li&gt;etc. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-1143896424696801961?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/jJWWm5ClsGU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/1143896424696801961/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/11/programming-language-cheat-sheet.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/1143896424696801961?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/1143896424696801961?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/jJWWm5ClsGU/programming-language-cheat-sheet.html" title="Programming Language Cheat Sheet Caching" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/11/programming-language-cheat-sheet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAEQHs8fCp7ImA9WxRVFk0.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-5608498154202579669</id><published>2008-11-13T12:38:00.001-08:00</published><updated>2008-11-13T12:38:21.574-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T12:38:21.574-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="installation" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="installer class" /><category scheme="http://www.blogger.com/atom/ns#" term=".net 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="installutil" /><title>.NET Custom Install Class and InstallUtil.exe Parameters: Order Matters</title><content type="html">&lt;p&gt;I have been working with custom install classes on .NET assemblies. Conveniently, they can be used to perform all manner of tasks through the use of the .net tool Installutil. When testing the ability to pass custom parameters (via the installutil.exe command line) I ran into a quirk:&lt;/p&gt;  &lt;blockquote&gt;It appears that parameters were being ignored if I passed them from an MSDOS console or batch file.&lt;/blockquote&gt;  &lt;p&gt;I knew this had to be a fluke, and finally stumbled on the answer: Order matters…or at least, put the assembly name last?&lt;/p&gt;  &lt;blockquote&gt;“c:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe Assembly.dll &lt;strong&gt;/Key=Value&lt;/strong&gt;” will not work.&lt;br /&gt;  &lt;strong&gt;but…&lt;/strong&gt;&lt;br /&gt;  “c:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil.exe &lt;strong&gt;/Key=Value&lt;/strong&gt; Assembly.dll” will ;)&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-5608498154202579669?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/crxx1tug14o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/5608498154202579669/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/11/net-custom-install-class-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5608498154202579669?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5608498154202579669?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/crxx1tug14o/net-custom-install-class-and.html" title=".NET Custom Install Class and InstallUtil.exe Parameters: Order Matters" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/11/net-custom-install-class-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDR3w8fip7ImA9WxRWGE4.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-2164678085786872719</id><published>2008-11-04T12:34:00.000-08:00</published><updated>2008-11-04T12:44:36.276-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-04T12:44:36.276-08:00</app:edited><title>Lose your find? (VS2008 Find Dialog)</title><content type="html">Today I lost my find!  I had a macro running while my "Find in Files" was running.  It crashed and my Visual Studio 2008 Find dialog no longer would come up...I felt helpless and defenseless.

But... you too can have your find back by going to:
&lt;blockquote&gt;
Microsoft Visual Studio 2008-&gt;Visual Studio Tools-&gt;Visual Studio 2008 Command Prompt
type: devenv /resetsettings
&lt;/blockquote&gt;
Thanx Samir!&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-2164678085786872719?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/6L3OURM82UA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/2164678085786872719/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/11/lose-your-find.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/2164678085786872719?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/2164678085786872719?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/6L3OURM82UA/lose-your-find.html" title="Lose your find? (VS2008 Find Dialog)" /><author><name>tse</name><uri>http://www.blogger.com/profile/00370789341167257997</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17461128803673836350" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/11/lose-your-find.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMESXY_eSp7ImA9WxRXFk0.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-1757614462488195405</id><published>2008-10-21T08:20:00.001-07:00</published><updated>2008-10-21T08:36:48.841-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-21T08:36:48.841-07:00</app:edited><title>XP SP3 breaks Windows Update</title><content type="html">As a software firm we don't typically call for technical support; however, after we installed Windows XP SP3...NO Windows Updates would succeed!  There is NO error code to search on...nothing helpful to google with.  So, I decided to call DELL technical support.  I was pleasantly surprised to get spot on help that fixed the issue.  Here is the fix in a nutshell:

&lt;br/&gt;wups2.dll is a COM dll that is not registered by the XP SP3 install.

&lt;br/&gt;&lt;br/&gt;You need to:
&lt;br/&gt;&lt;blockquote&gt;net stop the windows update service (wuauserv)
&lt;br/&gt;register (regsvr32) wups2.dll (\windows\system32)
&lt;br/&gt;net start the windows update service (wuauserv)&lt;/blockquote&gt;
&lt;br/&gt;And... if you need DELL support ask for Ashlie Wise.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-1757614462488195405?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/qNFl7QSopkc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/1757614462488195405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/10/xp-sp3-breaks-windows-update.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/1757614462488195405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/1757614462488195405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/qNFl7QSopkc/xp-sp3-breaks-windows-update.html" title="XP SP3 breaks Windows Update" /><author><name>tse</name><uri>http://www.blogger.com/profile/00370789341167257997</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17461128803673836350" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/10/xp-sp3-breaks-windows-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ERno-fyp7ImA9WxVSGEs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-9133898703864056373</id><published>2008-10-16T10:57:00.000-07:00</published><updated>2009-01-13T08:56:47.457-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-13T08:56:47.457-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vs2008" /><category scheme="http://www.blogger.com/atom/ns#" term="workaround" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>vs_setup.msi cannot be opened in 2008</title><content type="html">&lt;p&gt;You mean I CAN'T uninstall Visual Studio 2008?  I had the unhappy luck of failing the VS2008 SP1 install, so I figured to uninstall and reinstall and then add back SP1.  Sadly, my visions of a productive coding day disappears with this obscure error: "vs_setup.msi cannot be opened."&lt;/p&gt;
&lt;p&gt;
A bit of googling found a relevant post and after finding the appropriate installer key for "Microsoft Visual Studio 2008 Standard ENU" I was able to get back to work.&lt;/p&gt;

&lt;span style="font-weight:bold;"&gt;Run regedit and find this key:&lt;/span&gt;
&lt;blockquote&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
\E05F434F41678AE30980F28B666B79AD &lt;/blockquote&gt;

&lt;span style="font-weight:bold;"&gt;Or this key if you have the professional edition (Thanks Jul!):&lt;/span&gt;
&lt;blockquote&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products \4E1DAD7D4F54B2B398A9AE271876CEF4&lt;/blockquote&gt;

&lt;p&gt;Underneath that one was a folder called Patches. Within that folder
was an entry called Patches of type REG_MULTI_SZ. I right-clicked and renamed to Patches_1.
&lt;/p&gt;Rerun the setup.exe for VS2008. Return to coding.
&lt;br/&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2797730107725459";
/* 468x60, created 1/13/09, inline post */
google_ad_slot = "6330186882";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-9133898703864056373?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/StMaULOrG_s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/9133898703864056373/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/10/vssetupmsi-cannot-be-opened-2008.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/9133898703864056373?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/9133898703864056373?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/StMaULOrG_s/vssetupmsi-cannot-be-opened-2008.html" title="vs_setup.msi cannot be opened in 2008" /><author><name>tse</name><uri>http://www.blogger.com/profile/00370789341167257997</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17461128803673836350" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.devfuel.com/2008/10/vssetupmsi-cannot-be-opened-2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQERH09fSp7ImA9WxRaFk8.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-5537819230363312079</id><published>2008-10-14T18:42:00.001-07:00</published><updated>2008-12-18T09:11:45.365-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T09:11:45.365-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="workaround" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="2008" /><category scheme="http://www.blogger.com/atom/ns#" term="sp1" /><title>Workaround?: WPF XAML designer silent crash in vs2008 SP1</title><content type="html">&lt;p&gt;Maybe I’m just lucky. I hope that it is based on my developer fortune and not that Visual Studio 2008 SP1 is a piece of dune&lt;strong&gt;buggy&lt;/strong&gt; code…&lt;/p&gt;  &lt;p&gt;I installed the newly released SP1 (I had skipped the SP1 beta1 and beta2) and then tried to open a WPF project that I had created in straight vs2008. Anytime that I was so bold as to open an XAML file in the designer, VS paused for a moment and then died.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&amp;lt;RANT&amp;gt;&lt;/strong&gt;Forget the Vista niceties of noticing the crash and tallying the crash against the “stability” of my system. No. This is a Microsoft product. We can’t have Visual Studio show up on the list of shifty programs.&lt;strong&gt;&amp;lt;/RANT&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I thought about it a bit and tried a few things. Each attempt was rewarded with a silent crash except the last:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;WORKAROUND (SO FAR):&lt;/strong&gt; Create a new WPF Window (or control). For me, this process took inordinately long, and then the new Window/Control showed up. After that point, I could easily view and edit my other XAML files in the designer. Grrr. Yay!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; A couple folks have also posted comments detailing how they got things to "refresh" and stop crashing:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://team.interknowlogy.com/blogs/bradcunningham/archive/2008/10/20/visual-studio-xaml-designer-annoyances.aspx"&gt;Open documents in full XAML view (avoiding the crash when the control displays in the designer?)&lt;/a&gt; (Thanks Brad)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://vascooliveira.com/Blog/archive/2008/12/18/vs-2008-sp1-silent-crash-of-death.aspx"&gt;Opened AppConfig.xaml (Which is XAML but has no controls to display in the designer)&lt;/a&gt; (Thanks Vasco)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; A &lt;a href="http://code.msdn.microsoft.com/KB958017"&gt;patch&lt;/a&gt; is available for the XAML designer in Visual Studio 2008 SP1.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-5537819230363312079?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/7X29h7nUQpE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/5537819230363312079/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/10/workaround-wpf-silent-crash-in-vs2008.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5537819230363312079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/5537819230363312079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/7X29h7nUQpE/workaround-wpf-silent-crash-in-vs2008.html" title="Workaround?: WPF XAML designer silent crash in vs2008 SP1" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>3</thr:total><feedburner:origLink>http://www.devfuel.com/2008/10/workaround-wpf-silent-crash-in-vs2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IFQX8-eyp7ImA9WxRSEEs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-568347981869975537</id><published>2008-09-10T09:51:00.001-07:00</published><updated>2008-09-10T09:51:50.153-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-10T09:51:50.153-07:00</app:edited><title>CoInitialize/CoUninitialize: Rules to live by</title><content type="html">After reading &lt;a href="http://blogs.msdn.com/benkuhn/archive/2006/09/15/756401.aspx"&gt;Ben Kuhn's post&lt;/a&gt; on the subject, I realized how poorly this is being managed in the code of my current project. The rules are basically:   &lt;ol&gt;   &lt;li&gt;Every CoInitialize that succeeds needs a CoUninitialize otherwise the reference counting gets off and all heck breaks loose &lt;/li&gt;    &lt;li&gt;Every CoInitialize that fails should NOT call CoUninitialize otherwise the reference counting gets off and all heck breaks loose &lt;/li&gt;    &lt;li&gt;Use an HRESULT variable and capture the result of the CoInitialize. Use the SUCCEEDED macro to determine, drumroll please, if the CoInitialize succeeded. &lt;/li&gt;    &lt;li&gt;There are a couple other, more remote, cases, read about them in the link above. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-568347981869975537?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/SRSZ3y7Z-yQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/568347981869975537/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/09/coinitializecouninitialize-rules-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/568347981869975537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/568347981869975537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/SRSZ3y7Z-yQ/coinitializecouninitialize-rules-to.html" title="CoInitialize/CoUninitialize: Rules to live by" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/09/coinitializecouninitialize-rules-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYARHc8eCp7ImA9WxRTFE8.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-7046823224231655425</id><published>2008-09-02T23:09:00.001-07:00</published><updated>2008-09-02T23:09:05.970-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-02T23:09:05.970-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vc6" /><category scheme="http://www.blogger.com/atom/ns#" term="rant" /><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="collections" /><category scheme="http://www.blogger.com/atom/ns#" term="tip" /><category scheme="http://www.blogger.com/atom/ns#" term="library" /><category scheme="http://www.blogger.com/atom/ns#" term="vs6" /><category scheme="http://www.blogger.com/atom/ns#" term="vc++" /><category scheme="http://www.blogger.com/atom/ns#" term="templates" /><category scheme="http://www.blogger.com/atom/ns#" term="compiler" /><category scheme="http://www.blogger.com/atom/ns#" term="stl" /><title>using namespace std; a cautionary tale</title><content type="html">&lt;p&gt;&lt;strong&gt;OR: How a 10 minute compile bloated into a 55 minute one&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When you first learn about the standard template library, you rejoice at the thought of having clever containers and algorithms at your beck and call. They are fairly straight forward and easy to use. There is just one niggling problem: &lt;/p&gt;  &lt;blockquote&gt;In your programmer laziness, you dont really want to type &amp;quot;std::&amp;quot; in front of every variable name/type. &lt;/blockquote&gt;  &lt;p&gt;Very soon, you realize that this is just a namespace and that you can get around the extra typing by entering &amp;quot;using namespace std;&amp;quot; at the beginning of your module. &lt;/p&gt;  &lt;p&gt;If you are lazier yet, you realize that you can put &amp;quot;using namespace std;&amp;quot; into a header file, and thus avoid having to type it in each module that needs it. The world is a fun and happy place. Your &amp;quot;hello world&amp;quot; applications grow and prosper. &lt;/p&gt;  &lt;p&gt;If your app is not trivial or small, however, this little trick will come back to haunt you. Well...actually...this little trick will come back to haunt the consultant trying to compile your huge templated library. My cover is blown, that beleaguered consultant is me. &lt;/p&gt;  &lt;p&gt;This particular library was well known and hated for taking nearly an hour (I clocked it at 55 minutes) to compile. (This is a single DLL, mind you.) Everyone always said that there was something weird going on. Some of the savvy developers blamed the sheer number of templates that it instantiated. &lt;/p&gt;  &lt;p&gt;They were close to the issue, but not quite right. It isn't that the compiler was chugging through so many templates that slowed the process. It was that several core header files defined had a &amp;quot;using namespace std;&amp;quot; to alleviate typing problems. This simple oversight was causing 40 minutes of lost time EVERY TIME IT BUILT. One of the developers I work with mused: &amp;quot;I wonder how many man hours we lost over the last 5 years?&amp;quot;&lt;/p&gt;  &lt;p&gt;The problem is, of course, that by &amp;quot;using&amp;quot; the &amp;quot;std&amp;quot; namespace, you load the names of every type and function and template into the compilers memory. The more STL headers you have loaded before hand, the worse it gets. The compiler now has to search through MANY names to determine the context of something that should take barely any look up. It's like looking up your friend's number in a Braille phonebook when they live right across the street.&lt;/p&gt;  &lt;p&gt;I just happened to notice the unwise statements. After a painful period of removing the offenders and adjusting the remaining code to compile (typedefs and std::'s all over the place). I finally saw the fruits of my labor. The library now compiles in under 10 minutes.&lt;/p&gt;  &lt;p&gt;The morals of the story are clear: &lt;/p&gt; &lt;blockquote&gt; &lt;ol&gt;   &lt;li&gt;Avoid &amp;quot;using namespace std&amp;quot; in your .cpp modules. Typedefs and &amp;quot;using std::whatever&amp;quot; are better options. Make a good habit.&lt;/li&gt;    &lt;li&gt;Do not put &amp;quot;using namespace std&amp;quot; in a header file unless you project is trivially small.&lt;/li&gt;    &lt;li&gt;Never, ever, put &amp;quot;using namespace std&amp;quot; in several core header files for a large, templated library.&lt;/li&gt; &lt;/ol&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-7046823224231655425?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/A_PRSuITZY8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/7046823224231655425/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/09/using-namespace-std-cautionary-tale.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7046823224231655425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/7046823224231655425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/A_PRSuITZY8/using-namespace-std-cautionary-tale.html" title="using namespace std; a cautionary tale" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/09/using-namespace-std-cautionary-tale.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYASXo_fip7ImA9WxdaEUw.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-4635813354702393888</id><published>2008-08-18T10:07:00.001-07:00</published><updated>2008-08-18T18:42:28.446-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-18T18:42:28.446-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hang" /><category scheme="http://www.blogger.com/atom/ns#" term="vs6" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="workaround" /><category scheme="http://www.blogger.com/atom/ns#" term="vc++" /><title>Workaround - Visual Studio 6: Hang when trying to load a .cpp file</title><content type="html">&lt;p&gt;Ran into a brief problem today when working in VS6. I have a plugin set up to allow switching between .h and .cpp files. Today when I switched to a .cpp file, Visual Studio hung. Not sure if something else was amiss, I verified that I could load this file into another text editor (no file corruption). However, when I tried to directly load the .cpp file in VS, I received the same result. &lt;/p&gt;  &lt;p&gt;Luckily, I am privy to the wisdom of co-author, TSE, with regards to vs6:&lt;/p&gt;  &lt;blockquote&gt;If all else fails, delete all non-essential project files: .plg, .ncb, .opt, etc. These pretty much are all autogenerated, and so worst case scenario is that stuff loads a bit slower. Best (and most often) case is that your mysterous VS6 bug will disappear along with the corrupted .dsw/.dsp support file.&lt;/blockquote&gt;  &lt;p&gt;In my case, it was the .opt that was hosed. It appears that Visual Studio was getting confused about which files remained open in the last session. (I kept getting a &amp;quot;Not all of the windows in the workspace could be opened.&amp;quot; error). This information (or some other related information) must be stored in the .opt.&lt;/p&gt;  &lt;p&gt;Suffice it to say that I'm back up and running. Thanks, TSE. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-4635813354702393888?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/88BEtwHzh5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/4635813354702393888/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/08/workaround-visual-studio-6-hang-when.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4635813354702393888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4635813354702393888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/88BEtwHzh5g/workaround-visual-studio-6-hang-when.html" title="Workaround - Visual Studio 6: Hang when trying to load a .cpp file" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/08/workaround-visual-studio-6-hang-when.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AGQ3czfSp7ImA9WxdbFUs.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-4920313254681491673</id><published>2008-08-12T10:22:00.001-07:00</published><updated>2008-08-12T10:22:02.985-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-12T10:22:02.985-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="COM" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="sample" /><category scheme="http://www.blogger.com/atom/ns#" term="Attribute" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><title>Explicitly Setting a Type's GUID with a C# Attribute</title><content type="html">&lt;p&gt;You may have noticed that every C# type has a &amp;quot;GUID&amp;quot; property of type Guid. If you don't explicitly specify, then this GUID is determined for you automatically. However, you can explicitly specify this GUID at compile time. We can thank COM interoperability for this ability, as setting an Interface's ID is essential, and so we can get this for our basic types as well. I personally like to use this ability for plugin object registration.&lt;/p&gt;  &lt;p&gt;A couple &amp;quot;Using&amp;quot; statements for our example:&lt;/p&gt;  &lt;div style="padding-right: 0.5em; border-top: #eee 1px solid; padding-left: 0.5em; font-size: 10pt; background: #ffffcc; padding-bottom: 0.5em; overflow: scroll; border-left: #eee 1px solid; color: black; padding-top: 0.5em; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Runtime.InteropServices;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;A dummy type with an explicit Guid using System.Runtime.InteropServices.GuidAttribute:&lt;/p&gt;  &lt;div style="padding-right: 0.5em; border-top: #eee 1px solid; padding-left: 0.5em; font-size: 10pt; background: #ffffcc; padding-bottom: 0.5em; overflow: scroll; border-left: #eee 1px solid; color: black; padding-top: 0.5em; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace"&gt;   &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;7CB9C1E2-9BA4-4647-9202-FCFEF063552A&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ExplicitTypeID&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; CheckTypeID()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.Assert&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.GetType().GUID == &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Guid&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;7CB9C1E2-9BA4-4647-9202-FCFEF063552A&amp;quot;&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-4920313254681491673?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/eFjRn2e4bx0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/4920313254681491673/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/08/explicitly-setting-type-guid-with-c.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4920313254681491673?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/4920313254681491673?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/eFjRn2e4bx0/explicitly-setting-type-guid-with-c.html" title="Explicitly Setting a Type&amp;#39;s GUID with a C# Attribute" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/08/explicitly-setting-type-guid-with-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUEQHk-fCp7ImA9WxdUGE0.&quot;"><id>tag:blogger.com,1999:blog-2391037223319513388.post-6892835997626078731</id><published>2008-08-03T15:15:00.001-07:00</published><updated>2008-08-03T15:23:21.754-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-03T15:23:21.754-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="oss" /><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="library" /><category scheme="http://www.blogger.com/atom/ns#" term="exception" /><category scheme="http://www.blogger.com/atom/ns#" term="sample" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><category scheme="http://www.blogger.com/atom/ns#" term="source" /><category scheme="http://www.blogger.com/atom/ns#" term="source code" /><category scheme="http://www.blogger.com/atom/ns#" term="ui" /><category scheme="http://www.blogger.com/atom/ns#" term="snippet" /><category scheme="http://www.blogger.com/atom/ns#" term="devfuelnet" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="opensource" /><title>ExceptionBox: A reusable, user friendly Exception Dialog</title><content type="html">&lt;p&gt;&lt;a href="http://lh5.ggpht.com/elliott.lilacpond.net/SJYv2B_ye-I/AAAAAAAAAnQ/W4ZGFNc5CV8/s1600-h/exceptionbox_message%5B8%5D.png"&gt;&lt;a href="http://lh5.ggpht.com/elliott.lilacpond.net/SJYuE7kby4I/AAAAAAAAAnI/IMPaL1v77lk/s1600-h/exceptionbox_details%5B7%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="218" alt="exceptionbox_details" src="http://lh5.ggpht.com/elliott.lilacpond.net/SJYuFCUqo7I/AAAAAAAAAnM/Fd37-3okoS0/exceptionbox_details_thumb%5B5%5D.png?imgmax=800" width="240" align="right" border="0" /&gt;&lt;/a&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="exceptionbox_message" src="http://lh4.ggpht.com/elliott.lilacpond.net/SJYuEVCIWPI/AAAAAAAAAnU/F97w0kGDeEs/exceptionbox_message_thumb%5B4%5D.png?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; The MessageBox class is sufficient for displaying errors, but not really a good solution. The problem is that there are multiple levels of information that is needed when displaying an error. What the end-user wants to see is something that is &lt;strong&gt;clean, understandable, and to the point&lt;/strong&gt;. What the developer needs is &lt;strong&gt;all of the guts of the issue&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;The ExceptionBox represents a happier medium between the two. The user-friendly message is displayed front and center, while the unfiltered guts are only a tab away. Add to that the ability to automatically copy all known details to the clipboard, and you have a solution that is much nicer than a standard MessageBox. I hardly ever code a .net application without it.&lt;/p&gt;  &lt;p&gt;DevFuel.Core.UI.Forms.ExceptionBox is available in the DevFuel.Core.UI assembly of the devfuelnet project. To use the box, simply add a reference to the assembly, then call the Show() method. The using reference would be as follows:&lt;/p&gt;  &lt;div style="padding-right: 0.5em; border-top: #eee 1px solid; padding-left: 0.5em; font-size: 10pt; background: #ffffcc; padding-bottom: 0.5em; overflow: scroll; border-left: #eee 1px solid; color: black; padding-top: 0.5em; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; DevFuel.Core.UI.Forms;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; DevFuel.Core.UI;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Then you would catch your exception, and pass it to the ExceptionBox:&lt;/p&gt;  &lt;div style="padding-right: 0.5em; border-top: #eee 1px solid; padding-left: 0.5em; font-size: 10pt; background: #ffffcc; padding-bottom: 0.5em; overflow: scroll; border-left: #eee 1px solid; color: black; padding-top: 0.5em; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//Optionally set the default dialog icon&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;HostApplicationResources&lt;/span&gt;.DialogIcon = Properties.&lt;span style="color: #2b91af"&gt;Resources&lt;/span&gt;.devfuel;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; realException = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Ugly Exception&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;User Friendly Message&amp;quot;&lt;/span&gt;, realException);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; x)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ExceptionBox&lt;/span&gt;.Show(x);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;HostApplicationResource&lt;/strong&gt; simply represents the ability to set default icons and other details of the DevFuel Library. In the example, the devfuel icon is loaded from the assembly and displayed. If not specified, a generic icon is displayed.&lt;/p&gt;  &lt;p&gt;Inner Exceptions and DevFuel's &lt;strong&gt;AggregateException&lt;/strong&gt; (a wrapper for a collection of Exceptions) are all displayed and can be copied and pasted. I can't count the number of times this has saved me time. When a tester says they have a crash, and they copy and paste the details, this drastically improves my chances of finding the issue immediately. Meanwhile, the end user doesn't have to wade through debugging information in their dialog (unless they want to). &lt;/p&gt;  &lt;blockquote&gt;Full Source and downloads are available &lt;a href="http://devfuelnet.googlecode.com"&gt;here&lt;/a&gt;.&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;&lt;a href="http://www.devfuel.com"&gt;devfuel.com&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2391037223319513388-6892835997626078731?l=www.devfuel.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Devfuel/~4/qVSDkCoeu14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.devfuel.com/feeds/6892835997626078731/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.devfuel.com/2008/08/exceptionbox-reusable-user-friendly.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6892835997626078731?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2391037223319513388/posts/default/6892835997626078731?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Devfuel/~3/qVSDkCoeu14/exceptionbox-reusable-user-friendly.html" title="ExceptionBox: A reusable, user friendly Exception Dialog" /><author><name>ee</name><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04399110673664846874" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.devfuel.com/2008/08/exceptionbox-reusable-user-friendly.html</feedburner:origLink></entry></feed>
