<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.thethoughtfulcoder.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>TheThoughtfulCoder.com</title>
    <description>From coding to fatherhood</description>
    <link>http://thethoughtfulcoder.com</link>
    <language>en-us</language>
    <docs>http://thethoughtfulcoder.com/syndication/Rss</docs>
    <ttl>480</ttl>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.thethoughtfulcoder.com/TheThoughtfulCoder" /><feedburner:info uri="thethoughtfulcoder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TheThoughtfulCoder</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Create absolute URLs using ASP.NET MVC</title>
      <pubDate>Wed, 25 Jan 2012 20:58:34 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/83/Create-absolute-URLs-using-ASPNET-MVC</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/X7fuSLxhofA/Create-absolute-URLs-using-ASPNET-MVC</link>
      <description>&lt;p&gt;
   At times it is desirable to create an absolute URL
   for a HTML element's href or src attribute. I failed to find a shrink wrapped
   mechanism to generate them in ASP.NET MVC, and some of the methods
   I found on the web were not quite what I wanted. So I created
   extension methods for the Uri class, which will generate
   absolute URLs relative to the current context's Request.Url property.
&lt;/p&gt;
&lt;p&gt;
   The class definition follows:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
public static class UriHelperExtensions
{
   // Prepend the provided path with the scheme, host, and port of the request.
   public static string FormatAbsoluteUrl(this Uri url, string path)
   {
      return string.Format( 
         "{0}/{1}", url.FormatUrlStart(), path.TrimStart('/') );
   }

   // Generate a string with the scheme, host, and port if not 80.
   public static string FormatUrlStart(this Uri url)
   {
      return string.Format( "{0}://{1}{2}", url.Scheme, 
         url.Host, url.Port == 80 ? string.Empty : ":" + url.Port );
   }
}
&lt;/pre&gt;
&lt;p&gt;
   The following snippet of code from an ASP.NET MVC Razor view
   demonstrates how to generate an absolute URL given the relative URL 
   &lt;span class="italic"&gt;/images/img.jpg&lt;/span&gt;.
&lt;/p&gt;
&lt;pre class="brush:xml"&gt;
   &amp;lt;img src="@Request.Url.FormatAbsoluteUrl("/images/img.jpg")" alt="Alt text" /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
   For my blog, the HTML generated for the img element will be:
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
   &lt;img src="http://thethoughtfulcoder.com/images/img.jpg" alt="Alt text" /&gt;
&lt;/pre&gt;
&lt;p&gt;
   I hope this helps :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M2ROgCTRlZ_1pI3qh9RF2txOZpw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M2ROgCTRlZ_1pI3qh9RF2txOZpw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M2ROgCTRlZ_1pI3qh9RF2txOZpw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M2ROgCTRlZ_1pI3qh9RF2txOZpw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=X7fuSLxhofA:laHkxUhlx4s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=X7fuSLxhofA:laHkxUhlx4s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=X7fuSLxhofA:laHkxUhlx4s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=X7fuSLxhofA:laHkxUhlx4s:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/X7fuSLxhofA" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/83/Create-absolute-URLs-using-ASPNET-MVC</feedburner:origLink></item>
    <item>
      <title>Domain name siphoning, how to protect a website</title>
      <pubDate>Sat, 21 Jan 2012 23:45:15 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/82/Domain-name-siphoning-how-to-protect-a-website</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/Zw-ISmp83H8/Domain-name-siphoning-how-to-protect-a-website</link>
      <description>&lt;p&gt;
   Some time ago I was going through web logs, and
   I noticed a number of requests being served on a domain that did not belong to my
   employer. It ends up the entire website was indexed in the search engines under 
   this other domain.
&lt;/p&gt;
&lt;p&gt;
   It is simple for anyone to pull this off, all it takes is to point a DNS entry to some
   other website's IP address, and now all their pages will appear
   under that domain if the target site is not protecting itself. 
   In a sense the domain name is siphoning off the content of another website.
&lt;/p&gt;
&lt;p&gt;
   It ends up there were a number of domains doing this to my
   employer's web site. I can only guess at the motivation. It might be a free way to 
   build up SEO keyword relevance before it is switched over to other content.  It might
   be a build up to a social engineering hacking attack. Regardless,
   it is not a desirable situation to allow for many reasons.
   &lt;ul&gt;
      &lt;li&gt;Your pages may be found in search engines under the siphoning domain, 
          which would be very confusing to your end users.&lt;/li&gt;
      &lt;li&gt;This is a disaster from an SEO perspective, as the siphoning
          domain is a complete duplicate of your domain's content.&lt;/li&gt;
      &lt;li&gt;The siphoning domain has the potential to use a lot of bandwidth.&lt;/li&gt;
   &lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
   There are probably many ways to deal with this issue, but I decided
   to use rewrite rules to protect against this situation.  I implemented
   the concept of authorized domains for a website.
&lt;/p&gt;
&lt;h2 class="bold"&gt;Rewrite rules for Apache's mod_rewrite or Helicon Tech's Ape&lt;/h2&gt;
&lt;p&gt;
   I've used &lt;a href="http://www.helicontech.com/isapi_rewrite/"&gt;Helicon Tech's ISPAI Rewrite&lt;/a&gt;, 
   and now &lt;a href="http://www.helicontech.com/ape/"&gt;Ape&lt;/a&gt;, for years now under IIS, 
   but I've tested these rules using mod_rewrite on Apache 2.2 as well.
&lt;/p&gt;
&lt;p&gt;
   I implemented two things that should make attackers steer clear of targeting a domain: 
   return a robots.txt that tells the search engines not to index any content and return
   a HTTP 410 Gone for any other page request.  These two things tell any bot or user
   that nothing exists on a siphoning domain targeting your website. Valid content 
   will only be returned from domains you authorize.
&lt;/p&gt;
&lt;p&gt;
   I created a rewrite map which lists authorized domains. For example, assume the domains 
   &lt;span class="italic"&gt;www.domain-test1.com&lt;/span&gt; and &lt;span class="italic"&gt;images.domain-test1.com&lt;/span&gt; 
   are the domains you use for your site. Create a text file named 
   AuthorizedDomains.txt with the following content:
&lt;/p&gt;
&lt;div class="dropShadowClass2 padLeft5px padRight5px"&gt;
&lt;pre class="brush: plain"&gt;
www.domain-test1.com -
images.domain-test1.com -
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
   Place a file called robotsDisallow.txt in your website's root 
   with the following content.
&lt;/p&gt;
&lt;div class="dropShadowClass2 padLeft5px padRight5px"&gt;
&lt;pre class="brush: plain;"&gt;
User-Agent: *
Disallow: /
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
   The robotsDisallow.txt will be served for robots.txt requests
   on an unauthorized domain.
&lt;/p&gt;
&lt;p&gt;
   The following rewrite rules should be placed in your httpd.conf file.
&lt;p&gt;
&lt;div class="dropShadowClass2 padLeft5px padRight5px"&gt;
&lt;pre class="brush: plain"&gt;
RewriteMap  lower int:tolower
RewriteMap AuthorizedDomainsMap txt:AuthorizedDomains.txt

# Serve a robots.txt file which tells search engines not to index unauthorized domains.
RewriteCond ${AuthorizedDomainsMap:${lower:%{SERVER_NAME}}|NOT_FOUND} NOT_FOUND
RewriteRule ^/robots\.txt$ /robotsDisallow.txt [NC,L]

# Return a HTTP 410 page for unauthorized domains.
RewriteCond ${AuthorizedDomainsMap:${lower:%{SERVER_NAME}}|NOT_FOUND} NOT_FOUND
RewriteRule .? - [G]
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
   For Apache, I put the AuthorizedDomains.txt file in the Apache installation
   folder on Windows, but you can specify the path to the file as well.
&lt;/p&gt;
&lt;p&gt;
   A few notes:
   &lt;ul&gt;
      &lt;li&gt;
         This may be obvious, but make sure to thoroughly test these rules. You
         do not want to accidentally muck up your website.
      &lt;/li&gt;
      &lt;li&gt;
         I recommend using authorized domains in your development environment to
         make sure the rules are working as expected.
      &lt;/li&gt;
      &lt;li&gt;
         I used a map file as my team uses a lot of domains in our development environment.
         This makes for easier management of authorized domains, as well as allowing for
         the use of the same httpd.conf for both development and production, but
         different authorized domain configurations.
      &lt;/li&gt;
      &lt;li&gt;
         Make sure to put your authorized domain rules after rules that redirect
         subdomains you wish to send to your primary domain(s).
      &lt;/li&gt;
   &lt;/ul&gt;
&lt;/p&gt;
&lt;h2 class="bold"&gt;Rewrite rules for IIS's URL Rewrite Module&lt;/h2&gt;
&lt;p&gt;
   You can implement a functionally equivalent set of rules using 
   &lt;a href="http://www.iis.net/download/urlrewrite"&gt;IIS's URL Rewrite Module&lt;/a&gt;.
   Again, I created a map for the authorzied domain look up, but unlike
   mod_rewrite, the map is not stored in a separate file. 
   As in the previous example, assume the domains 
   &lt;span class="italic"&gt;www.domain-test1.com&lt;/span&gt; and &lt;span class="italic"&gt;images.domain-test1.com&lt;/span&gt; 
   are your authorized domains.
&lt;/p&gt;
&lt;p&gt;
   Place a file called robotsDisallow.txt in your website's root 
   with the following content.
&lt;/p&gt;
&lt;div class="dropShadowClass2 padLeft5px padRight5px"&gt;
&lt;pre class="brush: plain;"&gt;
User-Agent: *
Disallow: /
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
   The robotsDisallow.txt will be served for robots.txt requests
   on an unauthorized domain.
&lt;/p&gt;
&lt;p&gt;
   The following rules go in the website's web.config file.
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;

&amp;lt;rewrite&amp;gt;
   &amp;lt;rules&amp;gt;
       &amp;lt;rule name=&amp;quot;robots for unauthorized domain&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
           &amp;lt;match url=&amp;quot;^robots\.txt$&amp;quot; /&amp;gt;
           &amp;lt;conditions logicalGrouping=&amp;quot;MatchAll&amp;quot;&amp;gt;
               &amp;lt;add input=&amp;quot;{Authorized domains:{SERVER_NAME}}&amp;quot; pattern=&amp;quot;-&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
           &amp;lt;/conditions&amp;gt;
           &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;/robotsDisallow.txt&amp;quot; /&amp;gt;
       &amp;lt;/rule&amp;gt;
       &amp;lt;rule name=&amp;quot;Authorized domain check&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
           &amp;lt;match url=&amp;quot;.?&amp;quot; /&amp;gt;
           &amp;lt;conditions logicalGrouping=&amp;quot;MatchAll&amp;quot;&amp;gt;
               &amp;lt;add input=&amp;quot;{Authorized domains:{SERVER_NAME}}&amp;quot; pattern=&amp;quot;-&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
           &amp;lt;/conditions&amp;gt;
           &amp;lt;action type=&amp;quot;CustomResponse&amp;quot; statusCode=&amp;quot;410&amp;quot; 
              statusReason=&amp;quot;Gone&amp;quot; 
              statusDescription=&amp;quot;The requested resource is no longer available&amp;quot; /&amp;gt;
       &amp;lt;/rule&amp;gt;
   &amp;lt;/rules&amp;gt;
   &amp;lt;rewriteMaps&amp;gt;
       &amp;lt;rewriteMap name=&amp;quot;Authorized domains&amp;quot;&amp;gt;
           &amp;lt;add key=&amp;quot;www.domain-test1.com&amp;quot; value=&amp;quot;-&amp;quot; /&amp;gt;
           &amp;lt;add key=&amp;quot;images.domain-test1.com&amp;quot; value=&amp;quot;-&amp;quot; /&amp;gt;
       &amp;lt;/rewriteMap&amp;gt;
   &amp;lt;/rewriteMaps&amp;gt;
&amp;lt;/rewrite&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
   Like the mod_rewrite rules, these rules will return a robots.txt file
   that tells search engines not to index any content on an unauthorized domain
   and to return a HTTP 410 Gone for all page requests on an unauthorized domain.
&lt;/p&gt;
&lt;p&gt;
   Another options is to use host headers in IIS to restrict the domains
   for a website, but this mechanism should be used as a last resort. Host headers in IIS
   have a number of limitations, so avoid them if possible.
