<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Emmanuel&apos;s Blog</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/" />
   <link rel="self" type="application/atom+xml" href="http://blog.ehuna.org/atom.xml" />
   <id>tag:blog.ehuna.org,2012://9</id>
   <updated>2012-04-06T07:27:46Z</updated>
   <subtitle>Random general thoughts and ideas from Emmanuel Huna - some personal and some technical on software development and Microsoft technologies (WPF, WCF, ASP.NET, Windows Azure, SQL Azure, LINQ, ADO.NET, etc...)</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.35</generator>

<entry>
   <title><![CDATA[How to stop a 'Denial Of Service' (DoS) attack on your ASP.NET web site, aka &quot;Using the 'Dynamic IP Restrictions' IIS Extension on Windows Azure with a Startup task&quot;]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2012/04/how_to_stop_a_denial_of_servic.html" />
   <id>tag:blog.ehuna.org,2012://9.388</id>
   
   <published>2012-04-02T06:08:00Z</published>
   <updated>2012-04-06T07:27:46Z</updated>
   
   <summary>A few days ago our team spent some time stress testing our web services. We divided the team into &apos;Attackers&apos; and &apos;Defenders&apos; - the attackers&apos; goal was to generate traffic that would bring down our system, the defenders&apos; goal to...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>A few days ago our team spent some time stress testing our web services. </p>  <p>We divided the team into 'Attackers' and 'Defenders' - the attackers' goal was to generate traffic that would bring down our system, the defenders' goal to understand the attacks and come up with innovative ways to block them - our team leader called this 'War Games'.</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image001.png"><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="clip_image001" border="0" alt="clip_image001" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image001_thumb.png" width="372" height="314" /></a> </p>    <p><em>If you're under 25 and you don't know what 'War Games' is, you just        <br />pissed me off; see </em><a href="http://en.wikipedia.org/wiki/WarGames"><em>http://en.wikipedia.org/wiki/WarGame</em>s</a></p> </blockquote>  <p>One of the early attacks involved the user of JMeter (<a href="http://jmeter.apache.org/">http://jmeter.apache.org/</a> ) - you don't need much CPU or bandwidth to generate tons of GET requests - and we found that a couple of users running JMeter with a broadband connection could hit our servers hard with literally thousands of requests per second - causing invalid and unnecessary traffic</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image0015.png"><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="clip_image001[5]" border="0" alt="clip_image001[5]" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image0015_thumb.png" width="366" height="401" /></a>       <br /><em>A stress test client that can be used nefariously -        <br />JMeter: </em><a href="http://jmeter.apache.org/"><em>http://jmeter.apache.org/</em></a></p> </blockquote>  <p>After doing some research, our team (the 'Defenders') came up with a couple of ideas on how to block such traffic. One of these ideas made use of an IIS extension provided by Microsoft called &quot;<a href="http://www.iis.net/download/dynamiciprestrictions" target="_blank">Dynamic IP Restrictions</a>&quot;, which I'll call from now on &quot;Dynamic IP&quot;.</p>  <blockquote>   <p><a href="onenote:General.one#http//www.iis.net/download/dynamiciprestrictions&amp;section-id={B266041A-B9F4-481F-BD5F-FE97AD0DB94B}&amp;page-id={FD00BAED-6997-40EB-B8B8-BC949273AF8C}&amp;base-path=https://d.docs.live.net/2091f24d42c4d9cd/^.Documents/Personal (Web)"><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="clip_image002" border="0" alt="clip_image002" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image002.png" width="342" height="339" /></a>       <br /><em>IIS Extension: </em><a href="http://www.iis.net/download/dynamiciprestrictions"><em>http://www.iis.net/download/dynamiciprestrictions</em></a></p> </blockquote>  <p>The 'Dynamic IP' IIS extension is provided as a MSI installer - since our services are deployed to Windows Azure, we found that we needed to use Azure &quot;Startup Tasks&quot; to properly install and configure the extension on our virtual machines in the cloud. </p>  <p>Below I show in detail -</p>  <ol>   <li><strong>Local Development in IIS </strong>- how to download, install and configure the 'Dynamic IP' extension when using a local instance of IIS. </li>    <li><strong>Command Line Configuration </strong>- how to configure the IIS extension using the command line. </li>    <li><strong>Local Development in Emulator and Azure Startup Tasks </strong>- how to make sure the extension works when running in the local Windows Azure emulator and how to ensure the installation of the extension doesn't run every time you run in the emulator locally. </li>    <li><strong>Deployment to Cloud </strong>- Window Azure Fabric - how to deploy, install and configure the extension to in the cloud and how to verify it works when running in Windows Azure VM instances. </li> </ol>  <p>A few notes to hopefully avoid some trolls -</p>  <ul>   <li>This won't stop all denial of service attacks, but that doesn't mean that we should do nothing - and end up at the mercy of all attacks. </li>    <li>I write these tutorials to contribute to the .NET community - as a buddy once told me: &quot;your stuff is what we should be seeing on MSDN&quot;; that made me happy - but I'm always looking for constructive criticism on the content or style. </li>    <li>As always, my posts contain tons of screenshots - that saves me tons of typing but also ensures all steps are covered. </li> </ul>  <p>Hat tip to my co-worker Matthew T. who did a lot of this work and came up with some of the solutions below.</p>  ]]>
      <![CDATA[  <p><strong>How to stop a 'Denial Of Service' (DoS) attack on your ASP.NET web site,      <br />aka “Using the 'Dynamic IP Restrictions' IIS Extension on Windows Azure&quot;</strong></p>  <p>You can follow along with these steps on your own, but below I also provide links that allow you to download all projects and solutions referenced in these screenshots. For any of the screenshots below, click on the screenshot to zoom in.</p>  <p><strong>Pre-requisites</strong></p>  <ul>   <li>A yearning to learn cool new Microsoft .NET technologies </li>    <li>Visual Studio 2010 + SP1 </li>    <li>IIS (not IIS Express) </li>    <li>Azure SDK (version 1.6 was used when this article was written). </li>    <li>Windows Azure subscription (to deploy and run in the cloud). </li>    <li>Tip: use the 'Web Platform Installer' (<a href="http://www.microsoft.com/web/downloads/platform.aspx">http://www.microsoft.com/web/downloads/platform.aspx</a> ) to easily install and configure IIS and the Azure SDK. </li> </ul>  <p>You'll also need to install the 'Dynamic IP Restrictions' IIS extension - you can download it from <a href="http://www.iis.net/download/dynamiciprestrictions">http://www.iis.net/download/dynamiciprestrictions</a></p>  <p><a href="onenote:General.one#http//www.iis.net/download/dynamiciprestrictions&amp;section-id={B266041A-B9F4-481F-BD5F-FE97AD0DB94B}&amp;page-id={FD00BAED-6997-40EB-B8B8-BC949273AF8C}&amp;base-path=https://d.docs.live.net/2091f24d42c4d9cd/^.Documents/Personal (Web)"><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="clip_image001[7]" border="0" alt="clip_image001[7]" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image0017.png" width="447" height="130" /></a></p>  <p>Once you've downloaded and installed the 'Dynamic IP Restrictions' IIS extension, we are ready to create our test project.</p>  <p>You can download the full solution, including the azure and web role projects -</p>  <p>&#160; <a href="http://www.ehuna.org/files/DynamicIPIISExtensionOnAzure.zip" target="_blank">Download DynamicIPIISExtensionOnAzure.zip</a> (612KB)</p>  <p>Extract the two folders, open the ‘C:\sandbox\DynamicIPIISExtensionOnAzure\DynamicIPIISExtensionOnAzure.sln’ solution with Visual Studio (projects made with Visual Studio 2010 SP1 + Azure SDK 1.6) and follow along.</p>  <p><strong>1. Local Development - IIS </strong></p>  <p>In this section, we'll set up our test project and configure the &quot;Dynamic IP&quot; IIS extension - and we'll then test it out locally using IIS.</p>  <p>Let's start with a new project, open Visual Studio and create an &quot;ASP.NET Web Application&quot;; let's call it &quot;DynamicIPIISExtensionOnAzure&quot; and put it under &quot;C:\sandbox&quot; -</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image0025.png"><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="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image0025_thumb.png" width="455" height="316" /></a></p>  <blockquote>   <p><em>Tip: we are creating an &quot;ASP.NET Web Application&quot;, but everything we are doing works for MVC sites, WCF services, etc…</em></p> </blockquote>  <p>We should now have a project and solution under &quot;C:\sandbox\DynamicIPIISExtensionOnAzure&quot;, with default files Visual Studio has created for us; compile the project and make sure you get no errors, then save it all, including the solution. </p>  <p>It should look like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image003.png"><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="clip_image003" border="0" alt="clip_image003" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image003_thumb.png" width="429" height="481" /></a></p>  <p>Next we'll create a new site in IIS and configure it to host our new website. There are multiple ways to help you resolve a host name, in this case let's just edit the C:\Windows\System32\drivers\etc\hosts file and add an entry for -</p>  <blockquote>   <p>127.0.0.1 dynamicipiisextensiononazure.localhost.com</p> </blockquote>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image004.png"><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="clip_image004" border="0" alt="clip_image004" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image004_thumb.png" width="441" height="222" /></a></p>  <p>Make sure you can ping 'dynamicipiisextensiononazure.localhost.com'</p>  <blockquote>   <p><em>Tip: if you have a local DNS server, configure it so all requests to *.localhost.com resolves to 127.0.0.1; this allows all developers to easily setup different sites with different host names, and easily resolve to their localhost. If you prefer, change localhost.com to *.dev.yourdomain.com or whatever domain you work with locally.</em></p> </blockquote>  <p>Now open up IIS Manager -</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image005.png"><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="clip_image005" border="0" alt="clip_image005" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image005_thumb.png" width="265" height="237" /></a></p>  <p>Right click on 'Sites' and choose 'add web site', then fill it with the details below -</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image006.png"><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="clip_image006" border="0" alt="clip_image006" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image006_thumb.png" width="441" height="428" /></a></p>  <blockquote>   <p><em>Tip: Click on 'Application Pools' then double-click on &quot;DynamicIPIISExtensionOnAzure&quot; and make sure you are using the .NET Framework 4.0; use the latest.</em></p> </blockquote>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image007.png"><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="clip_image007" border="0" alt="clip_image007" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image007_thumb.png" width="366" height="353" /></a></p>  <p>Now open your favorite browser and point it to <a href="http://dynamicipiisextensiononazure.localhost.com">http://dynamicipiisextensiononazure.localhost.com</a> - you should see a page that looks like this:</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image008.png"><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="clip_image008" border="0" alt="clip_image008" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image008_thumb.png" width="447" height="281" /></a></p>  <p>Ok, we are done! Thank you for reading, good-bye. </p>  <p>We just got started, so fasten your seatbelts, and let's now create a page that will help us test the &quot;Dynamic IP Restrictions&quot; IIS extension.</p>  <p>To learn about all of the options available to configure the extension, check this great article by 'N. Lala' -</p>  <blockquote>   <p><em>Using Dynamic IP Restrictions        <br /></em><a href="http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/">http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/</a></p> </blockquote>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image009.png"><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="clip_image009" border="0" alt="clip_image009" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image009_thumb.png" width="430" height="256" /></a></p>  <p>Go read it now, so we are on the same page on how the extension works.</p>  <p>…</p>  <p>No really, go read it, I'll wait.</p>  <p>Next we are going to create a page that allows us to test the IIS extension by simulating a higher number of requests per second from the same IP that we allow. This is the same test page that N. Lala described in the article above.</p>  <p>Right-click on the &quot;DynamicIPIISExtensionOnAzure&quot; project to add a new page, let's call it &quot;test.aspx&quot; -</p>  <p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image010.png"><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="clip_image010" border="0" alt="clip_image010" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image010_thumb.png" width="432" height="259" /></a></p>  <p>Copy and paste this code into the new page -</p>  <pre class="brush: html">&lt;%@ Page&#160; Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot;&#160; CodeBehind=&quot;test.aspx.cs&quot;&#160; Inherits=&quot;DynamicIPIISExtensionOnAzure.test&quot; %&gt;
 
&lt;!DOCTYPE&#160; html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;&#160; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;&#160; &lt;script runat=&quot;server&quot;&gt;
protected void Page_Load(object sender, EventArgs e)
{&#160;&#160; System.Threading.Thread.Sleep(3000);
}
&lt;/script&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&#160;&#160; &lt;head id=&quot;Head1&quot; runat=&quot;server&quot;&gt;&#160;&#160;&#160;&#160; &lt;title&gt;Dynamic IP IIS Extension on Windows Azure Test&lt;/title&gt;&#160;&#160; &lt;/head&gt;&#160;&#160; &lt;body&gt;&#160;&#160;&#160;&#160; &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;div&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h1&gt;Dynamic IP IIS Extension on Windows Azure Test.&lt;/h1&gt;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/div&gt;&#160;&#160;&#160;&#160; &lt;/form&gt;&#160;&#160; &lt;/body&gt;
&lt;/html&gt;</pre>

<p>The page should look like this now -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image011.png"><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="clip_image011" border="0" alt="clip_image011" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image011_thumb.png" width="455" height="205" /></a></p>

<blockquote>
  <p><em>Note: I like working with a dark background, so some of these screenshots may look a bit different than the standard Visual Studio color scheme.</em></p>
</blockquote>

<p>Compile the project and open the 'test.aspx' on your browser - it should look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image012.png"><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="clip_image012" border="0" alt="clip_image012" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image012_thumb.png" width="461" height="118" /></a></p>

<p>Click refresh a few times, it should look the same. Don't hurt yourself, but refresh as fast as you can... and it should still look the same.</p>

<p>Now, we get to one of the juicy parts - open up IIS Manager and you should see the &quot;Dynamic IP Restrictions&quot; extension installed -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image013.png"><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="clip_image013" border="0" alt="clip_image013" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image013_thumb.png" width="455" height="290" /></a></p>

<p>Notice that you can configure the &quot;Dynamic IP&quot; extension for one site or for all sites, at the computer level -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image014.png"><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="clip_image014" border="0" alt="clip_image014" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image014_thumb.png" width="450" height="305" /></a></p>

<p>Double-click on the &quot;Dynamic IP&quot; extension and you'll be able to configure it - </p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image015.png"><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="clip_image015" border="0" alt="clip_image015" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image015_thumb.png" width="452" height="396" /></a></p>

<p>Read the <a href="http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/">article mentioned above</a> if you are still not sure what these parameters mean.</p>

<p><strong>2. Command Line Configuration</strong></p>

<p>You can use the UI to configure the extension, but there's also another way. The 'Dynamic IP' extension stores its configuration in the IIS file applicationHost.config -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image016.png"><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="clip_image016" border="0" alt="clip_image016" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image016_thumb.png" width="452" height="301" /></a></p>

<p>Open up a cmd line window as an administrator and run this (one line) -</p>

<pre class="brush: powershell">%WINDIR%\system32\inetsrv\appcmd.exe set config 
 -section:system.webServer/security/dynamicIpSecurity 
 /denyByConcurrentRequests.enabled:&quot;True&quot; 
 /denyByConcurrentRequests.maxConcurrentRequests:&quot;2&quot; 
 /denyByRequestRate.enabled:&quot;True&quot; 
 /denyByRequestRate.maxRequests:&quot;10&quot; 
 /denyByRequestRate.requestIntervalInMilliseconds:&quot;1000&quot; 
 /commit:apphost</pre>

<p>Notice we set maxConcurrentRequests to '2'.</p>

<blockquote>
  <p><em>Tip: use </em><a href="http://www.autohotkey.com/"><em>AutoHotKey</em></a><em> to copy and paste (CTRL-V) the above command directly into the cmd line window. You should not get any errors, it should look like this -</em></p>
</blockquote>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image017.png"><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="clip_image017" border="0" alt="clip_image017" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image017_thumb.png" width="473" height="63" /></a></p>

<p>Load the applicationHost.config file in your favorite text editor and check the &lt;dynamicIpSecurity&gt; section.</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image018.png"><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="clip_image018" border="0" alt="clip_image018" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image018_thumb.png" width="454" height="66" /></a></p>

<blockquote>
  <p><em>Tip: use </em><a href="http://notepad-plus-plus.org/download/v6.0.html"><em>NotePad++</em></a><em> (</em><a href="http://notepad-plus-plus.org/"><em>http://notepad-plus-plus.org/</em></a><em>) and you'll get notifications as the file changes -</em></p>
</blockquote>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image019.png"><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="clip_image019" border="0" alt="clip_image019" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image019_thumb.png" width="456" height="123" /></a></p>

<p>To verify our changes are in effect, let's go back to IIS Manager, (if needed) close, then re-open the 'Dynamic IP' extension configuration page -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image020.png"><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="clip_image020" border="0" alt="clip_image020" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image020_thumb.png" width="441" height="233" /></a></p>

<p>Notice the UI is reading from the updated configuration file and the 'Maximum number of concurrent requests' is now '2'. You can use the UI to make settings changes, for example change the 'Deny Action Type' to 'Send 403 (Forbidden)' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image021.png"><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="clip_image021" border="0" alt="clip_image021" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image021_thumb.png" width="264" height="86" /></a></p>

<p>You'll notice the applicationHost.config file changes, the &lt;dynamicIpSecurity&gt; node is updated with a 'denyAction=Forbidden' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image022.png"><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="clip_image022" border="0" alt="clip_image022" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image022_thumb.png" width="463" height="65" /></a></p>

<p>We can now append '/denyAction:&quot;Forbidden&quot;' to our command, like this (one line) -</p>

<pre class="brush: powershell"> %WINDIR%\system32\inetsrv\appcmd.exe set config 
 -section:system.webServer/security/dynamicIpSecurity 
 /denyAction:&quot;Forbidden&quot; 
 /denyByConcurrentRequests.enabled:&quot;True&quot; 
 /denyByConcurrentRequests.maxConcurrentRequests:&quot;2&quot; 
 /denyByRequestRate.enabled:&quot;True&quot; 
 /denyByRequestRate.maxRequests:&quot;10&quot; 
 /denyByRequestRate.requestIntervalInMilliseconds:&quot;1000&quot; 
 /commit:apphost</pre>

<p>It should look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image023.png"><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="clip_image023" border="0" alt="clip_image023" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image023_thumb.png" width="476" height="67" /></a></p>

<p>Close, then re-open the 'Dynamic IP' extension configuration page and you should see the 'Deny Action Type' is set to 403 -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image024.png"><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="clip_image024" border="0" alt="clip_image024" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image024_thumb.png" width="439" height="332" /></a></p>

<p>Now let's go back to the 'test.aspx' page on your browser; refresh the page fast - after a few times you should see the 403 error -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image025.png"><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="clip_image025" border="0" alt="clip_image025" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image025_thumb.png" width="416" height="316" /></a></p>

<p>You've just stopped &quot;anonymous&quot; Chinese script kitties (like <a href="http://techcrunch.com/2011/03/04/wordpress/">these jerks that attacked WordPress in 2011</a>) from sending hundreds of thousands of requests from a few machines and bringing down your servers. <strong>Nicely done!</strong></p>

<blockquote>
  <p><em>Tip: if you need to find out what files an application is modifying, use SysInternal's Process Monitor - </em><a href="http://technet.microsoft.com/en-us/sysinternals/bb896645"><em>http://technet.microsoft.com/en-us/sysinternals/bb896645</em></a><em> ; it works when running desktop apps or command line apps; we used it to find out which file(s) were changing when we made changes to the 'Dynamic IP' extension, using IIS Manager or appcmd.exe - in this case IIS' applicationHost.config.</em></p>
</blockquote>

<p><strong>3. Local Development - Windows Azure Emulator and Startup Tasks</strong></p>

<p>Up to this point, we've installed and configured the IIS extension, and we tested it out. Next we'll make sure it runs in the local Windows Azure Fabric, the 'emulator'.</p>

<p>Right-click on the 'DynamicIPIISExtensionOnAzure' solution and choose &quot;Add &gt; New Project&quot;; for the project type, select &quot;Windows Azure Project&quot;, then name it 'DynamicIPIISExtensionOnAzure.deploy' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image026.png"><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="clip_image026" border="0" alt="clip_image026" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image026_thumb.png" width="446" height="264" /></a></p>

<p>The current version of the Windows Azure SDK forces you to add a new web or worker role, so add a new 'Visual C# &gt; ASP.NET Web Role' (we'll delete it later) -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image027.png"><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="clip_image027" border="0" alt="clip_image027" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image027_thumb.png" width="439" height="258" /></a></p>

<p>Now, let's add the earlier ASP.NET site we created as a web role to our Azure project; right-click on 'Roles &gt; Web Role Project in solution…' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image028.png"><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="clip_image028" border="0" alt="clip_image028" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image028_thumb.png" width="441" height="119" /></a></p>

<p>Select the 'DynamicIPIISExtensionOnAzure' project we worked on earlier -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image029.png"><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="clip_image029" border="0" alt="clip_image029" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image029_thumb.png" width="430" height="343" /></a></p>

<p>You can now remove 'WebRole1' from the Azure project's 'Roles' and delete it - your solution should now look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image030.png"><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="clip_image030" border="0" alt="clip_image030" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image030_thumb.png" width="297" height="339" /></a></p>

<p>Here's what it should look like in file explorer -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image031.png"><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="clip_image031" border="0" alt="clip_image031" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image031_thumb.png" width="445" height="247" /></a></p>

<p>Right-click on the solution and choose 'Build', make sure all projects compile without errors -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image032.png"><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="clip_image032" border="0" alt="clip_image032" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image032_thumb.png" width="446" height="56" /></a></p>

<p>When deploying your web role to the Azure cloud, we need to install the IIS extension and configure it. Earlier we found out how to configure the IIS extension using the command line, it's now time to use that in what Azure experts call a 'Startup Task' (<a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg456327.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/gg456327.aspx</a>).</p>

<p>Create a folder, name it 'c:\sandbox\DynamicIPIISExtensionOnAzure\Startup' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image033.png"><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="clip_image033" border="0" alt="clip_image033" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image033_thumb.png" width="444" height="220" /></a></p>

<p>Now using your favorite text editor (should it be <a href="http://notepad-plus-plus.org/" target="_blank">NotePad++</a> by now?), copy and paste the text below into a new file we’ll name ‘DynamicIPRestrictions.cmd’</p>

<pre class="brush: powershell">
@echo off
setlocal

if "%EMULATED%"=="true" goto :EOF

REM Install Dynamic IP Restrictions IIS Extension
Startup\dynamiciprestrictions_beta2_x64.msi /qn

REM Configure Dynamic IP Restrictions IIS Extension

%WINDIR%\system32\inetsrv\appcmd.exe set config 
 -section:system.webServer/security/dynamicIpSecurity 
 /denyAction:"Forbidden" 
 /denyByConcurrentRequests.enabled:"True" 
 /denyByConcurrentRequests.maxConcurrentRequests:"2" 
 /denyByRequestRate.enabled:"True" 
 /denyByRequestRate.maxRequests:"10" 
 /denyByRequestRate.requestIntervalInMilliseconds:"1000" 
 /commit:apphost
</pre>
<p>Notes:</p>

<ul>
  <li>The first time you may want to remove the line &quot;if &quot;%EMULATED%&quot;==&quot;true&quot; goto :EOF&quot; - this allows you to test the startup task locally. </li>

  <li>Once you get it working, put the line back, so you don't install the MSI and run appcmd.exe every time you run in the Azure emulator. </li>
</ul>

<ul>
  <li>It might take a few tries before you get it right, un-install the MSI manually before trying again. </li>
</ul>

<ul>
  <li>This sounds time consuming, and it is - but it takes way less time to test out your azure startup task this way, then by actually deploying your roles to the cloud. </li>
</ul>

<p>Save the file to 'c:\sandbox\DynamicIPIISExtensionOnAzure\Startup\DynamicIPRestrictions.cmd' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image034.png"><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="clip_image034" border="0" alt="clip_image034" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image034_thumb.png" width="434" height="188" /></a></p>

<p>Copy the MSI file you downloaded earlier from <a href="http://www.iis.net/download/dynamiciprestrictions">http://www.iis.net/download/dynamiciprestrictions</a> into the 'c:\sandbox\DynamicIPIISExtensionOnAzure\Startup' folder; since all Windows Azure virtual machines run 'Windows 2008 Server R2 x64', make sure you use the x64 MSI file -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image035.png"><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="clip_image035" border="0" alt="clip_image035" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image035_thumb.png" width="433" height="129" /></a></p>

<p>Go back to Visual Studio, make sure you 'show all files', then select the 'Startup' folder, right-click and choose 'Include In Project' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image036.png"><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="clip_image036" border="0" alt="clip_image036" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image036_thumb.png" width="429" height="444" /></a></p>

<p>In 'Solution Explorer', right-click on 'DynamicIPRestrictions.cmd &gt; Properties', then make set 'Build Action' to 'Content', and 'Copy to Output Directory' to 'Copy always'; do the same for the MSI file -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image037.png"><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="clip_image037" border="0" alt="clip_image037" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image037_thumb.png" width="286" height="110" /></a></p>

<p>Your project should now look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image038.png"><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="clip_image038" border="0" alt="clip_image038" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image038_thumb.png" width="424" height="230" /></a></p>

<p>Now, under the 'DynamicIPRestrictionsOnAzure.deploy' project, double-click on the ServiceDefinition.csdef file and replace it with this -</p>

<pre class="brush: xml">
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="DynamicIPIISExtensionOnAzure.Deploy" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
	<WebRole name="DynamicIPIISExtensionOnAzure" vmsize="Small">
		<Startup>
			<Task taskType="simple" commandLine="Startup\DynamicIPRestrictions.cmd" executionContext="elevated">
				<Environment>
					<Variable name="EMULATED">
						<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
					</Variable>
				</Environment>
			</Task>
		</Startup>
		<Sites>
			<Site name="Web">
				<Bindings>
					<Binding name="Endpoint1" endpointName="Endpoint1" />
				</Bindings>
			</Site>
		</Sites>
		<Endpoints>
			<InputEndpoint name="Endpoint1" protocol="http" port="8080" />
		</Endpoints>
		<Imports>
			<Import moduleName="Diagnostics" />
		</Imports>
	</WebRole>
</ServiceDefinition>
</pre>

<p>It should look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image039.png"><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="clip_image039" border="0" alt="clip_image039" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image039_thumb.png" width="445" height="153" /></a></p>

<p>Compile and make sure there are no errors, your solution in file explorer should now look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image040.png"><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="clip_image040" border="0" alt="clip_image040" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image040_thumb.png" width="416" height="462" /></a></p>

<p>Now run the 'DynamicIPRestrictionsOnAzure.deploy' project. Visual Studio will create the azure package, and deploy it to the local Azure emulator -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image041.png"><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="clip_image041" border="0" alt="clip_image041" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image041_thumb.png" width="454" height="143" /></a></p>

<p>In your system tray, you should see the Windows Azure tray icon and a message like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image042.png"><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="clip_image042" border="0" alt="clip_image042" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image042_thumb.png" width="287" height="97" /></a></p>

<p>If you open up the emulator, it should look like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image043.png"><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="clip_image043" border="0" alt="clip_image043" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image043_thumb.png" width="452" height="215" /></a></p>

<p>If you click on the 'Service Details' you can get the port, in this case our site is running in the emulator on port 8080 -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image044.png"><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="clip_image044" border="0" alt="clip_image044" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image044_thumb.png" width="452" height="107" /></a></p>

<p>Open up your browser, and point it to <a href="http://127.0.0.1:8080/test/aspx">http://127.0.0.1:8080/test/aspx</a> - you should see this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image045.png"><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="clip_image045" border="0" alt="clip_image045" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image045_thumb.png" width="449" height="104" /></a></p>

<p>Start refreshing the page fast, like a squirrel on a bullet - and the 'Dynamic IP Restrictions' rules should kick in - you should see something like this -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image046.png"><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="clip_image046" border="0" alt="clip_image046" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image046_thumb.png" width="450" height="129" /></a></p>

<p>We've verified the 'Dynamic IP&quot; IIS extension works in the emulator and we've tested our startup task to make sure it installs the MSI and configures the IIS extension correctly. </p>

<p><strong>4. Deployment to Cloud - Window Azure Fabric</strong></p>

<p>Up to this point we have worked with the IIS extension locally and we've verified it's working as expected in both IIS and the local Azure emulator. It's time now to launch it to space, and deploy to the Windows Azure cloud.</p>

<blockquote>
  <p><em>Note: you will need a subscription to Windows Azure to continue.</em></p>
</blockquote>

<p>Point your browser to <a href="https://windows.azure.com/">https://windows.azure.com/</a> and you should see the 'Windows Azure Portal' - a Silverlight piece of art (I am not being sarcastic, I really like it). Create a new service under one of your subscriptions, call it &quot;DynamicIPIISExtensionOnAzure&quot; -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image047.png"><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="clip_image047" border="0" alt="clip_image047" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image047_thumb.png" width="458" height="369" /></a></p>

<p>For the DNS name, chose 'DynamicIPIISExtensionOnAzure.cloudapp.net' - if not available chose something else.</p>

<p>Go back to Visual Studio, right-click on the '.deploy' project and choose 'Publish' -</p>

<p>Note: in our organization we use Team Foundation Server (TFS) and we have deployment builds that will do some of this work for us. To keep things simple, in this article I use Visual Studio to manually deploy our service.</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image048.png"><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="clip_image048" border="0" alt="clip_image048" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image048_thumb.png" width="438" height="384" /></a></p>

<p>Go through the 'Windows Azure Publish' wizard and choose your subscription -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image049.png"><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="clip_image049" border="0" alt="clip_image049" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image049_thumb.png" width="427" height="288" /></a></p>

<p>Make sure you configure 'Remote Desktop', define:</p>

<p>- the username as 'dynamicip' 
  <br />- the password as 'IISextension456' (or whatever you prefer, just remember it)</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image050.png"><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="clip_image050" border="0" alt="clip_image050" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image050_thumb.png" width="425" height="288" /></a></p>

<p>Target the 'Production' slot and click 'Publish' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image051.png"><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="clip_image051" border="0" alt="clip_image051" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image051_thumb.png" width="427" height="286" /></a></p>

<p>Visual Studio will do its magic and start the deployment process -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image052.png"><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="clip_image052" border="0" alt="clip_image052" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image052_thumb.png" width="433" height="76" /></a></p>

<p>It will compile and create the Azure package and will upload it to your storage account -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image053.png"><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="clip_image053" border="0" alt="clip_image053" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image053_thumb.png" width="427" height="173" /></a></p>

<p>Go back to the Windows Azure portal, and after a few moments you will see your service being updated -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image054.png"><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="clip_image054" border="0" alt="clip_image054" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image054_thumb.png" width="424" height="279" /></a></p>

<p>Since we chose the 'Production' slot, our web role is initialized by the Azure Fabric controller -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image055.png"><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="clip_image055" border="0" alt="clip_image055" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image055_thumb.png" width="429" height="144" /></a></p>

<p>Back in Visual Studio, we are getting similar feedback -</p>

<blockquote>
  <p><em>Tip: that's what's great about desktop and Silverlight applications - there's no need to 'refresh the screen' like you need to with non Ajax browser apps - it's all seamless (did you know Visual Studio 2010 is written in WPF?)</em></p>
</blockquote>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image056.png"><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="clip_image056" border="0" alt="clip_image056" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image056_thumb.png" width="453" height="124" /></a></p>

<p>After a few more moments, the fabric controller is done and we see our web role is starting up -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image057.png"><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="clip_image057" border="0" alt="clip_image057" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image057_thumb.png" width="458" height="135" /></a></p>

<p>In Visual Studio, we see the deployment is complete -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image058.png"><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="clip_image058" border="0" alt="clip_image058" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image058_thumb.png" width="455" height="117" /></a></p>

<p>And on the Azure portal we see our web role is 'Ready' to rock'n'roll -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image059.png"><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="clip_image059" border="0" alt="clip_image059" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image059_thumb.png" width="454" height="68" /></a></p>

<p>Now open up your browser and point it to <a href="http://DynamicIPIISExtensionOnAzure.cloudapp.net:8080/test.aspx">http://DynamicIPIISExtensionOnAzure.cloudapp.net:8080/test.aspx</a> (or whatever DNS host you chose when you setup your Azure service above) - and you should see our friendly message -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image060.png"><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="clip_image060" border="0" alt="clip_image060" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image060_thumb.png" width="458" height="100" /></a></p>

<p>Now start refreshing the page like a Duracell Bunny fully charged - and we should see the 'Dynamic IP' extension… now working in the Azure cloud!</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image061.png"><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="clip_image061" border="0" alt="clip_image061" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image061_thumb.png" width="462" height="139" /></a></p>

<p>Congratulation, you successfully deployed your web site to the Windows Azure Cloud and stopped evil Russian hackers from bringing down your service (<a href="http://www.techspot.com/news/47582-kaspersky-ddos-attacks-57-more-powerful-in-h2-2011-russia-tops-list.html">28% of DDOS attacks in H2 2011 originated in Russia and Ukraine</a>).</p>

<p><strong>Bonus Points - Remote Desktop (RDP) to Azure VM</strong></p>

<p>If you need to troubleshoot the configuration of the IIS extension when your web role is running in the cloud, one way to do it is by using a remote desktop connection, just like you'd connect to a physical server.</p>

<p>Back on the Windows Azure Portal, select one instance of the DynamicIPIISExtensionOnAzure as show below -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image062.png"><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="clip_image062" border="0" alt="clip_image062" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image062_thumb.png" width="460" height="211" /></a></p>

<p>We only deployed one instance, so it's name is DynamicIPIISExtensionOnAzure_IN_0, the &quot;IN&quot; stands for &quot;Instance&quot;. It's easy to deploy 2 or 20 instances, by simply editing your ServiceDefinition.csdef file.</p>

<p>After you've selected DynamicIPIISExtensionOnAzure_IN_0, click on 'Connect'; if using IE, you may see the dialog below ' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image063.png"><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="clip_image063" border="0" alt="clip_image063" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image063_thumb.png" width="464" height="44" /></a></p>

<p>Click 'Open' and you'll see the standard RDP dialog, click 'Connect' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image064.png"><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="clip_image064" border="0" alt="clip_image064" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image064_thumb.png" width="464" height="270" /></a></p>

<p>Enter the username and password we defined above:</p>

<p>- the username as 'dynamicip' 
  <br />- the password as 'IISextension456' (or whatever you defined)</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image065.png"><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="clip_image065" border="0" alt="clip_image065" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image065_thumb.png" width="455" height="357" /></a></p>

<p>You'll get the helpful dialog you're connecting to your virtual machine in the cloud -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image066.png"><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="clip_image066" border="0" alt="clip_image066" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image066_thumb.png" width="449" height="150" /></a></p>

<p>Followed by the certificate warning, click 'Yes' -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image067.png"><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="clip_image067" border="0" alt="clip_image067" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image067_thumb.png" width="443" height="445" /></a></p>

<p>You're now logged in on your Windows Azure virtual machine - running in Hong-Kong, Singapore, Dublin, or Chicago - depending on which data center you chose. Start IIS Manager, and you should see the 'Dynamic IP Restrictions' IIS extension installed - </p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image068.png"><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="clip_image068" border="0" alt="clip_image068" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image068_thumb.png" width="465" height="319" /></a></p>

<p>Double click on it, and you should see the settings you defined in your startup task, using appcmd.exe -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image001_15.png"><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="clip_image001" border="0" alt="clip_image001" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image001_thumb_15.png" width="455" height="316" /></a></p>

<p>If you want to go the extra mile, open up the applicationHost.config -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image002_15.png"><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="clip_image002" border="0" alt="clip_image002" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image002_thumb_15.png" width="452" height="148" /></a></p>

<p>Use notepad, and you should see our familiar settings in the familiar XML -</p>

<p><a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image003_15.png"><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="clip_image003" border="0" alt="clip_image003" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image003_thumb_15.png" width="451" height="105" /></a></p>

<p>Pretty amazing times we live in - we can create and deploy a new web service in literally minutes, at fractions of the cost from just a few years back. The world is full of possibilities.</p>

<p><a href="http://www.ehuna.org/files/DynamicIPIISExtensionOnAzure.zip" target="_blank">Download DynamicIPIISExtensionOnAzure.zip</a> (612KB)</p>

<p><strong>Links</strong></p>

<ul>
  <li>Download the &quot;Dynamic IP Restrictions&quot; IIS extension 
    <ul>
      <li><a href="http://www.iis.net/download/dynamiciprestrictions">http://www.iis.net/download/dynamiciprestrictions</a> </li>
    </ul>
  </li>
</ul>

<ul>
  <li>Official help on using the &quot;Dynamic IP Restrictions&quot; IIS extension 
    <ul>
      <li><a href="http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/">http://learn.iis.net/page.aspx/548/using-dynamic-ip-restrictions/</a> </li>
    </ul>
  </li>
</ul>

<ul>
  <li>Great blog post on the &quot;Dynamic IP Restrictions&quot; IIS extension 
    <ul>
      <li><a href="http://blog.ntotten.com/2011/04/26/iis-extensions-on-windows-azure/">http://blog.ntotten.com/2011/04/26/iis-extensions-on-windows-azure/</a> </li>
    </ul>
  </li>
</ul>

<p>&#160;</p>

<p>Our test site -</p>

<ul>
  <li>Our test page, running locally in IIS 
    <ul>
      <li><a href="http://dynamicipiisextensiononazure.localhost.com/test.aspx">http://dynamicipiisextensiononazure.localhost.com/test.aspx</a> </li>
    </ul>
  </li>
</ul>

<ul>
  <li>Our test page, running locally in the Azure Emulator 
    <ul>
      <li><a href="http://127.0.0.1:8080/test.aspx">http://127.0.0.1:8080/test.aspx</a> </li>
    </ul>
  </li>
</ul>

<ul>
  <li>Our test page, running in the Windows Azure cloud 
    <ul>
      <li><a href="http://dynamicipiisextensiononazure.cloudapp.net:8080/test.aspx">http://dynamicipiisextensiononazure.cloudapp.net:8080/test.aspx</a> </li>
    </ul>
  </li>
</ul>

<p>
  <br />I'm <a href="http://twitter.com/ehuna">@ehuna</a>, for more info see <a href="http://about.me/ehuna">http://about.me/ehuna</a> 

  <br />Good times!</p>

<p><a href="onenote:General.one#http//about.me/ehuna&amp;section-id={B266041A-B9F4-481F-BD5F-FE97AD0DB94B}&amp;page-id={4AC8C32F-919D-44E9-B120-1A75A28AAEF6}&amp;base-path=https://d.docs.live.net/2091f24d42c4d9cd/^.Documents/Personal (Web)"><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="clip_image004" border="0" alt="clip_image004" src="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_EA95/clip_image004_15.png" width="443" height="375" /></a></p>

<p><em>Tip: this blog post was written thanks to some heavy background music by Metallica, Disturbed, and the soundtracks from Tron, Inception, and ‘The Matrix’.</em> 

  <br /></p>
<a href="http://blog.ehuna.org/liveimages/How.NET-web-site-aka-Using-the-Dynamic-I_145E3/clip_image069.png">]]>
   </content>
</entry>
<entry>
   <title>How the current US payroll tax policies favors high income individuals, or how the rich cats are not paying their fair share in taxes</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/12/how_the_current_us_payroll_tax.html" />
   <id>tag:blog.ehuna.org,2011://9.387</id>
   
   <published>2011-12-19T02:38:00Z</published>
   <updated>2011-12-21T18:45:09Z</updated>
   
   <summary>There’s has been a lot of talk lately in the news on ‘payroll taxes’ and how Democrats and Republicans are unable to reach a deal. A Democrat, Barney Frank (http://en.wikipedia.org/wiki/Barney_Frank), made this point today in ‘The Great American Debate’: If...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="01 - General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>There’s has been a lot of talk lately in the news on ‘payroll taxes’ and how Democrats and Republicans are unable to reach a deal. </p>  <p>A Democrat, Barney Frank (<a href="http://en.wikipedia.org/wiki/Barney_Frank">http://en.wikipedia.org/wiki/Barney_Frank</a>), made this point today in ‘<a href="http://abcnews.go.com/Politics/transcript-great-american-debates/story?id=15182473#.Tu5em9Svjh8" target="_blank">The Great American Debate</a>’: </p>  <ul>   <li>If you make one hundred thousand dollars ($100,000) per year, you're taxed on 100% of your income. </li>    <li>If you make one million dollars ($1,000,000) per year, you're taxed on 10% of your income. </li> </ul>  <p>Yes, this makes no sense and is completely unfair – thanks to Barney Frank for brining it up.</p>  <ul><!--EndFragment--></ul>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/How-the-current-US-payroll-tax-policy_BA92/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-the-current-US-payroll-tax-policy_BA92/image_thumb.png" width="296" height="217" /></a>       <br /><em>The rich cats are not paying their fair share in taxes</em></p> </blockquote>  <p><em><strong>Breaking it Down</strong></em>     <br />Since this gets confusing fast and most of the media outlets are unable to clearly present facts that are not brain-dead simple, let’s break it down.&#160;&#160; Check out this payroll taxes article on Wikipedia -&#160; </p>  <p>&#160; <a href="http://en.wikipedia.org/wiki/Payroll_tax">http://en.wikipedia.org/wiki/Payroll_tax</a></p>  <p>Specifically, let’s take a look at the ‘Social Security and Medicare’ section&#160; -</p>  <blockquote>   <h5><i>Social Security and Medicare taxes</i></h5>    <p><i>Main article: <a href="http://en.wikipedia.org/wiki/Federal_Insurance_Contributions_Act_tax">Federal Insurance Contributions Act tax</a></i></p>    <p><i>Federal social insurance taxes are imposed equally on employers<sup><a href="http://en.wikipedia.org/wiki/Payroll_tax#cite_note-4">[5]</a></sup> and employees,<sup><a href="http://en.wikipedia.org/wiki/Payroll_tax#cite_note-5">[6]</a></sup> consisting of a tax of 6.2% of wages up to an annual wage maximum ($106,800 in 2010) for Social Security and a tax of 1.45% of all wages for Medicare.<sup><a href="http://en.wikipedia.org/wiki/Payroll_tax#cite_note-6">[7]</a></sup> For the year 2011, the employee's contribution has been temporarily reduced to 4.2%, while the employer's portion remained at 6.2%.<sup><a href="http://en.wikipedia.org/wiki/Payroll_tax#cite_note-7">[8]</a></sup> To the extent an employee's portion of the 6.2% tax exceeded the maximum by reason of multiple employers, the employee is entitled to a refundable <a href="http://en.wikipedia.org/wiki/Tax_credit">tax credit</a> upon filing an income tax return for the year.<sup><a href="http://en.wikipedia.org/wiki/Payroll_tax#cite_note-8">[9]</a></sup></i></p> </blockquote>  <p>So, confirming our original point above, for payroll taxes, and the amount we pay for Social Security -</p>  <ul>   <li>If you make one hundred thousand dollars ($100,000) per year, you're taxed on 100% of your income. </li>    <li>If you make one million dollars ($1,000,000) per year, you're taxed on 10% of your income. </li> </ul>  <p>This is completely unfair – as far as payroll and Social Security taxes, the rich should be taxed the same percentage the middle class does.&#160; </p>  <blockquote>   <p><em>Note: the current maximum social security benefit payment at retirement age of is $2,366 per month, or $28,392 per year.&#160; When the rich start paying their fair share we should take a look at these limits and adjust accordingly.</em></p> </blockquote>  <p>Maybe Social Security is not doomed after all – if only the rich paid their fair share?</p>  <blockquote>   <p><iframe height="315" src="http://www.youtube.com/embed/-YECcGWN5aY" frameborder="0" width="420" allowfullscreen="allowfullscreen"></iframe></p> </blockquote>  <blockquote>   <p><em>From HBO’s ‘The Wire’: ‘This game is rigged, man’</em></p> </blockquote>  <p>That's one of the issues that will come up during the 2012 US Presidential elections, with Democrats like Barney Frank and President Obama on the side of the middle class and the Republican nominee on the side of the rich.</p>  <p>There are many issues to think about during a US Presidential election, but if you are not making one million dollars per year, think about your own interests and vote Democrat next year.</p>]]>
      
   </content>
</entry>
<entry>
   <title>How to get a home phone number for $5/month with unlimited calls in the US and very low international rates (keeping your home phone number through Google Voice)</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/12/how_to_get_a_home_phone_number.html" />
   <id>tag:blog.ehuna.org,2011://9.386</id>
   
   <published>2011-12-04T05:05:00Z</published>
   <updated>2011-12-20T06:11:50Z</updated>
   
   <summary>About a month ago I transferred my cell number to ‘Google Voice’, a free service that enhances the capabilities of your phone. A video from Google that gives an overview of Google Voice Here are some of my favorite Google...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>About a month ago I transferred my cell number to ‘Google Voice’, a free service that enhances the capabilities of your phone.</p>  <blockquote>   <p><object width="420" height="315"><param name="movie" value="http://www.youtube.com/v/m4Q9MJdT5Ds?version=3&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/m4Q9MJdT5Ds?version=3&amp;hl=en_US" type="application/x-shockwave-flash" width="420" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>    <p><em>A video from Google that gives an overview of Google Voice</em></p> </blockquote>  <p>Here are some of my favorite Google Voice features, all free except for the (cheap) international outbound calling -</p>  <ul>   <li>Free calls in the US and Canada. </li>    <li>Free texting (SMS) in the US and Canada.&#160; Currently the lowest AT&amp;T text plan on a new line is $20/month, so this can save you a bundle. </li>    <li>Make and receive calls on my cell or on my PC, through Slype or Google Chat / Gmail. </li>    <li>Make cheap international calls – really cheap international calls, as low as 2 cents per minute to France or 6 cents per minute to Mexico. </li>    <li>Email and iOS notifications of voicemails including a transcription and an audio file I can listen to. </li>    <li>Screen calls and ask callers you don’t know to announce themselves, while allowing friends and family to directly call you (through custom defined ‘groups’). </li>    <li>Conference calls with multiple recipients for free. </li>    <li>Filter inbound calls in real-time and send to voicemail or ‘pick up the phone. </li>    <li>Record incoming calls. </li>    <li>Cool PC/Mac web based app, and iPhone &amp; iPad apps that integrate with Google contacts, allowing you to send and receive texts, get missed calls and voicemail notifications, listen to voicemails, and more. </li>    <li>When you travel, your friends and family call you on your US number and you can answer through Skype/Google Chat or on your home VoIP number.</li>    <li>You own your Google Voice number for life, and you can move across different carriers without having to notify friends and family of number changes. </li> </ul>  <p>With all these ‘pros’, what are the ‘cons’ of using Google Voice?&#160; Here are a couple -</p>  <ul>   <li>There’s limited support for MMS in Google Voice today – it works with Sprint, but does not work with most carriers yet.&#160; We don’t use MMS that often and we can always send a picture by email if we need to. </li>    <li>In the case of an earthquake, there’s a consensus that land lines work better than cell or internet based (VoIP) phones.&#160; Since earthquakes are fairly rare, we decided in the worst case scenario we’ll use our neighbor’s land line to coordinate through Janelle’s Dad, who lives in Oregon. </li> </ul>  <p>As you can see the benefits of using Google Voice greatly outweigh the minor inconveniences.&#160; I also ported my wife and my Mom’s cell numbers to their own Google Voice accounts and they are enjoying some of the above features as well.&#160; You don’t have to port your number to use Google Voice, but certain features only become useful when you do.</p>  <p>The Google Voice features are not only awesome, but since the service is free, it saves you tons of money.&#160; I wanted to port our home number to Google Voice – but unfortunately Google currently only allows for the transfer of cell numbers.&#160; So I started looking for workarounds - and found one!&#160; </p>  <p>See below for details on how you can port your hone number to Google Voice, and get all of the above features for $5 / month – you can continue using your existing standard home phone system but you get all of the above features for a fraction of the cost of a land line.</p>  <p>Good times!</p>  ]]>
      <![CDATA[  <p><strong><font size="3">How to get a home phone number for $5/month        <br />with unlimited calls in the US and very low international rates</font></strong></p>  <p><font size="3"><strong>(keeping your home phone number through Google Voice)</strong></font></p>  <p>Before you start, here’s what you’ll need -</p>  <ul>   <li>A broadband / high-speed connection to the Internet. </li>    <li>An existing phone number that you’d like to keep as your home number. </li> </ul>  <p>There are four easy steps we have to execute to port our current land line (or Vonage) to this setup:</p>  <ul>   <li>Step 1 – Sign up for Google Voice </li>    <li>Step 2 – Sign up for gHome </li>    <li>Step 3 – Port your home number from your existing carrier to T-Mobile </li>    <li>Step 4 – Port you number from T-Mobile to Google Voice </li> </ul>  <p>If you want to port your cell number, you can just execute step 1- and directly port your cell number to Google Voice.</p>  <p>If you are porting your home number, from a land line or voice-over-IP service (like Vonage), you need to follow through steps 2 through 4.</p>  <p><strong><font size="3">Step 1 – Sign up for Google Voice</font></strong></p>  <p>To signup for Google Voice, point your browser to <a href="http://www.gmail.com" target="_blank">http://www.gmail.com</a> and click on ‘Create An Account’ in the top right.&#160; </p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb.png" width="424" height="167" /></a>       <br /><em>It’s easy to sign up for a free new Google and Google Voice account</em></p> </blockquote>  <p>It’s free to get a Google account; if you already have a Google account, sign-in. If you’d like separate Google Voice accounts for your cell and home phone numbers sign out, then point your browser to <a href="http://www.gmail.com">http://www.gmail.com</a> and click on ‘Create An Account’ in the top right.</p>  <p>Once you have\ a Google account, point your browser to <a href="http://www.google.com/voice">http://www.google.com/voice</a> and setup your Google Voice account.&#160; Your Google Voice account comes with a temporary free local number that folks can call you on.&#160; You will need to add an existing wireless or land line that rings when someone calls your Google Voice number.&#160; </p>  <p>Once you’re done with the Google Voice signup, you then have three options -</p>  <p>1. If you don’t want to port any of your existing phone numbers to Google Voice – you’re done.&#160; But you will need to hand out this number to family and friends, and if you don’t and just use it to forward calls to it, you’re missing out on many of the great features of Google Voice.&#160; <strong>Therefore, this is not recommended.</strong></p>  <p>2. If you have a cell phone, you can easily port your number to Google Voice for a one-time fee of $20.&#160; For more information on how to do this, <a href="http://support.google.com/voice/bin/answer.py?hl=en&amp;answer=1065667" target="_blank">check out this help article from Google</a>.</p>  <blockquote>   <p><em>Note: when you port your number, make sure sure you are ‘out of contract’. If you still have a contract with your wireless carrier, you may be subject to early termination fees. Check with your carrier before porting your number to Google Voice.</em></p> </blockquote>  <p>3. If you have a land line (or Vonage), you can port your number to Google Voice.&#160; </p>  <p>Porting your land line to Google Voice is a bit more complicated than just porting your cell number, but it’s do-able – just follow the steps I describe below.</p>  <p><strong><font size="3">Step 2 – Sign up for gHome</font></strong></p>  <p>Google Voice is a service that sits ‘in front’ of other phone numbers – as someone calls your number you can configure Google Voice to ring other numbers.&#160; If you want to use your standard phone system with Google Voice, we need a cheap way to have a dial tone at home.</p>  <p>This is where ‘gHome’ comes in – it’s a service that gives you a voice-over=ip (VoIP) number for $5/month.&#160; You can find out more and sign up here -</p>  <p><a href="http://www.teltub.com/dc/solution?name=ghome&amp;ad=REF-5E1B53-A6808">https://www.teltub.com/dc/solution?name=ghome</a></p>  <p>Once you signup for a gHome account (also known as a TelTub/SIP account), you need to either configure an existing voice over ip router you own, or purchase a new one.&#160; To make it simple, I suggest you purchase a pre-configured TelTub router for $39.99 -</p>  <blockquote>   <p><a href="http://www.teltub.com/dc/solution?name=ghome&amp;ad=REF-5E1B53-A6808" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_3.png" width="399" height="220" /></a>       <br /><em>You can buy a pre-configured VoIP adapter to easily        <br />get your gHome service working – it’s literally plug-and-play</em></p> </blockquote>  <p>Once you receive your pre-configured TelTub router, simply plug your phone into it, and plug-it into your Internet broadband and start making calls.</p>  <p>Another cool benefit is that this router is so small (the size of a wallet), you can take it with you when you travel – effectively taking your home number overseas!</p>  <p><font size="3"><strong>Step 3 – Port your home number        <br />from your existing carrier to T-Mobile</strong></font></p>  <p>The next step is to port your home number to T-Mobile.&#160; Since Google Voice only supports porting cell numbers at this point, we first port the home number to a T-Mobile SIM card – allowing us to then port the number to Google Voice.</p>  <p>This is the most time consuming step, since you need to call T-Mobile customer service and deal with their dinosaur phone support.&#160; Depending on you have to deal with, this could be an easy process, or you may need to call them back a couple of times.</p>  <blockquote>   <p><a href="http://www.amazon.com/T-Mobile-Tmobile-Mobile-Prepaid-Activation/dp/B003X7RY06/ref=sr_1_1?ie=UTF8&amp;qid=1306527952&amp;sr=8-1" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_4.png" width="405" height="129" /></a>       <br /><em>A T-Mobile prepaid activation kit allows you to port your hone number to a T-Mobile SIM card, making it a wireless number that can be ported to Google Voice</em></p> </blockquote>  <p>Here’s what you need to do to port your home number to T-Mobile:</p>  <p>1) Acquire a prepaid T-Mobile activation kit – you can get one with a SIM card on Amazon for $3 here: <a href="http://www.amazon.com/T-Mobile-Tmobile-Mobile-Prepaid-Activation/dp/B003X7RY06/ref=sr_1_1?ie=UTF8&amp;qid=1306527952&amp;sr=8-1">http://www.amazon.com/T-Mobile-Tmobile-Mobile-Prepaid-Activation/dp/B003X7RY06/ref=sr_1_1?ie=UTF8&amp;qid=1306527952&amp;sr=8-1</a>     <br />    <br />2) Once you receive the prepaid activation kit, open it up and write down the following info:</p>  <blockquote>   <p>The 19 digit SIM Card Serial #, like this: 1234 XXXX YYYY ZZZ 567      <br />The 11 digit Activation Code, like this:&#160;&#160; 1234 XXX 5678</p> </blockquote>  <p>3) Call the T-Mobile wireless number transfer center at </p>  <blockquote>   <p>1-877-789-3106</p> </blockquote>  <p>If you have problems reaching the wireless number transfer center, you can also call the central customer service center at 1-800-T-MOBILE (1-800-866-2453).    <br />    <br />4) When the automated system starts say ‘prepaid’, and then ‘agent’.&#160; If you get different prompts, just follow the prompts until you can speak to an agent.     <br />    <br />5) Tell the T-Mobile customer service representative you want to port your number and that you have a prepaid activation kit in your hands.&#160; They will ask for some information, including:</p>  <blockquote>   <p>The phone number you want to port (your landline number)      <br />The name on your landline account       <br />The account number on your landline account       <br />      <br />The 19 digit SIM Card Serial # from step 2       <br />The 11 digit Activation Code from step 2       <br />The type of plan you want to sign up for, say ‘Pay as you go’       <br />Your date of birth       <br />A PIN number, say something easy like ‘2233’</p> </blockquote>  <p>Make sure you ask for your T-Mobile number (not a temporary T-Mobile phone number) – a 9 digit number, like this:</p>  <blockquote>   <p>T-Mobile Account #: 123 XXX 789</p> </blockquote>  <p>T-Mobile says such a transfer can take 2 to 10 days – in my case it took 48 hours and I did have to call T-Mobile a couple of times – the T-Mobile account number came in handy then.&#160; </p>  <p>You may or may not get a notice from your current landline carrier when the number is ported – in any case, make sure you are ‘out of contract’ with your carrier before porting your number, it may terminate your contract and you could incur penalty fees (rare, but possible with landlines or services&#160; like Vonage).</p>  <p>Try calling your old number a few times – once you see the old number is no longer ringing through your previous carrier, you’re ready to port your number from T-Mobile to Google Voice.</p>  <blockquote>   <p><em>Thank you to my friend and co-worker HH. and his son B. for all the help they provided in guiding me through this step</em>. </p> </blockquote>  <p><strong><font size="3">Step 4 – Port you number from T-Mobile to Google Voice</font></strong></p>  <p>Once you know your number has been transferred to T-Mobile, you can now port it to Google Voice.&#160; Here’s how to do it -</p>  <p>1) Open a browser and point it to <a href="http://www.google.com/voice">http://www.google.com/voice</a> and log-in.</p>  <p>2) Click on Settings &gt; Phones and under your current Google Voice number, click on ‘Port your number’.</p>  <p>You will then go through a wizard that asks you for the number to be ported and gives you more information on the porting process -</p>  <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_5.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_3.png" width="475" height="316" /></a>     <br /><em>After entering your number, Google Voice checks it’s a wireless number to make sure it can be ported.&#160; If you’ve ported your home number to the SIM card as outlined earlier, you are able to go through this step without problems</em></p>  <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_6.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_4.png" width="480" height="224" /></a>     <br /><em>To verify you really own the number you want ported, Google Voice calls your number and asks you to enter a 2 digit code (99 in the example above)</em></p>  <p>To get this to work, you’ll need to take the T-Mobile SIM card and insert it into a supporting phone.&#160; I was lucky enough to have a friend with an HTC Windows Phone 7 who was also a T-Mobile subscriber – so he took out his SIM card and inserted mine – and after clicking on ‘Call me now’, his phone rang and we entered the 2 digit code.</p>  <p>If you don’t know anyone who has a T-Mobile phone that would work with your prepaid SIM card, you can buy a cheap prepaid phone from <a href="http://prepaid-phones.t-mobile.com/">http://prepaid-phones.t-mobile.com/</a> for as low as $19.99.</p>  <p>Once Google Voice calls you and you enter the 2 digit code it takes up to 24 hours for the number to be ported.&#160; You will receive an email from Google once the porting is complete – congratulations, enjoy Google Voice!</p>  <p>For more details, see the ‘Port your number into Google Voice FAQ’ at <a href="http://support.google.com/voice/bin/answer.py?hl=en&amp;answer=1065667">http://support.google.com/voice/bin/answer.py?hl=en&amp;answer=1065667</a></p>  <p><strong><font size="3">Screenshots</font></strong></p>  <p><strong>Once you’ve ported your number to Google Voice, you can enjoy all of the features I mentioned above.&#160; Here are some screenshots of Google Voice on the PC, iPhone, and iPad -</strong></p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_7.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_5.png" width="348" height="338" /></a>       <br /><em>My Google Voice inbox on the PC, on the Chrome browser;&#160; <br />the inbox contains the incoming and outgoing call         <br />history, text (SMS) conversations, voicemails, and more.</em></p> </blockquote>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/google-voice-iphone-screenshot-sensitive-info-removed.jpg"><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="google-voice-iphone-screenshot-sensitive-info-removed" border="0" alt="google-voice-iphone-screenshot-sensitive-info-removed" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/google-voice-iphone-screenshot-sensitive-info-removed_thumb.jpg" width="344" height="457" /></a>       <br /><em>My Google Voice inbox on the iPhone</em></p>    <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/google-voice-contacts-screenshot-sensitive-info-removed.jpg"><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="google-voice-contacts-screenshot-sensitive-info-removed" border="0" alt="google-voice-contacts-screenshot-sensitive-info-removed" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/google-voice-contacts-screenshot-sensitive-info-removed_thumb.jpg" width="403" height="166" /></a>       <br /><em>Your Google contacts are integrated on Google Voice, Gmail, and the GV iPhone and iPad apps – so once you enter a contact, it syncs across all of these apps automatically</em></p>    <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_8.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_6.png" width="245" height="366" /></a>       <br /><em>To make a phone call from the Google Voice web site, you simply type in a phone number and choose with which phone you’d like to make the call.&#160; Google Voice than calls you and the recipient – you can call with your iPhone, Skype, Google Talk, or the TelTub SIP number we set up above.</em></p>    <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_9.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_7.png" width="247" height="351" /></a>       <br /><em>When you call an international number, Google Voice calls you and the recipient – this is how you bypass your carriers expensive international rates and can literally spend cents to speak hours – calling regular numbers (the recipients don’t even know you’re using Google Voice)</em></p>    <p><a href="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_10.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0b64749019ea_119ED/image_thumb_8.png" width="381" height="389" /></a></p> </blockquote>  <p><strong><font size="3">Links</font></strong></p>  <table border="1" cellspacing="0" cellpadding="2" width="463"><tbody>     <tr>       <td valign="top" width="189"><a title="http://www.google.com/googlevoice/about.html" href="http://www.google.com/googlevoice/about.html">http://www.google.com/            <br />googlevoice/about.html</a></td>        <td valign="top" width="272">Google Voice overview videos</td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://support.google.com/voice/bin/answer.py?hl=en&amp;answer=1065667">http://support.google.com/            <br />voice/bin/answer.py?hl=en&amp;answer=1065667</a></td>        <td valign="top" width="272">Port your number into Google Voice          <br />Frequently Asked Questions (FAQ)</td>     </tr>      <tr>       <td valign="top" width="189"><a title="https://www.google.com/voice/" href="https://www.google.com/voice/">https://www.google.com/voice/</a></td>        <td valign="top" width="272">Googie Voice Inbox, read and listen to your voicemails; view your sms conversations; make a call; send an sms; configure which numbers rings when someone calls your </td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://www.google.com/talk/">http://www.google.com/talk/</a></td>        <td valign="top" width="272">Google Talk allows you to make and receive calls on your PC – it’s like Skype, but integrates with Gmail and allows you to call standard US numbers for free.&#160; The sound quality is not as good as Skype, so I suggest using both.</td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://www.teltub.com/dc/solution?name=ghome&amp;ad=REF-5E1B53-A6808" target="_blank">https://www.teltub.com/            <br />dc/solution?name=ghome</a></td>        <td valign="top" width="272">gHome – gives you a voice over ip (VoIP) number that allows you to enjoy Google Voice on your home phone.</td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://www.amazon.com/T-Mobile-Tmobile-Mobile-Prepaid-Activation/dp/B003X7RY06/ref=sr_1_1?ie=UTF8&amp;qid=1306527952&amp;sr=8-1" target="_blank">Prepaid T-Mobile            <br />activation kit on Amazon</a></td>        <td valign="top" width="272">You need this kit which includes a SIM card to port your home number to T-Mobile, before porting it to Google Voice</td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://www.amazon.com/OBi110-Service-Bridge-Telephone-Adapter/dp/B0045RMEPI/ref=sr_1_1?ie=UTF8&amp;qid=1323026420&amp;sr=8-1" target="_blank">Obi110 on Amazon.com</a></td>        <td valign="top" width="272">OBi110 Voice Service Bridge and VoIP Telephone Adapter          <br />Another way to get Google Voice on your home phone – I haven’t used this but I have a friend who has and says it works well and requires no monthly fees</td>     </tr>      <tr>       <td valign="top" width="189"><a href="http://www.skype.com">http://www.skype.com</a>           <br /><a href="http://www.skype.com/intl/en-us/features/allfeatures/online-number/" target="_blank">Skype online number</a></td>        <td valign="top" width="272">Skype is the famous service that allows you to call or video call your friends and family all over the world for free.&#160; A ‘Skype online number’ integrates really well as a destination number within Google Voice.</td>     </tr>   </tbody></table>  <p><strong><font size="3">Conclusion</font></strong></p>  <p>The internet is disruptive – it allows companies like Google, Apple, and Rakuten to create new solutions that cost a fraction of the cost of existing services.&#160; </p>  <p>As young folks (who feel comfortable with new technologies) start using these services, dinosaurs like AT&amp;T, RCN, and Qwest will disappear (unless they start using cheaper digital alternatives themselves).&#160; </p>  <p>Not everyone is a grandma who keeps her expensive landline forever – use the latest services from the Silicon Valley companies to save money and enjoy features your dinosaur carrier can’t even dream of.</p>  <p>Good times.</p>]]>
   </content>
</entry>
<entry>
   <title>Access Netflix and Hulu from outside the US: make your Windows 7 computer a Wifi hotspot that shares a VPN outbound connection</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/11/access_netflix_and_hulu_from_o.html" />
   <id>tag:blog.ehuna.org,2011://9.385</id>
   
   <published>2011-11-06T01:10:00Z</published>
   <updated>2011-11-07T04:12:13Z</updated>
   
   <summary>Recently I travelled to to Europe and Mexico – and unfortunately I was unable to use US based content services such as Hulu.com or Netflix.com - Sample error message on Hulu.com: access denied from Mexico These content providers block access...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>Recently I travelled to to Europe and Mexico – and unfortunately I was unable to use US based content services such as Hulu.com or Netflix.com -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb.png" width="478" height="445" /></a>     <br /><em>Sample error message on Hulu.com: access denied from Mexico </em></p>  <p>These content providers block access to their services, based on your location and IP address.&#160; If you try to access their services from outside the United States, you get a message similar to the one above.</p>  <p>I found a way to get around this unfair blocking (unfair since I am a paying subscriber) and decided to share it here.</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_3.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_3.png" width="461" height="88" /></a>     <br />    <br />Some of the services that block non US based IPs: <a href="http://www.netflix.com" target="_blank">netflix.com</a>, <a href="http://www.hulu.com" target="_blank">hulu.com</a> (including <a href="http://www.hulu.com/plus" target="_blank">hulu plus</a>), <a href="http://www.hbogo.com/" target="_blank">hbogo.com</a>, and even <a href="http://www.youtube.com" target="_blank">youtube.com</a> (some videos are blocked).&#160; Follow the easy steps below and you can enjoy these US based services from anywhere in the world!</p>  <p>As always in the computer world, there are many different ways to achieve the same result. I’m a developer and I like to find simple and cheap solutions that I can share with friends and family - I am outlining here the easiest way I found to not only access the services from outside the US, but also a cool trick to share the same VPN network connection with other devices, such as phones or tablets.</p>  ]]>
      <![CDATA[  <p><strong>Access Netflix and Hulu from outside the US -      <br />      <br />Make your Windows 7 computer a Wifi       <br />hotspot that shares a VPN outbound connection</strong></p>  <p>Before you start, here’s what you’ll need -</p>  <ul>   <li>A Windows 7 laptop or desktop connected to a wireless network. </li>    <li>A broadband / high-speed connection to the Internet, to stream shows and movies (dial-up speed won’t cut it). </li>    <li>A connection to a US based VPN (I recommend strongvpn.com, see below). </li>    <li>One or more subscriptions to US based content services and a desire to use them from anywhere in the world from any of your devices (including your mobile devices such as an iPhone or iPad). </li> </ul>  <p><strong>Overview</strong></p>  <p>When accessing netflix.com or hulu.com from San Francisco, California – or any other city in the United States, we directly access the content on the content provider servers, like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_4.png" width="484" height="332" /></a></p>  <p>When accessing netflix.com or hulu.com from a city outside the United States, we first connect to a VPN provider, which then allows us to access the content on the content provider servers; in addition we can setup a wifi hotspot on our Windows 7 laptop or desktop, allowing our phones and tablets to access the content as well, like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_5.png" width="488" height="403" /></a></p>  <p>I’m supposed you are now located outside the US and you are connected to the Internet.&#160; At this point under Control Panel\Network and Internet\Network and Sharing Center you should be connected to the Internet, through a high-speed LAN or wireless connection – it should look something like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_6.png" width="491" height="181" /></a></p>  <p>You’ll also need a bit of ‘technical know-how’ – not much, but don’t try this if you don’t understand what is a ‘windows command prompt’.</p>  <p><strong>Step 1 – Connect to your VPN provider</strong></p>  <p>Using your Windows 7 laptop or desktop, connect your VPN provider.&#160; I use the ‘Open VPN’ connection through one of the ‘Lite Open’ packages from <a href="http://strongvpn.com/">http://strongvpn.com/</a> – but you can use one of a number of VPN providers.</p>  <p>If you do chose strongvpn.com, start the OpenVPN client, right-click &gt; connect.&#160; Once connected, you should see something like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_7.png" width="498" height="323" /></a></p>  <p>Under Control Panel\Network and Internet\Network Connections – you should have something like what you see below.&#160; The names may be different, so rename your connections so they make more sense – I’ll refer to the connection created when you installed the OpenVPN client as ‘Strong VPN Tap Adapter (OpenVPN) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_8.png" width="502" height="259" /></a></p>  <p>Once connected to your VPN service, open a browser to <a href="http://www.whatismyip.com/">http://www.whatismyip.com/</a>, verify you have the VPN IP address – this should be the US based IP, not your Mexico or non-US based IP -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_9.png" width="504" height="225" /></a></p>  <p>At this point under Control Panel\Network and Internet\Network and Sharing Center you should have two connections active – your original internet connection and the VPN connection.&#160; It should look something like this (note that Windows 7 here is showing the VPN connection (‘Unidentified Network’ below) with ‘No Internet Access’ – that was not the case) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_10.png" width="505" height="234" /></a></p>  <p>If you open a browser and access any of the content services such as <a href="http://www.netflix.com">http://www.netflix.com</a> or <a href="http://www.hulu.com">http://www.hulu.com</a> – it should just work – from anywhere in the world!</p>  <p><strong>Step 2 – Setup Windows 7 as a wireless (wifi) hotspot</strong></p>  <p>This is ‘icing on the cake’ – you don’t need to execute this step to access the US based content services.&#160; But if you are travelling with a Windows 7 laptop and a tablet or phone, or if you have a more permanent setup with a Windows 7 desktop in a location outside the US, this section is for you.</p>  <p>Your Windows 7 laptop (or desktop) can become a wifi access-point, routing the connections over a client station connection on the same wifi adapter or over an ethernet (LAN) connection.&#160; </p>  <p>Here’s how to do it -</p>  <p>- Open a command line window: Start &gt; cmd &gt; right-click &gt; 'run as administrator'    <br />- Type the command ‘netsh wlan set hostednetwork mode=allow ssid=hostedwifi key=a1b2c3d4e5’     <br />- Type the command ‘netsh wlan start hostednetwork’</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_11.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_11.png" width="469" height="147" /></a>     <br />    <br /><em>Notes:</em></p>  <ul>   <li><em>I named the wireless network 'hostednetwork' - you can call it whatever you'd like.</em> </li>    <li><em>I set the wireless key (password) with a value of 'a1b2c3d4e5' - you can set it to whatever you'd like.</em> </li>    <li><em>Don’t do this now, but later to stop your wireless network, type the command ‘netsh wlan stop hostednetwork’</em> </li> </ul>  <p>Now under Control Panel\Network and Internet\Network and Sharing Center you should see the three networks active – your original network connection, the VPN connection, and the wifi hotspot network '(‘hostedwifi’ below) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_12.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_12.png" width="474" height="262" /></a></p>  <p><strong>Step 3 – Share the VPN connection through the wifi hotspot</strong></p>  <p>Start &gt; Control Panel &gt; Network and Internet &gt; Network and Sharing Center &gt; Network Connections (also ‘Change adapter settings)</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_13.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_13.png" width="406" height="512" /></a></p>  <p>Right-click on &quot;Open VPN Tap Adapter (Strong VPN)&quot; and choose ‘Properties’ &gt; Sharing (Note: you may have this connection as another name such as 'Local Area Connection' – rename the connections accordingly)</p>  <p>Now check ‘Internet Connection Sharing’ and check &quot;Allow other network users to connect through this computer's Internet connection&quot; &gt; Home network connection: &quot;Wireless Network Connection&quot; (or whatever the name is for your configuration)</p>  <p>Now on your iPhone (or any other device) &gt; Settings &gt; Wi-Fi &gt; hostedwifi (enter key ‘a1b2c3d4e5’)</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_14.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_14.png" width="479" height="519" /></a></p>  <p>That's it!&#160; Your mobile device is now connected to the Internet through the wireless network on the Windows 7 computer (which is then using the VPN connection) - </p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_15.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_15.png" width="480" height="435" /></a></p>  <p>Here are a couple of additional advantages in creating a wifi hotspot on your Windows 7 laptop -</p>  <ul>   <li>Sometimes a hotel may only have a LAN connection in the room - by using the wifi hotspot you create on your Windows 7 computer, you can access the Internet from your phone or tablet. </li>    <li>VPN providers will typically charge you for additional VPN connections from other devices, such as your phone or tablet – by using the wifi hotspot you create on your Windows 7 computer, you avoid these extra charges. </li> </ul>  <p><strong>Step 4 – Enjoy the videos and movies!</strong></p>  <p>Open a browser and point it to <a href="http://www.netflix.com">http://www.netflix.com</a> – enjoy the movies and shows full screen or in the browser (subscription to Netflix.com required) – here’s a scene from ‘A Clockwork Orange’ (<a href="http://www.imdb.com/title/tt0066921/">http://www.imdb.com/title/tt0066921/</a>) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_16.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_16.png" width="486" height="337" /></a></p>  <p>Open a browser and point it to <a href="http://www.hbogo.com">http://www.hbogo.com</a> – enjoy the best shows cable/satellite tv can offer (subscription to HBO required) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_17.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_17.png" width="486" height="366" /></a></p>  <p>One of our favorite actors, Steve Buscemi (<a href="http://www.imdb.com/name/nm0000114/">http://www.imdb.com/name/nm0000114/</a>), in ‘Boardwalk Empire’ a current HBO hit set in prohibition times (<a href="http://www.hbo.com/boardwalk-empire/about/index.html">http://www.hbo.com/boardwalk-empire/about/index.html</a>) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_18.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_18.png" width="488" height="415" /></a></p>  <p>Watching ‘The Daily Show’ (<a href="http://www.thedailyshow.com">http://www.thedailyshow.com</a>) with Jon Stewart on hulu.com (subscription to ‘Hulu Plus’ highly recommended) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_19.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_19.png" width="490" height="454" /></a></p>  <p>Follow the steps above to setup your Windows 7 laptop or desktop as a wifi hotspot and watch the same scene from ‘A Clockwork Orange’ (<a href="http://www.imdb.com/title/tt0066921/">http://www.imdb.com/title/tt0066921/</a>) on your iPad2 -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_20.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_20.png" width="490" height="528" /></a></p>  <p><strong>Stop and cleanup</strong></p>  <p>Once you are done, stop the wifi hotspot we created and started earlier - </p>  <p>start &gt; cmd &gt; right-click &gt; 'run as administrator'    <br />netsh wlan stop hostednetwork</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_21.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_21.png" width="491" height="188" /></a></p>  <p>You should also disconnect from the VPN provider – if you are using StrongVPN.com, right-click on the OpenVPN client and choose ‘Disconnect’ – the icon in the system tray should then look like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_22.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Making-your-Windows-7-Laptop-a-Wifi-hots_F1B6/image_thumb_22.png" width="490" height="55" /></a></p>  <p><strong>Links</strong></p>  <p>Here are some links to services and products I researched before finalizing the solution above.</p>  <p>Here are some of the content services that block non-US IPs that I like to access from outside the US – </p>  <table border="1" cellspacing="0" cellpadding="2" width="491"><tbody>     <tr>       <td valign="top" width="170"><a href="http://www.netflix.com">http://www.netflix.com</a></td>        <td valign="top" width="319">Netflix, tons of movies and shows, tons of clients and ways to play the content, $7.99/month</td>     </tr>      <tr>       <td valign="top" width="170"><a href="http://www.hulu.com/">http://www.hulu.com</a></td>        <td valign="top" width="319">Hulu and Hulu Plus, tons of shows from the major American networks (ABC, CBS, NBC, and Fox) and other networks.&#160; $7.99/month for Hulu Plus.</td>     </tr>      <tr>       <td valign="top" width="170"><a href="http://www.hbogo.com/">http://www.hbogo.com</a></td>        <td valign="top" width="319">HboGo.com – tons of HBO shows and documentaries – subscription to HBO through cable or satellite required.</td>     </tr>      <tr>       <td valign="top" width="170"><a title="https://gamerewind.nfl.com" href="https://gamerewind.nfl.com">https://gamerewind.nfl.com</a></td>        <td valign="top" width="319">Watch the NFL (American Footballs) from anywhere!</td>     </tr>      <tr>       <td valign="top" width="170"><a href="http://www.last.fm/">http://www.last.fm</a></td>        <td valign="top" width="319">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="170"><a href="http://www.spotify.com/">http://www.spotify.com</a></td>        <td valign="top" width="319">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="170"><a title="http://www.zune.net" href="http://www.zune.net">http://www.zune.net</a></td>        <td valign="top" width="319">&nbsp;</td>     </tr>   </tbody></table>  <p>Note that' it’s not enough to just connect to a VPN provider, you do need a subscription to some of these services.</p>  <p>When searching for a VPN service, here are the products and sites I considered -</p>  <table border="1" cellspacing="0" cellpadding="2" width="493"><tbody>     <tr>       <td valign="top" width="222"><a title="http://strongvpn.com/" href="http://strongvpn.com/">http://strongvpn.com/</a></td>        <td valign="top" width="269">Great support, many cities, go with one of the ‘Lite Open’ plans with ‘OpenVPN’ support</td>     </tr>      <tr>       <td valign="top" width="222"><a href="https://www.goldenfrog.com/vyprvpn">https://www.goldenfrog.com/vyprvpn</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.raptorvpn.com/whmcs/">http://www.raptorvpn.com/whmcs/</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.comodo.com/trustconnect/">http://www.comodo.com/trustconnect/</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.ultrareach.com/">http://www.ultrareach.com/</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.hackingnetflix.com/">http://www.hackingnetflix.com</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://vpnfreedom.com/">http://vpnfreedom.com</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.hide-my-ip.com/">http://www.hide-my-ip.com</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://hidemyass.com/">http://hidemyass.com/</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://hotspotshield.com/">http://hotspotshield.com/</a></td>        <td valign="top" width="269">&nbsp;</td>     </tr>      <tr>       <td valign="top" width="222"><a href="http://www.connectify.me/">http://www.connectify.me/</a></td>        <td valign="top" width="269">An application that allows you to create a wifi hotspot on your Windows computer.&#160; It screwed up my network once, so I prefer the easier method outlined above.</td>     </tr>   </tbody></table>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title>How to securely access your Blink electric car charger from outside your home, using a proxy server (CCProxy)</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/08/how_to_securely_access_your_bl.html" />
   <id>tag:blog.ehuna.org,2011://9.384</id>
   
   <published>2011-08-14T00:10:00Z</published>
   <updated>2011-08-14T00:11:04Z</updated>
   
   <summary>Back in May we purchased a 100% electric car – the Nissan Leaf (http://www.nissanusa.com/leaf-electric-car) - we no longer need to stop at gas stations to “fill up”.&amp;#160; We charge up the Leaf using our ‘Blink’ (http://www.blinknetwork.com), a residential 240V charger,...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>Back in May we purchased a 100% electric car – the Nissan Leaf (<a href="http://www.nissanusa.com/leaf-electric-car">http://www.nissanusa.com/leaf-electric-car</a>) - we no longer need to stop at gas stations to “fill up”.&#160; </p>  <p>We charge up the Leaf using our ‘Blink’ (<a href="http://www.blinknetwork.com">http://www.blinknetwork.com</a>), a residential 240V charger, installed in our garage.</p>  <table border="0" cellspacing="1" cellpadding="2" width="482"><tbody>     <tr>       <td valign="top" width="145"><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb.png" width="135" height="217" /></a>           <br />          <br /><em>Our Blink 240V            <br />Residential charger.</em></td>        <td valign="top" width="332"><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_3.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_3.png" width="331" height="216" /></a>           <br />          <br /><em>The Blink’s internal web server -            <br />Main (Charging Status), Stats, Settings, Info, and more.</em></td>     </tr>   </tbody></table>  <p>The Blink has a bunch of features which you can manage through a touch screen.&#160; It also has an internal web server that allows us to check the Leaf’s charging status, daily and monthly stats, change its configuration, and more.&#160; The Blink runs a custom version of Linux and can be connected to a network through an Ethernet cable (LAN) or through wi-fi.</p>  <p>Once connected to your internal network, you can access the Blink’s web server by opening a browser and pointing it to its internal IP address – in our case 192.168.7.126 (I configured our DHCP server to always give the same IP address to the Blink).</p>  <p><em>External Access?</em></p>  <p>A couple of months ago, I was wondering if there was an easy way to access the Blink’s web server from outside my home, for example from my office.&#160; I can easily open a hole in our firewall and access the Blink – but unfortunately, the Blink does not offer a way to password protect most of its pages – so that would be highly dangerous.</p>  <p>I asked a question on the excellent <strong>mynissanleaf.com</strong> forums, wondering if anyone had any ideas on how to protect the Blink’s web pages so I could access it securely from outside of home -</p>  <p><strong>Password protect Blink when accessing from PC on network?</strong><a href="http://www.mynissanleaf.com/viewtopic.php?f=43&amp;t=4152">http://www.mynissanleaf.com/viewtopic.php?f=43&amp;t=4152</a></p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_4.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_4.png" width="427" height="182" /></a></p> </blockquote>  <p>There were a few answers, including setting up an SSH gateway and from that tunnel connect to the Blink – which is a good idea, but since I didn’t have anything like that already setup, it seemed a bit too time consuming.</p>  <p>A couple of days ago I was researching network software and I stumbled upon CCProxy (<a href="http://www.youngzsoft.net/ccproxy/">http://www.youngzsoft.net/ccproxy/</a>), an awesome proxy server for Windows.&#160; </p>  <blockquote>   <p><a href="http://www.youngzsoft.net/ccproxy/" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_5.png" width="370" height="272" /></a></p> </blockquote>  <p>From its web site, here are some of its features -</p>  <blockquote>   <p><em>CC Proxy Server can act as an HTTP, mail, FTP, SOCKS, news and telnet proxy server. It features powerful account management functions, including Internet access control, bandwidth control, Internet web filtering, content filtering and time control. It also provides web caching, online access monitoring, access logging and bandwidth usage statistics functions. As Windows proxy software, CCProxy is compatible with Windows 7/2008/2003/XP/Vista.</em></p> </blockquote>  <p>I quickly downloaded the ‘3 user’ version, which is free – and in literally minutes I had set it up so I could safely access the Blink from outside our home.&#160; Below I have additional details on how you could do the same.</p>  ]]>
      <![CDATA[  <p><strong>How to securely access your Blink      <br />electric car charger using a proxy server (CCProxy)</strong></p>  <p>I found a good way to securely access your Blink’s web server through a proxy server running on windows - the details on how to set this up are below.&#160; Please note that to execute this you will need -</p>  <ul>   <li>An understanding of how internal and external networks work. </li>    <li>Download and install software (as an administrator if running Windows Vista or Windows 7) </li>    <li>Manage your router and firewall </li>    <li>Manage your DHCP server </li>    <li>Manage your external dynamic IP address </li>    <li>A computer that runs 24x7 – or at least runs when you’re not at home when you need to access your internal resources. </li> </ul>  <p>If you feel uncomfortable executing any of the above items, contact a technical friend – geeks like to help.</p>  <p>Here’s how to securely access your Blink’s web server from outside your home -    <br />    <br /><strong>1. Download CCProxy      <br /></strong>    <br />&#160; <a href="http://www.youngzsoft.net/ccproxy/proxy-server-download.htm">http://www.youngzsoft.net/ccproxy/proxy ... wnload.htm</a>     <br />&#160; (3 user version is free)     <br />    <br /><strong>2. Install CCProxy      <br /></strong>    <br />I installed it on a netbook, which consumes very little power.&#160; We use this netbook for Zwave home automation (<a href="http://www.z-wave.com">http://www.z-wave.com</a>), and it’s always on - 24x7.&#160; Note that you'll need a computer running CCProxy to access your Blink from the outside of your house.     <br />    <br /><strong>3. Configure CCPRoxy, the proxy server for HTTP/HTTPS requests</strong></p>  <p>Enable HTTP, but turn off any protocols you won't use such as FTP, Mail, DNS, etc...    <br />Choose a random port, like 3843     <br />Make sure you setup authentication - username/password is a minimum, “username/password + IP or MAC address” is even better.     <br />    <br /><strong>4. Resolve your dynamic IP      <br />      <br /></strong>Signup for a free <a href="http://dyn.com/dns/">http://dyn.com/dns/</a> account, make sure you can resolve your home IP from the outside     <br />    <br /><strong>5. Update your router/firewall      <br /></strong>    <br />I suppose you have a router which acts as your firewall and by default you don’t allow any connections to your internal computers.     <br />Open a hole in your firewall and map port 3843 to the computer where CCProxy is running.     <br />Update your router/firewall to update your external IP on dyndns.com (or run the windows client).     <br />Make sure the firewall on the computer where CCProxy is running is off.     <br />    <br /><strong>6. Test out CCProxy with Firefox      <br /></strong>    <br />Make sure you can use your new proxy server from outside of your house     <br />I like to use Firefox (<a href="http://www.mozilla.com/en-US/firefox/new/">http://www.mozilla.com/en-US/firefox/new/</a>), since it allows me to setup a proxy just for Firefox, not for the whole operating system, which seems to be the case with Internet Explorer and Chrome.     <br />Use your external IP address (or dyndns.org address you setup in step 5) and the port you setup in step 3.     <br />Now here's the magic to access the Blink -     <br />    <br /><strong>7. CCProxy awesome feature: “Port Map”</strong></p>  <p>Use CCProxy's &quot;Port Map&quot; feature: Options &gt; Check &quot;Port Map&quot; &gt; Edit    <br />Destination Host: 192.168.1.123 (whatever your INTERNAL Blink IP address is)     <br />Destination Port: 80     <br />Port Type: HTTP     <br />Local Port: 80     <br />    <br />Now from work, or from anywhere outside your house, setup Firefox (or any other browser) to use your home proxy - type <a href="http://192.168.1.126">http://192.168.1.126</a> in your address bar, enter the username/password you set up in step 3 - and that's it! You can now use the Blink web interface in a relative safe way from anywhere in the world!</p>  <p><strong>Conclusion</strong></p>  <p>Setting up CCProxy is not only useful to access the Blink – but also has additional advantages -</p>  <ul>   <li>Use your home connection from anywhere – for example to access the Blink’s web server, but also any other resources you may have behind your firewall – music, pictures, etc… </li>    <li>When in a foreign country, use your proxy server to access web sites that require a US IP address such as Hulu.com, Netflix, etc… </li>    <li>When accessing a public wireless network with no security, connect to your home server through SSL (HTTPS) making it harder for hackers who may snoop your credentials and other sensitive information </li> </ul>  <p>Get CCProxy now – </p>  <blockquote>   <p><a title="http://www.youngzsoft.net/ccproxy/features.htm" href="http://www.youngzsoft.net/ccproxy/features.htm">http://www.youngzsoft.net/ccproxy/features.htm</a></p> </blockquote>  <p>It’s free for up to 3 users! </p>  <p><strong>Additional Screenshots</strong></p>  <p><strong>The Main CCProxy screen -</strong></p>  <p><a href="http://www.youngzsoft.net/ccproxy/" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_6.png" width="423" height="311" /></a></p>  <p>CCPRoxy’s proxy services configuration screen -</p>  <p><a href="http://www.youngzsoft.net/ccproxy/" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_7.png" width="421" height="372" /></a></p>  <p>CCProxy’s port map screen -</p>  <p><a href="http://www.youngzsoft.net/ccproxy/" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_8.png" width="418" height="332" /></a></p>  <p>Firefox options screen &gt; Advanced &gt; Network</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_9.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_5.png" width="417" height="417" /></a></p>  <p>Firefox options screen &gt; Advanced &gt; Network &gt; Connection &gt; Settings</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_10.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_6.png" width="411" height="414" /></a></p>  <p>The Blink’s web server, being accessed from outside my home with Firefox using CCProxy – notice that I’m accessing the Blink web server, but I am asked for a username/password.</p>  <p>This is different than the Blink’s “Intranet Password”, which only protects certain configuration screens – this is the CCProxy password you setup and it protects all Blink screens.</p>  <p>(but still no need to enter username/password when accessing the Blink directly from your home network, behind the firewall)</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_11.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_7.png" width="444" height="265" /></a></p>  <p>Once I’m logged in, the Blink’s main screen – </p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_12.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_8.png" width="451" height="297" /></a></p>  <p><strong>Additional Blink screens</strong></p>  <p>The main screen – when charging, it displays the charging status and time it has been charging the Leaf; it also displays info on your last charge, for example the start time, how long it took to charge, and how much it cost -</p>  <p>(there are different parameters in estimating your costs for driving an electric car – but in my case I’m seeing $15 to $20 for every 1,000 miles)</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_13.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_9.png" width="453" height="210" /></a></p>  <p>The monthly stats screen – including the total cost for the month, the average cost per charge, the CO2 saved, the number of gallons of gas saved, the price per kWh when you charged, and the total number of kWh used -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_14.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_10.png" width="453" height="201" /></a></p>  <p>You can get stats for the current or previous month -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_15.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_11.png" width="455" height="200" /></a></p>  <p>The settings screen – allows you to setup a schedule for charging the Leaf only during non-peak hours, setting up your utility’s kWh costs, and more.</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_16.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_12.png" width="457" height="278" /></a></p>  <p>Click on ‘kWh Rate(s)’ and you can setup your utility’s cost for one kWh, during peak and non-peak hours, during summer or winter -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_17.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_13.png" width="466" height="293" /></a></p>  <p>Our utility is “Pacific Gas and Electric”, also known as PG&amp;E (<a href="http://www.pge.com/">http://www.pge.com/</a>) – we are on the E7 tariff, which has the following rates -</p>  <p>Our standard or ‘off-peak’ rate is $0.09273 (or roughly 9 cents) per kWh -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_18.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_14.png" width="467" height="290" /></a></p>  <p>We can then setup ‘peak’ rates – from May to October and between Noon to 6 PM one kWh costs $0.31550 (or roughly 30 cents) -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_19.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_15.png" width="461" height="473" /></a></p>  <p>From November to April and between Noon to 6 PM one kWh costs $0.12294 (or roughly 30 cents) -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_20.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_16.png" width="453" height="468" /></a></p>  <p>You can see it makes a lot of sense to setup timers on the Leaf or on the Blink, to charge our electric car during off-peak hours – it’s three times cheaper!</p>  <p><em>Note: we also have a solar power system – so during off-peak hours (noon to 6 PM) we are producing energy and our meter is rolling backwards – we sell to PG&amp;E one kWh at 30 cents, but when we use a kWh we buy it for 9 cents – it’s awesome!</em></p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_21.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_17.png" width="462" height="288" /></a></p>  <p>We actually got our blink for free, after being accepted in the “EV Project” (<a href="http://www.theevproject.com/overview.php">http://www.theevproject.com/overview.php</a>) – a great project to develop the infrastructure for electric cars.&#160; It’s managed by Ecotality (<a href="http://www.ecotality.com/">http://www.ecotality.com/</a>) which was awarded a $99.8 million dollar grant from the US Department of Energy (<a href="http://energy.gov/">http://energy.gov/</a>) and a total of $230 million dollars.&#160; From their site -</p>  <blockquote>   <p><em>ECOtality is deploying approximately 14,000 chargers in 18 major cities and metropolitan areas located in six states and the District of Columbia: California, Oregon, Washington, Arizona, Texas, Tennessee, and Washington, D.C. Chevrolet and Nissan North America are partners in The EV Project. Both Chevrolet Volt and Nissan LEAF drivers who qualify to participate in The EV Project receive a residential charger at no cost. In addition, most, if not all of the installation cost, are paid for by The EV Project.</em></p> </blockquote>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_22.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_18.png" width="461" height="311" /></a></p>  <p>Here’s our new “gas pump” – except we don’t use any gas, just electricity -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_23.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_19.png" width="480" height="327" /></a></p>  <p>Our Leaf has a 240V charger and also a 480V ‘fast/L3’ charger that can charge the car at 80% in 20 minutes (it costs an extra $700, but we also got it for free through Ecotality!)</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_24.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-securely-access-your-Blink-charge_751/image_thumb_20.png" width="487" height="328" /></a></p>  <p><strong>Links</strong></p>  <table border="1" cellspacing="1" cellpadding="2" width="495"><tbody>     <tr>       <td valign="top" width="136"><strong>Site</strong></td>        <td valign="top" width="354"><strong>Description</strong></td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.youngzsoft.net/ccproxy/features.htm">http://www.youngzsoft.net/ccproxy/features.htm</a></td>        <td valign="top" width="354">CCProxy Features</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.blinknetwork.com/chargers-residential.html">http://www.blinknetwork.com/chargers-residential.html</a></td>        <td valign="top" width="354">Blink – Residential charger</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.ecotality.com/">http://www.ecotality.com/</a></td>        <td valign="top" width="354">The company managing the “EV Project”</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.mynissanleaf.com/">http://www.mynissanleaf.com</a></td>        <td valign="top" width="354">Great forum for Leaf owners</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.nissanusa.com/apps/techpubs?model=Nissan+LEAF&amp;year=2011">http://www.nissanusa.com/apps/techpubs?model=Nissan+LEAF&amp;year=2011</a></td>        <td valign="top" width="354">Nissan Leaf Manuals</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.pluginamerica.org/">http://www.pluginamerica.org/</a></td>        <td valign="top" width="354">Awesome site promoting electric and plug-in cars</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.pge.com/tariffs/">http://www.pge.com/tariffs/</a></td>        <td valign="top" width="354">PG&amp;E Tariffs</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://www.theevproject.com/">http://www.theevproject.com/</a></td>        <td valign="top" width="354">$230 million project to develop some infrastructure for electric cars</td>     </tr>      <tr>       <td valign="top" width="136"><a href="http://energy.gov/">http://energy.gov/</a></td>        <td valign="top" width="354">US Department of Energy</td>     </tr>   </tbody></table>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title>Things you don&apos;t need when you own a Nissan Leaf</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/06/things_you_dont_need_when_you.html" />
   <id>tag:blog.ehuna.org,2011://9.382</id>
   
   <published>2011-06-04T05:33:00Z</published>
   <updated>2011-06-17T00:54:58Z</updated>
   
   <summary>A couple of days ago, I started a thread on MyNissanLeaf.com: “Things you don&apos;t need when you own a Nissan Leaf” – I started off with a couple of ideas like “gas” and “smog checks” and others added on. &amp;#160;...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="01 - General" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>A couple of days ago, I started a thread on <a href="http://www.mynissanleaf.com/viewtopic.php?f=27&amp;t=4164" target="_blank">MyNissanLeaf.com</a>: “Things you don't need when you own a Nissan Leaf” – I started off with a couple of ideas like “gas” and “smog checks” and others added on. </p>  <blockquote>   <p><a href="http://www.mynissanleaf.com/viewtopic.php?f=27&amp;t=4164" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image.png" width="431" height="287" /></a>&#160; <br />M<em>y Nissan Leaf – the first 100% electric mass produced car</em></p> </blockquote>  <p>Currently we have 55 items on our list – see below for the details and more information on the Leaf.</p>  ]]>
      <![CDATA[  <p>Things you don't need when you own a Nissan Leaf    <br /><a href="http://www.mynissanleaf.com/viewtopic.php?f=27&amp;t=4164">http://www.mynissanleaf.com/viewtopic.php?f=27&amp;t=4164</a></p>  <p>Note: list updated as we get new answers; some items are funny or political, others more concrete - regardless, for those that have one, enjoy your Leaf! </p>  <ol>   <li>Gas. </li>    <li>Oil Change. </li>    <li>Catalytic Converter. </li>    <li>Fuel Pump. </li>    <li>Fuel Filter. </li>    <li>Fuel injectors. </li>    <li>Muffler. </li>    <li>Tailpipe. </li>    <li>Timing Belt Replacement. </li>    <li>Spark plug wrench. </li>    <li>Timing Light. </li>    <li>Gas can. </li>    <li>Air filter. </li>    <li>Dipstick rag. </li>    <li>EGR Valve. </li>    <li>Oxygen sensor. </li>    <li>Spark-plugs. </li>    <li>Gas filler cap. </li>    <li>Smog Checks. </li>    <li>Blown Gasket Replacement. </li>    <li>Manual or Automatic Transmission. </li>    <li>Valve Job. </li>    <li>Tune up. </li>    <li>Starter. </li>    <li>Water Pump </li>    <li>Alternator. </li>    <li>Coils. </li>    <li>Pistons. </li>    <li>Rings. </li>    <li>Connecting Rods. </li>    <li>Valves. </li>    <li>Valve Springs. </li>    <li>Oil Pump. </li>    <li>Camshafts. </li>    <li>Crank Shaft. </li>    <li>Engine Block. </li>    <li>Cylinder Block. </li>    <li>Cylinder Heads. </li>    <li>Valve Covers. </li>    <li>Flywheel. </li>    <li>Fuel Injector Cleaning Service. </li>    <li>Emission Control Components (you can spend some big bucks on these, for labor). </li>    <li>Brake Pad Replacements at 30K miles (regenerative braking, pads last life of car). </li>    <li>Oil Absorbent For The Driveway / garage, when you get horrible oil leaks (cam shaft &amp; rear engine oil seals). </li>    <li>30K, 60K, 90K etc Mile Services. </li>    <li>6:15 AM Alarm Clock Setting (carpool lane stickers allow more sleep). </li>    <li>Add-On or Third Party Bluetooth Kit. </li>    <li>Add-On or Third Party / External Satellite Navigation System. </li>    <li>Fuel points from QFC and Fred Meyer purchases, redeemable for 10 cents a gallon discount at Shell gas stations. </li>    <li>OPEC and Preparation H. </li>    <li>Saudi Arabia. </li>    <li>Exxon, Shell, 76, Arco, Chevron, and other Gas Stations and Oil Companies. </li>    <li>Offshore and North Slope Drilling. </li>    <li>Exxon Valdez, Gulf Oil Spill, and other disasters by Oil companies. </li>    <li>War for Oil. </li> </ol>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_3.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_thumb.png" width="264" height="140" /></a>       <br /><em>The license plate on my Leaf</em></p> </blockquote>  <p>Here’s more info on the Nissan Leaf -</p>  <table border="1" cellspacing="1" cellpadding="2" width="450"><tbody>     <tr>       <td valign="top" width="105">Link</td>        <td valign="top" width="345">Description</td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/QNukH" href="http://goo.gl/QNukH" target="_blank">http://goo.gl/QNukH</a>&#160;</td>        <td valign="top" width="345">Main Nissan web site for the Nissan Leaf</td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/AX5js" href="http://goo.gl/AX5js" target="_blank">http://goo.gl/AX5js</a></td>        <td valign="top" width="345">Wikipedia page on the Nissan Leaf</td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/1hkDK" href="http://goo.gl/1hkDK">http://goo.gl/1hkDK</a></td>        <td valign="top" width="345">Great Nissan ad – ‘what if everything ran on gas’? – watch it below.</td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/Cq2Rc" href="http://goo.gl/Cq2Rc" target="_blank">http://goo.gl/Cq2Rc</a></td>        <td valign="top" width="345">Nissan Leaf online reservations in the US</td>     </tr>      <tr>       <td valign="top" width="105">         <p align="left"><a href="http://www.mynissanleaf.com" target="_blank">http://mynissanleaf.com</a></p>       </td>        <td valign="top" width="345">Great online forum for Nissan Leaf owners or those interested in buying a Leaf.</td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/kdjM7" href="http://goo.gl/kdjM7">http://goo.gl/kdjM7</a></td>        <td valign="top" width="345">Good Nissan Leaf review by <a href="http://twitter.com/#!/ubergizmo" target="_blank">@ubergizmo</a></td>     </tr>      <tr>       <td valign="top" width="105"><a title="http://goo.gl/0QbbR" href="http://goo.gl/0QbbR">http://goo.gl/0QbbR</a></td>        <td valign="top" width="345">Tests on the Leaf including a Paris trip, a flooded area and getting hit by thunder.</td>     </tr>   </tbody></table>  <p><strong>Cool video from Nissan – “What if everything ran on gas?”</strong></p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0c498cc8-2805-4ebc-ad74-0306663d363a" class="wlWriterEditableSmartContent"><div id="e386a84d-99dd-4730-93c2-13cfbcf5d778" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=j0sCCJFkEbE" target="_new"><img src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/video901ed47f1401.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e386a84d-99dd-4730-93c2-13cfbcf5d778'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;448\&quot; height=\&quot;252\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/j0sCCJFkEbE?hl=en&amp;hd=1\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/j0sCCJFkEbE?hl=en&amp;hd=1\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;448\&quot; height=\&quot;252\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div></div></div>  <p><strong>My new gas pump</strong></p>  <p>If you own a Nissan Leaf, you no longer need to fill up your car at a gas station.&#160; Here are some pictures of my “pump”, in our garage -</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_4.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_thumb_3.png" width="304" height="490" /></a>       <br /><em>240V Blink charging station – </em><a href="http://www.blinknetwork.com"><em>www.blinknetwork.com</em></a><em> </em></p> </blockquote>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_5.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_thumb_4.png" width="452" height="301" /></a>       <br /><em>This what I plug into my Leaf to charge it up</em></p> </blockquote>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_6.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_thumb_5.png" width="442" height="294" /></a>       <br /><em>You charge the Leaf from the front – easy!</em></p> </blockquote>  <p>With the current off-peak rates from our local electric utility (“Pacific Gas and Electric” or “PG&amp;E”), I can go 1,000 miles for about $15 (fifteen dollars, US) - </p>  <p><strong>Leaf Maintenance Schedule     <br /></strong>    <br /><a href="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/47d918fbc206_13C12/image_thumb_6.png" width="472" height="490" /></a></p>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title><![CDATA[Visual Studio Live (VSLive!): great developer conference, and I&rsquo;m going again next year!]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/04/visual_studio_live_vslive_grea.html" />
   <id>tag:blog.ehuna.org,2011://9.381</id>
   
   <published>2011-04-28T16:56:12Z</published>
   <updated>2011-04-28T16:57:17Z</updated>
   
   <summary>Last week I attended VSLive! 2011 in Las Vegas - http://vslive.com/events/spring-2011/home.aspx It was one of the best developers’ conference I’ve attended in a long time.&amp;#160; During the conference, right before or after a session, they had this cool announcement up...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>Last week I attended VSLive! 2011 in Las Vegas -</p>  <blockquote>   <p><a href="http://vslive.com/events/spring-2011/home.aspx" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/857a794bc905_89D5/image.png" width="455" height="111" /></a>      <br /><a title="http://vslive.com/events/spring-2011/home.aspx" href="http://vslive.com/events/spring-2011/home.aspx">http://vslive.com/events/spring-2011/home.aspx</a></p> </blockquote>  <p>It was one of the best developers’ conference I’ve attended in a long time.&#160; During the conference, right before or after a session, they had this cool announcement up -</p>  <blockquote>   <p><a href="http://search.twitter.com/search?q=%23vslive" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/857a794bc905_89D5/image_3.png" width="442" height="311" /></a>      <br /><a title="http://search.twitter.com/search?q=%23vslive" href="http://search.twitter.com/search?q=%23vslive">http://search.twitter.com/search?q=%23vslive</a></p> </blockquote>  <p>This allowed everyone to know that the tag for the conference was “<a href="http://search.twitter.com/search?q=%23vslive" target="_blank">#vslive</a>”.&#160; I thought it would be a good idea to share what I was learning through twitter – both for my co-workers or for anyone following me – appending the “<a href="http://search.twitter.com/search?q=%23vslive" target="_blank">#vslive</a>” tag so others in the conference could also follow.</p>  <p>So I started tweeting all kinds of interesting tips and tricks and great thoughts I was hearing on SQL Server, StreamInsight, Visual Studio, WCF, ASP.NET, Scrum and more -</p>  <blockquote>   <p><a href="http://twitter.com/ehuna"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/857a794bc905_89D5/image_4.png" width="408" height="482" /></a>      <br /><a title="http://twitter.com/#!/ehuna" href="http://twitter.com/ehuna" target="_blank">http://twitter.com/ehuna</a></p> </blockquote>  <p>Today as I checked my twitter feed, I see this tweet from @VSLive -</p>  <blockquote>   <p><a href="http://twitter.com/#!/VSLive/status/63607361650180096" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/857a794bc905_89D5/image_5.png" width="386" height="189" /></a>       <br /><a title="http://twitter.com/#!/VSLive/status/63607361650180096" href="http://twitter.com/#!/VSLive/status/63607361650180096">http://twitter.com/#!/VSLive/status/63607361650180096</a></p> </blockquote>  <p>A-W-E-S-O-M-E, thank you <a href="http://twitter.com/VSLive" target="_blank">@VSLive</a>!&#160; </p>  <p>I highly recommend this conference for anyone who works with Microsoft technologies.&#160; There are different VSLive! conferences around the country – so check it out, you’ll love it!</p>  <p>Good times!</p>]]>
      
   </content>
</entry>
<entry>
   <title>Windows Azure Diagnostics: performance counters, event logs, IIS logs, and more</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/04/windows_azure_diagnostics_perf.html" />
   <id>tag:blog.ehuna.org,2011://9.377</id>
   
   <published>2011-04-07T02:34:06Z</published>
   <updated>2011-04-07T02:35:22Z</updated>
   
   <summary>When running your bits in the Windows Azure cloud there are a few Diagnostics data sources you can configure to better monitor your apps - Click on image to enlarge I got this from the excellent presentation given by Matthew...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>When running your bits in the Windows Azure cloud there are a few Diagnostics data sources you can configure to better monitor your apps -</p>  <p><a href="http://blog.ehuna.org/liveimages/0bd28bf232b4_11315/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0bd28bf232b4_11315/image_thumb.png" width="475" height="357" /></a>    <br /><em>Click on image to enlarge</em></p>  <p>I got this from the excellent presentation given by Matthew Kerner at the PDC ‘09 – for the video and PowerPoint slides, see -</p>  <p>&#160; Windows Azure Monitoring, Logging, and Management APIs   <br />&#160; <a title="http://www.microsoftpdc.com/2009/SVC15" href="http://www.microsoftpdc.com/2009/SVC15">http://www.microsoftpdc.com/2009/SVC15</a></p>  <p>You can also check out how we used some of this diagnostics data to get almost real-time graphs that monitor CPU, RAM, and other performance counters of our Windows Azure services -</p>  <p>&#160; Visualizing Windows Azure diagnostic data   <br />&#160; <a href="http://blog.ehuna.org/2009/12/visualizing_windows_azure_diag_1.html">http://blog.ehuna.org/2009/12/visualizing_windows_azure_diag_1.html</a></p>  <p>I also like this slide that shows some of the ways in which you can use Windows Azure Diagnostics data -</p>  <p><a href="http://blog.ehuna.org/liveimages/0bd28bf232b4_11315/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/0bd28bf232b4_11315/image_thumb_3.png" width="477" height="317" /></a></p>  <p>I keep looking for this every once in a while, so I thought it would be a good idea to post it here.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Selling my Toyota Prius 2005</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/03/selling_my_toyota_prius_2005.html" />
   <id>tag:blog.ehuna.org,2011://9.376</id>
   
   <published>2011-03-13T07:23:00Z</published>
   <updated>2011-04-10T01:44:32Z</updated>
   
   <summary>Update 4/9: the Prius is sold! I’m selling my Toyota Prius 2005 – it has served me well, but I am buying a new car next month and I don’t need to own two.&amp;#160; This car is awesome and I...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="02 - For Sale" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p><strong>Update 4/9</strong>: the Prius is sold!</p>  <p>I’m selling my Toyota Prius 2005 – it has served me well, but I am buying a new car next month and I don’t need to own two.&#160; This car is awesome and I have a few pictures and descriptions of some of its features below -&#160; </p>  <blockquote>   <p><a href="http://prius.ehuna.org/slideshow" target="_blank"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_6.png" width="430" height="325" /></a>       <br /><em>Check out a slideshow of this Prius at </em><a href="http://prius.ehuna.org/slideshow"><em>http://prius.ehuna.org/slideshow</em></a>       <br /><em>I have additional pictures outlining specific features below</em></p> </blockquote>  <p>Here are some quick facts on this car -</p>  <ul>   <li>This Prius is in excellent condition </li>    <li>It has server me without any issues for 131,031 miles </li>    <li>I am the original owner and this car was never involved in any accident. </li>    <li>I have its maintenance history – including every Toyota suggested service - and oil change and brakes/suspension inspections every 5,000 miles at the Toyota dealer. </li>    <li>Exterior: White Color </li>    <li>Interior: High-Quality Leather (Black) </li>    <li>It includes California HOV Stickers, which allow you to drive alone in the diamond lane! </li>    <li>I installed the XM Satellite Radio add-on, integrated with the GPS unit. </li>    <li>It has the Toyota ‘High-End’ package: GPS, Bluetooth, Premium Sound, Remote Keyless entry, HomeLink garage door opener. </li>    <li>I upgraded all 4 tires to premium-grade, high-traction, ‘Michelin Pro’ tires </li>    <li>The registration is paid until March 2012. </li>    <li>I just purchased a new 12V battery. </li>    <li>The EPA Fuel Economy is - City: 48 MPG, Highway: 45 MPG </li> </ul>  <p>I have a lot more information below, if you’re interested here’s the asking price and my contact info -</p>  <ul>   <li>The price: $10,500 (or best offer) </li>    <li>My name is Emmanuel Huna </li>    <li>Email me at <a href="http://mailhide.recaptcha.net/d?k=012rRqxxnyavo-TBdtRV-0_Q==&amp;c=qifMqUI0ec3yqpqTWOU-xg==" target="_blank">s…@ehuna.org</a> or call me at (650) 918-7486 </li> </ul>  <p>Check out this great site <a href="http://john1701a.com/">http://john1701a.com/</a> for information on the Toyota Prius in general.&#160; Below I have additional pictures and details on this car.</p>  ]]>
      <![CDATA[  <p><strong>Selling my Toyota Prius 2005</strong></p>  <p>Here’s the standard technical info you get from car web sites -</p>  <ul>   <li>Body Style: Sedan </li>    <li>Exterior Color: White </li>    <li>Engine: 4 cylinder, hybrid, 1.5 liter </li>    <li>Transmission: Automatic </li>    <li>Doors: 5 </li>    <li>Body style: hatchback </li> </ul>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius06_3.jpg"><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="prius06" border="0" alt="prius06" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius06_thumb_3.jpg" width="522" height="349" /></a></p>  <p>Here’s a longer list with more features (don’t stop here, there are cool pictures after the list) -</p>  <ul>   <li>GPS/Navigation System with voice activation </li>    <li>Bluetooth integration with phones </li>    <li>Large center LCD screen </li>    <li>Remote Keyless Entry: key fob (all doors) </li>    <li>A/C: Automatic air conditioning with air filter </li>    <li>Steering-wheel mounted A/C controls </li>    <li>6-disc in-dash CD player </li>    <li>AM/FM stereo with seek-scan </li>    <li>Premium Sound: 9 JBL speakers </li>    <li>Cruise Control with steering wheel controls </li>    <li>Garage door transmitter: HomeLink (pair it with your garage door for easy entry) </li>    <li>Power Locks </li>    <li>Power Steering </li>    <li>Airbags: Driver, Passenger, and Side </li>    <li>Anti-Lock Brakes </li>    <li>Tilt Wheel </li>    <li>Fog Lights </li>    <li>Cassette Radio </li>    <li>Power Windows </li>    <li>Rear Window Defroster </li>    <li>Rear Window Wiper </li>    <li>Tinted Glass </li>    <li>Day-night rearview mirror </li>    <li>Illuminated driver and passenger-side visor mirrors </li>    <li>Enhanced regenerative braking </li>    <li>Can run up to 3.6 miles on battery alone </li>    <li>Illuminated entry </li>    <li>Illuminated glove box </li>    <li>Driver and passenger door bins </li>    <li>Partial floor console with covered box </li>    <li>2 12V DC power outlets </li>    <li>Front and rear cup holders </li> </ul>  <p>Here are some pictures with explanations -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius52_3.jpg"><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="prius52" border="0" alt="prius52" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius52_thumb_3.jpg" width="530" height="355" /></a></p>  <p>The keyfob is all you need to lock and unlock the car – put it in your pocket or your purse -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius40_3.jpg"><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="prius40" border="0" alt="prius40" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius40_thumb_3.jpg" width="533" height="357" /></a></p>  <p>Once you have the keyfob in your pocket, all you need to disarm the alarm and enter the car is get close to the Prius and place your hand on the handle.&#160; </p>  <p>The keyfob sends a signal to the Prius computer which unlocks the car!&#160; (this is one of my wife’s favorite Prius features) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius68_3.jpg"><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="prius68" border="0" alt="prius68" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius68_thumb_3.jpg" width="530" height="355" /></a></p>  <p>To start the car, it’s the same idea – no need to look for keys.&#160; As long as you have the keyfob in your pocket, just press the ‘Power’ button behind the steering wheel while keeping your foot on the brake to start the car!&#160; (keyfob shown here for reference) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius42_3.jpg"><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="prius42" border="0" alt="prius42" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius42_thumb_3.jpg" width="528" height="353" /></a></p>  <p>The steering wheel has buttons that allow you to directly control certain features - </p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius41_3.jpg"><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="prius41" border="0" alt="prius41" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius41_thumb_3.jpg" width="526" height="352" /></a></p>  <p>The left side of the steering wheel has buttons for controlling the volume, the mode (AM/FM/XM Radio/Aux), changing radio stations, and controlling the A/C, including lowering or increasing the temperature -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius43_3.jpg"><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="prius43" border="0" alt="prius43" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius43_thumb_3.jpg" width="341" height="510" /></a></p>  <p>The right side of the steering wheel has buttons that allow you to go back to the GPS map view, show ‘info’ on your gas consumption, the voice activation trigger, the ability to answer (or hang-up) a phone call, and more A/C controlling features -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius44_3.jpg"><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="prius44" border="0" alt="prius44" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius44_thumb_3.jpg" width="338" height="506" /></a></p>  <p>I upgraded all four tires to these premium-grade, high-traction, Michelin HydroEdge tires that can be used on a Iconic Prius.&#160; </p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius09_3.jpg"><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="prius09" border="0" alt="prius09" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius09_thumb_3.jpg" width="535" height="358" /></a></p>  <p>These tires are way better than the factory default tires Toyota provides.&#160; Here’s a side-by-side comparison -</p>  <table border="0" cellspacing="1" cellpadding="2" width="450"><tbody>     <tr>       <td valign="top" width="225"><strong>Original Tire: Goodyear Integrity</strong></td>        <td valign="top" width="225"><strong>Upgrade Tire: Michelin HydroEdge </strong></td>     </tr>      <tr>       <td valign="top" width="225">The Prius comes with these tires standard.&#160; They are sometimes referred to as OEM (Original Equipment Manufacturer) tires.          <br />          <br />          <ul>           <li>185 / 65 R15 </li>            <li>44 PSI (3.0 bar) maximum </li>            <li>1168 lbs. (530 kg) load maximum </li>            <li>Standard Rolling Resistance </li>            <li>855 Revs per mile </li>            <li>10/32 inch Tread-Depth </li>            <li>86S Speed &amp; Load Rating </li>            <li>&quot;A&quot; Traction </li>            <li>&quot;B&quot; Temperature </li>            <li>460 Treadwear </li>            <li>50,000 (80,467 km) Mile Warranty </li>         </ul>       </td>        <td valign="top" width="225">These are the premium-grade, high-traction, tires you would own if you purchased this Prius -          <br />          <br />          <br />          <ul>           <li>185 / 65 R15 </li>            <li>44 PSI (3.0 bar) maximum </li>            <li>1168 lbs. (530 kg) load maximum </li>            <li>Standard Rolling Resistance </li>            <li>856 Revs per mile </li>            <li>11/32 inch Tread-Depth </li>            <li>86T Speed &amp; Load Rating </li>            <li>&quot;A&quot; Traction </li>            <li>&quot;B&quot; Temperature </li>            <li>800 Treadwear </li>            <li>90,000 (144,841km) Mile Warranty <!--EndFragment--></li>         </ul>       </td>     </tr>   </tbody></table>  <p>Right above the tires you see the HOV stickers – like the one below.&#160; This sticker allows you to drive alone in the diamond lanes in all Bay Area and California highways (you will need to get a ‘FastTrak’ - <a href="http://www.bayareafastrak.org/">http://www.bayareafastrak.org/</a>)</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius51_3.jpg"><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="prius51" border="0" alt="prius51" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius51_thumb_3.jpg" width="531" height="355" /></a></p>  <p>Here are the two engines in this Prius – a standard engine and an electrical motor -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius63_3.jpg"><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="prius63" border="0" alt="prius63" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius63_thumb_3.jpg" width="533" height="357" /></a></p>  <p>The LCD display in the car gives you feedback on your consumption – including a current ‘miles per gallon’ (MPG) indicator – (not many cars give you this information, most car manufacturers don’t really want you to know) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius57_3.jpg"><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="prius57" border="0" alt="prius57" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius57_thumb_3.jpg" width="531" height="355" /></a></p>  <p>The Prius includes a fairly large trunk area -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius16_3.jpg"><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="prius16" border="0" alt="prius16" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius16_thumb_3.jpg" width="428" height="640" /></a></p>  <p>This Prius is a hatchback, so you can also take the back seats down and increase the amount of storage space – it’s great for 2x4s from Home Depot! -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius25_3.jpg"><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="prius25" border="0" alt="prius25" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius25_thumb_3.jpg" width="515" height="345" /></a></p>  <p>There’s a cover in the trunk area -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius17_3.jpg"><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="prius17" border="0" alt="prius17" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius17_thumb_3.jpg" width="513" height="343" /></a></p>  <p>Pull the cover to hide objects and parcels (I placed a sample phone in the sample photo below) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius18_3.jpg"><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="prius18" border="0" alt="prius18" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius18_thumb_3.jpg" width="513" height="343" /></a></p>  <p>When you close the trunk and the cover is on, no one can see the phone I left there or any other parcel -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius19_3.jpg"><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="prius19" border="0" alt="prius19" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius19_thumb_3.jpg" width="512" height="343" /></a></p>  <p>The spare tire is under the trunk area -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius26_3.jpg"><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="prius26" border="0" alt="prius26" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius26_thumb_3.jpg" width="512" height="343" /></a></p>  <p>My Toyota dealer offered the option of adding leather to the Prius.&#160; Toyota worked with a third party company that installed this black leather option, which I find awesome – better than the factory leather that is now available -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius22_3.jpg"><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="prius22" border="0" alt="prius22" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius22_thumb_3.jpg" width="452" height="677" /></a></p>  <p>This Prius has a large LCD screen with many features to control and monitor the car – it’s a touch screen, like on an iPhone or iPad, so you make choices by directly touching software options on the screen -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius37_3.jpg"><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="prius37" border="0" alt="prius37" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius37_thumb_3.jpg" width="509" height="340" /></a></p>  <p>The GPS software is really cool – here’s a nice shot of where highways 101 and 92 meet in the Peninsula -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius35_3.jpg"><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="prius35" border="0" alt="prius35" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius35_thumb_3.jpg" width="514" height="344" /></a></p>  <p>You won’t get lost again – enter an address or search for a ‘Point of Interest’ (POI) and the GPS unit will give you turn by turn directions, with voice indicators on turns -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius31_3.jpg"><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="prius31" border="0" alt="prius31" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius31_thumb_3.jpg" width="515" height="345" /></a></p>  <p>You can pair your iPhone or any other Bluetooth phone with this Prius.&#160; You can then use the ‘hands-free’ feature to answer and make calls through the car’s speakers and microphone – your phone can stay in your pocket! -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius32_3.jpg"><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="prius32" border="0" alt="prius32" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius32_thumb_3.jpg" width="515" height="345" /></a></p>  <p>I really like the A/C controls – you can manually control the temperature to your liking; but I really enjoy the ‘auto’ feature which starts or stops the climate action depending on a temperature I set -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius30_3.jpg"><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="prius30" border="0" alt="prius30" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius30_thumb_3.jpg" width="516" height="345" /></a></p>  <p>I purchased a XM Satellite radio add-on, which integrates well with the GPS and LCD screen – you have three preset screens with 6 channels in each, and you can always jump to a channel directly.&#160; A separate Sirius/XM satellite radio subscription is required – check out <a href="http://www.siriusxm.com/">http://www.siriusxm.com/</a> for more details -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius29_3.jpg"><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="prius29" border="0" alt="prius29" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius29_thumb_3.jpg" width="517" height="346" /></a></p>  <p>Here’s the XM antenna, a small black box that looks like the Apple TV, sits in the back part of the roof -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius10_3.jpg"><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="prius10" border="0" alt="prius10" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius10_thumb_3.jpg" width="517" height="346" /></a></p>  <p>Here’s the rearview mirror, which includes the ‘HomeLink’ transmitter that can open and close most garage doors (the ‘HomeLink’ buttons are out of focus below) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius39_3.jpg"><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="prius39" border="0" alt="prius39" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius39_thumb_3.jpg" width="518" height="347" /></a></p>  <p>This is the 12V adapter, which you can use to charge your phone or laptop -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius49_3.jpg"><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="prius49" border="0" alt="prius49" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius49_thumb_3.jpg" width="521" height="349" /></a></p>  <p>Remember how easy it was to unlock the car?&#160; It’s just as easy to lock it: as long as you have the keyfob in your pocket, press the small black button on the door handle and the car is locked and the alarm is armed!</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius67_3.jpg"><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="prius67" border="0" alt="prius67" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius67_thumb_3.jpg" width="524" height="351" /></a></p>  <p>There are locking buttons in the driver and passenger doors and in the back, right above the license plate -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius05_3.jpg"><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="prius05" border="0" alt="prius05" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius05_thumb_3.jpg" width="521" height="349" /></a></p>  <p>Just like you can unlock the car using the driver and passenger door handles, you can open the trunk by simply placing your hand above the license plate area -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius69_3.jpg"><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="prius69" border="0" alt="prius69" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius69_thumb_3.jpg" width="521" height="349" /></a></p>  <p>This disarms the alarm and unlocks all doors (it doesn’t open the doors automatically as shown below – this is just an example) -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius14_3.jpg"><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="prius14" border="0" alt="prius14" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/prius14_thumb_3.jpg" width="518" height="347" /></a></p>  <p>Wow – so many freakin’ features!&#160; If you’d like to investigate more, here’s a link to the Prius User Manual (2004-2009 model): <a href="http://john1701a.com/prius/prius-userguide_iconic.htm">http://john1701a.com/prius/prius-userguide_iconic.htm</a></p>  <p><strong>Gas Prices</strong></p>  <p>The Prius is 99% cleaner than most non-hybrid cars, due to its relative very low CO2 emissions.&#160; But its hybrid system not only helps you work towards saving the environment, it also helps you save your money.&#160; This car gets an average of 45 miles per gallon (MPG), a higher average than most cars.</p>  <p>Here’s a picture I took yesterday at a Shell gas station at 4th St. and Bryant St. in San Francisco -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_7.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_thumb_5.png" width="381" height="540" /></a>     <br />    <br />As a quick exercise, let’s say you drive 15,000 miles per year.&#160; Here’s how much money you’ll spend per year depending on the car you drive (at the ‘Regular’ price above of $4.19 per gallon) -</p>  <table border="0" cellspacing="1" cellpadding="2" width="413"><tbody>     <tr>       <td valign="top" width="212"><strong><em>Car Model/Make</em></strong></td>        <td valign="top" width="196"><strong><em>Total cost per year</em></strong></td>     </tr>      <tr>       <td valign="top" width="212">2005 BMW X5 (16 MPG)</td>        <td valign="top" width="196">$3,928.12&#160;&#160; (=15,000 / 16 * 4.19)</td>     </tr>      <tr>       <td valign="top" width="212">2005 Volkswagen Jetta (24 MPG)</td>        <td valign="top" width="196">$2,618.75&#160;&#160; (=15,000 / 24 * 4.19)</td>     </tr>      <tr>       <td valign="top" width="212">This Prius <strong>(45 MPG)</strong></td>        <td valign="top" width="196">$1,396.00&#160;&#160; (=15,000 / 45 * 4.19)</td>     </tr>   </tbody></table>  <p>Drive this Prius instead of a 2005 BMW X5 SUV, and you save over $2,500 on gas per year!&#160; I took the MPG estimate from the ‘Fuel Economy’ website - </p>  <blockquote>   <p><a href="http://www.fueleconomy.gov">http://www.fueleconomy.gov</a></p> </blockquote>  <p>where numbers are provided by the US Department of Energy.&#160; Find your car’s MPG using the site above and calculate your savings per year using this formula: (number of miles you drive per year) / (your car’s MPG) * (your local cost of one gallon of gas).</p>  <p><strong>Purchasing this car</strong></p>  <p>If you’re interested in this car, here’s how I came up with the asking price.&#160; I went to the Kelley Blue Book site and used their wizard to enter all of the information on this Prius -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_8.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_thumb_6.png" width="519" height="229" /></a></p>  <p>Once I entered all of the options, the KBB site gave me a summary page that matched my Prius exactly -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_9.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_thumb_7.png" width="522" height="151" /></a></p>  <p>This summary page included the following estimated car prices -</p>  <p><a href="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_10.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Selling-my-Toyota-Prius-2005_2A6/image_thumb_8.png" width="525" height="241" /></a></p>  <p>I feel this Prius is in excellent condition, but such estimates are always open to personal opinions.&#160; </p>  <p>To avoid any discussions over the condition of the Prius, I am asking <strong>$10,500</strong> for the Prius – between the ‘Good’ and ‘Excellent’ private party prices.&#160; I am sure if you take a look at the Prius, you will love it and you’ll agree it is in excellent condition.</p>  <p>Email me at <a href="http://mailhide.recaptcha.net/d?k=012rRqxxnyavo-TBdtRV-0_Q==&amp;c=qifMqUI0ec3yqpqTWOU-xg==" target="_blank">s…@ehuna.org</a> or call me at (650) 918-7486 to buy this car – unless I know you or someone I know can vouch for you, we’ll probably use <a href="http://www.escrow.com">www.escrow.com</a> to protect both the buyer’s and seller’s interests and avoid complications.</p>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title><![CDATA[Windows Azure SDK 1.3 &ndash; Problems and Solutions]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/02/windows_azure_sdk_13_problems.html" />
   <id>tag:blog.ehuna.org,2011://9.375</id>
   
   <published>2011-02-13T21:37:00Z</published>
   <updated>2011-02-13T21:39:07Z</updated>
   
   <summary>With the release of the Windows Azure SDK 1.3, the Windows Azure team delivered some awesome features, such as allowing the hosting of multiple sites under one web role, the “ExtraSmall” VM instance, the ability to remote desktop directly into...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>With the release of the Windows Azure SDK 1.3, the Windows Azure team delivered some awesome features, such as allowing the hosting of multiple sites under one web role, the “ExtraSmall” VM instance, the ability to remote desktop directly into your web and worker roles running in the azure fabric in the cloud, the “VM role” which matches Amazon’s clunky EC2, and much more.</p>  <p>But the azure 1.3 SDK also introduced some problems, which I’ve blogged about in different articles.&#160; Below you can see some of the problems and solutions I propose -</p>  <ul>   <li>How to fix the error: “The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state” when running a Windows Azure project in the local development fabric/emulator     <br /><a href="http://blog.ehuna.org/2011/02/how_to_fix_the_error_the_commu.html">http://blog.ehuna.org/2011/02/how_to_fix_the_error_the_commu.html</a>      <br /></li>    <li>How to fix the errors “[UnauthorizedAccessException: Access to the path '[{Guid}-mswapd-lock' is denied.]” or “&quot;Response is not available in this context&quot;&quot; when using Azure Diagnostics 1.3 in a web role hosted in full IIS with multiple sites     <br /><a title="http://blog.ehuna.org/2011/02/how_to_fix_the_errors_unauthor.html" href="http://blog.ehuna.org/2011/02/how_to_fix_the_errors_unauthor.html">http://blog.ehuna.org/2011/02/how_to_fix_the_errors_unauthor.html</a>      <br /></li>    <li>How to automate the creation of a Windows Azure 1.3 package in Team Foundation Server (TFS) for a web role hosted in ‘Full IIS’ with multiple sites     <br /><a href="http://blog.ehuna.org/2011/02/how_to_automate_the_creation_o.html">http://blog.ehuna.org/2011/02/how_to_automate_the_creation_o.html</a></li> </ul>  <p>I thought it would be a good idea to list them out – hopefully all of these issues will be addressed when the azure sdk 1.4 is released!</p>]]>
      
   </content>
</entry>
<entry>
   <title><![CDATA[How to fix the errors &ldquo;[UnauthorizedAccessException: Access to the path '[{Guid}-mswapd-lock' is denied.]&rdquo; or &ldquo;&quot;Response is not available in this context&quot;&quot; when using Azure Diagnostics 1.3 in a web role hosted in full IIS ]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/02/how_to_fix_the_errors_unauthor.html" />
   <id>tag:blog.ehuna.org,2011://9.374</id>
   
   <published>2011-02-13T20:59:00Z</published>
   <updated>2011-02-13T21:26:16Z</updated>
   
   <summary>So you’ve installed or upgraded to the Windows Azure SDK 1.3 and you decided to use the new feature that allows you to host multiple sites in one web role.&amp;#160; Unfortunately, if you are using azure diagnostics, when you run...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>So you’ve installed or upgraded to the Windows Azure SDK 1.3 and you decided to use the new feature that allows you to host multiple sites in one web role.&#160; Unfortunately, if you are using azure diagnostics, when you run your web role in the azure fabric (locally or in the cloud), you get an exception similar to this:</p>  <p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb.png" width="451" height="229" /></a></p>  <p>A secondary issue is that you may receive an exception similar to this -</p>  <p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_3.png" width="436" height="260" /></a></p>  <p>That sucks, doesn’t it?&#160; No worries, below I have the solution on how to make it all work.</p>  ]]>
      <![CDATA[  <p><strong>How to fix the errors “[UnauthorizedAccessException: Access to the path '[{Guid}-mswapd-lock' is denied.]” or “&quot;Response is not available in this context&quot;&quot; when using Azure Diagnostics 1.3 in a web role hosted in full IIS with multiple sites.</strong></p>  <p>With the windows azure SDK 1.3, when you are hosting your web role in full IIS, Microsoft introduced a module that simplifies how you work with azure diagnostics.&#160; The module name is ‘Diagnostics’ and you’ll see it defined in your ServiceDefinition.csdef file like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_4.png" width="401" height="141" /></a></p>  <p>In your ServiceConfiguration.cscfg you can now define the azure storage connection string that is used by the diagnostics module, like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_5.png" width="500" height="29" /></a></p>  <p><strong>The Problems</strong></p>  <p>If you don’t make any changes to how you initialize your azure diagnostics, you may see the exception below -</p>  <p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_6.png" width="451" height="229" /></a></p>  <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">   <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">Server Error in '/' Application.<br /><br />Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.<br />Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. <br /><br />Exception Details: System.UnauthorizedAccessException: Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied. <br /><br />ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6 and IIS 7, and the configured application pool identity on IIS 7.5) that is used if the application is not impersonating. If the application is impersonating via <span style="color: #0000ff">&lt;</span><span style="color: #800000">identity</span> <span style="color: #ff0000">impersonate</span><span style="color: #0000ff">=&quot;true&quot;</span><span style="color: #0000ff">/&gt;</span>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user. <br /><br />To grant ASP.NET access to a file, right-click the file in Explorer, choose &quot;Properties&quot; and select the Security tab. Click &quot;Add&quot; to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.<br /><br />Source Error: <br /><br /><br />An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.<br />Stack Trace: <br /><br /><br /><br />[UnauthorizedAccessException: Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.]<br />   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +12892935<br />   System.Threading.MutexTryCodeHelper.MutexTryCode(Object userData) +229<br />   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) +0<br />   System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean&amp; createdNew, MutexSecurity mutexSecurity) +629<br />   System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean&amp; createdNew) +18<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.StartDiagnosticsMonitorProcess(DiagnosticMonitorStartupInfo info) +171<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.ReconfigureMonitoringProcess(ConfigRequest req) +201<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.UpdateState(DiagnosticMonitorStartupInfo startupInfo) +207<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.StartWithExplicitConfiguration(DiagnosticMonitorStartupInfo startupInfo, DiagnosticMonitorConfiguration initialConfiguration) +643<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(CloudStorageAccount storageAccount, DiagnosticMonitorConfiguration initialConfiguration) +47<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(String diagnosticsStorageAccountConfigurationSettingName, DiagnosticMonitorConfiguration initialConfiguration) +108<br />   [...]<br />   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +3988565<br />   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191<br />   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +325<br />   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407<br />   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375<br />[HttpException (0x80004005): Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.]<br />   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11529072<br />   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141<br />   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4784373<br /><br />Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 <br /><br />Pasted from <span style="color: #0000ff">&lt;</span><span style="color: #800000">https:</span>//<span style="color: #ff0000">advertiserwc</span>.<span style="color: #ff0000">dev-lslightning</span>.<span style="color: #ff0000">com</span>/<span style="color: #ff0000">User</span>/<span style="color: #ff0000">Login</span>?<span style="color: #ff0000">ReturnUrl</span>=%<span style="color: #ff0000">2f</span><span style="color: #0000ff">&gt;</span> <br /><br />[UnauthorizedAccessException: Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.]<br />   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +12892935<br />   System.Threading.MutexTryCodeHelper.MutexTryCode(Object userData) +229<br />   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) +0<br />   System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean&amp; createdNew, MutexSecurity mutexSecurity) +629<br />   System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean&amp; createdNew) +18<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.StartDiagnosticsMonitorProcess(DiagnosticMonitorStartupInfo info) +171<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.ReconfigureMonitoringProcess(ConfigRequest req) +201<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.UpdateState(DiagnosticMonitorStartupInfo startupInfo) +207<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.StartWithExplicitConfiguration(DiagnosticMonitorStartupInfo startupInfo, DiagnosticMonitorConfiguration initialConfiguration) +643<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(CloudStorageAccount storageAccount, DiagnosticMonitorConfiguration initialConfiguration) +47<br />   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.Start(String diagnosticsStorageAccountConfigurationSettingName, DiagnosticMonitorConfiguration initialConfiguration) +108<br />   MYNAMESPACE.Azure.Diagnostics.DiagnosticsSetup.Start() in C:\MYSOURCE\Development\Source\MYNAMESPACE.Azure\Diagnostics\Diagnostics.cs:231<br />   MYNAMESPACE.Azure.Diagnostics.DiagnosticsSetup.All() in C:\MYSOURCE\Development\Source\MYNAMESPACE.Azure\Diagnostics\Diagnostics.cs:47<br />   MYNAMESPACE.Web.MvcApplication.Application_Start() in C:\MYSOURCE\Development\Source\MYNAMESPACE.Web.Advertiser\Global.asax.cs:114<br />[HttpException (0x80004005): Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.]<br />   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +3988565<br />   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191<br />   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +325<br />   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407<br />   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375<br />[HttpException (0x80004005): Access to the path 'fd96b10b-a304-48c9-9faa-18d2dfa5682f-mswapd-lock' is denied.]<br />   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11529072<br />   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141<br />   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4784373<br /></pre>

  <br /></div>

<p>Neil Mackenzie has more details on how this works <a href="http://convective.wordpress.com/2010/12/01/configuration-changes-to-windows-azure-diagnostics-in-azure-sdk-v1-3/" target="_blank">here</a>.</p>

<p>At the same time, you read up on the changes in how azure configuration works, and you realize you need to move your configuration initialization code to Global.asax Application_Start() – Steve Marx has details on how this works <a href="http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3" target="_blank">here</a>.</p>

<p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_7.png" width="459" height="364" /></a>

  <br /><em>The ‘Full IIS’ model with the Windows Azure SDK 1.3 from </em><a href="http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3" target="_blank"><em>Steve Marx’s blog enty</em></a></p>

<p>But as you move code from your WebRole.cs OnStart() event to your Global.asax Application_Start() event, you now get the error -</p>

<p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_8.png" width="436" height="260" /></a></p>

<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">Server Error in '/' Application.<br />Response is not available in this context.<br />Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. <br /><br />Exception Details: System.Web.HttpException: Response is not available in this context.<br /><br />Source Error: <br /><br />Line 248:   CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));<br />Line 249:<br />Line 250:   DeploymentDiagnosticManager deploymentDiagnosticManager = <br />Line 251:    new DeploymentDiagnosticManager(cloudStorageAccount, RoleEnvironment.DeploymentId);<br />Line 252:<br /><br />Source File: C:\MYSOURCECODE\Development\Source\MYPROJECT.Azure\Diagnostics\Diagnostics.cs    Line: 250 <br /><br />Stack Trace: <br /><br /> [HttpException (0x80004005): Response is not available in this context.]<br /> Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() +95<br /> Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() +201<br /> Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist(BlobRequestOptions options) +213<br /> Microsoft.WindowsAzure.Diagnostics.Management.DeploymentDiagnosticManager.EnsureContainer() +70<br /> MYPROJECT.Azure.Diagnostics.DiagnosticsSetup13.ConfigureDiagnostics(Int32 transferPeriod, Int32 performanceSampleRate) in C:\MYSOURCECODE\Development\Source\MYPROJECT.Azure\Diagnostics\Diagnostics.cs:250<br /> MYPROJECT.Web.MvcApplication.Application_Start() in C:\MYSOURCECODE\Development\Source\MYPROJECT.Web.MYSITE1\Global.asax.cs:115<br /><br />[HttpException (0x80004005): Response is not available in this context.]<br /> System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +3988565<br /> System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191<br /> System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +325<br /> System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407<br /> System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375<br /><br />[HttpException (0x80004005): Response is not available in this context.]<br /> System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11529072<br /> System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141<br /> System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4784373<br /><br />Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1</pre>

  <br /></div>

<p>This is due to a .NET 4 issue where the response context is not available in the Application_Start() event, but it is being called in the azure diagnostics manager constructor.</p>

<p><strong>The Solution</strong></p>

<p>The solution is to move both your configuration and azure diagnostics initialization to your Global.asax Application_BeginRequest() event.&#160; Since this occurs on every single request, you can setup a static variable to make sure your initialization code runs only once -</p>

<p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_9.png" width="445" height="133" /></a></p>

<p><a href="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/e3827be732da_AAEE/image_thumb_10.png" width="444" height="250" /></a></p>

<p>Below I have the full code listing for both the Application_BeginRequest() event and the azure diagnostics calls I wrote to setup my favorite performance counters.</p>

<p>Please note the above fix is needed for web roles hosted in Full IIS – you won’t have these problems on the azure 1.3 sdk if your web roles run under the old ‘hosted web core’ or if you are running worker roles.</p>

<p><strong>Code Listing</strong></p>

<p>To make sure your initialization code is called only once, setup your static variables in your Global.asax.cs class -</p>

<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MvcApplication : System.Web.HttpApplication<br />{<br />    <span style="color: #cc6633">#region</span> Privates<br /><br />    <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">object</span> _gate = <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>();<br />    <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">bool</span> _initialized = <span style="color: #0000ff">false</span>;<br /><br />    <span style="color: #cc6633">#endregion</span><br />    ...<br />}<br /><br /></pre>

  <br /></div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>Then in your site’s Application_BeginRequest() do this -</p>

<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> Application_BeginRequest()<br />{<br />    <span style="color: #008000">// Had to move azure role initialization here</span><br />    <span style="color: #008000">// See http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/10d042da-50b1-4930-b0c0-aff22e4144f9 </span><br />    <span style="color: #008000">// and http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/ab6d56dc-154d-4aba-8bde-2b7f7df121c1/#89264b8c-7e25-455a-8fd6-20f547ab545b</span><br /><br />    <span style="color: #0000ff">if</span> (_initialized)<br />    {<br />        <span style="color: #0000ff">return</span>;<br />    }<br /><br />    <span style="color: #0000ff">lock</span> (_gate)<br />    {<br />        <span style="color: #0000ff">if</span> (!_initialized)<br />        {<br />            <span style="color: #008000">// Moved all this diagnostics and configuration setup from WebRole.cs</span><br />            <span style="color: #008000">// See http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3</span><br /><br />            <span style="color: #cc6633">#region</span> Setup CloudStorageAccount Configuration and Azure Diagnostics<br />            <span style="color: #0000ff">if</span> (RoleEnvironment.IsAvailable)<br />            {<br />                <span style="color: #008000">// This code sets up a handler to update CloudStorageAccount instances when their corresponding</span><br />                <span style="color: #008000">// configuration settings change in the service configuration file.</span><br />                CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =&gt;<br />                {<br />                    <span style="color: #008000">// Provide the configSetter with the initial value</span><br />                    configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));<br /><br />                    RoleEnvironment.Changed += (sender, arg) =&gt;<br />                    {<br />                        <span style="color: #0000ff">if</span> (arg.Changes.OfType&lt;RoleEnvironmentConfigurationSettingChange&gt;()<br />                            .Any((change) =&gt; (change.ConfigurationSettingName == configName)))<br />                        {<br />                            <span style="color: #008000">// The corresponding configuration setting has changed, propagate the value</span><br />                            <span style="color: #0000ff">if</span> (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)))<br />                            {<br />                                <span style="color: #008000">// In this case, the change to the storage account credentials in the</span><br />                                <span style="color: #008000">// service configuration is significant enough that the role needs to be</span><br />                                <span style="color: #008000">// recycled in order to use the latest settings. (for example, the </span><br />                                <span style="color: #008000">// endpoint has changed)</span><br />                                RoleEnvironment.RequestRecycle();<br />                            }<br />                        }<br />                    };<br />                });<br /><br />                <span style="color: #008000">// Adding the listener here instead of the Web.config because the Azure trace listener will cause </span><br />                <span style="color: #008000">// problems when running in IIS, so loading it here will ensure it is only active when running in Azure.</span><br />                Trace.Listeners.Add(<span style="color: #0000ff">new</span> DiagnosticMonitorTraceListener());<br /><br />                DiagnosticsSetup13.ConfigureDiagnostics(1, 1);<br /><br />                <span style="color: #008000">//If you have some logging class, call it here to show your configuration and diagnostics are initialized</span><br />                <span style="color: #008000">//LightningEventLog.LogMessage(&quot;Role started - Azure Diagnostics and Lightning email alerts initialized.&quot;, EventLogEntryType.Information); </span><br /><br />            }<br />            <span style="color: #cc6633">#endregion</span><br /><br />            _initialized = <span style="color: #0000ff">true</span>;<br />        }<br />    }<br />}</pre>

  <br /></div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>And here’s the class responsible for initializing the azure diagnostics, with some of my favorites performance counters (notice that we don’t need to start the diagnostics agent, like we did without the diagnostics module/plug-in, but we still need to define what we want the diagnostics manager to capture) -</p>

<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><p><span style="color: #0000ff">using</span> System;<br /><span style="color: #0000ff">using</span> Microsoft.WindowsAzure;<br /><span style="color: #0000ff">using</span> Microsoft.WindowsAzure.Diagnostics;<br /><span style="color: #0000ff">using</span> Microsoft.WindowsAzure.Diagnostics.Management;<br /><span style="color: #0000ff">using</span> Microsoft.WindowsAzure.ServiceRuntime;</p><p><br />&#160;</p><p><br /><span style="color: #0000ff">namespace</span> MYPROJECT.Azure.Diagnostics<br />{<br /><br />    <span style="color: #008000">// See http://convective.wordpress.com/2010/12/01/configuration-changes-to-windows-azure-diagnostics-in-azure-sdk-v1-3/</span><br />    <span style="color: #008000">// For now implementing it static as per sample code, later to follow up to do it in a more elegant way</span><br />    <span style="color: #0000ff">public</span><br />    <span style="color: #0000ff">static</span> <span style="color: #0000ff">class</span> DiagnosticsSetup13<br />    {<br />        <span style="color: #0000ff">static</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> ConfigureDiagnostics(<span style="color: #0000ff">int</span> transferPeriod, <span style="color: #0000ff">int</span> performanceSampleRate)<br />        {<br />            String wadConnectionString =<br />               <span style="color: #006080">&quot;Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString&quot;</span>;</p><p><br /><br />            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));<br /><br />            <span style="color: #008000">// Do not call the next line from Application_Start() - there's a bug in .NET 4.0 that will cause a &quot;System.Web.HttpException: Response is not available in this context.&quot;</span><br />            <span style="color: #008000">// See http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/10d042da-50b1-4930-b0c0-aff22e4144f9 </span><br />            <span style="color: #008000">// and http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/ab6d56dc-154d-4aba-8bde-2b7f7df121c1/#89264b8c-7e25-455a-8fd6-20f547ab545b</span><br /><br />            <span style="color: #008000">// This was not used in Neil McKenzie's sampel code, so I commented it out</span><br />            <span style="color: #008000">//DeploymentDiagnosticManager deploymentDiagnosticManager = </span><br />            <span style="color: #008000">//    new DeploymentDiagnosticManager(cloudStorageAccount, RoleEnvironment.DeploymentId);</span></p><span style="color: #008000"></span><p><br /><br />            RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =<br />                cloudStorageAccount.CreateRoleInstanceDiagnosticManager(<br />                RoleEnvironment.DeploymentId,<br />                RoleEnvironment.CurrentRoleInstance.Role.Name,<br />                RoleEnvironment.CurrentRoleInstance.Id);</p><p><br /><br />            DiagnosticMonitorConfiguration diagnosticMonitorConfiguration =<br />                roleInstanceDiagnosticManager.GetCurrentConfiguration();</p><p><br /><br />            diagnosticMonitorConfiguration.Directories.ScheduledTransferPeriod =<br />               TimeSpan.FromMinutes(transferPeriod);</p><p><br /><br />            diagnosticMonitorConfiguration.Logs.ScheduledTransferPeriod =<br />               TimeSpan.FromMinutes(transferPeriod);</p><p><br /><br />            diagnosticMonitorConfiguration.WindowsEventLog.DataSources.Add(<span style="color: #006080">&quot;Application!*&quot;</span>);</p><p><br />            diagnosticMonitorConfiguration.WindowsEventLog.DataSources.Add(<span style="color: #006080">&quot;System!*&quot;</span>);</p><p><br />            diagnosticMonitorConfiguration.WindowsEventLog.ScheduledTransferPeriod =<br />               TimeSpan.FromMinutes(transferPeriod);</p><p><br /><br />            PerformanceCounterConfiguration performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();</p><p><br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\Processor(_Total)\% Processor Time&quot;</span>;</p><p><br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);</p><p><br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\Memory\Available MBytes&quot;</span>;</p><p><br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);<br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET Applications(__Total__)\Requests/Sec&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\WFPv4\Active Outbound Connections&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\Network Interface(*)\Bytes Sent/sec&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\Network Interface(*)\Bytes Received/sec&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET\Request Execution Time&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET\Request Wait Time&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET\Requests Queued&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET\Requests Rejected&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET Applications(__Total__)\Cache % Machine Memory Limit Used&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET Applications(__Total__)\Cache Total Entries&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);</p><p><br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();<br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET Applications(__Total__)\Cache Total Hit Ratio&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);<br /><br />            performanceCounterConfiguration = <span style="color: #0000ff">new</span> PerformanceCounterConfiguration();</p><p><br />            performanceCounterConfiguration.CounterSpecifier = <span style="color: #006080">@&quot;\ASP.NET Applications(__Total__)\Cache Total Turnover Rate&quot;</span>;<br />            performanceCounterConfiguration.SampleRate = TimeSpan.FromSeconds(performanceSampleRate);<br />            diagnosticMonitorConfiguration.PerformanceCounters.DataSources.Add(performanceCounterConfiguration);<br /><br />            diagnosticMonitorConfiguration.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(transferPeriod);</p><p><br /><br />            roleInstanceDiagnosticManager.SetCurrentConfiguration(diagnosticMonitorConfiguration); <br />        }<br />    }<br /><br />}<br /></p></pre>
</div>

<p>References</p>

<p>Here are are a bunch of links from windows azure forum threads and blog entries that helped me get to the solution above -</p>

<p>Two sites in a web role: one gets 
  <br />System.UnauthorizedAccessException when Azure diagnostics is initialized

  <br /><a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/10d042da-50b1-4930-b0c0-aff22e4144f9">http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/10d042da-50b1-4930-b0c0-aff22e4144f9</a></p>

<p>Issues with v1.3 SDK
  <br /><a title="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/ab6d56dc-154d-4aba-8bde-2b7f7df121c1/" href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/ab6d56dc-154d-4aba-8bde-2b7f7df121c1/">http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/ab6d56dc-154d-4aba-8bde-2b7f7df121c1/</a></p>

<p>Configuration Changes to Windows Azure Diagnostics in Azure SDK v1.3
  <br /><a title="http://convective.wordpress.com/2010/12/01/configuration-changes-to-windows-azure-diagnostics-in-azure-sdk-v1-3/" href="http://convective.wordpress.com/2010/12/01/configuration-changes-to-windows-azure-diagnostics-in-azure-sdk-v1-3/">http://convective.wordpress.com/2010/12/01/configuration-changes-to-windows-azure-diagnostics-in-azure-sdk-v1-3/</a></p>

<p>How to Resolve “SetConfigurationSettingPublisher needs to be called before FromConfigurationSetting can be used” After Moving to Windows Azure SDK 1.3
  <br /><a title="http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3" href="http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3">http://blog.smarx.com/posts/how-to-resolve-setconfigurationsettingpublisher-needs-to-be-called-before-fromconfigurationsetting-can-be-used-after-moving-to-windows-azure-sdk-1-3</a></p>

<p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title><![CDATA[How to fix the error: &ldquo;The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state&rdquo; when running a Windows Azure project in the local development fabric/emulator]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/02/how_to_fix_the_error_the_commu.html" />
   <id>tag:blog.ehuna.org,2011://9.373</id>
   
   <published>2011-02-13T19:43:00Z</published>
   <updated>2011-02-13T19:44:12Z</updated>
   
   <summary>So you’ve just installed the latest Windows Azure SDK 1.3 or you’ve upgraded your Azure 1.2 SDK.&amp;#160; You press F5 or run your azure project in the local emulator (previously the ‘local development fabric’) you get the error: The communication...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>So you’ve just installed the latest Windows Azure SDK 1.3 or you’ve upgraded your Azure 1.2 SDK.&#160; You press F5 or run your azure project in the local emulator (previously the ‘local development fabric’) you get the error:</p>  <blockquote>   <p><em>The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state</em></p> </blockquote>  <p>In Visual Studio, it might look like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image_thumb.png" width="477" height="313" /></a></p>  <p>Bummer.&#160; But don’t worry, below I have details on how to fix this issue.</p>  ]]>
      <![CDATA[  <p><strong>How to fix the error: “The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state” when running a Windows Azure project in the local development fabric/emulator</strong></p>  <p>If you click on “View Detail…” you’ll see this exception -</p>  <p><a href="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image_3.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image_thumb_3.png" width="478" height="196" /></a></p>  <p>Here’s the full exception -</p>  <blockquote>   <p><em>System.ServiceModel.CommunicationObjectFaultedException was unhandled        <br />&#160; Message=The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.         <br />&#160; Source=mscorlib         <br />&#160; StackTrace:         <br />&#160;&#160;&#160; Server stack trace:         <br />&#160;&#160;&#160;&#160;&#160;&#160; at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)         <br />&#160;&#160;&#160; Exception rethrown at [0]:         <br />&#160;&#160;&#160;&#160;&#160;&#160; at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)         <br />&#160;&#160;&#160;&#160;&#160;&#160; at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp; msgData, Int32 type)         <br />&#160;&#160;&#160;&#160;&#160;&#160; at System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)         <br />&#160;&#160;&#160;&#160;&#160;&#160; at System.ServiceModel.ClientBase`1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)         <br />&#160;&#160;&#160;&#160;&#160;&#160; at Microsoft.WindowsAzure.Hosts.WaIISHost.Program.Main(String[] args)         <br />&#160; InnerException</em></p> </blockquote>  <p>There seems to be a bug in the Windows Azure SDK 1.3 that causes this exception to occur if your Web.Config file is read-only.&#160; Since many of us use TFS or some other source control system, there’s a high chance your Web.Config is read-only and you will get this error when you run your azure project in the local emulator.</p>  <p>The fix: simply make your Web.Config not read-only.&#160; You can manually change the read-only attribute in windows explorer, but when you get the latest from source control, it will be marked as read-only again.</p>  <p>So a better way is to create a post-build event that marks the Web.Config as not read-only right after compilation, but before your project starts running in the local emulator.</p>  <p>Right-click on your ASP.NET site or WCF web service project and choose Properties &gt; Build Events -    <br /></p>  <p><a href="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image_4.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/fc71566356ea_9A4F/image_thumb_4.png" width="463" height="306" /></a></p>  <p>In the ‘Post-build event command line’, enter -</p>  <blockquote>   <p><em>attrib -r &quot;$(ProjectDir)Web.Config&quot;</em></p> </blockquote>  <p>That’s it!&#160; Now you can run your windows azure project in the 1.3 emulator and the stupid exception will no longer occur.</p>  <p>Here’s the original thread in the Windows Azure forums, where I found this solution -</p>  <blockquote>   <p>Error deploying locally 29 November 2010 Azure Tools      <br /><a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuretroubleshooting/thread/26165c71-f941-4d84-9ef3-649d7bab0066">http://social.msdn.microsoft.com/Forums/en-US/windowsazuretroubleshooting/thread/26165c71-f941-4d84-9ef3-649d7bab0066</a></p> </blockquote>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title><![CDATA[How to automate the creation of a Windows Azure 1.3 package in Team Foundation Server (TFS) for a web role hosted in &lsquo;Full IIS&rsquo; with multiple sites]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/02/how_to_automate_the_creation_o.html" />
   <id>tag:blog.ehuna.org,2011://9.372</id>
   
   <published>2011-02-12T00:10:00Z</published>
   <updated>2011-02-25T17:20:11Z</updated>
   
   <summary>For the last few months we have automated the deployment of our Windows Azure web and worker roles – with a couple of clicks we can compile, package, deploy and run our latest bits in the Azure cloud! &amp;#160; A...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>For the last few months we have automated the deployment of our Windows Azure web and worker roles – with a couple of clicks we can compile, package, deploy and run our latest bits in the Azure cloud!</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb.png" width="416" height="306" /></a>&#160; <em>A sequence of activities in our TFS Build XAML workflow –        <br />notice the first step is to create the Azure Package</em></p> </blockquote>  <p>We use Team Foundation Server 2010 (TFS) and one of the steps is to create the .CSPKG file – the windows azure package that needs to be uploaded to blob storage before you can use the Azure Management APIs to deploy and run your service.&#160; </p>  <p>Below I have some details on how to get that working with the latest Windows Azure SDK, version 1.3.&#160; Note that you could use a different source control system and something like Cruise Control .NET (<a href="http://cruisecontrol.sourceforge.net/">http://cruisecontrol.sourceforge.net/</a>) to automate the deployment of your web and worker roles – the principles are the same.</p>  <blockquote>   <p><em><strong>Update 2/25</strong>: Tom Hollander has a great post on his blog on how to achieve the same thing – check out the section “Supporting Multiple Sites per Role”, where he makes sure the azure project depends on the ASP.Net projects (the sites) and transforms the ServiceDefinition.csdef file to make sure the assemblies for the second site are included in the package -</em></p>    <p><em>Using MSBuild to deploy to multiple Windows Azure environments       <br /></em><a href="http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to-deploy-to-multiple-windows-azure-environments.aspx"><em>http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to-deploy-to-multiple-windows-azure-environments.aspx</em></a></p> </blockquote>  <p>Good times!</p>  <p><strike>As a side note, I hope Microsoft will provide some direction on how to properly automate the creation of an azure package in TFS 2010, without having to manually scan the target builds installed with the azure SDK.</strike></p>  ]]>
      <![CDATA[  <p><strong>How to create a Windows Azure package in Team Foundation Server (TFS)      <br />(when you have multiple sites hosted in ‘Full IIS’ in one Azure web role)</strong></p>  <p>To create the Azure package, with the Azure SDK 1.2 and below, I was using an invoke process workflow activity and calling CSPACK.&#160; Unfortunately, this stopped working after I installed the Azure SDK 1.3 and I started using the “Full IIS” feature to host multiple sites in one web role.</p>  <p>Here’s how you can create your Azure Package in TFS if you have a web role hosted in ‘Full IIS’ with multiple sites -</p>  <p><strong>Step 1 – Edit your Azure project (.csproj) and change the build target</strong></p>  <p>Open your windows azure project (the one that contains your web and/or worker roles) in Visual Studio and <a href="http://msdn.microsoft.com/en-us/library/ms171487(v=vs.80).aspx" target="_blank">edit the project file (.csproj) in the XML editor</a>.</p>  <p>Change the project’s ‘DefaultTargets’ from ‘Build’ to -</p>  <blockquote>   <p><em>DefaultTargets=&quot;PrepareForPackaging;Build;CheckRoleInstanceCount;CopyServiceDefinitionAndConfiguration;        <br />ConfigureWebDeploy;IntelliTrace;CorePublish”</em></p> </blockquote>  <p>So your project XML will look something like this -</p>  <p><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_3.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_3.png" width="655" height="53" /></a></p>  <blockquote>   <p><em>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;        <br />&lt;Project ToolsVersion=&quot;4.0&quot; DefaultTargets=&quot;PrepareForPackaging;Build;CheckRoleInstanceCount;CopyServiceDefinitionAndConfiguration;         <br />ConfigureWebDeploy;IntelliTrace;CorePublish&quot; xmlns=&quot;</em><a href="http://schemas.microsoft.com/developer/msbuild/2003&quot;"><em>http://schemas.microsoft.com/developer/msbuild/2003&quot;</em></a><em>&gt;        <br />&#160; …         <br />&lt;/Project&gt;</em></p> </blockquote>  <p><strong>Step 2 – Create a pre-build event that compiles all of the sites included in your web role</strong></p>  <pre><font face="Trebuchet MS">The only way I found to make sure all of the sites deployed in my web role <br />included all of the needed assemblies was to have a pre-build event on my <br />azure project that compiled each site.</font></pre>

<pre><font face="Trebuchet MS">You can easily do that by right-clicking on your project &gt; Properties &gt; <br />Build Events &gt; and editing the ‘Pre-build event command line’ -</font></pre>

<pre><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_4.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_4.png" width="447" height="273" /></a></pre>

<pre><font face="Trebuchet MS">You can also edit your project XML directly like we did in step 1-</font></pre>

<pre><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_5.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_5.png" width="654" height="237" /></a></pre>

<pre><font face="Trebuchet MS">&#160; &lt;PropertyGroup&gt;<br />&#160;&#160;&#160; &lt;PreBuildEvent&gt;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo PREBUILDSTEP for $(ProjectName)<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild $(ProjectDir)\..\..\<br />          Source\[MYPROJECT].Web.[MYSITE1]\MYSITE1.csproj<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if errorlevel 1 goto BuildEventFailed<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild $(ProjectDir)\..\..\<br />          Source\[MYPROJECT].Web.[MYSITE2]\MYSITE2.csproj<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if errorlevel 1 goto BuildEventFailed<br /> <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; REM Exit properly because the build will not fail<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; REM unless the final step exits with an error code<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; goto BuildEventOK<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; :BuildEventFailed<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo PREBUILDSTEP for $(ProjectName) FAILED<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; exit 1<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; :BuildEventOK<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo PREBUILDSTEP for $(ProjectName) COMPLETED OK<br />&#160;&#160;&#160; &lt;/PreBuildEvent&gt;<br />&#160; &lt;/PropertyGroup&gt;<br />&lt;/Project&gt;</font></pre>

<pre><font face="Trebuchet MS">If I didn’t do this, I would find that after deploying, some assemblies were missing <br />from the azure package (even though I did set ‘copy local=true’ for the assemblies <br />in the project and my solution compiled in TFS did include the sites themselves) -</font></pre>

<p><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_6.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_6.png" width="437" height="237" /></a></p>

<p><em>Note</em>: once you make these changes, your compilation time in Visual Studio may increase, since you will be building the Azure package every time you compile.&#160; </p>

<p>We tend to run and debug our web sites in IIS in local development and we end up unloading the azure projects during development – so this is not an issue for us.</p>

<p><strong>Step 3 – Edit your TFS Build XAML workflow and add a “MSBuild” activity</strong></p>

<p>1) In your XAML workflow, after your project/solution has been compiled, add an activity of type “Microsoft.TeamFoundation.Build.Workflow.Activities.MSBuild” -</p>

<p><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_7.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_7.png" width="475" height="182" /></a></p>

<p>Make sure you choose your targets to be “CorePublish” (although since we edited the project directly, this matters less) -</p>

<p><a href="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_8.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How-to-create-a-Windows-Azure-package-in_E2EA/image_thumb_8.png" width="480" height="349" /></a></p>

<p>That’s it!&#160; Now with one click you can compile, run your tests, and create the windows azure package to deploy your web role hosting multiple sites to the cloud!</p>

<p><strong>Inside Baseball - How I got this working</strong></p>

<p>After our automatic deployments to the Azure cloud stopped working, I had some talks with my co-worker M. and some discussions with <a href="http://twitter.com/#!/smarx" target="_blank">@smarx</a> and others in this thread -</p>

<p>One web role with two sites: 
  <br />how do I package it in TFS or using msbuild tasks? 

  <br /><a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/fd15652e-c7b5-41de-a235-6602b470d9d1">http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/fd15652e-c7b5-41de-a235-6602b470d9d1</a></p>

<p>which got me digging into the MSBUILD tasks that are installed by the Azure SDK here:</p>

<blockquote>
  <p><em>C:\Program Files (x86)\MSBuild\Microsoft\Cloud Service\1.0\Visual Studio 10.0\Microsoft.CloudService.targets</em></p>
</blockquote>

<p><strong>Final note: Development, QA, and Production environments</strong></p>

<p>Just a quick note on our software development process – we have three different branches in source control, corresponding to our three environments.&#160; </p>

<p>Our TFS build XAML workflow can handle all three environments/branches and deploys our services (the web and worker roles) differently depending on the arguments – here’s an example of our schedule:</p>

<div align="left"><a href="http://blog.ehuna.org/liveimages/How.3-package-in-Team-Foundation-Server-_D2BB/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/How.3-package-in-Team-Foundation-Server-_D2BB/image_thumb.png" width="474" height="468" /></a></div>

<p>Make sure your XAML workflow can handle different environments and different services – it will save you tons of time.</p>

<p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title><![CDATA[Tip: use &lsquo;Twitter Search&rsquo; to get great info on events happening now]]></title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2011/01/tip_use_twitter_search_to_get.html" />
   <id>tag:blog.ehuna.org,2011://9.371</id>
   
   <published>2011-01-29T19:41:00Z</published>
   <updated>2011-02-02T03:34:48Z</updated>
   
   <summary>I just posted the following to my FaceBook friends - I found the link to the wikileak’ed cable through a ‘Twitter Search’.&amp;#160; Since I find many don’t yet use Twitter, I thought I’d post a tip on this specific feature.&amp;#160;...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>I just posted the following to my FaceBook friends -</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_thumb.png" width="376" height="520" /></a></p> </blockquote>  <p>I found the link to the wikileak’ed cable through a ‘Twitter Search’.&#160; Since I find many don’t yet use Twitter, I thought I’d post a tip on this specific feature.&#160; See below for details.</p>  ]]>
      <![CDATA[  <p><strong>Tip: use ‘Twitter Search’ to get great info on events happening now</strong></p>  <p>I find a Twitter search is a great tool for finding out interesting info on what's happening now - it's like a Google search, but you get relevant results from real people and news organizations from minutes ago.&#160; </p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_3.png"><em></em></a><a href="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_3.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_thumb_3.png" width="594" height="698" /></a></a>       <br /></a><em>A sample Twitter search on ‘Egypt’ – tons of info in real-time</em></p> </blockquote>  <p>To try it out, go to -    <br />&#160; <br />&#160; <a href="http://search.twitter.com/">http://search.twitter.com/</a>     <br />&#160; <br />and type 'egypt' - look at all the links to images, stories, live video feeds and even info directly from people in Cairo.&#160; There's always a lot of 'noise' - irrelevant comments, but just like in a Google/Bing search, scan around for the good stuff.     <br />&#160; <br />In fact, I found the link to the above wikileak'ed cable through a twitter search.&#160; For more advanced searches, see <a href="http://search.twitter.com/about" target="_blank">http://search.twitter.com/about</a>.</p>  <p>You don’t need a Twitter account and you don’t need to post on Twitter to use its search – it’s just another way to search for information.</p>  <p><strong>It’s like being part of the ‘Borg Collective’</strong></p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_4.png"><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="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_A4AD/image_thumb_4.png" width="595" height="442" /></a>       <br /><em>A Twitter search is like being part of the ‘Borg Collective’</em></p> </blockquote>  <p>When I mentioned to Janelle how I get tons of cool comments and info when watching a football game or any other live event, she said it’s like you’re now part of the ‘Borg Collective’.&#160; The Borg The Borg are a fictional pseudo-race of cybernetic organisms depicted in the show ‘Star Trek’ - from the <a href="http://en.wikipedia.org/wiki/Borg_(Star_Trek)#Borg_Collective" target="_blank">Wikipedia entry</a> -</p>  <blockquote>   <p><strong><em>Borg Collective          <br /></em></strong>      <br /><em>Also referred to as the &quot;hive mind&quot; or &quot;collective consciousness&quot; , this is the term used to describe the group mind of the Borg civilization. Each Borg individual, or drone, is linked to the collective by a sophisticated subspace network […].&#160; </em></p>    <p><em>The collective consciousness not only gives them the ability to &quot;share the same thoughts&quot;, but also to adapt with great speed to defensive tactics used against them</em></p> </blockquote>  <p>That’s exactly right!&#160; You are getting feedback from millions of people and news organizations on whatever is going on right now.&#160; Much better than just watching CNN - good times!</p>  <p>There are tons of other useful Twitter features – but it’s not trivial to get started.&#160; Here’s an email from Twitter with some good tips -</p>  <blockquote>   <p><a href="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_1121D/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/Tip-use-Twitter-Search-to-get-great-info_1121D/image_thumb.png" width="644" height="345" /></a></p> </blockquote>  <p>Like any other tool, you really ‘get’ the benefits when you gets your hands dirty and start using it.&#160; So come join us on Twitter and the above tips will make more sense -</p>  <p>Good times!</p>]]>
   </content>
</entry>
<entry>
   <title>What services run inside a Windows Azure Virtual Machine Instance?</title>
   <link rel="alternate" type="text/html" href="http://blog.ehuna.org/2010/11/what_services_run_inside_a_win.html" />
   <id>tag:blog.ehuna.org,2010://9.368</id>
   
   <published>2010-12-01T03:12:00Z</published>
   <updated>2010-12-01T03:14:22Z</updated>
   
   <summary>I just watched this excellent PDC 2010 session - &amp;#160; Inside Windows Azure Virtual Machines &amp;#160; http://goo.gl/lkXLF In the presentation, Hoi Vo has a slide with all of the services currently available in a Windows Azure Virtual Machine instance, I...</summary>
   <author>
      <name></name>
      <uri>www.ehuna.org</uri>
   </author>
         <category term="03 - Technical" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://blog.ehuna.org/">
      <![CDATA[<p>I just watched this excellent PDC 2010 session - </p>  <p>&#160; Inside Windows Azure Virtual Machines   <br />&#160; <a href="http://goo.gl/lkXLF">http://goo.gl/lkXLF</a> </p>  <p>In the presentation, Hoi Vo has a slide with all of the services currently available in a Windows Azure Virtual Machine instance, I took a screenshot -</p>  <p><a href="http://blog.ehuna.org/liveimages/WhatservicesruninsideaWindowsAzureVirtua_10E39/image.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ehuna.org/liveimages/WhatservicesruninsideaWindowsAzureVirtua_10E39/image_thumb.png" width="361" height="274" /></a> </p>  <p>These services are enabled in the current Windows Azure Guest OS – which <a href="http://msdn.microsoft.com/en-us/library/ee924680.aspx" target="_blank">from this page</a>, seems to be 2.0 (11/22/2010) and below.</p>]]>
      
   </content>
</entry>

</feed>

