Globalizing ASP.NET web sites

by Michael F. Collins, III September 13, 2008 12:01

In my last post, I discussed using the Yahoo! User Interface Library to start designing an ASP.NET web site. In my next post, I'll continue that discussion. But first, there's a little housekeeping chore that I want to discuss related to maximizing the amount of people that can view your web site. ASP.NET, and in general the entire .NET platform and Windows, all have rich support for globalization and localization. I like to think of globalization and localization as the creation of multicultural applications and web sites. Using globalization and localization, applications, or in this case web sites, can be used across multiple languages and cultures while respecting the specific cultural requirements, and without changing any code.

Enabling Globalization in an ASP.NET web site

Globalization is enabled in an ASP.NET web site or application through the Web.config file that contains the globalization settings for the web site. The Web.config file uses the system.web/globalization element to configure the globalization support for your application. The configuration for my web site looks like this:


    
        
    

As you can see in the configuration settings above, the system.web/globalization element has several attributes that control the behavior of the web site:

  • culture: Specifies the default culture for processing incoming web requests. This value has to be a specific culture, in the form of -, such as en-US for U.S. English or es-MX for Spanish in Mexico. The culture attribute affects how values such as numbers, dates, and times are formatted when displayed on the web page.
  • enableBestFitResponseEncoding: Indicates whether the best-fit character encoding for a response is enabled. The default value for this setting is false, so I left it that way. I'm guessing that it isn't a best practice.
  • enableClientBasedCulture: If this attribute is set to true, then the Culture and UICulture settings for a page will be based on the value provided by the web browser in the AcceptLanguage header field of the web browser.
  • fileEncoding: Specifies the default encoding for .aspx, .asmx, and .asax files in the web application. This value is used by the ASP.NET compiler to determine how to read web site files.
  • requestEncoding: Specifies the encoding that will be used for the content that is received over HTTP.
  • responseEncoding: Specifies the encoding that will be used for the content that is sent in an HTTP response.
  • responseHeaderEncoding: Specifies the encoding that will be used for the HTTP headers sent back in the response.
  • uiCulture: Specifies the default culture or language to use for the web pages. This value can be a generic or specific culture. For example, en would be a generic English web page, but en-US or en-GB would be specific to U.S. English or U.K. English, respectively. A specific culture may be used if there are vocabulary or other differences between how two different cultures use the same language. For example, going back to high school Spanish, I recall there being differences in how Spanish is used in Spain and how Spanish is used in Mexico.

According to the article How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization on MSDN, it's not considered a best practice to set the enableClientBasedCulture attribute to true. The reasoning is that users may be in a location such as a library or Internet cafe and may be using a browser with different settings than they're used to. In this case, the article is recommending that the web site store the user's culture preferences and set them automatically when the page loads. I'll do this onto my web site's backlog and revisit it in a future post after I've stored the user's profile information. For now, however, I'm setting the culture and uiCulture attributes to auto, which is similar to setting enableClientBasedCulture, in that ASP.NET will automatically choose the first language that is specified in the current browser settings.

Testing globalization support using Internet Explorer

Before we get into actually globalizing the web site, I'm sure that there's a question out there about how we can actually test the globalization in action. After all, I'm running Windows using U.S. English. I'm not going to load a Japanese version of Windows to do my testing. Actually, Internet Explorer, and I'm sure the other web browsers do as well, make it very easy to add and change cultures for testing web sites. The language settings can be found in Internet Explorer 7 from the Tools -> Internet Options menu.

Internet Options dialog

From the Internet Options dialog, choose the Languages button at the bottom of the dialog. This button has been circled in the picture above.

image

In the Language Preferences dialog (above) you can see all of the configured languages and cultures that your browser will send to web sites that you visit. If you click the Add button you can add addition cultures, such as es-MX for testing Spanish (Mexico). When testing how your web pages look in different cultures, you can reopen this dialog and move a different culture into the top spot. After setting a new top culture, return to your web site and you should see your web site using the culture that you specified.

Using .NET resources

In the Microsoft .NET platform, globalizing an application to provide language-specific text is done through the use of XML resources, or .resx files. During development, developers will store text, images, and other items that may be culture-specific into the .resx files and will refer to them at runtime inside of their code. The .NET platform, including ASP.NET, will locate these resources and will insert the text or other globalized object into the output of the ASP.NET page or other application UI such as a window or form.

In ASP.NET specifically, there are two kinds of resources: global and local resources. A global resource is specific and global to an entire web site or web application. For example, a company name or web site title, and possibly copyright text may be a global resource. A local resource is local to a specific page or user control in ASP.NET. For example, the title or description of a web page may be a local resource. The text of the page may be a local resource if the text is provided in different languages.

In an ASP.NET web site or application, there are specific locations for global and local resources. Global resources are stored in the ~/App_GlobalResources folder at the root of the web site or application. This is the only place where ASP.NET will look for global resources. At compile time, the ASP.NET compiler will compile all of the resource files in this location and will add the resources to the compiled ASP.NET application for global use.

Local resources are stored in the App_LocalResources folder. Unlike the global resources, there can be many App_LocalResources folders. Each sub-folder that you use in your web site may have its own App_LocalResources folder with local resources specific to that sub-folder. You may be asking why this is? Look no further than the Default.aspx page, which is used as the default document for ASP.NET applications. Let's use the following example for a sample web site:

  • ~/Default.aspx
  • ~/Admin/Default.aspx
  • ~/News/Default.aspx
  • ~/Blogs/Default.aspx
  • ~/Blogs/Michael/Default.aspx
  • ~/Blogs/Bob/Default.aspx

In this example web site, we have multiple sub-folders. Each folder has its own Default.aspx page. It should be expected that each page is going to have a different title. If we have only a single App_LocalResources folder, it's going to be hard to tell which Default.aspx page the local .resx file refers to. Therefore, each of these sub-folders can have their own App_LocalResources folder with their own resource. Here's how the web site will look:

  • ~/Default.aspx
  • ~/App_LocalResources/Default.aspx.resx
  • ~/Admin/Default.aspx
  • ~/Admin/App_LocalResources/Default.aspx.resx
  • ~/News/Default.aspx
  • ~/News/App_LocalResources/Default.aspx.resx
  • ~/Blogs/Default.aspx
  • ~/Blogs/App_LocalResources/Default.aspx.resx
  • ~/Blogs/Michael/Default.aspx
  • ~/Blogs/Michael/App_LocalResources/Default.aspx.resx
  • ~/Blogs/Bob/Default.aspx
  • ~/Blogs/Bob/App_LocalResources/Default.aspx.resx

Given this, the resource files in the App_LocalResources folder are local to and apply only to the files in the immediate parent folder of the App_LocalResources folder.

Preparing ASP.NET pages for globalization

ASP.NET pages have rich support for globalization. Most ASP.NET controls also have rich support for globalization that often require absolutely no code at all to implement. ASP.NET defines a special attribute that pages and most controls support named meta:resourcekey. This attribute, when applied to a page or control, specifies the prefix for resources that apply to the page or control.

Using the pages that I built in my last post, the home page could look like this:

<%@ Page Language="C#" MasterPageFile="~/TemplateMasterPage.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" meta:resourcekey="Page" Title="ImaginaryRealities Software Company" %>


    


    

What's different in this version of the page versus the previous version is that in the <%@Page%> element at the top of my page, I've added the meta:resourcekey attribute with a value of Page and the Title attribute containing the title of my home page. I also replaced the text Main body content and Secondary body content with controls that now contain that same text. You'll notice that I have also defined meta:resourcekey attributes for each of these controls.

What I have now is a web page that is ready to be globalized. The next step is to prepare this page to be translated. Fortunately, Visual Studio provides a menu option to help you by taking an ASP.NET page that has been set up like mine has and automatically generating the neutral language resource for you. It can be found by switching your ASP.NET page from Source view to Design view, then choosing the Tools -> Generate Local Resource menu option from the menu bar at the top if the Visual Studio window. After choosing this command, I automatically get a file named ~/App_LocalResources/Default.aspx.resx. This is the neutral language resource for my application.

What is a neutral resource? I haven't discussed that yet. Earlier, I briefly introduced you to a generic culture, such as en for English. I've also mentioned a couple of times specific cultures, such as en-US for U.S. English, en-GB for U.K. English, or es-MX for Spanish in Mexico. So let's say that I globalize my site for these languages and cultures (which we'll do in a moment), but then someone from Beijing, China, visits my web site. I don't have a Chinese translation for my web site. What happens then is that ASP.NET will default to what's known as the neutral culture, or whatever I determine my neutral culture should be. In my case, since I am a U.S. citizen and live in the United States, my neutral culture of choice is still going to be U.S. English. So Chinese visitors will see U.S. English, but visitors from Mexico will see Spanish, since that's a culture that I support.