&lt;/p&gt;
&lt;h2 class="bold"&gt;Wrap up&lt;/h2&gt;
&lt;p&gt;
   To check for this situation, review your website's web logs
   and look for any unfamiliar domain names.
   If you find that a website has already fallen victim to this attack
   and is indexed by the search engines under the siphoning domain, you can 
   implement the use of authorized domains. Then it will take time. 
   It can take quite a while for your pages on the siphoning domain to start dropping 
   out of the search engines, but it will take effect eventually. If I remember
   correctly, it took a few months for the search engines to start dropping the pages.
&lt;/p&gt;
&lt;p&gt;
   It is surprising how many websites are open to this attack. I checked
   a number of major websites, and all but one was open to this issue. I'm sure there
   are legal ways to stop someone from doing this, but with a fairly small technical
   implementation, this can be averted in a much cheaper way.
&lt;/p&gt;
&lt;p&gt;
   If you have any questions please let me know. I hope this helps.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fCnU6Mdi2CyLIn5yCz5B5w0AShU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fCnU6Mdi2CyLIn5yCz5B5w0AShU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fCnU6Mdi2CyLIn5yCz5B5w0AShU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fCnU6Mdi2CyLIn5yCz5B5w0AShU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Zw-ISmp83H8:MacjuRJUYsE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Zw-ISmp83H8:MacjuRJUYsE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Zw-ISmp83H8:MacjuRJUYsE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Zw-ISmp83H8:MacjuRJUYsE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/Zw-ISmp83H8" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/82/Domain-name-siphoning-how-to-protect-a-website</feedburner:origLink></item>
    <item>
      <title>.htaccess subdomain redirect</title>
      <pubDate>Wed, 18 Jan 2012 00:22:25 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/81/htaccess-subdomain-redirect</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/P2boLwsLWak/htaccess-subdomain-redirect</link>
      <description>&lt;p&gt;
   A common desire is to redirect all subdomains to
   a single domain for all website requests. The following rewrite 
   rule will 301 redirect all subdomains other than
   www to the www subdomain.
&lt;/p&gt;
&lt;pre class="brush: plain"&gt;
RewriteCond %{HTTP_HOST} (?&amp;lt;!www\.)domain\.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
&lt;/pre&gt;
&lt;p&gt;
   I used this rule in IIS 7.5 using &lt;a href="http://www.helicontech.com/ape/"&gt;HeliconTech's Ape&lt;/a&gt;, 
   but I've tested it with Apache's mod_rewrite as well.  It can go in your .htaccess file
   or httpd.conf. If put in httpd.conf, it will work as is using RewriteBase /, otherwise 
   remove the trailing slash in the RewriteRule's substitution string.
&lt;/p&gt;
&lt;p&gt;
   I hope this helps :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3sdb0oupezv_TFpLGLCNf_c6V2M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3sdb0oupezv_TFpLGLCNf_c6V2M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3sdb0oupezv_TFpLGLCNf_c6V2M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3sdb0oupezv_TFpLGLCNf_c6V2M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=P2boLwsLWak:_U_eDjyd2OQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=P2boLwsLWak:_U_eDjyd2OQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=P2boLwsLWak:_U_eDjyd2OQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=P2boLwsLWak:_U_eDjyd2OQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/P2boLwsLWak" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/81/htaccess-subdomain-redirect</feedburner:origLink></item>
    <item>
      <title>Skullcandy stencil usage examples</title>
      <pubDate>Wed, 11 Jan 2012 01:09:59 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/80/Skullcandy-stencil-usage-examples</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/jEYFOSC59Y4/Skullcandy-stencil-usage-examples</link>
      <description>&lt;p&gt;
   I bought a set of Skullcandy headphones to replace my
   decade old, falling apart ones.  The Skullcandy headphones
   are definitely better than my old set, not quite as
   good as I expected for the price, but good nonetheless.
   Included in the package is a Skullcandy stencil.
&lt;/p&gt;
&lt;img style="width: 600px; height: 407px;" src="http://thethoughtfulcoder.com/images/SkullcandyStencil.jpg" alt="Skullcandy stencil" class="dropShadowClass2 borderRadius5px" /&gt;
&lt;p&gt;
   My favorite part of the stencil is the sidebar pictures
   showing possible stencil usage.
&lt;/p&gt;
&lt;img style="width: 462px; height: 920px;" src="http://thethoughtfulcoder.com/images/SkullcandyStencilUsageExamples.jpg" alt="Skullcandy stencil usage examples" class="dropShadowClass2 borderRadius5px" /&gt;
&lt;ul&gt;
   &lt;li&gt;Snowboard - okay makes sense.&lt;/li&gt;
   &lt;li&gt;The back of a bald guys head while reading a newspaper -
   Judge Judy wouldn't be happy with these antics.&lt;/li&gt;
   &lt;li&gt;On your cat - would someone's cat actually hold still long enough?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   I guess I'm too old to be the target demographic for these
   headphones.  I'm more likely the target of the stencil on
   the back of head, but I still find it humorous.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nxxtQx4pecBBU-1rISeR8VEi_yo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nxxtQx4pecBBU-1rISeR8VEi_yo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nxxtQx4pecBBU-1rISeR8VEi_yo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nxxtQx4pecBBU-1rISeR8VEi_yo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jEYFOSC59Y4:G542wln1tO0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jEYFOSC59Y4:G542wln1tO0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jEYFOSC59Y4:G542wln1tO0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jEYFOSC59Y4:G542wln1tO0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/jEYFOSC59Y4" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/80/Skullcandy-stencil-usage-examples</feedburner:origLink></item>
    <item>
      <title>Okay, who wore a pair of Famous Monsters underwear?</title>
      <pubDate>Wed, 11 Jan 2012 01:09:59 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/79/Okay-who-wore-a-pair-of-Famous-Monsters-underwear</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/fbKTM825k-Y/Okay-who-wore-a-pair-of-Famous-Monsters-underwear</link>
      <description>&lt;p&gt;
   I was going through an old &lt;a href="http://famousmonstersoffilmland.com/"&gt;Famous Monsters of Filmland&lt;/a&gt;
   magazine, issue# 132 printed in 1977, and one thing really stood out to me; the advertisements.
   They are like an old horror movie: campy, funny, and simply awesome :-)
&lt;/p&gt;
&lt;img style="width: 700px; height: 500px;" src="http://thethoughtfulcoder.com/images/FamousMonstersUnderwearAd.jpg" alt="Famous Monsters underwear ad" class="dropShadowClass2" /&gt;
&lt;p&gt;
   Nothing quite says super nerd virgin like a pair of these underwear.
   Okay, okay, maybe some women would really dig these.  Well, probably
   not.  Not even a Star Trek convention girl could likely accept an Eerie
   underwear wearing nerd.
&lt;/p&gt;
&lt;img style="width: 300px; height: 294px;" src="http://thethoughtfulcoder.com/images/CreepyUnderwear.jpg" alt="Creepy underwear" class="dropShadowClass2 floatRight marginLeft10px" /&gt;
&lt;p&gt;
   I'm not sure I'd want my underwear to say Eerie or Creepy anyway.  That might
   not be quite what you'd like to advertise. On the other hand, sporting Godzilla with
   Famous Monsters printed on your bikini underwear, well, you might just want 
   to have the goods to back that one up!
&lt;/p&gt;
&lt;p&gt;
   I love how it states, PLEASE BE VERY SURE YOU ORDER THE CORRECT SIZE.
   Hopefully they didn't take returns.  The nerd cooties on a used pair of
   these would push the wearer beyond the boundaries of any possible social connection
   with a human being.
&lt;/p&gt;
&lt;p&gt;
   I've never thought of having something printed on my underwear.  I mean, how do you
   show these off?  Do you just drop trou in front of your friends to show
   off your awesome undergarments?  These are not really appropriate for the locker
   room, as you might get a good old fashioned nerd induced butt kicking
   from a Boogeresque kind of jock.
&lt;/p&gt;
&lt;img style="width: 300px; height: 275px;" src="http://thethoughtfulcoder.com/images/FamousMonstersUnderwear.jpg" alt="Famous Monsters underwear" class="floatLeft dropShadowClass2 marginRight10px" /&gt;
&lt;p&gt;
   At least the guy appearing in the advertisement is realistic.
   Putting some muscle bound hunk in a pair of these babies wouldn't 
   really help sell them.  It just wouldn't be believable.
&lt;/p&gt;
&lt;p&gt;
   Don't get me wrong, these things are awesome.  I just need to know, did anyone
   really buy, or better yet, wear a pair of these?  Come on, be honest.
&lt;/p&gt;
&lt;div class="clearBoth"&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3kKKw7haM0c_5YXgSM3jdEcSyps/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3kKKw7haM0c_5YXgSM3jdEcSyps/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3kKKw7haM0c_5YXgSM3jdEcSyps/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3kKKw7haM0c_5YXgSM3jdEcSyps/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fbKTM825k-Y:q0VTPV0dug4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fbKTM825k-Y:q0VTPV0dug4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fbKTM825k-Y:q0VTPV0dug4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fbKTM825k-Y:q0VTPV0dug4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/fbKTM825k-Y" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/79/Okay-who-wore-a-pair-of-Famous-Monsters-underwear</feedburner:origLink></item>
    <item>
      <title>Reduce bleed through for double sided document scan</title>
      <pubDate>Tue, 10 Jan 2012 21:10:53 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/78/Reduce-bleed-through-for-double-sided-document-scan</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/EBpy10gM0hA/Reduce-bleed-through-for-double-sided-document-scan</link>
      <description>&lt;p&gt;
   I scanned some old documents which have print on each
   side.  When scanned, there was significant bleed through
   from the reverse side in the image output.  A couple example
   pieces of the image follow.
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageWithBleedThrough1.jpg" style="width: 621px; height: 210px;" alt="Scanned image with bleed through 1" class="marginBottom15px dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageWithBleedThrough2.jpg" style="width: 516px; height: 120px;" alt="Scanned image with bleed through 2" class="dropShadowClass2 borderRadius5px" /&gt;
&lt;p&gt;
   The print on the reverse side comes through pretty strong.
   The inside of the scanner cover is white, which will certainly
   reflect more light.  I decided to put black construction
   paper on top of the document to see if it would help.
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/DocumentScan1.JPG" style="width: 500px; height: 333px;" alt="Document scan step 1" class="centerImage marginBottom15px dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/DocumentScan2.JPG" style="width: 500px; height: 333px;" alt="Document scan step 2" class="centerImage marginBottom15px dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/DocumentScan3.JPG" style="width: 500px; height: 333px;" alt="Document scan step 3" class="centerImage dropShadowClass2 borderRadius5px" /&gt;
&lt;p&gt;
   The scan with the black backing significantly reduces the bleed through
   of the text on the reverse side.  The black backing does darken the scanned
   image, but it can be brightened up using an image editing tool.
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageReducedBleedThrough1.jpg" style="width: 637px; height: 209px;" alt="Scanned image reduced bleed through 1" class="marginBottom15px centerImage dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageReducedBleedThrough2.jpg" style="width: 546px; height: 125px;" alt="Scanned image reduced bleed through 2" class="centerImage marginBottom15px dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageWithBleedThrough1.jpg" style="width: 621px; height: 210px;" alt="Scanned image with bleed through 1" class="centerImage marginBottom15px dropShadowClass2 borderRadius5px" /&gt;
&lt;img src="http://thethoughtfulcoder.com/images/ScannedImageWithBleedThrough2.jpg" style="width: 516px; height: 120px;" alt="Scanned image with bleed through 2" class="centerImage dropShadowClass2 borderRadius5px" /&gt;
&lt;p&gt;
   The top two images show the scan results with the black backing.
   The next two images are the scans without the black backing.  It is not perfect,
   but I'm happy with the result.
&lt;/p&gt;
&lt;p&gt;
   I hope this helps someone else :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1wJU2JHChlObLhMH3QxEe_loq3M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1wJU2JHChlObLhMH3QxEe_loq3M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1wJU2JHChlObLhMH3QxEe_loq3M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1wJU2JHChlObLhMH3QxEe_loq3M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=EBpy10gM0hA:dDloXFEWt34:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=EBpy10gM0hA:dDloXFEWt34:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=EBpy10gM0hA:dDloXFEWt34:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=EBpy10gM0hA:dDloXFEWt34:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/EBpy10gM0hA" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/78/Reduce-bleed-through-for-double-sided-document-scan</feedburner:origLink></item>
    <item>
      <title>Godzilla Fan Club fan letters from 1977. A forgotten treasure.</title>
      <pubDate>Fri, 06 Jan 2012 02:47:21 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/77/Godzilla-Fan-Club-fan-letters-from-1977-A-forgotten-treasure</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/jSCS-HA4ZGc/Godzilla-Fan-Club-fan-letters-from-1977-A-forgotten-treasure</link>
      <description>&lt;p&gt;
   I was going through some of my old stuff and I came across a
   folder of old forgotten childhood treasure.  First a little backdrop, 
   the 70's were a different era; access to media at that time was very limited.  
   We had 3 or 4 television channels, depending on
   the antenna's rabbit ear configuration and a little luck.  Movies and
   magazines were the other main entertainment media outlets in that day.
&lt;/p&gt;
&lt;p&gt;
   As a kid, I was a huge Godzilla fan.  Once in a while I'd get to see
   the latest Godzilla film in the theater.  Otherwise, I'd flip through the TV Guide
   from cover to cover, hoping to find a Godzilla film showing on TV.
&lt;/p&gt;
&lt;img id="godzillaAnnounceImage" src="http://thethoughtfulcoder.com/images/Godzilla-Fan-Club-Announcement-Picture.jpg" alt="Godzilla Fan Club Announcement Picture" class="floatRight marginLeft10px" /&gt;
&lt;img id="godzillaAnnoundTextImage" src="http://thethoughtfulcoder.com/images/Godzilla-Fan-Club-Annoucement-Text.jpg" alt="Godzilla Fan Club Announcement Text" class="floatRight marginLeft10px clearRight marginTop10px" /&gt;
&lt;p&gt;
   The other main medium for Godzilla was magazine articles, mainly appearing in
   &lt;a href="http://famousmonstersoffilmland.com/"&gt;Famous Monsters of Filmland&lt;/a&gt; magazine.  I'd always hope for the big G's appearance
   on the cover of the next Famous Monsters.  In issue 132 of Famous Monsters,
   I came across the announcement of the Godzilla Fan Club.  I remember being
   so excited about the prospect of a Godzilla focused periodical! Sweet!
&lt;/p&gt;
&lt;p&gt;
   I recall being so excited to get the fan letters, and so disappointed
   when it was abandoned.  They were a prized possession of mine.
&lt;/p&gt;
&lt;p&gt;
   Having recently come across them, I decided to search the internet to
   see what existed about these fan letters.  To my amazement, I could find
   very little mention of their existence, let alone copies of them.  I think
   this is the first time I've searched for something on the internet that couldn't find.  
   I actually have something that doesn't exist on the internet :-)
&lt;/p&gt;
&lt;p&gt;
   I decided to see if I could get in contact with the creator of the Godzilla
   Fan Letters, Richard Campbell.  Luckily enough, I was able to contact
   him, and had a very pleasant interaction with him.  He was very gracious
   that I had these copies; he no longer has copies of the fan letters he
   authored.
&lt;/p&gt;
&lt;p&gt;
   He was only 17 or 18 years old when these were created.  
   That's quite a feat given the technology 
   available back then.  Typewriters were not the best word processors :-)
   Mr. Campbell was happy that these letters can now be shared with
   all Godzilla fans.  I thank him for creating them in the first place,
   they made a kid very happy.
&lt;/p&gt;
&lt;p&gt;
   Mr. Campbell mentioned that he created another Godzilla publication
   named Godzillamania, of which there were two issues.
   One of my hopes is to see if anyone still has copies of the Godzillamania fanzines.  
   I'd love to read them. Along with these fan letters, they 
   would be a very cool piece of Godzilla fan history.
&lt;/p&gt;
&lt;p&gt;
   There were only 5 issues of the Godzilla Fan Letter, totaling 21 pages
   printed front and back, including my welcome letter.  I've scanned them
   all and created various formats, which I'll make available on this blog post.
   The letters are quite worn and have yellowed with age.  I've made some black
   and white versions, along with the current form of the letters.  I have blacked
   out any personal addresses and signatures that were on the letters.
   It is a different day now, I want be careful in that regard.
&lt;/p&gt;
&lt;p&gt;
   You can view the letters on my blog using the following link: &lt;a href="http://thethoughtfulcoder.com/general/Godzilla-Fan-Letters?page=1"&gt;Godzilla Fan Letters from 1977&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   I'm also providing the letters in comic book format (CBZ) and PDF.  If you are not
   familiar with CBZ readers, then you probably just want the PDF.  If
   you haven't heard of comic book readers, you might want to check out
   &lt;a href="http://comicrack.cyolito.com/"&gt;ComicRack&lt;/a&gt;.  It is a very cool program.  The CBZ format has the highest
   quality images.
&lt;/p&gt;
&lt;p&gt;
   &lt;ul&gt;
      &lt;li&gt;Black and white version of the Godzilla Fan letters in CBZ format &lt;a href="http://thethoughtfulcoder.com/files/Godzilla-Fan-Letters-BW.cbz"&gt;Godzilla-Fan-Letters-BW.cbz&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Black and white version of the Godzilla Fan letters in PDF format &lt;a href="http://thethoughtfulcoder.com/files/Godzilla-Fan-Letters-BW.pdf"&gt;Godzilla-Fan-Letters-BW.pdf&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Color version of the Godzilla Fan letters in CBZ format &lt;a href="http://thethoughtfulcoder.com/files/Godzilla-Fan-Letters-Color.cbz"&gt;Godzilla-Fan-Letters-Color.cbz&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Color version of the Godzilla Fan letters in PDF format &lt;a href="http://thethoughtfulcoder.com/files/Godzilla-Fan-Letters-Color.pdf"&gt;Godzilla-Fan-Letters-Color.pdf&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
   Enjoy :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZAjEF6sX7JCV3uTXtLa6YkTveZI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZAjEF6sX7JCV3uTXtLa6YkTveZI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZAjEF6sX7JCV3uTXtLa6YkTveZI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZAjEF6sX7JCV3uTXtLa6YkTveZI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jSCS-HA4ZGc:BlfpVMlmqAg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jSCS-HA4ZGc:BlfpVMlmqAg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jSCS-HA4ZGc:BlfpVMlmqAg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jSCS-HA4ZGc:BlfpVMlmqAg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/jSCS-HA4ZGc" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/77/Godzilla-Fan-Club-fan-letters-from-1977-A-forgotten-treasure</feedburner:origLink></item>
    <item>
      <title>Cannot import registry script (.reg file) Windows 7 error</title>
      <pubDate>Wed, 28 Dec 2011 21:31:28 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/76/Cannot-import-registry-script-reg-file-Windows-7-error</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/5vMSfZB1JGU/Cannot-import-registry-script-reg-file-Windows-7-error</link>
      <description>&lt;p&gt;
   I created and tried to import a .reg file but I received
   the error: &lt;span class="bold"&gt;Cannot import myfile.reg. The specified file
   is not a registry script. You can only import binary
   registry files from within the registry editor.&lt;/span&gt; The dialog
   box follows:
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/SpecifiedFileIsNotRegistryScript.jpg" alt="Specified file is not a registry script" /&gt;
&lt;p&gt;
   My file was UTF-8 encoded. I exported a registry key
   and the file encoding was UTF-16LE. I created a new file with UTF-16LE 
   encoding with my registry changes and it imported successfully.
   I'm not sure if other encodings will work, but UTF-16LE seems to do it.
&lt;/p&gt;
&lt;p&gt;
   I hope this helps :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3cwzFi31TF2U6g-wG_tduRI8yT0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3cwzFi31TF2U6g-wG_tduRI8yT0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3cwzFi31TF2U6g-wG_tduRI8yT0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3cwzFi31TF2U6g-wG_tduRI8yT0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=5vMSfZB1JGU:GGdhDImjSLE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=5vMSfZB1JGU:GGdhDImjSLE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=5vMSfZB1JGU:GGdhDImjSLE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=5vMSfZB1JGU:GGdhDImjSLE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/5vMSfZB1JGU" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/76/Cannot-import-registry-script-reg-file-Windows-7-error</feedburner:origLink></item>
    <item>
      <title>Combine and minify JavaScript (JS) and CSS using AjaxMin</title>
      <pubDate>Wed, 30 Nov 2011 22:09:07 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/75/Combine-and-minify-JavaScript-JS-and-CSS-using-AjaxMin</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/ojkQ7c1Ug1o/Combine-and-minify-JavaScript-JS-and-CSS-using-AjaxMin</link>
      <description>&lt;p&gt;
   Rendering a page on my blog requires 12 JavaScript files
   and 3 CSS files. This is is a lot of HTTP request overhead.
   I decided to use &lt;a href="http://ajaxmin.codeplex.com/"&gt;AjaxMin&lt;/a&gt; to combine and minify
   my JS and CSS files. Now my pages only requires one JS and one CSS file.
&lt;/p&gt;
&lt;p&gt;
   AjaxMin can use an XML file to specify which files to minify and combine
   along with the target output file. The input file for my blog:
&lt;/p&gt;
&lt;pre class="brush:xml"&gt;

&amp;lt;root&amp;gt;
   &amp;lt;output path=&amp;quot;..\..\web\site.js&amp;quot;&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shCore.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shLegacy.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shBrushCSharp.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shBrushXml.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shBrushPlain.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shBrushVb.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\scripts\shBrushPowerShell.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\scripts\jquery-1.7.1.min.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\scripts\json2.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\scripts\jquery.validate.min.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\scripts\jquery.form.js&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\scripts\FoxBlog.js&amp;quot; /&amp;gt;
   &amp;lt;/output&amp;gt;
   &amp;lt;output path=&amp;quot;..\..\web\site.css&amp;quot;&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\styles\shCore.css&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\syntax\styles\shThemeDefault.css&amp;quot; /&amp;gt;
      &amp;lt;input path=&amp;quot;..\..\web\content\site.css&amp;quot; /&amp;gt;
   &amp;lt;/output&amp;gt;
&amp;lt;/root&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
   The file name for the XML input file will be passed 
   through the -xml argument to AjaxMin.
&lt;/p&gt;
&lt;p&gt;
   I'm running AjaxMin out of a folder off the root of my checkout
   tree, so the paths to all the files are relative paths that resolve
   to my web project folder structure. The folder structure of interest
   is shown below.
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/WebFolderStructureForAjaxMin.jpg" alt="Web folder structure for my project using AjaxMin" /&gt;
&lt;p&gt;
   AjaxMin is run out of the 3rdParty\AjaxMin folder. The input file is also located
   in the AjaxMin folder. The command to run AjaxMin:
&lt;/p&gt;
&lt;pre class="brush:text"&gt;
ajaxmin -clobber -xml AjaxMin.xml
&lt;/pre&gt;
&lt;p&gt;
   After executing AjaxMin, the files site.css and site.js will be created
   in the Web folder. These are the files that will be referenced
   in the website code.
&lt;/p&gt;
&lt;p&gt;
   AjaxMin can be run as a build event in Visual Studio, although technically
   it would only be necessary to run it if any of the CSS or JavsScript changes.
   A build event command for the above project structure:
&lt;/p&gt;
&lt;pre class="brush:text"&gt;
$(ProjectDir)..\3rdParty\AjaxMin\ajaxmin -clobber -xml $(ProjectDir)..\3rdParty\AjaxMin\AjaxMin.xml
&lt;/pre&gt;
&lt;p&gt;
   It might be better to set up a external tool in Visual Studio to
   run AjaxMin, a shortcut, or whatever is most convenient.