Back to globalizing my web page, we last generated the neutral language resource file for the page. The resource file for the above ASP.NET/HTML fragment will look like the following:

image

As you can see in the screen shot, my new resource file has localizable properties for the page and the controls that I defined that match the values that I provided in the meta:resourcekey attributes that I attached to my controls. The new resource file has three string resources. Page.Title contains the text for the </strong> tag on the web page. <strong>MainBodyContent.Text</strong> contains the text that displays in the main body content area for the page, and <strong>SecondaryBodyContext.Text</strong> contains the text that displays in the secondary content area.</p> <p>For instructional purposes, I'm going to create two additional resource files: <strong>Default.aspx.en.resx</strong> for English language users, and <strong>Default.aspx.es.resx</strong> for Spanish users. I'm also going to cheat and use the <a href="http://translate.google.com" target="_blank">Google Translation</a> service to do the translating for me. My resources should look like the following:</p> <table cellspacing="0" cellpadding="2" width="572" border="0"><tbody> <tr> <td valign="top" width="204"><strong>Property/Language</strong></td> <td valign="top" width="176"><strong>English</strong></td> <td valign="top" width="190"><strong>Spanish</strong></td> </tr> <tr> <td valign="top" width="206"><strong>MainBodyContent.Text</strong></td> <td valign="top" width="175">Main body content (en)</td> <td valign="top" width="190"> <p>Órgano principal del contenido</p> </td> </tr> <tr> <td valign="top" width="208"><strong>SecondaryBodyContent.Text</strong></td> <td valign="top" width="175">Secondary body content (en)</td> <td valign="top" width="190">Secundaria órgano contenido</td> </tr> </tbody></table> <p>I'm also going to modify the English resources to have a suffix of <strong>(en)</strong> so that you know that the resources are being served from the English language resource and not from the neutral language resource.</p> <h2>Testing globalization</h2> <p>Earlier in this post, I described to you how you can configure the languages and cultures in Internet Explorer to test different cultures and languages. However, to simplify testing and demonstration of the globalization capabilities of ASP.NET, I modified by base <strong>WebsitePage</strong> class and implemented the <strong>Page.InitializeCulture</strong> method. The <strong>InitializeCulture</strong> method is called very early in the page lifecycle before the page itself has been initialized. I'm going to use this method to look at the query string for the web page and look for attributes named <strong>culture </strong>or<strong> uiculture</strong>. If one or both of these attributes are specified in the query string, then I'll use the culture that is provided to set the <strong>Page.Culture</strong>, <strong>Page.UICulture</strong>, <strong>Thread.CurrentCulture</strong>, and <strong>Thread.CurrentUICulture</strong> properties with the provided culture information, which will then cause my web page to be translated. Here's the updated code for the <strong>WebsitePage</strong> class:</p> <div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a3fcb9a1-84c5-49c4-8250-cebb0e887569" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><pre name="code" class="c#">//------------------------------------------------------------------------ // <copyright file="WebsitePage.cs" // company="ImaginaryRealities Software Company"> // Copyright (c) 2008 ImaginaryRealities Software Company // </copyright> // <summary> // Implements the WebsitePage abstract base class that is used as the base // class for all web pages on the web site. // </summary> //------------------------------------------------------------------------ namespace ImaginaryRealities.Website.UI.Framework { using System.Globalization; using System.Threading; using System.Web.Configuration; using System.Web.UI; using Wintellect.Diagnostics; /// <summary> /// Abstract base class for web pages in the website. /// </summary> [CodeOwner("Michael F. Collins, III", "michael@imaginaryrealities.com")] public abstract class WebsitePage : Page { /// <summary> /// Initializes a new instance of the WebsitePage class. /// </summary> protected WebsitePage() { this.InitializePageWidth(); } /// <summary> /// Gets the CSS class name for the web page. /// </summary> /// <value> /// The value of this property is the name of the CSS class that /// represents the specific web page. /// </value> public abstract string PageCssClassName { get; } /// <summary> /// Gets the identifier that is used to specify the width of the /// web page. /// </summary> /// <value> /// The value of this property is the identifier that is used to /// specify the width of the content area of the web page. /// </value> public string PageWidth { get; protected set; } /// <summary> /// Sets the page and thread culture and UI culture values based on /// values provided in the request's query string. /// </summary> protected override void InitializeCulture() { var culture = this.Request.QueryString["culture"]; if (!string.IsNullOrEmpty(culture)) { this.Culture = culture; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); } var uiCulture = this.Request.QueryString["uiculture"] ?? culture; if (string.IsNullOrEmpty(uiCulture)) { return; } this.UICulture = uiCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(uiCulture); } /// <summary> /// Initializes the <see cref="PageWidth"/> property by loading the /// default page width from the website configuration. /// </summary> private void InitializePageWidth() { var configurationSection = (WebsiteConfigurationSection) WebConfigurationManager.GetSection("website"); this.PageWidth = configurationSection != null ? configurationSection.PageWidth : "doc"; } } }</pre></div> <p>Now, if I were to type in the following URL, I should see the the screen shown below: <a href="http://www.imaginaryrealities.com/beta/Default.aspx?culture=en-US">http://www.imaginaryrealities.com/beta/Default.aspx?culture=en-US</a>:</p> <p><a title="U.S. English translation of the website" href="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_8.png" rel="lightbox[screenshots]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_thumb_3.png" width="244" border="0" /></a> </p> <p>If I used this next URL, I should see the Spanish translation for the web site: <a href="http://www.imaginaryrealities.com/beta/Default.aspx?culture=es-MX">http://www.imaginaryrealities.com/beta/Default.aspx?culture=es-MX</a>:</p> <p><a title="Spanish translation of the website" href="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_10.png" rel="lightbox[screenshots]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_thumb_4.png" width="244" border="0" /></a> </p> <p>The following URL would give me the Italian translation for the web site: <a href="http://www.imaginaryrealities.com/beta/Default.aspx?culture=it-IT">http://www.imaginaryrealities.com/beta/Default.aspx?culture=it-IT</a>:</p> <p><a title="Neutral language translation of the web site" href="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_12.png" rel="lightbox[screenshots]"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://www.imaginaryrealities.com/image.axd?picture=WindowsLiveWriter/GlobalizingASP.NETwebsites_9765/image_thumb_5.png" width="244" border="0" /></a> </p> <p>Wait? That doesn't look like Italian? It's not, actually. Remember, I only defined an English and Spanish translation for the web site. Since Italian is not a supported language, ASP.NET reverted back to the neutral language translation for the web site, which is going to be U.S. English. You can tell that the neutral language resource is being used from the title text in the Window's title. I added <strong>(en)</strong> and <strong>(sp)</strong> to the translated titles to show you that the page title is coming from a resource translation. The title without the suffix is being served from the neutral language resource.</p> <p>If you'll also remember from the <a href="http://www.imaginaryrealities.com/post/2008/09/12/Designing-a-web-site-using-the-Yahoo!-User-Interface-Library.aspx" target="_blank">last post</a>, I am adding CSS classes to the main BODY tag of the HTML which refer to the language and culture of the user using the web site. If you open the home page in a web browser and specify the culture in the query string, then choose <strong>View Source</strong> from your browser's menu, you'll be able to see in the BODY tag that the culture that you specify is also specified as CSS classes. For example, viewing the web site with the <strong>culture=en-US</strong> query string attribute set will specify <strong>la-en</strong> and <strong>lo-US</strong> in the BODY's CSS classes. Specifying the query string <strong>culture=es-MX</strong> will add <strong>la-es</strong> and <strong>lo-MX</strong> to the BODY tag's CSS classes. You'll also notice that if you specify a culture, such as Italian (<strong>culture=it-IT</strong>) to the query string, you'll get the neutral language translation of the web site, but the BODY tag's CSS classes will have <strong>la-it</strong> and <strong>lo-IT</strong> because that is the culture that was specified and that the page is running in, even if the page is serving the neutral language translations.</p> <h2>Conclusion</h2> <p>In this post, I introduced you to globalizing ASP.NET applications. I explained how to set up your pages and controls for globalization using the <strong>meta:resourcekey</strong> attribute. I also explained the difference between the <strong>App_GlobalResources</strong> and <strong>App_LocalResources</strong> directories. I then demonstrated a web site with English and Spanish translations. I also modified my base <strong>WebsitePage</strong> class to allow the page's culture to be set using the request query string. There are additional aspects to globalization such as ASP.NET markup syntax that I didn't discuss in this post, but we'll visit in a future post.</p><br /><br /><script type='text/javascript'>digg_url = 'http://www.imaginaryrealities.com/post/2008/09/13/Globalizing-ASPNET-web-sites.aspx'</script><script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div> <div class="bottom"> <div class="ratingcontainer" style="visibility:hidden">a13e3b3b-4610-4a71-81bd-ce7f01a610c3|1|5.0</div> <p class="tags">Tags: <a href="/?tag=/asp.net" rel="tag">asp.net</a>, <a href="/?tag=/globalization" rel="tag">globalization</a>, <a href="/?tag=/resources" rel="tag">resources</a>, <a href="/?tag=/translation" rel="tag">translation</a>, <a href="/?tag=/language" rel="tag">language</a>, <a href="/?tag=/culture" rel="tag">culture</a></p> <p class="categories"><a href="/category/ASPNET.aspx">ASP.NET</a> | <a href="/category/ImaginaryRealitiescom.aspx">ImaginaryRealities.com</a> | <a href="/category/Globalization.aspx">Globalization</a></p> </div> <div class="footer"> <div class="bookmarks"> <a rel="nofollow" href="mailto:?subject=Globalizing ASP.NET web sites&body=Thought you might like this: http://www.imaginaryrealities.com/post/2008/09/13/Globalizing-ASPNET-web-sites.aspx">E-mail</a> | <a rel="nofollow" href="http://www.dotnetkicks.com/submit?url=http%3a%2f%2fwww.imaginaryrealities.com%2fpost%2f2008%2f09%2f13%2fGlobalizing-ASPNET-web-sites.aspx&title=Globalizing+ASP.NET+web+sites">Kick it!</a> | <a rel="nofollow" href="http://www.dzone.com/links/add.html?url=http%3a%2f%2fwww.imaginaryrealities.com%2fpost%2f2008%2f09%2f13%2fGlobalizing-ASPNET-web-sites.aspx&title=Globalizing+ASP.NET+web+sites">DZone it!</a> | <a rel="nofollow" href="http://del.icio.us/post?url=http%3a%2f%2fwww.imaginaryrealities.com%2fpost%2f2008%2f09%2f13%2fGlobalizing-ASPNET-web-sites.aspx&title=Globalizing+ASP.NET+web+sites">del.icio.us</a> </div> <a rel="bookmark" href="http://www.imaginaryrealities.com/post.aspx?id=a13e3b3b-4610-4a71-81bd-ce7f01a610c3">Permalink</a> | <a rel="nofollow" href="/post/2008/09/13/Globalizing-ASPNET-web-sites.aspx#comment">Comments (1)</a> | <a rel="nofollow" href="/post/feed/2008/09/13/Globalizing-ASPNET-web-sites.aspx">Post RSS<img src="/pics/rssButton.gif" alt="RSS comment feed" style="margin-left:3px" /></a> </div> </div> <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.imaginaryrealities.com/post/2008/09/13/Globalizing-ASPNET-web-sites.aspx" dc:identifier="http://www.imaginaryrealities.com/post/2008/09/13/Globalizing-ASPNET-web-sites.aspx" dc:title="Globalizing ASP.NET web sites" trackback:ping="http://www.imaginaryrealities.com/trackback.axd?id=a13e3b3b-4610-4a71-81bd-ce7f01a610c3" /> </rdf:RDF> --> <div id="relatedPosts"><p>Related posts</p><div><a href="/post/2009/05/18/Hosting-multiple-web-sites-using-a-single-ASPNET-application.aspx">Hosting multiple web sites using a single ASP.NET application</a><span>When I initially started hosting my own web site, I had a single domain name: www.imaginaryrealities...</span><a href="/post/2008/09/12/Designing-a-web-site-using-the-Yahoo!-User-Interface-Library.aspx">Designing a web site using the Yahoo! User Interface Library</a><span>The hardest part of starting a new web site design is coming up with the killer layout for the site....</span><a href="/post/2008/09/14/Customizing-the-look-of-a-web-site-using-ASPNET-themes.aspx">Customizing the look of a web site using ASP.NET themes</a><span>In this post, Michael Collins introduces you to ASP.NET themes and how to use them to customize the ...</span></div></div> <p id="comment">Comments</p> <div id="commentlist" > <div id="id_cc61be92-5460-40a5-a0d3-df26123a137f" class="vcard comment"> <p class="date">1/30/2010 8:12:06 AM <a href="#id_cc61be92-5460-40a5-a0d3-df26123a137f">#</a></p> <p class="gravatar"><img class="thumb" src="http://images.websnapr.com/?url=http%3a%2f%2fwww.vmbbs.com%2fcollapse-2009ii%2f&size=t" alt="pingback" /></p> <p class="content">Pingback from vmbbs.com <br /> <br />Collapse (2009/II) Movie Trailer - VMBBS</p> <p class="author"> <a href="http://www.vmbbs.com/collapse-2009ii/" class="url fn">vmbbs.com</a> </p> </div> </div> <div id="comment-form"> <img src="/pics/ajax-loader.gif" alt="Saving the comment" style="display:none" id="ajaxLoader" /> <span id="status"></span> <div class="commentForm"> <p id="addcomment">Add comment</p> <label for="ctl00_cphBody_CommentView1_txtName">Name*</label> <input name="ctl00$cphBody$CommentView1$txtName" type="text" id="ctl00_cphBody_CommentView1_txtName" tabindex="2" /><br /> <label for="ctl00_cphBody_CommentView1_txtEmail">E-mail*</label> <input name="ctl00$cphBody$CommentView1$txtEmail" type="text" id="ctl00_cphBody_CommentView1_txtEmail" tabindex="3" /> <span id="gravatarmsg"> (Will show your <a href="http://www.gravatar.com" target="_blank">Gravatar</a> icon) </span> <br /> <label for="ctl00_cphBody_CommentView1_txtWebsite">Website</label> <input name="ctl00$cphBody$CommentView1$txtWebsite" type="text" id="ctl00_cphBody_CommentView1_txtWebsite" tabindex="4" /><br /> <label for="ctl00_cphBody_CommentView1_ddlCountry">Country</label> <select name="ctl00$cphBody$CommentView1$ddlCountry" id="ctl00_cphBody_CommentView1_ddlCountry" tabindex="5" onchange="BlogEngine.setFlag(this.value)"> <option value="">[Not specified]</option> <option value="af">Afghanistan</option> <option value="al">Albania</option> <option value="dz">Algeria</option> <option value="ar">Argentina</option> <option value="am">Armenia</option> <option value="au">Australia</option> <option value="at">Austria</option> <option value="az">Azerbaijan</option> <option value="bh">Bahrain</option> <option value="bd">Bangladesh</option> <option value="by">Belarus</option> <option value="be">Belgium</option> <option value="bz">Belize</option> <option value="bo">Bolivia</option> <option value="ba">Bosnia and Herzegovina</option> <option value="br">Brazil</option> <option value="bn">Brunei Darussalam</option> <option value="bg">Bulgaria</option> <option value="kh">Cambodia</option> <option value="ca">Canada</option> <option value="029">Caribbean</option> <option value="cl">Chile</option> <option value="co">Colombia</option> <option value="cr">Costa Rica</option> <option value="hr">Croatia</option> <option value="cz">Czech Republic</option> <option value="dk">Denmark</option> <option value="do">Dominican Republic</option> <option value="ec">Ecuador</option> <option value="eg">Egypt</option> <option value="sv">El Salvador</option> <option value="ee">Estonia</option> <option value="et">Ethiopia</option> <option value="fo">Faroe Islands</option> <option value="fi">Finland</option> <option value="fr">France</option> <option value="ge">Georgia</option> <option value="de">Germany</option> <option value="gr">Greece</option> <option value="gl">Greenland</option> <option value="gt">Guatemala</option> <option value="hn">Honduras</option> <option value="hk">Hong Kong S.A.R.</option> <option value="hu">Hungary</option> <option value="is">Iceland</option> <option value="in">India</option> <option value="id">Indonesia</option> <option value="ir">Iran</option> <option value="iq">Iraq</option> <option value="ie">Ireland</option> <option value="pk">Islamic Republic of Pakistan</option> <option value="il">Israel</option> <option value="it">Italy</option> <option value="jm">Jamaica</option> <option value="jp">Japan</option> <option value="jo">Jordan</option> <option value="kz">Kazakhstan</option> <option value="ke">Kenya</option> <option value="kr">Korea</option> <option value="kw">Kuwait</option> <option value="kg">Kyrgyzstan</option> <option value="la">Lao P.D.R.</option> <option value="lv">Latvia</option> <option value="lb">Lebanon</option> <option value="ly">Libya</option> <option value="li">Liechtenstein</option> <option value="lt">Lithuania</option> <option value="lu">Luxembourg</option> <option value="mo">Macao S.A.R.</option> <option value="mk">Macedonia (FYROM)</option> <option value="my">Malaysia</option> <option value="mv">Maldives</option> <option value="mt">Malta</option> <option value="mx">Mexico</option> <option value="mn">Mongolia</option> <option value="ma">Morocco</option> <option value="np">Nepal</option> <option value="nl">Netherlands</option> <option value="nz">New Zealand</option> <option value="ni">Nicaragua</option> <option value="ng">Nigeria</option> <option value="no">Norway</option> <option value="om">Oman</option> <option value="pa">Panama</option> <option value="py">Paraguay</option> <option value="cn">People's Republic of China</option> <option value="pe">Peru</option> <option value="ph">Philippines</option> <option value="pl">Poland</option> <option value="pt">Portugal</option> <option value="mc">Principality of Monaco</option> <option value="pr">Puerto Rico</option> <option value="qa">Qatar</option> <option value="ph">Republic of the Philippines</option> <option value="ro">Romania</option> <option value="ru">Russia</option> <option value="rw">Rwanda</option> <option value="sa">Saudi Arabia</option> <option value="sn">Senegal</option> <option value="cs">Serbia</option> <option value="sg">Singapore</option> <option value="sk">Slovakia</option> <option value="si">Slovenia</option> <option value="za">South Africa</option> <option value="es">Spain</option> <option value="lk">Sri Lanka</option> <option value="se">Sweden</option> <option value="ch">Switzerland</option> <option value="sy">Syria</option> <option value="tw">Taiwan</option> <option value="tj">Tajikistan</option> <option value="th">Thailand</option> <option value="tt">Trinidad and Tobago</option> <option value="tn">Tunisia</option> <option value="tr">Turkey</option> <option value="tm">Turkmenistan</option> <option value="ae">U.A.E.</option> <option value="ua">Ukraine</option> <option value="gb">United Kingdom</option> <option selected="selected" value="us">United States</option> <option value="uy">Uruguay</option> <option value="uz">Uzbekistan</option> <option value="ve">Venezuela</option> <option value="vn">Vietnam</option> <option value="ye">Yemen</option> <option value="zw">Zimbabwe</option> </select>  <img id="ctl00_cphBody_CommentView1_imgFlag" src="/pics/flags/us.png" alt="Country flag" style="height:11px;width:16px;border-width:0px;" /><br /><br /> <span class="bbcode" title="BBCode tags"><a title="[b][/b]" href="javascript:void(BlogEngine.addBbCode('b'))">b</a><a title="[i][/i]" href="javascript:void(BlogEngine.addBbCode('i'))">i</a><a title="[u][/u]" href="javascript:void(BlogEngine.addBbCode('u'))">u</a><a title="[quote][/quote]" href="javascript:void(BlogEngine.addBbCode('quote'))">quote</a></span> <br /> <ul id="commentMenu"> <li id="compose" class="selected" onclick="BlogEngine.composeComment()">Comment</li> <li id="preview" onclick="BlogEngine.showCommentPreview()">Preview</li> </ul> <div id="commentCompose"> <label for="ctl00_cphBody_CommentView1_txtContent" style="display:none">Comment</label> <textarea name="ctl00$cphBody$CommentView1$txtContent" rows="10" cols="50" id="ctl00_cphBody_CommentView1_txtContent" tabindex="6"></textarea> </div> <div id="commentPreview"> <img src="/pics/ajax-loader.gif" alt="Loading" /> </div> <br /> <input type="checkbox" id="cbNotify" style="width: auto" tabindex="7" /> <label for="cbNotify" style="width:auto;float:none;display:inline">Notify me when new comments are added</label><br /><br /> <input type="button" id="btnSaveAjax" value="Save comment" onclick="if(Page_ClientValidate('AddComment')){BlogEngine.addComment()}" tabindex="7" /> <input type="hidden" name="ctl00$cphBody$CommentView1$hfCaptcha" id="ctl00_cphBody_CommentView1_hfCaptcha" value="31e29c81-b5c9-4a69-88ef-bb21cda5807d" /> </div> </div> <script type="text/javascript"> <!--// function registerCommentBox(){ BlogEngine.comments.flagImage = BlogEngine.$("ctl00_cphBody_CommentView1_imgFlag"); BlogEngine.comments.contentBox = BlogEngine.$("ctl00_cphBody_CommentView1_txtContent"); BlogEngine.comments.moderation = true; BlogEngine.comments.checkName = true; BlogEngine.comments.postAuthor = "michael"; BlogEngine.comments.nameBox = BlogEngine.$("ctl00_cphBody_CommentView1_txtName"); BlogEngine.comments.emailBox = BlogEngine.$("ctl00_cphBody_CommentView1_txtEmail"); BlogEngine.comments.websiteBox = BlogEngine.$("ctl00_cphBody_CommentView1_txtWebsite"); BlogEngine.comments.countryDropDown = BlogEngine.$("ctl00_cphBody_CommentView1_ddlCountry"); BlogEngine.comments.captchaField = BlogEngine.$('ctl00_cphBody_CommentView1_hfCaptcha'); BlogEngine.comments.controlId = 'ctl00$cphBody$CommentView1'; BlogEngine.comments.replyToId = BlogEngine.$("ctl00_cphBody_CommentView1_hiddenReplyTo"); } //--> </script> <p style="font-size:9px;text-align:center"> Powered by <a href="http://www.dotnetblogengine.net">BlogEngine.NET</a> 1.5.0.7<br /> Theme by <a href="http://blog.madskristensen.dk">Mads Kristensen</a> | Modified by <a href="http://www.mooglegiant.net">Mooglegiant</a> </p> </div> <div id="sidepanel"> <div id="widgetzone"><div class="widget search" id="widgetd81c5ae3-e57e-4374-a539-5cdee45e639f"><br /><div class="content"><div id="searchbox"> <label for="searchfield" style="display:none">Search</label><input type="text" value="Enter search term" id="searchfield" onkeypress="if(event.keyCode==13) return BlogEngine.search('/')" onfocus="BlogEngine.searchClear('Enter search term')" onblur="BlogEngine.searchClear('Enter search term')" /><input type="button" value="Search" id="searchbutton" onclick="BlogEngine.search('/');" onkeypress="BlogEngine.search('/');" /><br /><input type="checkbox" id="searchcomments" /><label for="searchcomments">Include comments in search</label></div> </div></div><div class="widget calendar" id="widget032a36e7-592a-444b-933e-c7ca3b896f56"><h4>Calendar</h4><div class="content"> <div style="text-align:center"> <div id="calendarContainer"><table class="calendar" summary="" style=";border-collapse:collapse;"><tr><td><a href="javascript:BlogEngine.Calendar.nav('2010-01-08')"><<</a>  </td><td style="text-align:center;width:100px">February 2010</td><td align="right">  >></td></tr></table><table id="ctl00_032a36e7592a444b933ec7ca3b896f56_PostCalendar1" class="calendar" cellspacing="0" cellpadding="2" summary="Post calendar" title="Calendar" border="0" style="border-width:0px;border-collapse:collapse;"> <tr><th align="center" abbr="Monday" scope="col">Mo</th><th align="center" abbr="Tuesday" scope="col">Tu</th><th align="center" abbr="Wednesday" scope="col">We</th><th align="center" abbr="Thursday" scope="col">Th</th><th align="center" abbr="Friday" scope="col">Fr</th><th align="center" abbr="Saturday" scope="col">Sa</th><th align="center" abbr="Sunday" scope="col">Su</th></tr><tr><td class="other" align="center" style="width:14%;">25</td><td class="other" align="center" style="width:14%;">26</td><td class="other" align="center" style="width:14%;">27</td><td class="other" align="center" style="width:14%;">28</td><td class="other" align="center" style="width:14%;">29</td><td class="other" align="center" style="width:14%;">30</td><td class="other" align="center" style="width:14%;">31</td></tr><tr><td align="center" style="width:14%;">1</td><td align="center" style="width:14%;">2</td><td align="center" style="width:14%;">3</td><td align="center" style="width:14%;">4</td><td align="center" style="width:14%;">5</td><td class="weekend" align="center" style="width:14%;">6</td><td class="weekend" align="center" style="width:14%;">7</td></tr><tr><td align="center" id="today" style="width:14%;">8</td><td align="center" style="width:14%;">9</td><td align="center" style="width:14%;">10</td><td align="center" style="width:14%;">11</td><td align="center" style="width:14%;">12</td><td class="weekend" align="center" style="width:14%;">13</td><td class="weekend" align="center" style="width:14%;">14</td></tr><tr><td align="center" style="width:14%;">15</td><td align="center" style="width:14%;">16</td><td align="center" style="width:14%;">17</td><td align="center" style="width:14%;">18</td><td align="center" style="width:14%;">19</td><td class="weekend" align="center" style="width:14%;">20</td><td class="weekend" align="center" style="width:14%;">21</td></tr><tr><td align="center" style="width:14%;">22</td><td align="center" style="width:14%;">23</td><td align="center" style="width:14%;">24</td><td align="center" style="width:14%;">25</td><td align="center" style="width:14%;">26</td><td class="weekend" align="center" style="width:14%;">27</td><td class="weekend" align="center" style="width:14%;">28</td></tr><tr><td class="other" align="center" style="width:14%;">1</td><td class="other" align="center" style="width:14%;">2</td><td class="other" align="center" style="width:14%;">3</td><td class="other" align="center" style="width:14%;">4</td><td class="other" align="center" style="width:14%;">5</td><td class="other" align="center" style="width:14%;">6</td><td class="other" align="center" style="width:14%;">7</td></tr> </table></div><script type="text/javascript"> function setupBlogEngineCalendar() { BlogEngine.Calendar = { months: {}, nav: function(date) { var m = BlogEngine.Calendar.months; if (m[date] == null || m[date] == 'undefined') { WebForm_DoCallback('ctl00$032a36e7592a444b933ec7ca3b896f56$PostCalendar1',date,BlogEngine.updateCalendar,date,null,false) } else { BlogEngine.updateCalendar(m[date], date); } } }; } </script> <br /> <a href="http://www.imaginaryrealities.com/calendar/default.aspx">View posts in large calendar</a> </div></div></div><div class="widget linklist" id="widget4c9c3b02-77ac-4799-ab41-292f67c3d291"><h4>My Links</h4><div class="content"><ul id="ctl00_4c9c3b0277ac4799ab41292f67c3d291_ulLinks"><li><a href="http://twitter.com/mfcollins3" target="_blank">Twitter</a></li><li><a href="http://www.linkedin.com/in/michaelfcollins3" target="_blank">LinkedIn Profile</a></li><li><a href="http://www.shelfari.com/michaelfcollins3" target="_blank">My Shelfari</a></li></ul></div></div><div class="widget categorylist" id="widgetf68a766e-25aa-4d0e-a609-c99db944d054"><h4>Categories</h4><div class="content"><ul id="categorylist"><li><a href="/category/feed/NET-Framework.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for .NET Framework" class="rssButton" /></a><a href="/category/NET-Framework.aspx" title="Category: .NET Framework">.NET Framework (2)</a></li><li><a href="/category/feed/Amazon-S3.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Amazon S3" class="rssButton" /></a><a href="/category/Amazon-S3.aspx" title="Category: Amazon S3">Amazon S3 (4)</a></li><li><a href="/category/feed/Apple-Mac.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Apple Mac" class="rssButton" /></a><a href="/category/Apple-Mac.aspx" title="Category: Apple Mac">Apple Mac (1)</a></li><li><a href="/category/feed/ASPNET.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for ASP.NET" class="rssButton" /></a><a href="/category/ASPNET.aspx" title="Category: ASP.NET">ASP.NET (12)</a></li><li><a href="/category/feed/ASPNET-MVC.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for ASP.NET MVC" class="rssButton" /></a><a href="/category/ASPNET-MVC.aspx" title="Category: ASP.NET MVC">ASP.NET MVC (1)</a></li><li><a href="/category/feed/ASPNET-Themes.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for ASP.NET Themes" class="rssButton" /></a><a href="/category/ASPNET-Themes.aspx" title="Category: ASP.NET Themes">ASP.NET Themes (4)</a></li><li><a href="/category/feed/ClickOnce.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for ClickOnce" class="rssButton" /></a><a href="/category/ClickOnce.aspx" title="Category: ClickOnce">ClickOnce (2)</a></li><li><a href="/category/feed/Cloud-Computing.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Cloud Computing" class="rssButton" /></a><a href="/category/Cloud-Computing.aspx" title="Category: Cloud Computing">Cloud Computing (9)</a></li><li><a href="/category/feed/Code-Camp.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Code Camp" class="rssButton" /></a><a href="/category/Code-Camp.aspx" title="Category: Code Camp">Code Camp (3)</a></li><li><a href="/category/feed/Composite-WPF-Shell.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Composite WPF Shell" class="rssButton" /></a><a href="/category/Composite-WPF-Shell.aspx" title="Category: Composite WPF Shell">Composite WPF Shell (2)</a></li><li><a href="/category/feed/Computer-Science.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Computer Science" class="rssButton" /></a><a href="/category/Computer-Science.aspx" title="Category: Computer Science">Computer Science (2)</a></li><li><a href="/category/feed/CSS.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for CSS" class="rssButton" /></a><a href="/category/CSS.aspx" title="Category: CSS">CSS (1)</a></li><li><a href="/category/feed/Debugging.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Debugging" class="rssButton" /></a><a href="/category/Debugging.aspx" title="Category: Debugging">Debugging (5)</a></li><li><a href="/category/feed/Expression-Design.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Expression Design" class="rssButton" /></a><a href="/category/Expression-Design.aspx" title="Category: Expression Design">Expression Design (1)</a></li><li><a href="/category/feed/FitNesse.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for FitNesse" class="rssButton" /></a><a href="/category/FitNesse.aspx" title="Category: FitNesse">FitNesse (1)</a></li><li><a href="/category/feed/Git.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Git" class="rssButton" /></a><a href="/category/Git.aspx" title="Category: Git">Git (3)</a></li><li><a href="/category/feed/Globalization.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Globalization" class="rssButton" /></a><a href="/category/Globalization.aspx" title="Category: Globalization">Globalization (1)</a></li><li><a href="/category/feed/ImaginaryRealitiescom.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for ImaginaryRealities.com" class="rssButton" /></a><a href="/category/ImaginaryRealitiescom.aspx" title="Category: ImaginaryRealities.com">ImaginaryRealities.com (12)</a></li><li><a href="/category/feed/iPhoneiPod.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for iPhone/iPod" class="rssButton" /></a><a href="/category/iPhoneiPod.aspx" title="Category: iPhone/iPod">iPhone/iPod (2)</a></li><li><a href="/category/feed/Java.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Java" class="rssButton" /></a><a href="/category/Java.aspx" title="Category: Java">Java (2)</a></li><li><a href="/category/feed/LINQ.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for LINQ" class="rssButton" /></a><a href="/category/LINQ.aspx" title="Category: LINQ">LINQ (1)</a></li><li><a href="/category/feed/Microsoft-Dynamics-CRM.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Microsoft Dynamics CRM" class="rssButton" /></a><a href="/category/Microsoft-Dynamics-CRM.aspx" title="Category: Microsoft Dynamics CRM">Microsoft Dynamics CRM (1)</a></li><li><a href="/category/feed/Microsoft-Office.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Microsoft Office" class="rssButton" /></a><a href="/category/Microsoft-Office.aspx" title="Category: Microsoft Office">Microsoft Office (1)</a></li><li><a href="/category/feed/Microsoft-Office-SharePoint-Services.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Microsoft Office SharePoint Services" class="rssButton" /></a><a href="/category/Microsoft-Office-SharePoint-Services.aspx" title="Category: Microsoft Office SharePoint Services">Microsoft Office SharePoint Services (1)</a></li><li><a href="/category/feed/Microsoft-PowerPoint.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Microsoft PowerPoint" class="rssButton" /></a><a href="/category/Microsoft-PowerPoint.aspx" title="Category: Microsoft PowerPoint">Microsoft PowerPoint (1)</a></li><li><a href="/category/feed/MSBuild.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for MSBuild" class="rssButton" /></a><a href="/category/MSBuild.aspx" title="Category: MSBuild">MSBuild (2)</a></li><li><a href="/category/feed/Neudesic.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Neudesic" class="rssButton" /></a><a href="/category/Neudesic.aspx" title="Category: Neudesic">Neudesic (3)</a></li><li><a href="/category/feed/Objective-C.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Objective-C" class="rssButton" /></a><a href="/category/Objective-C.aspx" title="Category: Objective-C">Objective-C (6)</a></li><li><a href="/category/feed/Olympics.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Olympics" class="rssButton" /></a><a href="/category/Olympics.aspx" title="Category: Olympics">Olympics (1)</a></li><li><a href="/category/feed/Open-Source.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Open Source" class="rssButton" /></a><a href="/category/Open-Source.aspx" title="Category: Open Source">Open Source (3)</a></li><li><a href="/category/feed/Perl.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Perl" class="rssButton" /></a><a href="/category/Perl.aspx" title="Category: Perl">Perl (1)</a></li><li><a href="/category/feed/Personal.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Personal" class="rssButton" /></a><a href="/category/Personal.aspx" title="Category: Personal">Personal (1)</a></li><li><a href="/category/feed/PHP.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for PHP" class="rssButton" /></a><a href="/category/PHP.aspx" title="Category: PHP">PHP (1)</a></li><li><a href="/category/feed/Politics.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Politics" class="rssButton" /></a><a href="/category/Politics.aspx" title="Category: Politics">Politics (3)</a></li><li><a href="/category/feed/Rants-and-Raves.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Rants and Raves" class="rssButton" /></a><a href="/category/Rants-and-Raves.aspx" title="Category: Rants and Raves">Rants and Raves (1)</a></li><li><a href="/category/feed/REST.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for REST" class="rssButton" /></a><a href="/category/REST.aspx" title="Category: REST">REST (2)</a></li><li><a href="/category/feed/Security.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Security" class="rssButton" /></a><a href="/category/Security.aspx" title="Category: Security">Security (1)</a></li><li><a href="/category/feed/Silverlight.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Silverlight" class="rssButton" /></a><a href="/category/Silverlight.aspx" title="Category: Silverlight">Silverlight (1)</a></li><li><a href="/category/feed/Software-Development.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Software Development" class="rssButton" /></a><a href="/category/Software-Development.aspx" title="Category: Software Development">Software Development (11)</a></li><li><a href="/category/feed/Sports.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Sports" class="rssButton" /></a><a href="/category/Sports.aspx" title="Category: Sports">Sports (1)</a></li><li><a href="/category/feed/SQL-Server.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for SQL Server" class="rssButton" /></a><a href="/category/SQL-Server.aspx" title="Category: SQL Server">SQL Server (1)</a></li><li><a href="/category/feed/Subversion.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Subversion" class="rssButton" /></a><a href="/category/Subversion.aspx" title="Category: Subversion">Subversion (1)</a></li><li><a href="/category/feed/Surprise-Democratic-Club.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Surprise Democratic Club" class="rssButton" /></a><a href="/category/Surprise-Democratic-Club.aspx" title="Category: Surprise Democratic Club">Surprise Democratic Club (1)</a></li><li><a href="/category/feed/TDD.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for TDD" class="rssButton" /></a><a href="/category/TDD.aspx" title="Category: TDD">TDD (2)</a></li><li><a href="/category/feed/Team-Foundation-Server.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Team Foundation Server" class="rssButton" /></a><a href="/category/Team-Foundation-Server.aspx" title="Category: Team Foundation Server">Team Foundation Server (1)</a></li><li><a href="/category/feed/Test-Driven-Development.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Test-Driven Development" class="rssButton" /></a><a href="/category/Test-Driven-Development.aspx" title="Category: Test-Driven Development">Test-Driven Development (1)</a></li><li><a href="/category/feed/Testing-Software.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Testing Software" class="rssButton" /></a><a href="/category/Testing-Software.aspx" title="Category: Testing Software">Testing Software (1)</a></li><li><a href="/category/feed/Umbraco.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Umbraco" class="rssButton" /></a><a href="/category/Umbraco.aspx" title="Category: Umbraco">Umbraco (5)</a></li><li><a href="/category/feed/Unit-Testing.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Unit Testing" class="rssButton" /></a><a href="/category/Unit-Testing.aspx" title="Category: Unit Testing">Unit Testing (3)</a></li><li><a href="/category/feed/User-Experience.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for User Experience" class="rssButton" /></a><a href="/category/User-Experience.aspx" title="Category: User Experience">User Experience (1)</a></li><li><a href="/category/feed/Version-Control.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Version Control" class="rssButton" /></a><a href="/category/Version-Control.aspx" title="Category: Version Control">Version Control (6)</a></li><li><a href="/category/feed/Web-Services.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Web Services" class="rssButton" /></a><a href="/category/Web-Services.aspx" title="Category: Web Services">Web Services (2)</a></li><li><a href="/category/feed/WebHost4lLife.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for WebHost4lLife" class="rssButton" /></a><a href="/category/WebHost4lLife.aspx" title="Category: WebHost4lLife">WebHost4lLife (2)</a></li><li><a href="/category/feed/Windows-Azure.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Windows Azure" class="rssButton" /></a><a href="/category/Windows-Azure.aspx" title="Category: Windows Azure">Windows Azure (6)</a></li><li><a href="/category/feed/Windows-Communication-Foundation.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Windows Communication Foundation" class="rssButton" /></a><a href="/category/Windows-Communication-Foundation.aspx" title="Category: Windows Communication Foundation">Windows Communication Foundation (2)</a></li><li><a href="/category/feed/Windows-Presentation-Foundation-(WPF).aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Windows Presentation Foundation (WPF)" class="rssButton" /></a><a href="/category/Windows-Presentation-Foundation-(WPF).aspx" title="Category: Windows Presentation Foundation (WPF)">Windows Presentation Foundation (WPF) (7)</a></li><li><a href="/category/feed/Windows-SharePoint-Services.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Windows SharePoint Services" class="rssButton" /></a><a href="/category/Windows-SharePoint-Services.aspx" title="Category: Windows SharePoint Services">Windows SharePoint Services (1)</a></li><li><a href="/category/feed/Yahoo!-User-Interface-Library.aspx" rel="nofollow"><img src="/pics/rssButton.gif" alt="RSS feed for Yahoo! User Interface Library" class="rssButton" /></a><a href="/category/Yahoo!-User-Interface-Library.aspx" title="Category: Yahoo! User Interface Library">Yahoo! User Interface Library (1)</a></li></ul> </div></div><div class="widget tagcloud" id="widgetb26862de-1b1b-486a-8c06-bcabeb4bf976"><h4>Tags</h4><div class="content"><ul id="ctl00_b26862de1b1b486a8c06bcabeb4bf976_ulTags"><li><a href="/?tag=/property" class="smallest" title="Tag: @property">@property</a> </li><li><a href="/?tag=/synthesize" class="smallest" title="Tag: @synthesize">@synthesize</a> </li><li><a href="/?tag=/2008-election" class="smallest" title="Tag: 2008 election">2008 election</a> </li><li><a href="/?tag=/algorithms" class="smallest" title="Tag: algorithms">algorithms</a> </li><li><a href="/?tag=/alloc" class="smallest" title="Tag: alloc">alloc</a> </li><li><a href="/?tag=/amazon" class="small" title="Tag: amazon">amazon</a> </li><li><a href="/?tag=/apple" class="smallest" title="Tag: apple">apple</a> </li><li><a href="/?tag=/aspnet" class="biggest" title="Tag: asp.net">asp.net</a> </li><li><a href="/?tag=/assign" class="smallest" title="Tag: assign">assign</a> </li><li><a href="/?tag=/autorelease" class="smallest" title="Tag: autorelease">autorelease</a> </li><li><a href="/?tag=/azure" class="medium" title="Tag: azure">azure</a> </li><li><a href="/?tag=/budget" class="smallest" title="Tag: budget">budget</a> </li><li><a href="/?tag=/budgeting" class="smallest" title="Tag: budgeting">budgeting</a> </li><li><a href="/?tag=/c" class="smallest" title="Tag: c#">c#</a> </li><li><a href="/?tag=/certification" class="smallest" title="Tag: certification">certification</a> </li><li><a href="/?tag=/clickonce" class="small" title="Tag: clickonce">clickonce</a> </li><li><a href="/?tag=/cloud" class="medium" title="Tag: cloud">cloud</a> </li><li><a href="/?tag=/cloud-computing" class="smallest" title="Tag: cloud computing">cloud computing</a> </li><li><a href="/?tag=/cloudberry" class="smallest" title="Tag: cloudberry">cloudberry</a> </li><li><a href="/?tag=/code-camp" class="smallest" title="Tag: code camp">code camp</a> </li><li><a href="/?tag=/code-camp" class="smallest" title="Tag: 'code camp'">'code camp'</a> </li><li><a href="/?tag=/color" class="smallest" title="Tag: color">color</a> </li><li><a href="/?tag=/composite" class="small" title="Tag: composite">composite</a> </li><li><a href="/?tag=/copy" class="smallest" title="Tag: copy">copy</a> </li><li><a href="/?tag=/crm" class="smallest" title="Tag: crm">crm</a> </li><li><a href="/?tag=/css" class="small" title="Tag: css">css</a> </li><li><a href="/?tag=/culture" class="smallest" title="Tag: culture">culture</a> </li><li><a href="/?tag=/dealloc" class="smallest" title="Tag: dealloc">dealloc</a> </li><li><a href="/?tag=/debugging" class="medium" title="Tag: debugging">debugging</a> </li><li><a href="/?tag=/democrats" class="smallest" title="Tag: democrats">democrats</a> </li><li><a href="/?tag=/description" class="smallest" title="Tag: description">description</a> </li><li><a href="/?tag=/desert-code-camp" class="smallest" title="Tag: 'desert code camp'">'desert code camp'</a> </li><li><a href="/?tag=/equals" class="smallest" title="Tag: equals">equals</a> </li><li><a href="/?tag=/excel" class="smallest" title="Tag: excel">excel</a> </li><li><a href="/?tag=/expressionbuilder" class="small" title="Tag: expressionbuilder">expressionbuilder</a> </li><li><a href="/?tag=/fastcgi" class="smallest" title="Tag: fastcgi">fastcgi</a> </li><li><a href="/?tag=/fiddler" class="smallest" title="Tag: fiddler">fiddler</a> </li><li><a href="/?tag=/fitnesse" class="smallest" title="Tag: fitnesse">fitnesse</a> </li><li><a href="/?tag=/gethashcode" class="smallest" title="Tag: gethashcode">gethashcode</a> </li><li><a href="/?tag=/getter" class="smallest" title="Tag: getter">getter</a> </li><li><a href="/?tag=/git" class="medium" title="Tag: git">git</a> </li><li><a href="/?tag=/globalization" class="smallest" title="Tag: globalization">globalization</a> </li><li><a href="/?tag=/graphics" class="smallest" title="Tag: graphics">graphics</a> </li><li><a href="/?tag=/grids" class="smallest" title="Tag: grids">grids</a> </li><li><a href="/?tag=/hash" class="smallest" title="Tag: hash">hash</a> </li><li><a href="/?tag=/imaginaryrealitiescom" class="medium" title="Tag: imaginaryrealities.com">imaginaryrealities.com</a> </li><li><a href="/?tag=/init" class="smallest" title="Tag: init">init</a> </li><li><a href="/?tag=/interviews" class="smallest" title="Tag: interviews">interviews</a> </li><li><a href="/?tag=/iphone" class="smallest" title="Tag: iphone">iphone</a> </li><li><a href="/?tag=/ipod" class="smallest" title="Tag: ipod">ipod</a> </li><li><a href="/?tag=/isequal" class="smallest" title="Tag: isequal">isequal</a> </li><li><a href="/?tag=/java" class="small" title="Tag: java">java</a> </li><li><a href="/?tag=/john-mccain" class="smallest" title="Tag: john mccain">john mccain</a> </li><li><a href="/?tag=/joomla" class="smallest" title="Tag: joomla">joomla</a> </li><li><a href="/?tag=/language" class="smallest" title="Tag: language">language</a> </li><li><a href="/?tag=/linq" class="smallest" title="Tag: linq">linq</a> </li><li><a href="/?tag=/mac" class="smallest" title="Tag: mac">mac</a> </li><li><a href="/?tag=/master-page" class="smallest" title="Tag: master page">master page</a> </li><li><a href="/?tag=/memory" class="smallest" title="Tag: memory">memory</a> </li><li><a href="/?tag=/microsoft" class="smallest" title="Tag: microsoft">microsoft</a> </li><li><a href="/?tag=/money" class="smallest" title="Tag: money">money</a> </li><li><a href="/?tag=/moss" class="smallest" title="Tag: moss">moss</a> </li><li><a href="/?tag=/msbuild" class="small" title="Tag: msbuild">msbuild</a> </li><li><a href="/?tag=/mvc" class="smallest" title="Tag: mvc">mvc</a> </li><li><a href="/?tag=/new" class="smallest" title="Tag: new">new</a> </li><li><a href="/?tag=/nonatomic" class="smallest" title="Tag: nonatomic">nonatomic</a> </li><li><a href="/?tag=/nsobject" class="small" title="Tag: nsobject">nsobject</a> </li><li><a href="/?tag=/nunit" class="smallest" title="Tag: nunit">nunit</a> </li><li><a href="/?tag=/object" class="smallest" title="Tag: object">object</a> </li><li><a href="/?tag=/objective-c" class="medium" title="Tag: objective-c">objective-c</a> </li><li><a href="/?tag=/ocunit" class="smallest" title="Tag: ocunit">ocunit</a> </li><li><a href="/?tag=/olympics" class="smallest" title="Tag: olympics">olympics</a> </li><li><a href="/?tag=/open-source" class="smallest" title="Tag: open source">open source</a> </li><li><a href="/?tag=/outlook" class="smallest" title="Tag: outlook">outlook</a> </li><li><a href="/?tag=/paris-hilton" class="smallest" title="Tag: paris hilton">paris hilton</a> </li><li><a href="/?tag=/php" class="smallest" title="Tag: php">php</a> </li><li><a href="/?tag=/phpbb" class="smallest" title="Tag: phpbb">phpbb</a> </li><li><a href="/?tag=/policits" class="smallest" title="Tag: policits">policits</a> </li><li><a href="/?tag=/politics" class="small" title="Tag: politics">politics</a> </li><li><a href="/?tag=/powerpoint" class="smallest" title="Tag: powerpoint">powerpoint</a> </li><li><a href="/?tag=/programming" class="smallest" title="Tag: programming">programming</a> </li><li><a href="/?tag=/properties" class="smallest" title="Tag: properties">properties</a> </li><li><a href="/?tag=/readonly" class="smallest" title="Tag: readonly">readonly</a> </li><li><a href="/?tag=/readwrite" class="smallest" title="Tag: readwrite">readwrite</a> </li><li><a href="/?tag=/release" class="smallest" title="Tag: release">release</a> </li><li><a href="/?tag=/resources" class="smallest" title="Tag: resources">resources</a> </li><li><a href="/?tag=/rest" class="small" title="Tag: rest">rest</a> </li><li><a href="/?tag=/retain" class="small" title="Tag: retain">retain</a> </li><li><a href="/?tag=/routing" class="smallest" title="Tag: routing">routing</a> </li><li><a href="/?tag=/s3" class="small" title="Tag: s3">s3</a> </li><li><a href="/?tag=/setter" class="smallest" title="Tag: setter">setter</a> </li><li><a href="/?tag=/sharepoint" class="smallest" title="Tag: sharepoint">sharepoint</a> </li><li><a href="/?tag=/silverlight" class="small" title="Tag: silverlight">silverlight</a> </li><li><a href="/?tag=/slices" class="smallest" title="Tag: slices">slices</a> </li><li><a href="/?tag=/soap" class="smallest" title="Tag: soap">soap</a> </li><li><a href="/?tag=/sports" class="smallest" title="Tag: sports">sports</a> </li><li><a href="/?tag=/sql" class="smallest" title="Tag: sql">sql</a> </li><li><a href="/?tag=/srcsrv" class="smallest" title="Tag: srcsrv">srcsrv</a> </li><li><a href="/?tag=/ssl" class="smallest" title="Tag: ssl">ssl</a> </li><li><a href="/?tag=/sslhelper" class="smallest" title="Tag: sslhelper">sslhelper</a> </li><li><a href="/?tag=/ssltools" class="smallest" title="Tag: ssltools">ssltools</a> </li><li><a href="/?tag=/stylecop" class="smallest" title="Tag: stylecop">stylecop</a> </li><li><a href="/?tag=/subversion" class="small" title="Tag: subversion">subversion</a> </li><li><a href="/?tag=/surprise" class="smallest" title="Tag: surprise">surprise</a> </li><li><a href="/?tag=/tdd" class="small" title="Tag: tdd">tdd</a> </li><li><a href="/?tag=/testing" class="small" title="Tag: testing">testing</a> </li><li><a href="/?tag=/tfs" class="small" title="Tag: tfs">tfs</a> </li><li><a href="/?tag=/themes" class="small" title="Tag: themes">themes</a> </li><li><a href="/?tag=/translation" class="smallest" title="Tag: translation">translation</a> </li><li><a href="/?tag=/uiapplication" class="smallest" title="Tag: uiapplication">uiapplication</a> </li><li><a href="/?tag=/uiapplicationdelegate" class="smallest" title="Tag: uiapplicationdelegate">uiapplicationdelegate</a> </li><li><a href="/?tag=/uiapplicationmain" class="smallest" title="Tag: uiapplicationmain">uiapplicationmain</a> </li><li><a href="/?tag=/umbraco" class="medium" title="Tag: umbraco">umbraco</a> </li><li><a href="/?tag=/user-experience" class="smallest" title="Tag: user experience">user experience</a> </li><li><a href="/?tag=/visual-studio" class="smallest" title="Tag: visual studio">visual studio</a> </li><li><a href="/?tag=/wcf" class="small" title="Tag: wcf">wcf</a> </li><li><a href="/?tag=/web" class="smallest" title="Tag: web">web</a> </li><li><a href="/?tag=/webhost4life" class="smallest" title="Tag: webhost4life">webhost4life</a> </li><li><a href="/?tag=/wordpress" class="smallest" title="Tag: wordpress">wordpress</a> </li><li><a href="/?tag=/wpf" class="big" title="Tag: wpf">wpf</a> </li><li><a href="/?tag=/wss" class="smallest" title="Tag: wss">wss</a> </li><li><a href="/?tag=/xunit" class="smallest" title="Tag: xunit">xunit</a> </li><li><a href="/?tag=/yui" class="smallest" title="Tag: yui">yui</a> </li></ul></div></div><div class="widget twitter" id="widget0bf825b9-5a00-4118-8673-77558de63cf7"><h4>What I'm doing right now</h4><div class="content"> <img src="/widgets/twitter/twitter.ico" alt="Twitter" /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl00_lblDate" style="color:gray">February 4. 07:09</span><br /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl00_lblItem"> Ugh. Client's network is barely working today. Email, browser and IM won't work, but strangely Twitter through Outlook does.</span><br /><br /> <img src="/widgets/twitter/twitter.ico" alt="Twitter" /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl01_lblDate" style="color:gray">February 2. 20:40</span><br /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl01_lblItem"> I'll be showing WCF and XML-RPC integration, which is very, very cool. There's a lot that WCF can do. I forget sometimes about it.</span><br /><br /> <img src="/widgets/twitter/twitter.ico" alt="Twitter" /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl02_lblDate" style="color:gray">February 2. 20:39</span><br /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl02_lblItem"> I'll be discussing how to integrate Windows Live Writer into web applications to publish content to blogs, sites, FAQs, knowledge bases, etc</span><br /><br /> <img src="/widgets/twitter/twitter.ico" alt="Twitter" /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl03_lblDate" style="color:gray">February 2. 20:39</span><br /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl03_lblItem"> I'm speaking next week at the Phoenix Connected Systems group and will be covering some parts of my new blog engine.</span><br /><br /> <img src="/widgets/twitter/twitter.ico" alt="Twitter" /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl04_lblDate" style="color:gray">February 2. 20:38</span><br /> <span id="ctl00_0bf825b95a004118867377558de63cf7_repItems_ctl04_lblItem"> I really need to get back into blogging. My new website is almost ready to go. Will be launching very, very soon.</span><br /><br /> <a id="ctl00_0bf825b95a004118867377558de63cf7_hlTwitterAccount" rel="me" href="http://twitter.com/mfcollins3">Follow me on Twitter</a></div></div><div class="widget shelfari" id="widget0ef17c5b-9f3c-4580-b125-b59927f963b6"><h4>What I'm reading now</h4><div class="content"><!-- Shelfari Widget v1.1 : Chris Blankenship : http://www.dscoduc.com --><span><object width='250' height='355' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'><param name='movie' value='http://sws.shelfari.com/shelf.swf'></param><param name='FlashVars' value='UserName=michaelfcollins3&ShelfType=list&ListType=nowreading&booksize=small&Alpha=0&BG&BGColor=FFFFFF&AmazonAssociate=imagisoftwcom-20'></param><embed width='250' height='355' src=http://sws.shelfari.com/shelf.swf FlashVars='UserName=michaelfcollins3&ShelfType=list&ListType=nowreading&booksize=small&Alpha=0&BG&BGColor=FFFFFF&AmazonAssociate=imagisoftwcom-20' type='application/x-shockwave-flash' pluginspage='http://www.adobe.com/go/getflashplayer'></embed></object></span></div></div><div class="widget textbox" id="widget3a970284-2d7c-4982-af52-a5b382326dd2"><br /><div class="content"><div> <script language="javascript" src="http://widget.odiogo.com/odiogo_js.php?feed_id=140555&platform=blogenginenet" type="text/javascript"> </script> <script language="javascript" type="text/javascript"> showOdiogoSubscribeButton (_odiogo_directory_name);</script> </div> <div> <a href="http://technorati.com/faves?sub=addfavbtn&add=http://imaginaryrealities.com"><img src="http://static.technorati.com/pix/fave/tech-fav-1.png" alt="Add to Technorati Favorites" width="166" height="30" /></a> </div> </div></div><div class="widget textbox" id="widgetea232473-ba67-4709-8357-26e719854220"><h4>Disclaimer</h4><div class="content">The views expressed on this website/blog are the opinions of Michael F. Collins, III, and do not necessarily reflect the views of my employer. </div></div></div> </div> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWrwECkeD02AUCyqvt2wMC1eX3owwCruLkxgwC/ubfrwUCwYnNwAkCwYnlwAkCwond3wkCwYm9wAkCwYnpwAkCwYmJwAkCwYmFwAkCwYnd3wkCwImVwAkCwInFwAkCwInZ3wkCwInJwAkCwInd3wkCwInxwAkCwIn5wAkCwIm9wAkCwIntwAkCwInRwAkCu4mVwAkCw4n5wAkCk6vrigECw4nlwAkCw4nxwAkCw4m9wAkCtom9wAkCw4nd3wkCwonhwAkCwonxwAkCxYnBwAkCxYnRwAkCs4mNwAkCxYnJwAkCxYmFwAkCxInxwAkCxImZwAkCxIm9wAkCx4nJwAkCwonJwAkCx4m9wAkCx4nlwAkCx4mFwAkCtontwAkCtonhwAkCtomJwAkCuYmBwAkCuYntwAkCuYnFwAkCuYm9wAkCuYm5wAkCuYnJwAkCronhwAkCuYnlwAkCuYmFwAkCuInpwAkCuIm1wAkCuInxwAkCu4nd3wkCu4nJwAkCu4m9wAkCu4mRwAkCu4nRwAkCuon5wAkCuomNwAkCuon9wAkCuonZ3wkCuomZwAkCuomFwAkCuomJwAkCvYnxwAkCvYnhwAkCvYnZ3wkCvYmNwAkCvYmFwAkCvYnV3wkCvYntwAkCvYn5wAkCvIm1wAkCvInlwAkCvInd3wkCvImZwAkCvInRwAkCvInxwAkCv4npwAkCron5wAkCronZ3wkCw4ntwAkCronJwAkCromVwAkCronlwAkCromFwAkCvYnBwAkCrom9wAkCsYn5wAkCromVwAkCsInxwAkCsImJwAkCsImRwAkCs4n5wAkCs4ntwAkCw4mBwAkCs4nRwAkCs4nhwAkCs4mZwAkCqIn5wAkCxYmBwAkCuonhwAkCs4nJwAkCw4mVwAkCs4nZ3wkCsomRwAkCsomdwAkCsomVwAkCsomFwAkCsontwAkCsom9wAkCsonpwAkCwYnJwAkCtYn5wAkCx4n9wAkCtYmBwAkCtYnZ3wkCtYnd3wkCtInJwAkCtIntwAkCqYnJwAkCqImRwAkCubT85wMC76m9yAwC28b86gQC28agggIC28aU7QoC8KzAKgLwrLT1CALwrJjQAwLwrIy7CgLwrPCHBQLwrOTiDQLwrMjNBALwrLyoDwLwrODBCgLwrNSsBQLVheKFBgLVhdbgDgLVhbrLCQLVha4WAtWFkvEIAtWFhtwDAtWF6rgKAtWF3oMFAtWFgjsC1YX2hwsCmOa38A4CmOab2wkCmOaPJgKY5vOCCwKY5uftAwKY5svICgKY5r+TBQKY5qP+DQKY5teXCwKY5rvyAwL938nrBAL93722DwL936GRBgL935X8DgL93/nYCQL93+0jAv3f0Y4LAv3fxekDAv3f6YIBO1ov3yF1Tl1x23nIq354//uRGL8=" /> </div> <script type="text/javascript"> //<![CDATA[ function registerVariables(){BlogEngine.webRoot='/';BlogEngine.i18n.hasRated='You already rated this post';BlogEngine.i18n.savingTheComment='Saving the comment...';BlogEngine.i18n.comments='Comments';BlogEngine.i18n.commentWasSaved='The comment was saved. Thank you for the feedback';BlogEngine.i18n.commentWaitingModeration='Thank you for the feedback. The comment is now awaiting moderation';BlogEngine.i18n.cancel='Cancel';BlogEngine.i18n.filter='Filter';BlogEngine.i18n.apmlDescription='Enter the URL to your website or to your APML document';};//]]> </script> <script type="text/javascript" defer="defer" src="/js.axd?path=%2fblog.js&v=1.5.0.7"></script></form> </div> </body> </html>