&lt;/p&gt;
&lt;p&gt;
   Keep in mind, some sort of versioning needs to be done with the
   CSS and JS files so the browser will download the latest version of the
   file. I have yet to implement a versioning mechanism for my blog, but I
   need to get to it at some point. Maybe a blog post about it as well :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WfpThpbgKqs--8pKupKFBNuE69I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WfpThpbgKqs--8pKupKFBNuE69I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WfpThpbgKqs--8pKupKFBNuE69I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WfpThpbgKqs--8pKupKFBNuE69I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ojkQ7c1Ug1o:3ntQiGErYLo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ojkQ7c1Ug1o:3ntQiGErYLo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ojkQ7c1Ug1o:3ntQiGErYLo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ojkQ7c1Ug1o:3ntQiGErYLo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/ojkQ7c1Ug1o" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/75/Combine-and-minify-JavaScript-JS-and-CSS-using-AjaxMin</feedburner:origLink></item>
    <item>
      <title>Check for null in select when using LINQ to Objects left outer join</title>
      <pubDate>Sat, 26 Nov 2011 14:47:29 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/74/Check-for-null-in-select-when-using-LINQ-to-Objects-left-outer-join</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/GLzS6eyaXXc/Check-for-null-in-select-when-using-LINQ-to-Objects-left-outer-join</link>
      <description>&lt;p&gt;
   Make sure to check for null in the select of
   a LINQ to objects query when using a left outer
   join.
&lt;/p&gt;
&lt;p&gt;
   The following example illustrates how to get a method value
   out of class that is the target of the outer join. The code
   can be run in &lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt; as a C# program.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;

class Foo
{
    public int FooKey { get; set; }
    public string FooVal { get; set; }
}

class Bar
{
	public int BarKey { get; set; }
    public string BarVal { get; set; }
}

void Main()
{
	List&amp;lt;Foo&amp;gt; aListOFoo = new List&amp;lt;Foo&amp;gt; {
        new Foo { FooKey = 1, FooVal = &amp;quot;FooVal1&amp;quot; },
        new Foo { FooKey = 2, FooVal = &amp;quot;FooVal2&amp;quot; },
        new Foo { FooKey = 3, FooVal = &amp;quot;FooVal3&amp;quot; } };
    
    List&amp;lt;Bar&amp;gt; aListOBar = new List&amp;lt;Bar&amp;gt; {
        new Bar { BarKey = 1, BarVal = &amp;quot;BarVal1&amp;quot; },
        new Bar { BarKey = 2, BarVal = &amp;quot;BarVal2&amp;quot; } };
        
    var q =
        from f in aListOFoo
            join b in aListOBar on f.FooKey equals b.BarKey into fbJoin
        from bLeftJoin in fbJoin.DefaultIfEmpty()
        select new { 
            f.FooVal, 
            BarVal = bLeftJoin != null ? bLeftJoin.BarVal : null };
    
    q.Dump();
}

&lt;/pre&gt;
&lt;p&gt;
   The output for the above code in LINQPad:
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/LINQPad-output-forLINQ-to-Objects-left-outer-join.jpg" alt="LINQPad output for LINQ to Objects left outer join" /&gt;
&lt;p&gt;
   If the select used bLeftJoin.BarVal without the ternary check for
   null, then the query would return &lt;span class="bold"&gt;Object reference not set to an instance of an object&lt;/span&gt;.
&lt;/p&gt;
&lt;p&gt;
   I'm not a huge fan of LINQ outer join syntax, but LINQ brings
   me much happiness nonetheless :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0Xn6jkdoOGBliOTNQJfnLI_FkFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Xn6jkdoOGBliOTNQJfnLI_FkFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0Xn6jkdoOGBliOTNQJfnLI_FkFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Xn6jkdoOGBliOTNQJfnLI_FkFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=GLzS6eyaXXc:zCiLk5TBuH4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=GLzS6eyaXXc:zCiLk5TBuH4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=GLzS6eyaXXc:zCiLk5TBuH4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=GLzS6eyaXXc:zCiLk5TBuH4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/GLzS6eyaXXc" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/74/Check-for-null-in-select-when-using-LINQ-to-Objects-left-outer-join</feedburner:origLink></item>
    <item>
      <title>Use LINQ to page through a collection in memory with LINQ to Objects</title>
      <pubDate>Sat, 26 Nov 2011 00:00:57 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/73/Use-LINQ-to-page-through-a-collection-in-memory-with-LINQ-to-Objects</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/dJYhHj2a5Rs/Use-LINQ-to-page-through-a-collection-in-memory-with-LINQ-to-Objects</link>
      <description>&lt;p&gt;
   It is not uncommon to find myself needing to page
   through a collection of .NET objects in memory.  LINQ to
   objects provides a great way to accomplish paging
   using the Skip and Take extension methods.
&lt;/p&gt;
&lt;p&gt;
   The following example code illustrates the pattern
   in C#.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;

List&amp;lt;int&amp;gt; list = new List&amp;lt;int&amp;gt; { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int chunkSize = 3, index = 0;
IEnumerable&amp;lt;int&amp;gt; chunk = list.Take(chunkSize);

while( chunk.Count() &amp;gt; 0 )
{
	// Do something with the chunk of data.
	chunk.Dump(); // This shows the data in LINQPad.
	
	index += chunkSize;
	chunk = list.Skip(index).Take(chunkSize);
}
&lt;/pre&gt;
&lt;p&gt;
   The results of the above code in &lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt;:
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/LINQ-to-objects-in-memory-paging-results.jpg" alt="LINQ to objects in memory paging results" /&gt;
&lt;p&gt;
   A common scenario that arises is the need to run a
   database query with an in clause across a large
   amount of data in memory.  A where clause with
   a condition comparing to a list in an ORM tool normally results
   in an IN clause with bound parameters. Since SQL Server
   can have a limited number of entries in an IN clause,
   somewhere around 2,000, processing can easily be done
   by paging through the data in memory.
&lt;/p&gt;
&lt;p&gt;
   Happiness :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jk89OqDWgNacGjDIyIpgmNHpQis/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jk89OqDWgNacGjDIyIpgmNHpQis/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jk89OqDWgNacGjDIyIpgmNHpQis/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jk89OqDWgNacGjDIyIpgmNHpQis/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=dJYhHj2a5Rs:zypvwwF4vxg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=dJYhHj2a5Rs:zypvwwF4vxg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=dJYhHj2a5Rs:zypvwwF4vxg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=dJYhHj2a5Rs:zypvwwF4vxg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/dJYhHj2a5Rs" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/73/Use-LINQ-to-page-through-a-collection-in-memory-with-LINQ-to-Objects</feedburner:origLink></item>
    <item>
      <title>.NET code to help with XML sitemap generation</title>
      <pubDate>Wed, 23 Nov 2011 00:48:33 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/72/NET-code-to-help-with-XML-sitemap-generation</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/Y2TZylikbrY/NET-code-to-help-with-XML-sitemap-generation</link>
      <description>&lt;p&gt;
   I created some code which might save some time for others 
   who want to generate XML sitemaps from .NET code. It is written
   in C#, but would likely be easily ported to other .NET languages.
   This code is used by my ASP.NET MVC blog engine to generate the sitemap
   for my blog entries. It could just as easily be used in ASP.NET WebForms,
   a console application, or from any .NET code framework.
&lt;/p&gt;
&lt;p&gt;
   The code for the helper class can be found &lt;a href="/files/SiteMapHelper.zip"&gt;here&lt;/a&gt;.
   You might want to change the namespace in the file.
&lt;/p&gt;
&lt;p&gt;
   The class SiteMapData is used to hold the data for each sitemap node.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
[Serializable]
public class SiteMapData
{
   public string Loc { get; set; }
   public DateTime? Lastmod { get; set; }
   public string Changefreq { get; set; }
   public decimal? Priority { get; set; }
}
&lt;/pre&gt;
&lt;p&gt;
   A list of SiteMapData instances is passed into the SiteMapHelper class function
   GenerateSiteMap, which will transform the list of SiteMapData objects into
   an XDocument.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
public XDocument GenerateSiteMap(List&amp;lt;SiteMapData&amp;gt; dataRows)
{
   var xmlNodes =
      (from x in dataRows
         select CreateSiteMapUrlNode(x));

   XDocument siteMap = new XDocument(
      new XDeclaration("1.0", "utf-8", "yes"),
      new XElement(_xmlns + "urlset",
         new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"),
         new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), xmlNodes));

   return siteMap;
}
&lt;/pre&gt;
&lt;p&gt;
   The resulting XDocument can be converted to a GZip'ed stream of bytes
   by calling the SiteMapHelper function GZipSiteMap.   
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
public MemoryStream GZipSiteMap(XDocument siteMap)
{
   using (MemoryStream ms = new MemoryStream())
   {
      siteMap.Save(ms);
      ms.Seek(0, SeekOrigin.Begin);
      using (MemoryStream compressed = new MemoryStream())
      {
         using (GZipStream zip = 
            new GZipStream(compressed, System.IO.Compression.CompressionMode.Compress))
         {
            ms.CopyTo(zip, (int)ms.Length);
         }

         return new MemoryStream(compressed.ToArray());
      }
   }
}
&lt;/pre&gt;
&lt;p&gt;
   The following code is an example of how to use the SiteMapHelper class
   to generate a sitemap from an ASP.NET MVC controller action. This is the code
   used to generate the sitemap for my blog.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
public ActionResult SiteMap()
{
   EntityCollection&amp;lt;BlogEntryEntity&amp;gt; entities = 
      ServiceFactory.Beget&amp;lt;IEntityGenericService&amp;gt;().FetchAllEntities&amp;lt;EntityCollection&amp;lt;BlogEntryEntity&amp;gt;&amp;gt;();

   var mapData =
      from e in entities
      orderby e.DateInserted descending
      select new SiteMapData { 
         Loc = FormattingUtils.FormatUrlStart(Request.Url) + 
            Url.RouteUrl("Blog entry with id and title", new { BlogEntryId = e.BlogEntryId, blogEntrytitle = FormattingUtils.NormalizeTitle(e.Title) }), 
            Lastmod = e.LastTimeModified, 
            Priority = 0.5m, 
            Changefreq = "Weekly" };

   SiteMapHelper helper = new SiteMapHelper();

   XDocument siteMap = helper.GenerateSiteMap(mapData.ToList());
   MemoryStream compressedBytes = helper.GZipSiteMap(siteMap);

   FileStreamResult result = new FileStreamResult(compressedBytes, "gzip");
   result.FileDownloadName = "sitemap.xml.gz";
   return result;
}
&lt;/pre&gt;
&lt;p&gt;
   The code used to fill in the SiteMapData list would change according to each
   specific situation. The use of the SiteMapHelper to the end of the function
   would be the same for most situations. Hopefully this illustrates the
   general idea.
&lt;/p&gt;
&lt;p&gt;
   One thing to keep in mind is that XML sitemaps can have at most 50,000 URLs
   and can be at most 10MB in size. So, if the list of SiteMapData nodes would generate
   a file that is larger than the given limits, then the list would have to be
   processed in chunks to generate separate sitemap files.
&lt;/p&gt;
&lt;p&gt;
   I share this with hope that it helps save someone a bit of time :-)
&lt;/p&gt;
&lt;p&gt;
   The entire SiteMapHelper code is shown below. It can be downloaded
   from the link at the top of this blog entry as well.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Xml.Linq;

namespace FoxBlog.Shared
{
   [Serializable]
   public class SiteMapData
   {
      public string Loc { get; set; }
      public DateTime? Lastmod { get; set; }
      public string Changefreq { get; set; }
      public decimal? Priority { get; set; }
   }

   public class SiteMapHelper
   {
      XNamespace _xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";

      public XDocument GenerateSiteMap(List&amp;lt;SiteMapData&amp;gt; dataRows)
      {
         var xmlNodes =
            (from x in dataRows
               select CreateSiteMapUrlNode(x));
   
         XDocument siteMap = new XDocument(
            new XDeclaration("1.0", "utf-8", "yes"),
            new XElement(_xmlns + "urlset",
               new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"),
               new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), xmlNodes));

         return siteMap;
      }

      public MemoryStream GZipSiteMap(XDocument siteMap)
      {
         using (MemoryStream ms = new MemoryStream())
         {
            siteMap.Save(ms);
            ms.Seek(0, SeekOrigin.Begin);
            using (MemoryStream compressed = new MemoryStream())
            {
               // The zip stream has to be closed to write out all the bytes. The underlying stream
               // is closed as well. To get the bytes of the the closed stream ToArray must be called.
               using (GZipStream zip = new GZipStream(compressed, System.IO.Compression.CompressionMode.Compress))
               {
                  ms.CopyTo(zip, (int)ms.Length);
               }

               return new MemoryStream(compressed.ToArray());
            }
         }
      }

      private XElement CreateSiteMapUrlNode(SiteMapData data)
      {
         XElement node = new XElement(_xmlns + "url", new XElement(_xmlns + "loc", data.Loc));

         if ( data.Lastmod.HasValue )
         {
            node.Add(new XElement(_xmlns + "lastmod", data.Lastmod.Value.ToString("yyyy-MM-dd")));
         }
         
         if ( data.Changefreq != null )
         {
            node.Add(new XElement(_xmlns + "changefreq", data.Changefreq));
         }

         if ( data.Priority.HasValue )
         {
            node.Add(new XElement(_xmlns + "priority", data.Priority.ToString()));
         }

         return node;
      }
   }
}
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DlQIUOtj809KaW5JKotiamYNboI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DlQIUOtj809KaW5JKotiamYNboI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DlQIUOtj809KaW5JKotiamYNboI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DlQIUOtj809KaW5JKotiamYNboI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Y2TZylikbrY:7p1s6YMpaAk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Y2TZylikbrY:7p1s6YMpaAk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=Y2TZylikbrY:7p1s6YMpaAk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=Y2TZylikbrY:7p1s6YMpaAk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/Y2TZylikbrY" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/72/NET-code-to-help-with-XML-sitemap-generation</feedburner:origLink></item>
    <item>
      <title>.NET GZipStream must be closed or it produces corrupt data</title>
      <pubDate>Tue, 22 Nov 2011 23:22:40 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/71/NET-GZipStream-must-be-closed-or-it-produces-corrupt-data</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/olqhlhLrqlw/NET-GZipStream-must-be-closed-or-it-produces-corrupt-data</link>
      <description>&lt;p&gt;
   I encountered a situation in which I was missing bytes from my compressed
   data when using .NET's GZipStream class. The short of the story is the GZipStream
   must be closed, otherwise it does not write everything to the underlying
   stream that holds the compressed bytes.
&lt;/p&gt;
&lt;p&gt;
   For example, the following will produce an incorrect result:
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
string test = "This is a test string to compress";
using(MemoryStream source = new MemoryStream(UTF8Encoding.UTF8.GetBytes(test)))
{
   using ( MemoryStream compressedBytes = new MemoryStream() )
   {
      using ( GZipStream gzip = 
               new GZipStream(compressedBytes, CompressionMode.Compress) )
      {
         source.CopyTo(gzip);
         File.WriteAllBytes("out.txt.gz", compressedBytes.ToArray());
      }
   }
}
&lt;/pre&gt;
&lt;p&gt;
   In this case, the out.txt.gz file will not contain the correct content. Using gzip.exe to
   decompress the file results in the error, &lt;span class="bold"&gt;unexpected end of file&lt;/span&gt;.  When I use a tool
   like PowerArchiver, the file decompresses, but it has a bunch of garbage on the end.
&lt;/p&gt;
&lt;p&gt;
   Moving the use of the compressed bytes outside of the GZipStream's using statement
   will give the correct results.
&lt;/p&gt;
&lt;pre class="brush:csharp"&gt;
string test = "This is a test string to compress";
using(MemoryStream source = new MemoryStream(UTF8Encoding.UTF8.GetBytes(test)))
{
   using (MemoryStream compressedBytes = new MemoryStream() )
   {
      using ( GZipStream gzip = 
               new GZipStream(compressedBytes, CompressionMode.Compress) )
      {
         source.CopyTo(gzip);
      }
      File.WriteAllBytes("out.txt.gz", compressedBytes.ToArray());
   }
}
&lt;/pre&gt;
&lt;p&gt;
   Now the decompression of the file works. It is key to close or dispose the GZipStream
   in order to flush out all the bytes.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
   Another issue of note is ToArray should be used instead of GetBuffer on the stream holding
   the compressed bytes. In general the compressed bytes buffer will have a greater capacity than the
   length. In the previous example, using compressedBytes.GetBuffer() will result in
   in a file which decompresses successfully, but the message 
   &lt;span class="bold"&gt;decompression OK, trailing garbage ignored&lt;/span&gt; will be given
   by gzip.exe.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
   All these issues might seem fairly obvious, but the situation in which this came up for me
   was a more complex scenario and it took a bit to figure out. Hopefully this
   might save some time for someone else :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QW7AVXYdj-AQeJLEC2etlz4wYyY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QW7AVXYdj-AQeJLEC2etlz4wYyY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QW7AVXYdj-AQeJLEC2etlz4wYyY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QW7AVXYdj-AQeJLEC2etlz4wYyY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=olqhlhLrqlw:AAgBwdBjr30:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=olqhlhLrqlw:AAgBwdBjr30:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=olqhlhLrqlw:AAgBwdBjr30:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=olqhlhLrqlw:AAgBwdBjr30:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/olqhlhLrqlw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/71/NET-GZipStream-must-be-closed-or-it-produces-corrupt-data</feedburner:origLink></item>
    <item>
      <title>How to remove the IIS ETag HTTP header in IIS 7 / 7.5 (75)</title>
      <pubDate>Thu, 10 Nov 2011 22:46:02 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/70/How-to-remove-the-IIS-ETag-HTTP-header-in-IIS-7-75-75</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/wYQembpiYj0/How-to-remove-the-IIS-ETag-HTTP-header-in-IIS-7-75-75</link>
      <description>&lt;p&gt;
   If you prefer to not send the ETag HTTP header for files
   served from IIS 7 or 7.5, it is a bit problematic.  To the
   best of my knowledge, IIS does not provide a straight forward
   way to remove this header.  This post shows a way to do it using
   &lt;a href="http://www.iis.net/download/URLRewrite"&gt;Microsoft's URL Rewrite Module 2.0&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   I'm not going to go into the what and why of the ETag. Suffice it
   to say, many web developers and web masters would prefer not to send
   it.
&lt;/p&gt;
&lt;p&gt;
   The ETag can be removed using an outbound URL rewrite rule. You can
   read more about it at the
   &lt;a href="http://learn.iis.net/page.aspx/665/url-rewrite-module-20-configuration-reference/"&gt;
      URL Rewrite Module 2.0 Configuration Reference
   &lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The rewrite rule that can be put in your web.config follows:
   &lt;pre class="brush:xml"&gt;
   
&amp;lt;rewrite&amp;gt;
   &amp;lt;outboundRules&amp;gt;
      &amp;lt;rule name=&amp;quot;Remove ETag&amp;quot; &amp;gt;
         &amp;lt;match serverVariable=&amp;quot;RESPONSE_ETag&amp;quot; pattern=&amp;quot;.+&amp;quot; /&amp;gt;
         &amp;lt;action type=&amp;quot;Rewrite&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;
      &amp;lt;/rule&amp;gt;
   &amp;lt;/outboundRules&amp;gt;
&amp;lt;/rewrite&amp;gt;
   &lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
   This graphic shows the settings for the ETag removal
   rewrite rule in IIS Manager.  In fact, if you look at the
   headers for the image, you'll see there is no ETag :-)
&lt;/p&gt;
&lt;img src="http://thethoughtfulcoder.com/images/RemoveETagHTTPHeader-IIS-Manager.jpg" alt="Remove ETag HTTP Header IIS Manager" /&gt;
&lt;p&gt;
   If you happen to be using &lt;a href="http://www.helicontech.com/ape/"&gt;Helicon's Ape&lt;/a&gt;, 
   then this is very simple as well.  You can use a mod_headers rule like:
   &lt;pre class="brush: text"&gt;
      Header set ETag ""
   &lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
   I hope this helps :-)
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YU0EKOtAB7WIvZNSOdJQSE6IRm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YU0EKOtAB7WIvZNSOdJQSE6IRm0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YU0EKOtAB7WIvZNSOdJQSE6IRm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YU0EKOtAB7WIvZNSOdJQSE6IRm0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=wYQembpiYj0:zkiC9SJ_bBE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=wYQembpiYj0:zkiC9SJ_bBE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=wYQembpiYj0:zkiC9SJ_bBE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=wYQembpiYj0:zkiC9SJ_bBE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/wYQembpiYj0" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/70/How-to-remove-the-IIS-ETag-HTTP-header-in-IIS-7-75-75</feedburner:origLink></item>
    <item>
      <title>SteelSeries Shift keyboard - Not recognized by SteelSeries Engine software</title>
      <pubDate>Thu, 10 Feb 2011 23:48:08 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/69/SteelSeries-Shift-keyboard-Not-recognized-by-SteelSeries-Engine-software</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/HGnLt6UX-MU/SteelSeries-Shift-keyboard-Not-recognized-by-SteelSeries-Engine-software</link>
      <description>&lt;p&gt;This is a quick post that hopefully might help someone else.&lt;/p&gt;  &lt;p&gt;We just installed a SteelSeries Shift keyboard, along with the World of Warcraft Cataclysm keyset, on a machine running Windows 7 64-bit. The SteelSeries engine software would not recognize the keyboard and gave the message, “please connect a steelseries engine compatible device to start”.&lt;/p&gt;  &lt;p&gt;Between my wife and I, we uninstalled and reinstalled the software many times and followed the directions on the SteelSeries website to no avail. To make a long story short, it ends up I needed to be logged in with an account which has administrator rights. I have logins for the family and I which do not run with admin privileges. I lock down my machine to keep my son from not going where I don’t want him to go and keep him from installing anything. To install any software, we have to enter the admin password when the UAC window pops up.&lt;/p&gt;  &lt;p&gt;When installing the SteelSeries engine, the UAC window pops up so the administrator account login and password can be entered, but for some reason this was not enough. I had to do the install while logged in to the admin account.&amp;#160; This usually isn’t an issue with most software, but it made the difference in the case.&lt;/p&gt;  &lt;p&gt;Probably most people do not login with non-admin accounts, but I posted this just in case this might help someone out &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/Steel_14567/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I4TenbDJmtcWFcKOSpBDoJPKtrI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4TenbDJmtcWFcKOSpBDoJPKtrI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I4TenbDJmtcWFcKOSpBDoJPKtrI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4TenbDJmtcWFcKOSpBDoJPKtrI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=HGnLt6UX-MU:C2WOBsL7l6E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=HGnLt6UX-MU:C2WOBsL7l6E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=HGnLt6UX-MU:C2WOBsL7l6E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=HGnLt6UX-MU:C2WOBsL7l6E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/HGnLt6UX-MU" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/69/SteelSeries-Shift-keyboard-Not-recognized-by-SteelSeries-Engine-software</feedburner:origLink></item>
    <item>
      <title>Shut down or restart Windows from the command line</title>
      <pubDate>Sat, 04 Dec 2010 01:00:48 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/68/Shut-down-or-restart-Windows-from-the-command-line</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/8R-6oAxpkAw/Shut-down-or-restart-Windows-from-the-command-line</link>
      <description>&lt;p&gt;
   Often I need to restart a virtual machine that I’m connected to through RDP. For
   whatever reason this can be problematic at times. When connected through RDP, the
   option to shut down or restart may not be available on the start menu. Sometimes
   choosing shut down from the start menu on a virtual machine just doesn’t work either,
   but doing it from the command line works.&lt;/p&gt;
&lt;p&gt;
   You can issue these commands from the command prompt or a Windows PowerShell prompt.&lt;/p&gt;
&lt;p&gt;
   To restart from the prompt use:&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Consolas"&gt;shutdown –r –t 0&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   To shut down from the prompt use:&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Consolas"&gt;shutdown –s –t 0&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   If you do not supply the –t argument, there is a delay. If I’m trying to shut down
   or restart, I really don’t need a timer.&lt;/p&gt;
&lt;p&gt;
   I’m pretty sure this works for all flavors of Windows from XP to Windows 7, and
   the server versions as well.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DxHee5VuW-6YiMwnEyccQ1VS_0E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DxHee5VuW-6YiMwnEyccQ1VS_0E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DxHee5VuW-6YiMwnEyccQ1VS_0E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DxHee5VuW-6YiMwnEyccQ1VS_0E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=8R-6oAxpkAw:CH7eGMgUikE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=8R-6oAxpkAw:CH7eGMgUikE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=8R-6oAxpkAw:CH7eGMgUikE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=8R-6oAxpkAw:CH7eGMgUikE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/8R-6oAxpkAw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/68/Shut-down-or-restart-Windows-from-the-command-line</feedburner:origLink></item>
    <item>
      <title>The IE 8 install, Checking your computer for malicious software</title>
      <pubDate>Sat, 04 Dec 2010 00:28:10 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/66/The-IE-8-install-Checking-your-computer-for-malicious-software</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/_czSuB-Qn3I/The-IE-8-install-Checking-your-computer-for-malicious-software</link>
      <description>&lt;p&gt;
   One of the steps during the Internet Explorer 8 install is, &lt;strong&gt;&lt;em&gt;Checking you
      computer for malicious software&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/106b3bc52f17_475/IE8-CheckingForMaliciousSoftware_4.png"&gt;
      &lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px;
         display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;
         padding-top: 0px" title="IE8-CheckingForMaliciousSoftware" alt="IE8-CheckingForMaliciousSoftware"
         src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/106b3bc52f17_475/IE8-CheckingForMaliciousSoftware_thumb_1.png"
         width="609" height="453" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
   If you have malicious software on your machine, isn’t it a little to late to be
   checking at this point?&amp;#160; Is this really necessary? Isn’t this the goal of virus
   and malware scanners? Maybe malicious software is a code phrase for other browsers,
   or more likely IE 6
   &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none;
      border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/106b3bc52f17_475/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eURtOpzS9Q_G2S3tA5BfObf_Pqg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eURtOpzS9Q_G2S3tA5BfObf_Pqg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eURtOpzS9Q_G2S3tA5BfObf_Pqg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eURtOpzS9Q_G2S3tA5BfObf_Pqg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=_czSuB-Qn3I:atmgsejaZ4w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=_czSuB-Qn3I:atmgsejaZ4w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=_czSuB-Qn3I:atmgsejaZ4w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=_czSuB-Qn3I:atmgsejaZ4w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/_czSuB-Qn3I" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/66/The-IE-8-install-Checking-your-computer-for-malicious-software</feedburner:origLink></item>
    <item>
      <title>“You can now disconnect from the Internet” - Really?</title>
      <pubDate>Sat, 04 Dec 2010 00:16:56 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/67/You-can-now-disconnect-from-the-Internet-Really</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/lCnySLEF9GI/You-can-now-disconnect-from-the-Internet-Really</link>
      <description>&lt;p&gt;I’m not sure why I found this funny; during the installation of the .NET Framework 3.5 the installer informs you, &lt;strong&gt;&lt;em&gt;“You can now disconnect from the Internet”&lt;/em&gt;&lt;/strong&gt;, after the download is complete.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/You-can-now-disconnect-from-the-Internet_14C8A/YouCanNowDisconnectFromTheInternet_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="You can now disconnect from the internet message" border="0" alt="You can now disconnect from the internet message" src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/You-can-now-disconnect-from-the-Internet_14C8A/YouCanNowDisconnectFromTheInternet_thumb.png" width="499" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It made me wonder, “When am I ever not connected to the internet?”.&amp;#160; Pretty much, never.&amp;#160; I suppose if someone travels around with a laptop out of usable Wi-Fi range. For me, I’m always connected.&lt;/p&gt;  &lt;p&gt;I sent this to a friend with the joking subject, “I didn’t know this was possible”. He responded with the following image:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/You-can-now-disconnect-from-the-Internet_14C8A/CutYourNetworkConnection_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="CutYourNetworkConnection" border="0" alt="CutYourNetworkConnection" src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/You-can-now-disconnect-from-the-Internet_14C8A/CutYourNetworkConnection_thumb.png" width="244" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For some reason this made me literally laugh out loud &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://thethoughtfulcoder.com/content/binary/Windows-Live-Writer/You-can-now-disconnect-from-the-Internet_14C8A/wlEmoticon-smile_2.png" /&gt;&amp;#160; I guess this would disconnect your machine from the internet for a bit as you’d have to search for new Cat5 or a spare RJ-45 connector and a crimper. Although, who uses Cat5 anymore? I only use it from my router to the cable modem.&lt;/p&gt;  &lt;p&gt;The ease of being connected to the internet is such a change from the old dial-up days.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H2KZZFBf2kdK8vliwWYLUcl102w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H2KZZFBf2kdK8vliwWYLUcl102w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H2KZZFBf2kdK8vliwWYLUcl102w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H2KZZFBf2kdK8vliwWYLUcl102w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=lCnySLEF9GI:EnizZL-Pof8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=lCnySLEF9GI:EnizZL-Pof8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=lCnySLEF9GI:EnizZL-Pof8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=lCnySLEF9GI:EnizZL-Pof8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/lCnySLEF9GI" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/67/You-can-now-disconnect-from-the-Internet-Really</feedburner:origLink></item>
    <item>
      <title>Google AdWords seller ratings extension – Some answers to some questions</title>
      <pubDate>Thu, 07 Oct 2010 00:30:38 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/65/Google-AdWords-seller-ratings-extension-Some-answers-to-some-questions</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/MPyDkuQrElc/Google-AdWords-seller-ratings-extension-Some-answers-to-some-questions</link>
      <description>&lt;p&gt;Google AdWords seller ratings are a set of stars shown with an AdWords ad as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleSellerRatings_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Google Seller Ratings Example" border="0" alt="Google Seller Ratings Example" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleSellerRatings_thumb_1.png" width="585" height="75" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you are investigating seller ratings for your employer or your own company, I have a few tips that were not obvious to me at the outset.&lt;/p&gt;  &lt;hr /&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;Is a Google Merchant Center account or product listings in Google Product Search required for a seller rating to show in AdWords?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It ends up, a Google Merchant Center account is &lt;strong&gt;not&lt;/strong&gt; needed and a site’s products do &lt;strong&gt;not&lt;/strong&gt; need to be listed in Google Products to obtain a seller rating in AdWords. Much of the documentation provided by Google may lead to the assumption that products need to be listed in Google Products in order to have a rating, but it ends up this is not the case.&lt;/p&gt;  &lt;p&gt;The key to qualifying for ratings in your AdWords ad is shown in this &lt;a href="http://adwords.google.com/support/aw/bin/answer.py?hl=en&amp;amp;answer=185093"&gt;FAQ&lt;/a&gt;. An excerpt from the FAQ follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleSellerRatingsFaq_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Google Seller Ratings FAQ" border="0" alt="Google Seller Ratings FAQ" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleSellerRatingsFaq_thumb.png" width="552" height="270" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The FAQ mentions that seller ratings come from Google Product Search, but does not make it clear that a seller’s products do not need to be listed in Product Search. The FAQ does mention that a Google Merchant Center account is not needed, but it could be a bit more clear about the relationship.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;How do I view a website’s seller rating?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To view a website’s rating in Google Product Search use a URL of the form:&lt;/p&gt;  &lt;p&gt;http://www.google.com/products/seller?zmi=&amp;lt;base domain name of the website&amp;gt;&lt;/p&gt;  &lt;p&gt;For example, to view the rating for &lt;a href="http://www.amazon.com"&gt;www.amazon.com&lt;/a&gt; use the URL:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.google.com/products/seller?zmi=amazon.com" href="http://www.google.com/products/seller?zmi=amazon.com"&gt;http://www.google.com/products/seller?zmi=amazon.com&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;I have a rating in Google Product Search above 4.0, why is the rating not showing in AdWords?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If a website has less than 30 ratings of 4 stars or above, then the website does not qualify for seller ratings to appear in their AdWords ads.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;Does a seller rating in an AdWords ad affect click through rate?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have not found any public empirical data to show how the seller rating affects click through rate. On the job though, it appears that click through rates are definitely affected by the lack of a seller rating when other ads do show a seller rating. Presumably, users are drawn to ads which have a rating and may think an AdWords listing without one may not be as desirable.&lt;/p&gt;  &lt;p&gt;Google does state that click through rate is affected by seller ratings in their &lt;a href="https://services.google.com/fb/forms/SellerRatingExtensions/"&gt;opt out form&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleAdWordsSellerRatingsImprovesClickThroughRate_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Google AdWords Seller Ratings Improve Click Through Rate" border="0" alt="Google AdWords Seller Ratings Improve Click Through Rate" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/GoogleAdWordssellerratingsextensionWhaty_14C43/GoogleAdWordsSellerRatingsImprovesClickThroughRate_thumb.png" width="644" height="39" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;How long does it take for ratings from relevant ratings websites to show up in Google Products?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I can say from personal experience, it can take a bit over two weeks for ratings to start showing up. Of course, this may change over time as Google updates their systems.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;If your company decides to pursue obtaining seller ratings, then customers will have to be directed to one or more of the ratings services used by Google.&amp;#160; This is not too difficult to implement, and I personally would advise any e-commerce website to consider this task in their list of priorities.&lt;/p&gt;  &lt;p&gt;Of course Google might decide to discontinue showing seller ratings, but until then it needs to be on the radar of any e-commerce website who relies on AdWords.&lt;/p&gt;  &lt;p&gt;I hope this blog post helps answers someone’s questions as they look into Google’s seller ratings ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eHH6diZB8F2zdaNCyphs2F7z59U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHH6diZB8F2zdaNCyphs2F7z59U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eHH6diZB8F2zdaNCyphs2F7z59U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHH6diZB8F2zdaNCyphs2F7z59U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=MPyDkuQrElc:5SQYGOaLjqs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=MPyDkuQrElc:5SQYGOaLjqs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=MPyDkuQrElc:5SQYGOaLjqs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=MPyDkuQrElc:5SQYGOaLjqs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/MPyDkuQrElc" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/65/Google-AdWords-seller-ratings-extension-Some-answers-to-some-questions</feedburner:origLink></item>
    <item>
      <title>Keep your World of Warcraft account from being hacked – Some tips to keep your WoW account safe</title>
      <pubDate>Wed, 06 Oct 2010 22:50:17 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/64/Keep-your-World-of-Warcraft-account-from-being-hacked-Some-tips-to-keep-your-WoW-account-safe</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/knSX9xcQYkU/Keep-your-World-of-Warcraft-account-from-being-hacked-Some-tips-to-keep-your-WoW-account-safe</link>
      <description>&lt;p&gt;
   Unfortunately with World of Warcraft, it seems to be a very common problem that
   players find themselves with a hacked account. I think hackers like to attack WoW
   accounts because there is no legal repercussions from such an act. Unlike hacking
   a persons financial accounts, after hacking a WoW account, the hacker does not have
   to worry about the FBI showing up at their door.&lt;/p&gt;
&lt;p&gt;
   Sure, WoW accounts are not as important as something like a banking website account,
   but players invest a lot of time in their WoW toons, and it would certainly be very
   unpleasant. Blizzard does seem to help players restore their items and gold lost,
   but I’m sure this is not guaranteed.&lt;/p&gt;
&lt;p&gt;
   Keep in mind these are only tips to follow. Even following this advice does not
   mean an account is invulnerable, but every bit of vigilance helps.
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;Never install an interface addon that is an executable. Even if you think it is
      trustworthy, I would suggest it never be done as it is never necessary. World of
      Warcraft add ons are only text files and images that can be unzipped into the WoW
      Interface/Addons folder. &lt;/li&gt;
   &lt;li&gt;Never use your account user name or password for any other logins. Especially WoW
      related websites. In general you should be very careful not to use the same user
      name a password for critical websites like banking and other non-critical sites.
      &lt;ul&gt;
         &lt;li&gt;To manage multiple logins and passwords, I recommend using a program like &lt;a
            href="http://www.cp-lab.com/index.html"&gt;Password Manager XP&lt;/a&gt; or &lt;a href="http://passwordsafe.sourceforge.net/"&gt;
               Password safe&lt;/a&gt; which is free. &lt;/li&gt;
         &lt;li&gt;Never use a password that is in the dictionary or proper noun. Always include upper
            and lower case letters and least one or more digits in your password. &lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
   &lt;li&gt;Run some sort of anti-virus package that has an internet security option. &lt;/li&gt;
   &lt;li&gt;Setup a Blizzard authenticator with your Battle.net account. Blizzard offers a
      mobile device version as well as a physical authenticator which you can purchase
      on the &lt;a href="http://us.blizzard.com/store/search.xml?q=authenticator"&gt;Blizzard Store&lt;/a&gt;.
      &lt;ul&gt;
         &lt;li&gt;Keep in mind the authenticator is not foolproof. If you’ve been hacked with a key
            logger, the hacker can still get the code used to login to WoW, but it reduces the
            window of time they have to do it. &lt;/li&gt;
         &lt;li&gt;The authenticator will help in the case a password and login is used on a malicious
            website as the hackers will not be able to get in without the authenticator code.
         &lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
   &lt;li&gt;Never use an out dated web browser.
      &lt;ul&gt;
         &lt;li&gt;If you are using Internet Explorer 6, then upgrade now. It is old and unsupported
            and more prone to be hacked. &lt;/li&gt;
         &lt;li&gt;I personally recommend using a browser like &lt;a href="http://www.mozilla.com/en-US/"&gt;
            FireFox&lt;/a&gt; with the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/722/"&gt;
               NoScript&lt;/a&gt; add-on, Google’s &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;,
            the latest &lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;, or &lt;a href="http://www.microsoft.com/windows/internet-explorer/default.aspx"&gt;
               Internet Explorer 8.&lt;/a&gt; &lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
   &lt;li&gt;Always be wary of emails with links. Even if an email looks like an official blizzard
      email, do not click on the links. Instead, go to worldofwarcraft.com or battle.net
      directly and navigate to account management to check your account status. &lt;/li&gt;
   &lt;li&gt;I’ve noticed a lot of whispers sent through WoW chat declaring your account is
      in violation. The whisper will declare your account will be shut down unless you
      visit a provided website address. Probably most players realize this is a scam,
      but it must work since it is being done. &lt;/li&gt;
   &lt;li&gt;Make sure you operating system is updated with the latest patches. If your OS is
      not patched, you are leaving it open to hacking attacks. &lt;/li&gt;
   &lt;li&gt;If you are a Microsoft Windows user and running Windows XP then I personally recommend
      upgrading to Windows 7. Although not perfect, Windows 7 provides features which
      make it more secure than XP. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Keep in mind, by taking these precautions the risk of a hacked account is certainly
   less, but not impossible. Always approach everything on the internet with caution
   and don’t trust much out there. These practices are not just specific to World of
   Warcraft either, it’ll help keep you safe on the internet in general.&lt;/p&gt;
&lt;p&gt;
   If others have additional tips or ideas to share, please do. This is meant to help
   and I’ll try to update the list as I come across other precautions to take.&lt;/p&gt;
&lt;p&gt;
   Happy questing :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NkKjpxfQCg8s3lg0xAohUkOaJB4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NkKjpxfQCg8s3lg0xAohUkOaJB4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NkKjpxfQCg8s3lg0xAohUkOaJB4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NkKjpxfQCg8s3lg0xAohUkOaJB4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=knSX9xcQYkU:Ly399sk8BRE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=knSX9xcQYkU:Ly399sk8BRE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=knSX9xcQYkU:Ly399sk8BRE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=knSX9xcQYkU:Ly399sk8BRE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/knSX9xcQYkU" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/64/Keep-your-World-of-Warcraft-account-from-being-hacked-Some-tips-to-keep-your-WoW-account-safe</feedburner:origLink></item>
    <item>
      <title>Internet Explorer 8, compatibility view, and the local intranet zone</title>
      <pubDate>Thu, 23 Sep 2010 23:19:30 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/63/Internet-Explorer-8-compatibility-view-and-the-local-intranet-zone</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/S8aoWoJu9p8/Internet-Explorer-8-compatibility-view-and-the-local-intranet-zone</link>
      <description>&lt;p&gt;When developing a website on a local machine using localhost or some other non-public domain name, IE 8 will run in Local Intranet Zone mode.&amp;#160; By default, Internet Explorer runs in compatibility view mode against any local intranet website.&amp;#160; So, if your website does not expect to render in compatibility view mode, you may likely see the website render differently if you are running against the same website in Internet zone and Intranet zone. &lt;/p&gt;  &lt;p&gt;You can change this setting as follows:&lt;/p&gt;  &lt;p&gt;Open the &lt;em&gt;Page&lt;/em&gt; drop menu on the IE 8 toolbar&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8ToolBar_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Internet Explorer 8 ToolBar" border="0" alt="Internet Explorer 8 ToolBar" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8ToolBar_thumb.png" width="378" height="41" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Choose the &lt;em&gt;Compatibility View Settings option.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8PageCompatibilityViewSettings_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Internet Explorer 8 Page Compatibility View Settings" border="0" alt="Internet Explorer 8 Page Compatibility View Settings" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8PageCompatibilityViewSettings_thumb_3.png" width="290" height="417" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;On the &lt;em&gt;Compatibility View Settings&lt;/em&gt; dialog uncheck the &lt;em&gt;Display intranet sites in Compatibility View&lt;/em&gt; checkbox.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8CompatibilitySettingsViewDialog_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Internet Explorer 8 Compatibility Settings View Dialog" border="0" alt="Internet Explorer 8 Compatibility Settings View Dialog" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/InternetExplorer8compatibilityviewandthe_1471B/InternetExplorer8CompatibilitySettingsViewDialog_thumb.png" width="398" height="461" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Close the dialog and now any website in the intranet zone will display as you might expect.&lt;/p&gt;  &lt;p&gt;Initially when encountering this issue it was very confusing, so hopefully this helps someone figure out the issue more quickly :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fk0xZAPEIgfbrk9s5jFxEvBKgxY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fk0xZAPEIgfbrk9s5jFxEvBKgxY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fk0xZAPEIgfbrk9s5jFxEvBKgxY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fk0xZAPEIgfbrk9s5jFxEvBKgxY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=S8aoWoJu9p8:GiJc-mruMpU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=S8aoWoJu9p8:GiJc-mruMpU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=S8aoWoJu9p8:GiJc-mruMpU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=S8aoWoJu9p8:GiJc-mruMpU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/S8aoWoJu9p8" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/63/Internet-Explorer-8-compatibility-view-and-the-local-intranet-zone</feedburner:origLink></item>
    <item>
      <title>A way to return a permanent 301 redirect result in ASP.NET MVC - RedirectResult returns a temporary 302 redirect</title>
      <pubDate>Thu, 23 Sep 2010 22:30:14 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/62/A-way-to-return-a-permanent-301-redirect-result-in-ASPNET-MVC-RedirectResult-returns-a-temporary-302-redirect</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/jholSh7HcsM/A-way-to-return-a-permanent-301-redirect-result-in-ASPNET-MVC-RedirectResult-returns-a-temporary-302-redirect</link>
      <description>&lt;p&gt;ASP.NET MVC 2.0 supplies a RedirectResult which returns a HTTP 302 temporary redirect. In many cases you really want a HTTP 301 permanent redirect result.&lt;/p&gt;  &lt;p&gt;The following class will do the job:&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;using System.Web.Mvc;

/// &lt;summary&gt;
/// Redirects using a 301 permanent redirect HTTP status code.
/// &lt;/summary&gt;
public class PermanentRedirectResult : RedirectResult
{
   public PermanentRedirectResult(string url) : base(url)
   {
   }

   public override void ExecuteResult(ControllerContext context)
   {
      base.ExecuteResult(context);
      context.HttpContext.Response.StatusCode = 301;
   }
}&lt;/pre&gt;
I included this class in the TTC Tools which you can find on &lt;a href="http://github.com/nfox-ttc/TTC-Tools"&gt;github&lt;/a&gt;. 

&lt;p&gt;It can be used in the same manner as RedirectResult.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RQUj5s3ES8xbboEyLW0mKD9q4Z4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RQUj5s3ES8xbboEyLW0mKD9q4Z4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RQUj5s3ES8xbboEyLW0mKD9q4Z4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RQUj5s3ES8xbboEyLW0mKD9q4Z4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jholSh7HcsM:cxK94dNMOuk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jholSh7HcsM:cxK94dNMOuk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=jholSh7HcsM:cxK94dNMOuk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=jholSh7HcsM:cxK94dNMOuk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/jholSh7HcsM" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/62/A-way-to-return-a-permanent-301-redirect-result-in-ASPNET-MVC-RedirectResult-returns-a-temporary-302-redirect</feedburner:origLink></item>
    <item>
      <title>What to check when ClientBuildManager.GetCompiledType returns null</title>
      <pubDate>Fri, 06 Aug 2010 22:53:45 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/61/What-to-check-when-ClientBuildManagerGetCompiledType-returns-null</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/ROeqOGKtoAw/What-to-check-when-ClientBuildManagerGetCompiledType-returns-null</link>
      <description>&lt;p&gt;The ClientBuildManager is a .NET BCL class that facilitates compiling ASP.NET markup files outside of IIS. I did run into an issue using this class which others may hit as well.&lt;/p&gt;  &lt;p&gt;I compiled some ASP.NET MVC .aspx views and tried to get the type using ClientBuildManager.GetCompiledType, but the GetCompiledType function returned null. Hmm…I could see the compilation was working because the assemblies were seemingly generated correctly.&lt;/p&gt;  &lt;p&gt;It ends up that the type would not load because the calling project did not reference all the assemblies needed to load the type. The ClientBuildManager compiles the web components in a separate application domain. When trying to retrieve the type, the assembly is loaded into the calling application domain, and then the type retrieval is attempted. If the type can not load no error is thrown, instead you get a null return value.&lt;/p&gt;  &lt;p&gt;So make sure the application using ClientBuildManager references all assemblies referenced by the web application you are compiling.&lt;/p&gt;  &lt;p&gt;I hope this saves someone some time. It took a bit of head banging to figure this one out. I had to debug down into System.Web to figure out what was going on :-(&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z_T-CDxM4XzdnP7SB_pGz0vcFCc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z_T-CDxM4XzdnP7SB_pGz0vcFCc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z_T-CDxM4XzdnP7SB_pGz0vcFCc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z_T-CDxM4XzdnP7SB_pGz0vcFCc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ROeqOGKtoAw:LZ4I4vovOzc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ROeqOGKtoAw:LZ4I4vovOzc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=ROeqOGKtoAw:LZ4I4vovOzc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=ROeqOGKtoAw:LZ4I4vovOzc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/ROeqOGKtoAw" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/61/What-to-check-when-ClientBuildManagerGetCompiledType-returns-null</feedburner:origLink></item>
    <item>
      <title>Navigate from interface to implementation in Visual Studio using CodeRush</title>
      <pubDate>Mon, 02 Aug 2010 23:41:58 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/59/Navigate-from-interface-to-implementation-in-Visual-Studio-using-CodeRush</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/XOoxlJltUCs/Navigate-from-interface-to-implementation-in-Visual-Studio-using-CodeRush</link>
      <description>&lt;p&gt;One feature of &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush&lt;/a&gt; from &lt;a href="http://devexpress.com/"&gt;DevExpress&lt;/a&gt; which I use a lot when navigating code is the ability to navigate to a function/method/property implementation from a variable that is of an interface type. I do a lot interface programming (OK OK I get a bit interface happy) and this navigation feature rocks.&lt;/p&gt;  &lt;p&gt;The default shortcut keys to bring up the Navigate/Jump To menu is Ctrl + Alt + N. I prefer to bind the Navigate command to Ctrl + E, as it is a bit quicker to type when your fingers are in home position on the keyboard. I show how to update the binding in the screen cast embedded with this blog post.&lt;/p&gt;  &lt;p&gt;With the cursor on a function/property of a variable of some interface type, bring up the &lt;strong&gt;Jump To&lt;/strong&gt; menu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/NavigatetointerfaceimplementationinVisua_10B5D/VisualStudioCodeRushNavigateInterfaceImplementation_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Visual Studio CodeRush Navigate Interface to Implementation" border="0" alt="Visual Studio CodeRush Navigate Interface to Implementation" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/NavigatetointerfaceimplementationinVisua_10B5D/VisualStudioCodeRushNavigateInterfaceImplementation_thumb.png" width="568" height="316" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you pick &lt;strong&gt;Implementations &lt;/strong&gt;from the popup menu,&lt;strong&gt;&amp;#160;&lt;/strong&gt;you’ll be taken to the class implementation of the interface function/property. If multiple implementations exist, then a popup menu displaying the various choices will be displayed.&lt;/p&gt;  &lt;p&gt;I created a screen cast to show this feature in action:&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/10oTpB4jM8k&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/10oTpB4jM8k&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;I’d suggest experimenting with the other &lt;strong&gt;Jump To&lt;/strong&gt; options as well as they come in handy when navigating code.&lt;/p&gt;  &lt;p&gt;I hope this helps! &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZAKiY3T0DMLCw_iRU78fFX8qaWA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZAKiY3T0DMLCw_iRU78fFX8qaWA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZAKiY3T0DMLCw_iRU78fFX8qaWA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZAKiY3T0DMLCw_iRU78fFX8qaWA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=XOoxlJltUCs:t09tC_FBBCg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=XOoxlJltUCs:t09tC_FBBCg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=XOoxlJltUCs:t09tC_FBBCg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=XOoxlJltUCs:t09tC_FBBCg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/XOoxlJltUCs" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/59/Navigate-from-interface-to-implementation-in-Visual-Studio-using-CodeRush</feedburner:origLink></item>
    <item>
      <title>Extract and implement interfaces in Visual Studio using CodeRush</title>
      <pubDate>Mon, 02 Aug 2010 23:33:18 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/60/Extract-and-implement-interfaces-in-Visual-Studio-using-CodeRush</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/PxTEiELVg64/Extract-and-implement-interfaces-in-Visual-Studio-using-CodeRush</link>
      <description>&lt;p&gt;A &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush&lt;/a&gt; feature that comes in very handy from time to time is the ability to easily extract and implement interfaces in Visual Studio.&lt;/p&gt;  &lt;p&gt;This tip involves using the Refactor command included with &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush/Refactor Pro&lt;/a&gt;. The default shortcut key is Ctrl + ` .&amp;#160; Personally I prefer to map the Refactor command to Ctrl + R for a more convenient key stroke. I show how to do the mapping in the screen cast embedded later in this blog post.&lt;/p&gt;  &lt;h2&gt;Extract an interface from a class&lt;/h2&gt;  &lt;p&gt;You can easily extract interfaces from an existing class. With the cursor on a class, bring up the Refactor menu and select &lt;strong&gt;Extract Interface&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/VisualStudioCodeRushExtractInterface_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Visual Studio CodeRush Extract Interface" border="0" alt="Visual Studio CodeRush Extract Interface" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/VisualStudioCodeRushExtractInterface_thumb.png" width="656" height="313" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will create an interface that contains the public properties and methods of the class. You can then move the interface to it’s own file by using the Refactor menu once again and select &lt;strong&gt;Move Type to File&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/CodeRushMoveTypeToFileInterface_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="CodeRush Move Type To File Interface" border="0" alt="CodeRush Move Type To File Interface" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/CodeRushMoveTypeToFileInterface_thumb.png" width="612" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;Create an interface implementation&lt;/h2&gt;  &lt;p&gt;You can very quickly create and interface implementation. With the cursor on an interface, bring up the Refactor menu and select &lt;strong&gt;Create Implementer&lt;/strong&gt;.&lt;strong&gt; &lt;/strong&gt;You can choose to create an implicit or explicit implementation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/VisualStudioCodeRushImplementInterface_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Visual Studio CodeRush Implement Interface" border="0" alt="Visual Studio CodeRush Implement Interface" src="http://thethoughtfulcoder.com/content/binary/WindowsLiveWriter/ExtractandimplementinterfacesinVisualStu_10657/VisualStudioCodeRushImplementInterface_thumb.png" width="644" height="280" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can quickly move the implementation to a separate file the same way as shown above for extracting an interface.&lt;/p&gt;  &lt;p&gt; I created a screen cast to show this in action:&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qCCsturrQeE&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qCCsturrQeE&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;&lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush/Refactor Pro&lt;/a&gt; is a rock’in Visual Studio add-on from &lt;a href="http://devexpress.com/"&gt;DevExpress&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I hope this helps!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7nw8vyal2Y1J7FW3Thrj1AMJ_QU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7nw8vyal2Y1J7FW3Thrj1AMJ_QU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7nw8vyal2Y1J7FW3Thrj1AMJ_QU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7nw8vyal2Y1J7FW3Thrj1AMJ_QU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=PxTEiELVg64:RUBkN6vM8so:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=PxTEiELVg64:RUBkN6vM8so:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=PxTEiELVg64:RUBkN6vM8so:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=PxTEiELVg64:RUBkN6vM8so:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/PxTEiELVg64" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/60/Extract-and-implement-interfaces-in-Visual-Studio-using-CodeRush</feedburner:origLink></item>
    <item>
      <title>Shortcut to popup intellisense in Visual Studio</title>
      <pubDate>Thu, 29 Jul 2010 22:13:32 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/58/Shortcut-to-popup-intellisense-in-Visual-Studio</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/9JyVg8C4Jq4/Shortcut-to-popup-intellisense-in-Visual-Studio</link>
      <description>&lt;p&gt;Visual Studio tip: if the cursor is located after a variable followed by a dot without intellisense showing, press Ctrl + Space Bar to bring up intellisense. One common use of this shortcut is if the wrong property or function is chosen you can quickly select the property or function, delete the selection, and press Ctrl + Space Bar to popup intellisense to pick the correct one.&lt;/p&gt;  &lt;p&gt;I created a short demonstration to show the shortcut in action:&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9AopJBZEShk&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9AopJBZEShk&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;I hope this helps!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TKIoteo7imqFQmnaszoW3jdcB8g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TKIoteo7imqFQmnaszoW3jdcB8g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TKIoteo7imqFQmnaszoW3jdcB8g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TKIoteo7imqFQmnaszoW3jdcB8g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=9JyVg8C4Jq4:6Yy-1U3lhpg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=9JyVg8C4Jq4:6Yy-1U3lhpg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=9JyVg8C4Jq4:6Yy-1U3lhpg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=9JyVg8C4Jq4:6Yy-1U3lhpg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/9JyVg8C4Jq4" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/58/Shortcut-to-popup-intellisense-in-Visual-Studio</feedburner:origLink></item>
    <item>
      <title>Shortcut to popup function/method parameter help in Visual Studio</title>
      <pubDate>Thu, 29 Jul 2010 21:35:50 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/57/Shortcut-to-popup-functionmethod-parameter-help-in-Visual-Studio</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/K7wtyKsT7bM/Shortcut-to-popup-functionmethod-parameter-help-in-Visual-Studio</link>
      <description>&lt;p&gt;Visual Studio tip: if your cursor is located between the parenthesis in a C# function/method you can use use Ctrl + Shift + Space Bar to bring up the function parameter help popup.&amp;#160; &lt;/p&gt;  &lt;p&gt;I created a short video to demonstrate how the shortcut works:&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rzDr7DH2Ozw&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/rzDr7DH2Ozw&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;I hope this tip helps!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eQ72LBQeucZq2dxAmqnEQt3H5Nk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eQ72LBQeucZq2dxAmqnEQt3H5Nk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eQ72LBQeucZq2dxAmqnEQt3H5Nk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eQ72LBQeucZq2dxAmqnEQt3H5Nk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=K7wtyKsT7bM:U225o-5Cuj0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=K7wtyKsT7bM:U225o-5Cuj0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=K7wtyKsT7bM:U225o-5Cuj0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=K7wtyKsT7bM:U225o-5Cuj0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/K7wtyKsT7bM" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/57/Shortcut-to-popup-functionmethod-parameter-help-in-Visual-Studio</feedburner:origLink></item>
    <item>
      <title>Selecting text in Visual Studio with CodeRush</title>
      <pubDate>Sat, 24 Jul 2010 01:18:15 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/56/Selecting-text-in-Visual-Studio-with-CodeRush</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/kBS2Y1E_x84/Selecting-text-in-Visual-Studio-with-CodeRush</link>
      <description>&lt;p&gt;I created a screen cast to show how to use &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush’s&lt;/a&gt; SelectionExpand and SelectionReduce commands. This is one of those “I can’t live without” features that I use when editing code. These keyboard commands allow quick selection of blocks of code which speed up your code editing time.&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3qGdveUBwDI&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/3qGdveUBwDI&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Use it and code on!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fFks45xP18p7pgFco41T3CjD6Ic/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fFks45xP18p7pgFco41T3CjD6Ic/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fFks45xP18p7pgFco41T3CjD6Ic/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fFks45xP18p7pgFco41T3CjD6Ic/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=kBS2Y1E_x84:QByXAAdH0w0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=kBS2Y1E_x84:QByXAAdH0w0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=kBS2Y1E_x84:QByXAAdH0w0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=kBS2Y1E_x84:QByXAAdH0w0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/kBS2Y1E_x84" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/56/Selecting-text-in-Visual-Studio-with-CodeRush</feedburner:origLink></item>
    <item>
      <title>Quickly change function/method visibility using CodeRush for Visual Studio</title>
      <pubDate>Thu, 22 Jul 2010 23:35:08 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/55/Quickly-change-functionmethod-visibility-using-CodeRush-for-Visual-Studio</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/fumJ1YD2Zg0/Quickly-change-functionmethod-visibility-using-CodeRush-for-Visual-Studio</link>
      <description>&lt;p&gt;Using &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush from DevExpress&lt;/a&gt; you can very quickly change function/method visibility without typing the visibility text :-)&lt;/p&gt;  &lt;p&gt;In a code file, if your cursor is anywhere within or on a function definition, you can use the left Alt key plus the up and down arrow keys to cycle through the various visibility modifiers.&lt;/p&gt;  &lt;p&gt;I created a short screen cast to show it in action.&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bcDnbAdTP-s&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bcDnbAdTP-s&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;I hope this tip helps :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9UhM13ESfy7wN-jKdgrHFodqC7o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9UhM13ESfy7wN-jKdgrHFodqC7o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9UhM13ESfy7wN-jKdgrHFodqC7o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9UhM13ESfy7wN-jKdgrHFodqC7o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fumJ1YD2Zg0:dE44OjFG8Rk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fumJ1YD2Zg0:dE44OjFG8Rk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=fumJ1YD2Zg0:dE44OjFG8Rk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=fumJ1YD2Zg0:dE44OjFG8Rk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/fumJ1YD2Zg0" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/55/Quickly-change-functionmethod-visibility-using-CodeRush-for-Visual-Studio</feedburner:origLink></item>
    <item>
      <title>Visual Studio unit test runner using CodeRush from DevExpress</title>
      <pubDate>Wed, 21 Jul 2010 23:45:08 GMT</pubDate>
      <guid isPermaLink="false">http://thethoughtfulcoder.com/blog/49/Visual-Studio-unit-test-runner-using-CodeRush-from-DevExpress</guid>
      <link>http://feeds.thethoughtfulcoder.com/~r/TheThoughtfulCoder/~3/FrKVDLawiVY/Visual-Studio-unit-test-runner-using-CodeRush-from-DevExpress</link>
      <description>&lt;p&gt;CodeRush is one of my can’t live without tools :-) I created a short screen cast to demo the unit test runner that comes with &lt;a href="http://devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/"&gt;CodeRush from DevExpress&lt;/a&gt;.&lt;/p&gt; &lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JeKEGZasIR8&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/JeKEGZasIR8&amp;amp;hl=en_US&amp;amp;fs=1?color1=0x006699&amp;amp;color2=0x54abd6&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;I use it to run my unit tests at home and work :-D&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/urdfy47pi65fw9WubI4YZW7lqm8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/urdfy47pi65fw9WubI4YZW7lqm8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/urdfy47pi65fw9WubI4YZW7lqm8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/urdfy47pi65fw9WubI4YZW7lqm8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=FrKVDLawiVY:gFTZDIdj_5Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=FrKVDLawiVY:gFTZDIdj_5Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?i=FrKVDLawiVY:gFTZDIdj_5Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.thethoughtfulcoder.com/~ff/TheThoughtfulCoder?a=FrKVDLawiVY:gFTZDIdj_5Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheThoughtfulCoder?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheThoughtfulCoder/~4/FrKVDLawiVY" height="1" width="1"/&gt;</description>
    <feedburner:origLink>http://thethoughtfulcoder.com/blog/49/Visual-Studio-unit-test-runner-using-CodeRush-from-DevExpress</feedburner:origLink></item>
  </channel>
</rss>

