<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sajo Jacob</title>
	<atom:link href="http://sajojacob.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://sajojacob.com/blog</link>
	<description>Unknown Error Occured!</description>
	<lastBuildDate>Thu, 25 Apr 2013 18:01:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Leaving Microsoft</title>
		<link>http://sajojacob.com/blog/2013/04/leaving-microsoft/</link>
		<comments>http://sajojacob.com/blog/2013/04/leaving-microsoft/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 18:00:11 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/?p=215</guid>
		<description><![CDATA[I&#8217;ve made a really hard decision of leaving Microsoft. Working at Microsoft has been an incredible experience and I have only great things to say. Here is a copy of the farewell email I sent out to my friends &#38;<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2013/04/leaving-microsoft/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p><span style="white-space: normal; text-transform: none; word-spacing: 0px; float: none; color: rgb(51,51,51); font: 13px/19px georgia, 'Times New Roman', 'Bitstream Charter', times, serif; display: inline !important; letter-spacing: normal; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">I&#8217;ve made a really hard decision of leaving Microsoft. Working at Microsoft has been an incredible experience and I have only great things to say. Here is a copy of the farewell email I sent out to my friends &amp; peers at Microsoft -</span></p>
<blockquote><p><span style="white-space: normal; text-transform: none; word-spacing: 0px; float: none; color: rgb(51,51,51); font: 13px/19px georgia, 'Times New Roman', 'Bitstream Charter', times, serif; display: inline !important; letter-spacing: normal; text-indent: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><br />
<table class="MsoTableGrid" style="border-top: medium none; border-right: medium none; border-collapse: collapse; border-bottom: medium none; border-left: medium none; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellspacing="0" cellpadding="0" border="1">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<td style="border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; background: #d9e2f3; border-bottom: windowtext 1pt solid; padding-bottom: 0in; padding-top: 0in; padding-left: 5.4pt; border-left: windowtext 1pt solid; padding-right: 5.4pt; width: 1039.1pt; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent5; mso-background-themetint: 51" valign="top" width="1385">
<p class="MsoNormal" style="margin: 0in 0in 0pt"><b><i><u><?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" /><o:p><span style="text-decoration: none"><font color="#000000" size="3" face="Calibri"></font></span></o:p></u></i></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><b><i><font size="3"><font color="#000000"><font face="Calibri"><u></u></font></font></font></i></b>&nbsp;</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><b><i><font size="3"><font color="#000000"><font face="Calibri"><u>Short version</u> – I’m leaving Microsoft and will miss working with you, long version keep reading <img src='http://sajojacob.com/blog/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Leaving Microsoft" class='wp-smiley' title="Leaving Microsoft" /> <o:p></o:p></font></font></font></i></b></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><o:p><font color="#000000" size="3" face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><font size="3"><font color="#000000"><font face="Calibri">Working at Microsoft was the most fun I’ve had till date at any company and I have to say that each day here has brought interesting challenges and learnings of all sorts. I count myself lucky and privileged to have worked and contributed to the Windows Azure team which without a doubt is the shining north star of the company. There is a lot that we have accomplished and a lot that I’m super excited looking into the future of Windows Azure –&nbsp; You can bet that I will be cheering for all the accomplishments of the team from the sidelines.<o:p></o:p></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><o:p><font color="#000000" size="3" face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><font size="3"><font color="#000000"><font face="Calibri">The best part of it all has been getting to know and work with a lot of amazingly smart people. But it is time for me to step out and try something new that scares the day lights of me<o:p></o:p></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><o:p><font color="#000000" size="3" face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><font size="3"><font color="#000000"><font face="Calibri">Few interesting things I learned at Microsoft –<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol; mso-bidi-font-style: italic"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font face="Calibri"><font size="3">Never ask anyone how long they have worked for Microsoft unless you want to face plant – </font><i><font size="3">(especially if you haven’t crossed 10 years of service)<o:p></o:p></font></i></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">If you don’t have a Windows Phone, prepare yourself for a pep talk every elevator ride.<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">Never underestimate the influencing power you get from 1:1 lunch meetings.<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">You can learn a lot about a person by quickly scanning their Office space.<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">Before you get a patent, you will invent dozens of acronyms.<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">You can quickly tell the difference between a dev. and a PM by looking at their calendar, unless the ninja PowerPoint skills don’t give it away first.<o:p></o:p></font></font></font></p>
<p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in; mso-list: l0 level1 lfo1"><font color="#000000"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"><span style="mso-list: ignore"><font size="3">·</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><font face="Calibri">Admin’s are your best friend. (Hi Robyn </font><span style="font-family: wingdings">J</span></font><font size="3"><font face="Calibri">)<o:p></o:p></font></font></font></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><o:p><font color="#000000" size="3" face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><font color="#000000" size="3" face="Calibri">Thanks for giving me the privilege of working with you and being part of this amazing company. Tomorrow is my last day, but you can connect with me on </font><a href="http://www.linkedin.com/in/sajojacob">LinkedIn</a><font color="#0563c1" size="3" face="Calibri"></font><font color="#000000" size="3" face="Calibri">, </font><a href="https://twitter.com/sajo">Twitter</a><font color="#0563c1" size="3" face="Calibri"></font><font color="#000000" size="3" face="Calibri"> or my personal </font><a href="mailto:sajo@sajojacob.com">email</a><font color="#0563c1" size="3" face="Calibri"></font><o:p></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><o:p><font color="#000000" size="3" face="Calibri">&nbsp;</font></o:p></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt"><font size="3"><font color="#000000"><font face="Calibri">Jacob<o:p></o:p></font></font></font></p>
</td>
</tr>
</tbody>
</table>
<p></span></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2013/04/leaving-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Startup tasks, Elevated privileges &amp; VM Role</title>
		<link>http://sajojacob.com/blog/2011/03/startup-tasks-elevated-privileges-vm-role/</link>
		<comments>http://sajojacob.com/blog/2011/03/startup-tasks-elevated-privileges-vm-role/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 16:00:00 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Elevated privileges]]></category>
		<category><![CDATA[Startup tasks]]></category>
		<category><![CDATA[VM Role]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2011/03/startup-tasks-admin-role-vm-role-part-1/</guid>
		<description><![CDATA[In this blog post, let’s do a hands on implementation of the Windows Azure Startup tasks and compare the different role types in Azure. A Primer on Windows Azure Roles Windows Azure supports three types of roles: Web role: used<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2011/03/startup-tasks-elevated-privileges-vm-role/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>In this blog post, let’s do a hands on implementation of the Windows Azure Startup tasks and compare the different role types in Azure.</p>
<h4>A Primer on Windows Azure Roles</h4>
<p>Windows Azure supports three types of roles:</p>
<ol>
<li>Web role: used for web applications and is supported by IIS 7.</li>
<li>Worker role: used for general development and/or to perform any background processing work for a web role.</li>
<li>VM role: used to run an image of Windows Server 2008 R2 created on-premise with any required customizations.</li>
</ol>
<p>In addition to these with 1.3 SDK, you now have to ability to launch your Web/Worker role with elevated privileges and/or use startup tasks to run scripts/exe’s/msi etc. with elevated privileges. So think of it as Web/Worker role with Jet packs.</p>
<p>&nbsp;</p>
<blockquote>
<h4>With great power comes greater responsibility</h4>
</blockquote>
<p>&nbsp;</p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb6.png" alt="image thumb6 Startup tasks, Elevated privileges &amp; VM Role" width="595" height="410" border="0" /></a></p>
<p>The diagram above is not meant to say one is better or the other is bad, it is meant to give you an understanding of the differences with respect to the abstraction and control that varies with each of them. As you start changing the environment going upwards, manageability of the application environment becomes more of your responsibility rather than the Fabric’s.</p>
<p>&nbsp;</p>
<h3>Startup Tasks</h3>
<p>To demonstrate a scenario where you need to prep your application environment with a dependency, let’s attempt to install Internet Explorer 9 beta on a Cloud VM which is running on Windows Server 2008 R2.</p>
<p>Please note that to try this on Windows Server 2008 <strong>(non R2)</strong> you might have to additionally install Platform update for Windows Server 2008 for DirectX  (which is a dependency for IE9).</p>
<p style="margin-bottom: 20px;">Here is the screenshot of my solution explorer for visual clarity.</p>
<p style="margin-bottom: 20px;"><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image1.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb1.png" alt="image thumb1 Startup tasks, Elevated privileges &amp; VM Role" width="251" height="307" border="0" /></a></p>
<p>I have a tiny little REST service “DistributeRain” which simply returns the installed browser information</p>
<pre class="code"><span style="color: blue;">public class </span><span style="color: #2b91af;">DistributeRain </span>{
    <span style="color: #2b91af;">Version </span>ver = <span style="color: blue;">null</span>;

    <span style="color: green;">//REST Service to return browser information </span>[<span style="color: #2b91af;">WebInvoke</span>(UriTemplate = <span style="color: #a31515;">"/GetBrowserVersion"</span>, Method = <span style="color: #a31515;">"GET"</span>)]
    <span style="color: blue;">public string </span>GetBrowserVersion()
    {
        <span style="color: #2b91af;">Thread </span>t = <span style="color: blue;">new </span><span style="color: #2b91af;">Thread</span>(<span style="color: blue;">new </span><span style="color: #2b91af;">ThreadStart</span>(GetBrowserInfo));
        t.SetApartmentState(<span style="color: #2b91af;">ApartmentState</span>.STA);
        t.Start();
        t.Join();
        <span style="color: blue;">return </span>ver.ToString();
    }

    <span style="color: green;">//Grab the version </span><span style="color: blue;">public void </span>GetBrowserInfo ()
    {
        <span style="color: #2b91af;">WebBrowser </span>browser = <span style="color: blue;">new </span><span style="color: #2b91af;">WebBrowser</span>();
        ver = browser.Version;
    }
}</pre>
<p>First let’s try an out-of-box install of our service with some of the default configuration settings in the ServiceConfiguration file that is generated with the 1.3 SDK. <span style="font-size: x-small;">We still haven’t done anything to install IE9 beta.</span></p>
<p>Here is how my service configuration looks, notice the highlighted line</p>
<pre class="code"><span style="color: blue;">&lt;?</span><span style="color: #a31515;">xml </span><span style="color: red;">version</span><span style="color: blue;">=</span>"<span style="color: blue;">1.0</span>" <span style="color: red;">encoding</span><span style="color: blue;">=</span>"<span style="color: blue;">utf-8</span>"<span style="color: blue;">?&gt; <span style="background-color: #ffff00;">&lt;</span></span></pre>
<p><span style="background-color: #ffff00;"><span style="color: #a31515;">ServiceConfiguration </span><span style="color: red;">serviceName</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">RainCloud</span>&#8221; <span style="color: red;">xmlns</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration</span>&#8221; <span style="color: red;">osFamily</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">1</span>&#8221; <span style="color: red;">osVersion</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">*</span>&#8220;</span></p>
<pre class="code"><span style="color: blue;"><span style="background-color: #ffff00;">&gt;</span> &lt;</span><span style="color: #a31515;">Role </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">RainService</span>"<span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Instances </span><span style="color: red;">count</span><span style="color: blue;">=</span>"<span style="color: blue;">1</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">ConfigurationSettings</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">UseDevelopmentStorage=true</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">true</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">username</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">password</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">2999-03-23T23:59:59.0000000-07:00</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Setting </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled</span>" <span style="color: red;">value</span><span style="color: blue;">=</span>"<span style="color: blue;">true</span>" <span style="color: blue;">/&gt; &lt;/</span><span style="color: #a31515;">ConfigurationSettings</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Certificates</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Certificate </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption</span>" <span style="color: red;">thumbprint</span><span style="color: blue;">=</span>"<span style="color: blue;">thumbprint</span>" <span style="color: red;">thumbprintAlgorithm</span><span style="color: blue;">=</span>"<span style="color: blue;">sha1</span>" <span style="color: blue;">/&gt; &lt;/</span><span style="color: #a31515;">Certificates</span><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">Role</span><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">ServiceConfiguration</span><span style="color: blue;">&gt; </span></pre>
<p>So the following attributes determines the Operating System on which your role will be deployed</p>
<pre class="code" style="width: 244px; height: 23px;"><span style="color: red;">osFamily</span><span style="color: blue;">=</span>"<span style="color: blue;">1</span>" <span style="color: red;">osVersion</span><span style="color: blue;">=</span>"<span style="color: blue;">*</span>"</pre>
<p>&nbsp;</p>
<blockquote>
<h6>1.X versions of the OS are compatible with Windows Server 2008 SP2 and 2.X is compatible with Windows Server 2008 R2.</h6>
</blockquote>
<p>&nbsp;</p>
<p>Let’s deploy the above solution as is and check the results.</p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image2.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb2.png" alt="image thumb2 Startup tasks, Elevated privileges &amp; VM Role" width="618" height="214" border="0" /></a></p>
<p>So we got back Internet Explorer 7, which comes installed out-of-box with a Windows Server 2008 SP2 compatible OS.</p>
<p>&nbsp;</p>
<blockquote>
<h6>Take a look at the <a href="http://msdn.microsoft.com/en-us/library/ee924680.aspx"><span style="color: #4bacc6;">OS matrix</span></a> for the OS flavors available on Azure.</h6>
</blockquote>
<p>&nbsp;</p>
<p>Now lets flip the osFamily switch and redeploy with the following change.</p>
<pre class="code" style="width: 244px; height: 23px;"><span style="color: red;">osFamily</span><span style="color: blue;">=</span>"</pre>
<p><span style="color: #0000ff;">2</span></p>
<pre class="code" style="width: 244px; height: 23px;">" <span style="color: red;">osVersion</span><span style="color: blue;">=</span>"<span style="color: blue;">*</span>"</pre>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb3.png" alt="image thumb3 Startup tasks, Elevated privileges &amp; VM Role" width="629" height="215" border="0" /></a></p>
<p>Like expected you get back a version corresponding to Internet Explorer 8 which is running on a Windows Server 2008 R2 compatible OS.</p>
<p>&nbsp;</p>
<blockquote>
<h6>You can change the version of the Operating System from the<a href="http://msdn.microsoft.com/en-us/library/gg433101.aspx"><span style="color: #4bacc6;">portal</span></a></h6>
<p>&nbsp;</p></blockquote>
<p>Now that we know the lay of the land, let’s attempt to install Internet Explorer 9 beta on a Windows Server 2008 R2 instance.</p>
<h3>Install IE9 beta</h3>
<p>So the magic piece of code is highlighted below in the ServiceDefinition file.</p>
<pre class="code"><span style="color: blue;">&lt;?</span><span style="color: #a31515;">xml </span><span style="color: red;">version</span><span style="color: blue;">=</span>"<span style="color: blue;">1.0</span>" <span style="color: red;">encoding</span><span style="color: blue;">=</span>"<span style="color: blue;">utf-8</span>"<span style="color: blue;">?&gt; &lt;</span><span style="color: #a31515;">ServiceDefinition </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">RainCloud</span>" <span style="color: red;">xmlns</span><span style="color: blue;">=</span>"<span style="color: blue;">http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition</span>"<span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">WebRole </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">RainService</span>"<span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Sites</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Site </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Web</span>"<span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Bindings</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Binding </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Endpoint1</span>" <span style="color: red;">endpointName</span><span style="color: blue;">=</span>"<span style="color: blue;">Endpoint1</span>" <span style="color: blue;">/&gt; &lt;/</span><span style="color: #a31515;">Bindings</span><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">Site</span><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">Sites</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Endpoints</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">InputEndpoint </span><span style="color: red;">name</span><span style="color: blue;">=</span>"<span style="color: blue;">Endpoint1</span>" <span style="color: red;">protocol</span><span style="color: blue;">=</span>"<span style="color: blue;">http</span>" <span style="color: red;">port</span><span style="color: blue;">=</span>"<span style="color: blue;">80</span>" <span style="color: blue;">/&gt; &lt;/</span><span style="color: #a31515;">Endpoints</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Imports</span><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Import </span><span style="color: red;">moduleName</span><span style="color: blue;">=</span>"<span style="color: blue;">Diagnostics</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Import </span><span style="color: red;">moduleName</span><span style="color: blue;">=</span>"<span style="color: blue;">RemoteAccess</span>" <span style="color: blue;">/&gt; &lt;</span><span style="color: #a31515;">Import </span><span style="color: red;">moduleName</span><span style="color: blue;">=</span>"<span style="color: blue;">RemoteForwarder</span>" <span style="color: blue;">/&gt; &lt;/</span><span style="color: #a31515;">Imports</span><span style="color: blue;">&gt; <span style="background-color: #ffff00;"> &lt;</span></span><span style="color: #a31515;"><span style="background-color: #ffff00;">Startup</span></span></pre>
<p><span style="background-color: #ffff00;"><span style="color: blue;">&gt; &lt;</span><span style="color: #a31515;">Task </span><span style="color: red;">commandLine</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">IE9.cmd</span>&#8221; <span style="color: red;">executionContext</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">elevated</span>&#8221; <span style="color: red;">taskType</span><span style="color: blue;">=</span>&#8220;<span style="color: blue;">simple</span>&#8220;</span><span style="background-color: #ffff00;"><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">Task</span></span><span style="background-color: #ffff00;"><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">Startup</span></span></p>
<pre class="code"><span style="color: blue;"><span style="background-color: #ffff00;">&gt;</span> &lt;/</span><span style="color: #a31515;">WebRole</span><span style="color: blue;">&gt; &lt;/</span><span style="color: #a31515;">ServiceDefinition</span><span style="color: blue;">&gt; </span></pre>
<p>You need to simply set the commandLine to the name of the program/script that you want to run and executionContext to the permissions with which you want the commandLine arguments to run.</p>
<p>So what is in our IE9.cmd file?</p>
<pre class="csharpcode" style="width: 305px; height: 25px;">
<span style="color: blue;">IE9-Windows7-x64-enu.exe /quiet</span></pre>
<p>Yes, that’s it!</p>
<blockquote>
<h6>Remember to use silent switches (non UI) while installing executables/MSI’s to avoid the need for user intervention.</h6>
</blockquote>
<p>&nbsp;</p>
<p>Make sure to change the command file properties in Visual Studio to <em>“Copy to the Output Directory”</em></p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb4.png" alt="image thumb4 Startup tasks, Elevated privileges &amp; VM Role" width="268" height="165" border="0" /></a></p>
<p>Seems like we’re all set to have IE9 installed on Azure, let’s try another deploy and retest.</p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb3.png" alt="image thumb3 Startup tasks, Elevated privileges &amp; VM Role" width="629" height="215" border="0" /></a></p>
<p>So seems like our IE9 install failed for some reason. Some debugging by remoting in revealed an error <span style="background-color: #ffff00;"><em>“Process exit code 0&#215;00000070 (112) [There is not enough space on the disk. ]</em>”</span></p>
<p>I did notice in the logs, that the IE9 install was attempting to install a .MSU file (which is a windows update), and anytime you think about Windows Update in Azure, know that Windows update is disabled since all OS updates are managed for you by the platform itself. So I went ahead and turned on Windows Update with a slight change to my startup task.</p>
<p>I added the following to my IE9.cmd batch file.</p>
<p><span style="background-color: #ffff00;">sc config wuauserv <span class="kwrd">start</span>= auto net <span class="kwrd">start</span> wuauserv</span></p>
<pre class="csharpcode" style="width: 416px; height: 74px;"><span style="color: blue;">IE9-Windows7-x64-enu.exe /quiet</span></pre>
<p>Ideally you should turn off Windows Update right after your installs are completed, and installing IE9 introduces reboot scenarios. I will not cover install + reboot scenarios in this blog post.</p>
<p>So I was feeling slightly more confident, but the next deploy with this change had the same issue.</p>
<p><a href="http://blog.smarx.com/">Steve Marx</a> suggested remoting into the Azure VM and running the Startup task as a “System” user which is a great way to simulate what the startup task was attempting to do. I saw the same error when running as System which validated that the issue had something to do with space where the install files were expanding.</p>
<h5></h5>
<h5>%TEMP%</h5>
<p>So there is a <a href="http://msdn.microsoft.com/en-us/library/gg465400.aspx#Y976">100MB limit</a> on the TEMP folder used by the startup tasks. So to extend the Quota and make sure that my process had access to the TEMP variable, I wrote a console app which spawned my IE9 install and prior to spawning the install, it did the following to set the TEMP variable. All you need to do after that is to call the console app from the startup task.</p>
<pre class="code"><span style="color: #2b91af;">Directory</span>.CreateDirectory(path);
<span style="color: #2b91af;">Environment</span>.SetEnvironmentVariable(<span style="color: #a31515;">"TEMP"</span>, path);</pre>
<p>Let’s see what our REST service returns back after this change.</p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2011/03/image5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://sajojacob.com/blog/wp-content/uploads/2011/03/image_thumb5.png" alt="image thumb5 Startup tasks, Elevated privileges &amp; VM Role" width="680" height="235" border="0" /></a></p>
<p>Perfect, we now get back the version corresponding to IE9 beta. Hopefully this will get you started with thinking about the possibilities and applications for Startup tasks.</p>
<p>I will cover Elevated privileges and VM Roles in subsequent blog posts. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2011/03/startup-tasks-elevated-privileges-vm-role/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect can do for Microsoft what iPhone did for Apple!</title>
		<link>http://sajojacob.com/blog/2010/11/kinect-can-do-for-microsoft-what-iphone-did-for-apple/</link>
		<comments>http://sajojacob.com/blog/2010/11/kinect-can-do-for-microsoft-what-iphone-did-for-apple/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 01:37:36 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[wii]]></category>
		<category><![CDATA[Xbox]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2010/11/kinect-can-do-for-microsoft-what-iphone-did-for-apple/</guid>
		<description><![CDATA[After one broken lamp and some really sore legs, I declare Kinect as Microsoft’s iPhone! Microsoft just unleashed a beast with Kinect in terms of technical excellence and mainstream consumer appeal, but the question to be asked is, does Microsoft<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2010/11/kinect-can-do-for-microsoft-what-iphone-did-for-apple/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p><font size="3"><font color="#000000"><font face="Calibri"><br />
<h6><font color="#000000"><font size="3"><a href="http://sajojacob.com/blog/wp-content/uploads/2010/11/image8.png"><img style="background-image: none; border-right-width: 0px; margin: 2px 7px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image8 thumb Kinect can do for Microsoft what iPhone did for Apple!" align="left" src="http://sajojacob.com/blog/wp-content/uploads/2010/11/image8_thumb.png" width="240" height="68" /></a></font></font></h6>
<h6><font style="font-weight: normal">After one broken lamp and some really sore legs, I declare Kinect as Microsoft’s iPhone! </font></h6>
<h6><font style="font-weight: normal">Microsoft just unleashed a beast with Kinect in terms of technical excellence and mainstream consumer appeal, but the question to be asked is, does Microsoft clearly understand the potential of Kinect with everything else it does? </font></h6>
<h6>&#160;&#160; </h6>
<h6><font style="font-weight: normal">If Steve Ballmer’s recent quote on Windows 8 being “Microsoft’s riskiest bet” is any indication, I would imagine they very clearly do.</font></h6>
<h6><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6><font size="3"><font style="font-weight: normal">Kinect has the promise to induce its technology into new and existing devices just like iPhone did with the </font><a href="http://sajojacob.com/blog/wp-content/uploads/2010/11/image.png"><img style="background-image: none; border-right-width: 0px; margin: 9px 0px 5px 13px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image thumb Kinect can do for Microsoft what iPhone did for Apple!" align="right" src="http://sajojacob.com/blog/wp-content/uploads/2010/11/image_thumb.png" width="99" height="244" /></a><font style="font-weight: normal">iPod touch, iPad, the new MacBook Air and Apple TV.</font></font></h6>
<h6><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6><font size="3"><font style="font-weight: normal">Microsoft excels at looking at the existing products, innovating them to the next level and building an extensible platform around them. Microsoft took what Nintendo did with the Wii and just fantastically outdid them unlike Sony who simply copied the Wii with the Move. </font></font></h6>
<h6><font size="3"><font style="font-weight: normal">With the Kinect, Microsoft has mastered the art of facial &amp; voice&#160; recognition, motion sensing and intuitive gesture driven software development. And with Windows Azure they have cleared way for a full reset for the next generation of connected devices.</font></font></h6>
<h6><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6><font size="3"><font style="font-weight: normal">I predict we’ll see the ripple effects of these two key technologies not only in next iteration of Windows OS, Windows Phone, tablets but also in a whole new range of enterprise and consumer devices which uses its Embedded OS technology. </font></font></h6>
<h6 align="left"><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6 align="left"><font size="3"><font style="font-weight: normal"></font></font></h6>
<h6 align="left"><font size="3"><font style="font-weight: normal">Who knows there might even be a “Microsoft TV” in the makings.</font></font></h6>
<p>     </font></font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2010/11/kinect-can-do-for-microsoft-what-iphone-did-for-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Azure PDC announcements in a nutshell</title>
		<link>http://sajojacob.com/blog/2010/10/azure-pdc-announcements-in-a-nutshell/</link>
		<comments>http://sajojacob.com/blog/2010/10/azure-pdc-announcements-in-a-nutshell/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 03:09:57 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[Infrastructure as a Service]]></category>
		<category><![CDATA[Microsoft PDC]]></category>
		<category><![CDATA[VM Role]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2010/10/azure-pdc-announcements-in-a-nutshell/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; So both my predictions came true There were a lot of announcements on the Azure platform and the developer toolset space, but I will highlight some of the main announcements in this post. &#160; Cost Like I mentioned<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2010/10/azure-pdc-announcements-in-a-nutshell/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p align="justify">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/Microsoft-PDC-2010.jpg"><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="Microsoft-PDC-2010" border="0" alt="Microsoft PDC 2010 thumb Azure PDC announcements in a nutshell" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/Microsoft-PDC-2010_thumb.jpg" width="144" height="144" /></a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/windows_azure.jpg"><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="windows_azure" border="0" alt="windows azure thumb Azure PDC announcements in a nutshell" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/windows_azure_thumb.jpg" width="193" height="145" /></a></p>
<p>So both my <a href="http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/">predictions</a> came true <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="wlEmoticon smile1 Azure PDC announcements in a nutshell" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/wlEmoticon-smile1.png" title="Azure PDC announcements in a nutshell" /> There were a lot of announcements on the Azure platform and the developer toolset space, but I will highlight some of the main announcements in this post.</p>
<h3>&#160;</h3>
<h1><font style="font-weight: bold">Cost</font></h1>
<p>Like I mentioned in my previous <a href="http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/">post</a>, cost has been a BIG pain point for developers wanting get their feet wet with Azure. Windows Azure will soon provide access to the new “Extra Small” Windows Azure instances as part of the “Cloud Essentials Pack” offer that will replace the existing partner offers. </p>
<p>This offer provides free access to the Windows Azure platform including 750 extra small instance hours and a SQL Azure database per month at no charge and will be available to Microsoft Partner Network members. </p>
<p><b>Availability</b>: January 7th, 2011.</p>
<h4>&#160;</h4>
<h1><font style="font-weight: bold">IaaS support</font></h1>
<p>We knew this was <a href="http://blogs.msdn.com/b/usisvde/archive/2010/03/29/vm-support-in-windows-azure.aspx">coming</a>. With the introduction of Virtual Machine Role, Windows Azure now supports the <a href="http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/">IaaS model</a>. This should <b>VERY</b> effectively push all those IT decision makers who were on the fence over the cost involved with migration of existing Windows Server applications to Windows Azure and enable customers to quickly move their existing business apps and data over to the cloud. </p>
<p><b>Availability</b>: End of 2010. </p>
<p>As an added bonus to this, Windows Azure will support constructing VM role images for the VM role in the cloud as well. </p>
<p><b>Availability</b>: 2011.</p>
<p>&#160;</p>
<h1><font style="font-weight: bold">Elevated Privileges and Full IIS</font></h1>
<p>The new Elevated Privileges functionality for the Web and Worker role will provide developers the ability to run apps with Admin rights. Elevated mode should let you install dependencies which need admin mode while still running under the PaaS model. </p>
<p><b>Availability</b>: End of 2010.</p>
<p>The Azure Web role will provide Full IIS functionality and the ability to install IIS modules.<b> </b></p>
<p><b>Availability</b>: End of 2010.</p>
<h3>&#160;</h3>
<h1><font style="font-weight: bold">Server Application Virtualization</font></h1>
<p>This is a BIG move; Microsoft is going to support deploying custom virtualized application images onto the Windows Azure worker role. Now customers can migrate their native applications to Windows Azure without the need to rewrite them. So customers can still benefit from the automated service and operation management capabilities of Windows Azure. </p>
<p><b>Availability:</b> </p>
<p>CTP: End of 2010.</p>
<p>Release: Second half of 2011.</p>
<h3>&#160;</h3>
<h1><font style="font-weight: bold">Remote Desktop functionality </font></h1>
<p>Windows Azure will support an out-of-the-box ability to connect and remote into a running Azure instance, this should help facilitate better monitoring and troubleshooting from a development and support standpoint.<b> </b></p>
<p><b>Availability</b>: End of 2010.</p>
<h3>&#160;</h3>
<h1><font style="font-weight: bold">Windows Azure Connect (Project Sydney)</font></h1>
<p>Windows Azure Connect aka Project Sydney essentially enables a simple mechanism to setup an IP-based network connectivity between on-premises and Windows Azure resources. This scenario enables a Hybrid model which I will cover in subsequent posts.</p>
<p><b>Availability</b>: </p>
<p>CTP: End of 2010.</p>
<p>&#160;</p>
<p>There were a ton of other nice enhancements to the existing infrastructure and the developer experience, but I’ll cover them in a later post.</p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2010/10/azure-pdc-announcements-in-a-nutshell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My predictions for Azure PDC announcements</title>
		<link>http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/</link>
		<comments>http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 23:50:36 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Microsoft PDC]]></category>
		<category><![CDATA[VM Role]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/</guid>
		<description><![CDATA[&#160; 1) Pricing for developers Last week Amazon announced that beginning November 1, new AWS customers will be able to run a free Amazon EC2 instance for a year. This is a huge incentive to make their service appealing and<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p style="margin: 0in 0in 6pt" class="PadderBetweenControlandBody">
<p><font size="1" face="Calibri">&#160;</font></p>
</p>
<h5>1) Pricing for developers</h5>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3" face="Calibri">Last week Amazon </font><a href="http://aws.amazon.com/free/"><u><font color="#0000ff" size="3" face="Calibri">announced</font></u></a><font size="3"><font face="Calibri"> that beginning November 1, new AWS customers will be able to run a free Amazon EC2 instance for a year. This is a huge incentive to make their service appealing and approachable to the developer community.             </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3" face="Calibri">Here are the highlights taken from </font><a href="http://aws.amazon.com/free/"><u><font color="#0000ff" size="3" face="Calibri">http://aws.amazon.com/free/</font></u></a><font size="3"><font face="Calibri"> </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/AWSFree.jpg"><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="AWSFree" border="0" alt="AWSFree thumb My predictions for Azure PDC announcements" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/AWSFree_thumb.jpg" width="636" height="330" /></a></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt"><font size="3" face="Calibri">For a long time <i style="mso-bidi-font-style: normal">“Make it less expensive to run my very small service on Windows Azure.”</i> has been the top request on </font><a href="http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting"><u><font color="#0000ff" size="3" face="Calibri">MyGreatWindowsAzureIdea</font></u></a><font size="3"><font face="Calibri"> and Microsoft has heard it loud and clear.                </font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt"><font size="3"><font face="Calibri">And based on the following video interview with Doug Hauger, General Manager of WIndows Azure, it sounds like something along the lines of addressing this will be announced at the PDC this year. (at video time: 1:00)                </font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt"><font size="3"><font face="Calibri">
<p><a href="http://www.youtube.com/watch?v=zdDMKeKs1as&#038;fmt=18">http://www.youtube.com/watch?v=zdDMKeKs1as</a></p>
<p>                 </font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-size: 11.0pt"><font size="3"><font face="Calibri">The stars are aligning for the good. <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="wlEmoticon smile My predictions for Azure PDC announcements" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/wlEmoticon-smile.png" title="My predictions for Azure PDC announcements" /></font></font></span></p>
<p> <font size="3" face="Calibri"><br />
<h5><font size="3"></font></h5>
<h5><font size="3">2) VM Role</font></h5>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3">Based on this </font><a href="http://blogs.msdn.com/b/usisvde/archive/2010/03/29/vm-support-in-windows-azure.aspx"><u><font color="#0000ff" size="3">post</font></u></a><font size="3">, my second bet would be an announcement regarding availability and licensing for VM Role.<span style="mso-spacerun: yes">&#160; </span></font></p>
<p>&#160;</p>
<p>PDC is on October 28-29, until then my fingers are crossed.</p>
<p> </font></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2010/10/my-predictions-for-azure-pdc-announcements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging is dead!</title>
		<link>http://sajojacob.com/blog/2010/10/blogging-is-dead/</link>
		<comments>http://sajojacob.com/blog/2010/10/blogging-is-dead/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 06:03:30 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Micro-Blogging]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2010/10/blogging-is-dead/</guid>
		<description><![CDATA[Blogging is officially dead and I’m announcing that with this blog post. &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; And just like that I decided to revive my old blogger account and port it over to WordPress over the weekend. No idea why, but it seemed<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2010/10/blogging-is-dead/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri"></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">Blogging is officially <strong><font color="#000000" size="5">dead</font> </strong>and I’m announcing that with this blog post. </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/125.jpg"><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="125" border="0" alt="125 thumb Blogging is dead!" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/125_thumb.jpg" width="476" height="407" /></a></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri"></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">And just like that I decided to revive my old <a href="http://sajojacob.blogspot.com/">blogger</a> account and port it over to <a href="http://sajojacob.com/blog/">WordPress</a> over the weekend. No idea why, but it seemed like a good idea at that time </font><span style="font-family: wingdings; mso-ascii-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: wingdings"><span style="mso-char-type: symbol; mso-symbol-font-family: wingdings">J</span></span><font face="Calibri">. So here I am, saw-ing the tree branch I’m sitting on. </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">So let me rephrase the catchy blog title to “Traditional blogging is an endangered species”, well in some of its current forms. </font></font><font size="3"><font face="Calibri">Twitter and other micro-blogging sites has been a great medium for voicing opinions, sharing content, breaking news, syndicating content and blah and blah. </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">Agreed these micro-blogging tools do little when it comes to producing content comparable to traditional blogs, it is the marketplace for content producers and a huge sinkhole for meta-data. </font></font><font size="3"><font face="Calibri">Without links to high value content there is little value in twitter, sure you could still tweet something like this.</font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/twitter.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="twitter" border="0" alt="twitter thumb Blogging is dead!" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/twitter_thumb.png" width="488" height="85" /></a></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">It is a mutually beneficial relationship between content producers and consumers, without which the value proposition for twitter drops. </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <img src="http://static.savedelete.com/wp-content/uploads/2010/05/32-e1273435538853.gif" width="526" height="376" title="Blogging is dead!" alt="32 e1273435538853 Blogging is dead!" /></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri">Micro-blogging sites has produced a new breed of bloggers, well “micro-bloggers” whose 140 character updates/tweets have a bigger/different impact than traditional bloggers, in terms of engaging an audience in meaningful conversations on their platform and syndicated networks. </font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font face="Calibri"><font size="3"><font face="Calibri">This will and <a href="http://www.businesswire.com/news/home/20100928005371/en/Forrester-Social-Networking-Adoption-Charges-Growth-Social">has been taking away</a> a huge slice of blog audience in terms of “conversation”, “search”, “relevance” and “real-time” requirements. Blogging was never really the right product for those things to begin with. Traditional blogging will survive, but just not in the same form and shape we know today.</font></font></font></font></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2010/10/blogging-is-dead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Azure 101: Cloud Service Model- SaaS/PaaS/IaaS?</title>
		<link>http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/</link>
		<comments>http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 06:05:36 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[Infrastructure as a Service]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[Platform as a Service]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Software as a Service]]></category>
		<category><![CDATA[VM Role]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/</guid>
		<description><![CDATA[Platform as a Service/PaaS Windows Azure at the moment supports the PaaS model, so in other words consumers can build and deploy cloud applications created by using programming languages and tools supported by the provider. The consumers don’t have to<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<h1 style="margin: 10pt 0in 0pt"><strong><font size="5"><font color="#17365d"><font face="Calibri"></font></font></font></strong></h1>
<h1 style="margin: 10pt 0in 0pt"><strong><font size="5"><font color="#17365d"><font face="Calibri">Platform as a Service/PaaS </font></font></font></strong></h1>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">Windows Azure at the moment supports the PaaS model, so in other words consumers can build and deploy cloud applications created by using programming languages and tools supported by the provider. The consumers don’t have to manage or control the underlying cloud infrastructure i.e. network, servers, operating systems, or even local storage. </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<h1 style="margin: 10pt 0in 0pt"><strong><font size="5"><font color="#17365d"><font face="Calibri"></font></font></font></strong></h1>
<h1 style="margin: 10pt 0in 0pt"><strong><font size="5"><font color="#17365d"><font face="Calibri">Infrastructure as a Service/IaaS </font></font></font></strong></h1>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">Windows Azure will support “VM role” sometime in the </span><a href="http://blogs.msdn.com/b/usisvde/archive/2010/03/29/vm-support-in-windows-azure.aspx"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"><u><font color="#0000ff">near future</font></u></span></a><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"> which should put Microsoft in the IaaS arena along with Amazon EC2. </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">With the IaaS model the consumer is provided the ability to provision compute, storage, networks and other fundamental computing resources. The consumer can choose to deploy and run arbitrary software without having to manage or control the underlying cloud infrastructure, while still maintaining control over the operating system, storage, deployed applications and certain networking components. </span><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="color: #1f497d; font-size: 15pt; mso-bidi-font-family: calibri; mso-ascii-font-family: calibri; mso-ascii-theme-font: major-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; mso-themecolor: text2"><font face="Calibri"></font></span></b></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="color: #1f497d; font-size: 15pt; mso-bidi-font-family: calibri; mso-ascii-font-family: calibri; mso-ascii-theme-font: major-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; mso-themecolor: text2"><font face="Calibri"></font></span></b></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="color: #1f497d; font-size: 15pt; mso-bidi-font-family: calibri; mso-ascii-font-family: calibri; mso-ascii-theme-font: major-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: major-latin; mso-bidi-theme-font: major-latin; mso-themecolor: text2"><font face="Calibri">A picture is definitely worth a thousand words,</font></span></b><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"> here is a high-level overview I put together to help visualize the Cloud service models in terms of the scope of management </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/ServiceModel.jpg"><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="ServiceModel" border="0" alt="ServiceModel thumb Windows Azure 101: Cloud Service Model  SaaS/PaaS/IaaS?" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/ServiceModel_thumb.jpg" width="685" height="417" /></a></p>
<p style="margin: 10pt 0in 0pt">&#160;</p>
<h1 style="margin: 10pt 0in 0pt"><strong><font size="5"><font color="#17365d"><font face="Calibri">Software as a Service/SaaS </font></font></font></strong></h1>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">On-Premise model is by far the most used model among ISV’s to deliver applications to their clients. Each time a new client is brought on-board, the solution is deployed to the client’s on-premise location. From thereon, the client needs to manage and control the entire breadth of the infrastructure i.e. network, servers, operating systems, storage, individual application capabilities and even datacenter logistics. </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">So something like this: </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/OnPremise.jpg"><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="OnPremise" border="0" alt="OnPremise thumb Windows Azure 101: Cloud Service Model  SaaS/PaaS/IaaS?" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/OnPremise_thumb.jpg" width="685" height="294" /></a></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<p>&#160;</p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">SaaS is all about providing customers the ability to use the software vendor’s applications running on a cloud infrastructure which are accessible from variety of client devices. The customer doesn’t have to deal with the hassle of managing/controlling/securing the underlying cloud infrastructure except for application configuration settings/customization. </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<p><a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/SaaS.jpg"><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="SaaS" border="0" alt="SaaS thumb Windows Azure 101: Cloud Service Model  SaaS/PaaS/IaaS?" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/SaaS_thumb.jpg" width="685" height="357" /></a></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt">Using the SaaS model, the ISV can now provide the goodness of Cloud computing in addition to providing their clients with high scalability and reduce costs by resource pooling and taking advantage of a multi-tenant model. From an application developer perspective, you should be able to leverage and use SaaS as long as the cloud service provider supports IaaS/PaaS. So the answer with Windows Azure is yes again, you can use SaaS with Windows Azure. </span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3" face="Calibri">I</font><font size="3" face="Calibri">f you need to see an example of this, </font><a href="http://blogs.msdn.com/b/vbertocci/"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"><u><font color="#0000ff">Vittorio Bertocci</font></u></span></a><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"> just released a great </span><a href="http://www.fabrikamshipping.com/"><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"><u><font color="#0000ff">sample</font></u></span></a><span style="font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; font-size: 10pt"> of running using SaaS with Azure that you can look at.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2010/10/windows-azure-101-cloud-service-model-saaspaasiaas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Conference 2009!</title>
		<link>http://sajojacob.com/blog/2009/10/sharepoint-conference-2009/</link>
		<comments>http://sajojacob.com/blog/2009/10/sharepoint-conference-2009/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 04:59:00 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Server Products]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2009/10/sharepoint-conference-2009/</guid>
		<description><![CDATA[Ok so, I am cautiously excited about SharePoint 2010 and definitely looking forward for the announcements at the SharePoint Conference 2009. &#160; &#160; Two of the new SharePoint 2010 features which caught my eye right away were: &#160; 1) Business<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2009/10/sharepoint-conference-2009/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-weight: bold"><font color="#000000"><font face="Calibri"><font size="3">Ok so, I am cautiously excited about SharePoint 2010 and definitely looking forward for the announcements at the SharePoint Conference 2009. <span style="mso-spacerun: yes">&#160;</span></font></font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-weight: bold"></span>
<p><font color="#000000" size="3" face="Calibri">&#160;</font></p>
</p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-weight: bold"><font color="#000000"><font face="Calibri"><font size="3">Two of the new SharePoint 2010 features which caught my eye right away were: </font></font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><b><font color="#000000"><font face="Calibri"><font size="3"><span style="mso-spacerun: yes">&#160;</span> </font></font></font></b></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000"><font face="Calibri"><font size="3">1) <u>Business Connectivity Services</u></font></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">This is Business Data Catalog the way it should have been with version 1. BCS now supports CRUD operations, yes, you heard it right. No more relying on 3<sup>rd</sup> party tools and worry about scalability of business apps with newer versions of SharePoint (Ok, I made that sound too easy!)</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">So new BCS features as per this </font><a href="http://www.sharepointdevwiki.com/display/sp2010/Business+Connectivity+Services+(BCS)"><u><font color="#0000ff" size="3" face="Calibri">post</font></u></a><font color="#000000" size="3" face="Calibri"> seems like: </font></p>
<ul style="margin-top: 0in" type="disc">
<li style="margin: 0in 0in 10pt; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"><font color="#000000" size="3" face="Calibri">Read and Write capability</font> </li>
<li style="margin: 0in 0in 10pt; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"><font color="#000000" size="3" face="Calibri">Integrated Editor Environment into SharePoint Designer 2010 and Visual Studio 2010</font> </li>
<li style="margin: 0in 0in 10pt; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"><font color="#000000" size="3" face="Calibri">Integrated into Office 2010 Suite</font> </li>
</ul>
<p style="margin: 0in 0in 10pt 0.5in" class="MsoNormal">
<p><font color="#000000" size="3" face="Calibri">&#160;</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000"><font face="Calibri"><font size="3">2) <u>Client Object Model API </u></font></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-weight: bold"><font color="#000000"><font face="Calibri"><font size="3">Just as it sounds, this is a client side API for interacting with data on the SharePoint server using JavaScript, .NET code, or <b>Silverlight</b>. </font></font></font></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="mso-bidi-font-weight: bold"></span>
<p><font color="#000000" size="3" face="Calibri">&#160;</font></p>
</p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000"><font face="Calibri"><font size="3"><b style="mso-bidi-font-weight: normal">Still not excited?</b> </font></font></font><font color="#000000" size="3" face="Calibri">Then how about this one? </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><a href="http://blogs.msdn.com/sharepoint/archive/2009/05/07/announcing-sharepoint-server-2010-preliminary-system-requirements.aspx"><span style="color: windowtext; text-decoration: none; text-underline: none"><font size="3" face="Calibri">SharePoint Server 2010 won’t support Internet Explorer 6</font></span></a><font size="3"><font color="#000000"><font face="Calibri"> </font><span style="font-family: wingdings; mso-ascii-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: wingdings"><span style="mso-char-type: symbol; mso-symbol-font-family: wingdings">J</span></span></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<p><font color="#000000" size="3" face="Calibri">&#160;</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font color="#000000"><font face="Calibri">I’ll post the conference updates/announcement via <a href="http://twitter.com/sajo">twitter</a> . See you all at the SharePoint Conference 2009! <span style="mso-no-proof: yes"><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><br />
<formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas>
<path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape style="width: 87.75pt; height: 49.5pt; visibility: visible; mso-wrap-style: square" id="Picture_x0020_4" alt="http://www.mssharepointconference.com/PublishingImages/SPC09_Join%20me%20at%20SPC09.jpg" type="#_x0000_t75" o:spid="_x0000_i1025"><imagedata o:title="SPC09_Join%20me%20at%20SPC09" src="file:///C:\Users\spoov\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg"></imagedata></shape></span></font></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<p><font color="#000000" size="3" face="Calibri">&#160;<a href="http://sajojacob.com/blog/wp-content/uploads/2010/10/SPC09_Join-me-at-SPC092.jpg"><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="Print" border="0" alt="SPC09 Join me at SPC092 thumb SharePoint Conference 2009!" src="http://sajojacob.com/blog/wp-content/uploads/2010/10/SPC09_Join-me-at-SPC092_thumb.jpg" width="121" height="70" /></a></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><b><i style="mso-bidi-font-style: normal"><span style="line-height: 115%; font-size: 8pt"><font color="#000000" face="Calibri">*<span style="mso-spacerun: yes">&#160; </span>Disclosure: Details in this post aren’t from any of the NDA materials or the actual software. You can find this info in the SharePoint 2010 </font></span></i></b><a href="http://sharepoint.microsoft.com/2010/sneak_peek/Pages/default.aspx"><b><i style="mso-bidi-font-style: normal"><span style="line-height: 115%; font-size: 8pt"><u><font color="#0000ff" face="Calibri">sneak peak</font></u></span></i></b></a><font color="#000000"><font face="Calibri"><b><i style="mso-bidi-font-style: normal"><span style="line-height: 115%; font-size: 8pt"> </span></i></b><span style="mso-spacerun: yes"><font size="3">&#160;</font></span></font></font><span style="mso-bidi-font-weight: bold"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2009/10/sharepoint-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Chain TFS Builds?</title>
		<link>http://sajojacob.com/blog/2009/08/how-to-chain-tfs-builds/</link>
		<comments>http://sajojacob.com/blog/2009/08/how-to-chain-tfs-builds/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 17:25:00 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[TFS]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2009/08/how-to-chain-tfs-builds/</guid>
		<description><![CDATA[&#160; One of my colleagues @gdurzi recently asked me this question. Sounds straightforward enough to be supported out of the box with TFS right? Too many quirks with this. And I recommended using the ever faithful MSBuild &#60;Exec&#62; task to<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2009/08/how-to-chain-tfs-builds/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p style="margin: 0in 0in 0pt" class="Publishwithline">
<p><font color="#000000" size="1" face="Calibri">&nbsp;</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">One of my colleagues <a href="http://twitter.com/gdurzi">@gdurzi</a> recently asked me this question. Sounds straightforward enough to be supported out of the box with TFS right? Too many <span style="widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 17px; font-family: verdana, arial, helvetica, sans-serif; font-size: 12px" class="Apple-style-span">quirks with this. </span></span>And I recommended using the ever faithful MSBuild &lt;Exec&gt; task to make a call to TFSBuild.exe to queue a new build from the first TFSBuild.proj with something like this</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span class="apple-style-span"><span style="font-family: 'Verdana','sans-serif'; color: #3366ff; font-size: 7pt"></span></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span class="apple-style-span"><span style="font-family: 'Verdana','sans-serif'; color: #3366ff; font-size: 7pt">TFSBuild.exe start /queue %TFSSVR% %TEAMPROJECT% %BUILDTYPE% </span></p>
<p></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">An issue with using TFSBuild.exe is that you cannot pass Build agents as a command line argument which was a deal breaker for us. </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">There are several approaches that you can take based on your particular scenario so let’s define the scenario here, you have a <b style="mso-bidi-font-weight: normal">Main_Build</b> TFS build definition that builds your core project and you want the ability to have multiple staging builds running the same <strong>Main_Build</strong> for compilation/building, but be custom staged for deployment based on who calls <b style="mso-bidi-font-weight: normal">Main_Build</b>. Very useful when you have a product which rolls out to multiple clients with a need for custom pre-build and post-build actions per client.&nbsp; So here is one way to do Build Chaining with TFS 2008. </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<p><font color="#000000" size="3" face="Calibri"></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font color="#000000"><font face="Calibri"><u><strong>Step 1:</strong></u> Let’s create a custom MSBuild task using the Team Foundation object model which queues a build <em><u>using the default build agent</u></em> associated with the Build definition file.</font></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">Sample code for Queuing: </font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">QueueTFS.cs</span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<div class="csharpcode">
<pre class="csharpcode"><span class="kwrd">using</span> Microsoft.TeamFoundation.Client;
<span class="kwrd">using</span> Microsoft.TeamFoundation.Build.Client;

<span class="rem">// Get the team foundation server. </span>
TeamFoundationServer _tfsServer = TeamFoundationServerFactory.GetServer(_tfs); 

<span class="rem">// Get the IBuildServer </span>
IBuildServer buildServer = (IBuildServer)_tfsServer.GetService(<span class="kwrd">typeof</span>(IBuildServer)); 

<span class="rem">// Get the build definition for which a build is to be queued. </span>
IBuildDefinition definition = buildServer.GetBuildDefinition(teamProject, buildDefinition); 

<span class="rem">// Create a build request for the build definition. </span>
IBuildRequest request = definition.CreateBuildRequest(); 
request.CommandLineArguments = <span class="str">"Pass any custom command line args here"</span>; <span class="rem">// Ex: Custom Targets file</span>

<span class="rem">// Queue the build. </span>
buildServer.QueueBuild(request, QueueOptions.None);</pre>
<pre class="csharpcode">
</pre>
<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>
</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 style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font color="#000000"><font face="Calibri"><u><strong>Step 2</strong>:</u> Now copy the </font></font></font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">QueueTFS.dll</span><font size="3"><font face="Calibri"><font color="#000000"> to a new folder in TFS where you want to create the staging Build definition file. Now let’s create a minimal <em>TFSBuild.proj</em> file which uses our new MSBuild task and overrides the EndToEndIteration target. This will be our Staging build definition which will trigger the <b style="mso-bidi-font-weight: normal">Main_Build</b> build. Note that you will have to create this<em> TFSBuild.proj</em> by hand and simply point</font><span style="color: #333333; mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: calibri"> </span><font color="#000000">the project file location from the Build definition UI to the new folder.</font></font></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">Sample code for a minimal TFSBuild.proj:</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span> <span class="attr">encoding</span><span class="kwrd">="utf-8"</span>?<span class="kwrd">&gt;</span> 
<span class="kwrd">&lt;</span><span class="html">Project</span> <span class="attr">xmlns</span><span class="kwrd">="http://schemas.microsoft.com/developer/msbuild/2003"</span> <span class="attr">ToolsVersion</span><span class="kwrd">="3.5"</span><span class="kwrd">&gt;</span> 
<span class="kwrd">&lt;</span><span class="html">Import</span> <span class="attr">Project</span><span class="kwrd">="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"</span> <span class="kwrd">/&gt;</span> 
  <span class="kwrd">&lt;</span><span class="html">UsingTask</span> <span class="attr">TaskName</span><span class="kwrd">="MyNewCustomTFSTask"</span> <span class="attr">AssemblyFile</span><span class="kwrd">="QueueTFS.dll"</span><span class="kwrd">/&gt;</span> 
  <span class="kwrd">&lt;</span><span class="html">Target</span> <span class="attr">Name</span><span class="kwrd">="EndToEndIteration"</span><span class="kwrd">&gt;</span> 
    <span class="kwrd">&lt;</span><span class="html">Message</span> <span class="attr">Text</span><span class="kwrd">="About to trigger main build"</span> <span class="attr">Importance</span><span class="kwrd">="high"</span><span class="kwrd">/&gt;</span> 
    <span class="kwrd">&lt;</span> MyNewCustomTFSTask TFS="http://TFSServer.com:8080/" TeamProject="TeamProject" BuildDefinition="Main_Build" TargetsFile="Custom.Target" XYZ="XYZ" <span class="kwrd">/&gt;</span> 
    <span class="rem">&lt;!-- When everything is done, change the status of the task to "Succeeded" --&gt;</span> 
    <span class="kwrd">&lt;</span><span class="html">SetBuildProperties</span> <span class="attr">TeamFoundationServerUrl</span><span class="kwrd">="$(TeamFoundationServerUrl)"</span> <span class="attr">BuildUri</span><span class="kwrd">="$(BuildUri)"</span> <span class="attr">TestStatus</span><span class="kwrd">="Succeeded"</span> <span class="attr">CompilationStatus</span><span class="kwrd">="Succeeded"</span><span class="kwrd">/&gt;</span> 
  <span class="kwrd">&lt;/</span><span class="html">Target</span><span class="kwrd">&gt;</span> 
<span class="kwrd">&lt;/</span><span class="html">Project</span><span class="kwrd">&gt;</span>

</pre>
<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 style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font color="#000000"><font face="Calibri"><strong><u>Step 3</u>:</strong> Edit your <strong>Main_Build</strong> <em>TFSBuild.proj</em> file with the pre-build and post-build target calls.</font></font></font><font color="#000000" size="3" face="Calibri">&nbsp;</font></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp; </span>&lt;</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">Target</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"> </span><span style="font-family: 'Courier New'; color: red; font-size: 10pt; mso-no-proof: yes">Name</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">=</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><font color="#000000">&#8220;</font><span style="color: blue">BeforeCompile</span><font color="#000000">&#8220;</font><span style="color: blue">&gt; </span></span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><span style="color: blue"></span></span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">CallTarget</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"> </span><span style="font-family: 'Courier New'; color: red; font-size: 10pt; mso-no-proof: yes">Targets</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">=</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><font color="#000000">&#8220;</font><span style="color: blue">Custom_PreBuild</span><font color="#000000">&#8220;</font><span style="color: blue">/&gt; </span></span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp; </span>&lt;/</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">Target</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">&gt; </span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"></span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp; </span>&lt;</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">Target</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"> </span><span style="font-family: 'Courier New'; color: red; font-size: 10pt; mso-no-proof: yes">Name</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">=</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><font color="#000000">&#8220;</font><span style="color: blue">AfterDropBuild</span><font color="#000000">&#8220;</font><span style="color: blue"> </span><span style="color: red">Condition</span><span style="color: blue">=</span><font color="#000000">&#8220;</font><span style="color: blue">&#8216;$(BuildBreak)&#8217;!=&#8217;true&#8217;</span><font color="#000000">&#8220;</font><span style="color: blue">&gt; </span></span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">CallTarget</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"> </span><span style="font-family: 'Courier New'; color: red; font-size: 10pt; mso-no-proof: yes">Targets</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">=</span><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><font color="#000000">&#8220;</font><span style="color: blue">Custom_PostBuild</span><font color="#000000">&#8220;</font><span style="color: blue">/&gt; </span></span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><span style="color: blue"></span></span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp; </span>&lt;/</span><span style="font-family: 'Courier New'; color: #a31515; font-size: 10pt; mso-no-proof: yes">Target</span><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">&gt; </span></p>
<p style="margin: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes"></span>&nbsp;</p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">We wanted the ability to run <b style="mso-bidi-font-weight: normal">Main_Build</b> by itself as well, to support this we add conditional imports in our <strong>Main_Build</strong> <em>TFSBuild.proj</em> to import a default targets file with empty </font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">Custom_PreBuild </span><font color="#000000" size="3" face="Calibri">and </font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">Custom_PostBuild </span><font color="#000000" size="3" face="Calibri">targets. </font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">$(CustomTarget)</span><font color="#000000"><font size="3" face="Calibri"> is what you would pass as a command line argument in Step 1 for </font><span style="font-family: 'Courier New'; font-size: 10pt; mso-no-proof: yes"><em>request.CommandLineArguments</em></span></font></p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">Import</span> <span class="attr">Project</span><span class="kwrd">="$(CustomTarget)"</span> <span class="attr">Condition</span><span class="kwrd">="'$(CustomTarget)'!=''"</span><span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;!</span><span class="html">--Import</span> <span class="attr">CustomContoso</span>.<span class="attr">Target</span> <span class="attr">if</span> <span class="attr">no</span> <span class="attr">partner</span> <span class="attr">is</span> <span class="attr">passed</span> <span class="attr">in</span>—<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">Import</span> <span class="attr">Project</span><span class="kwrd">="EmptyCustom.Target"</span> <span class="attr">Condition</span><span class="kwrd">="'$(CustomTarget)'==''"</span><span class="kwrd">/&gt;</span> 
 </pre>
<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 style="margin: 0in 0in 10pt" class="MsoNormal"><font size="3"><font color="#000000"><font face="Calibri"><strong><u>Step 4</u>:</strong> Now create your targets file <font color="#0000ff" size="2" face="Courier New">Custom.Target</font> and <span style="color: blue"><font size="2" face="Courier New">EmptyCustom.Target </font></span>with </font></font></font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">Custom_PreBuild </span><font color="#000000" size="3" face="Calibri">and </font><span style="font-family: 'Courier New'; color: blue; font-size: 10pt; mso-no-proof: yes">Custom_PostBuild </span><font color="#000000" size="3" face="Calibri">targets and you are done.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal">
<p><font color="#000000" size="3" face="Calibri">&nbsp;</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font color="#000000" size="3" face="Calibri">I added support for updating build steps and a few other minor things which outside the scope of this blog post, but this should hopefully get you started. </font></p>
<p><font color="#000000" size="3" face="Calibri">&nbsp;</font></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2009/08/how-to-chain-tfs-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Platform Agnostic apps failing on a 64 bit machine.</title>
		<link>http://sajojacob.com/blog/2009/06/platform-agnostic-apps-failing-on-a-64-bit-machine/</link>
		<comments>http://sajojacob.com/blog/2009/06/platform-agnostic-apps-failing-on-a-64-bit-machine/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 21:22:00 +0000</pubDate>
		<dc:creator>Sajo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Any CPU]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[CruiseControl]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://sajojacob.com/blog/2009/06/platform-agnostic-apps-failing-on-a-64-bit-machine/</guid>
		<description><![CDATA[&#160; Ran into this issue yesterday, thought I will post it out here for anyone who runs into the same issue, since this is a very common issue with open source projects. After wiring up the bits from CruiseControl.Net 1.4.4<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://sajojacob.com/blog/2009/06/platform-agnostic-apps-failing-on-a-64-bit-machine/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p><span style="text-align: ; widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: 12px 'Century Gothic', arial, helvetica, sans-serif; white-space: normal; orphans: 2; color: rgb(51,51,51); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left" class="Apple-style-span">
<p>Ran into this issue yesterday, thought I will post it out here for anyone who runs into the same issue, since this is a very common issue with open source projects.</p>
<p>After wiring up the bits from CruiseControl.Net 1.4.4 SP1 with TFS on a machine running 64 bit OS, I was getting strange exceptions like</p>
<p><em>“Could not load file or assembly &#8216;Microsoft.TeamFoundation.VersionControl.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#8217; or one of its dependencies…..”</em></p>
<p>The DLL in question seemed to be present in the GAC. So what really went wrong?</p>
<p>Windows Loader is responsible for deciding how to load and execute a program and the way it does that is by looking at the PE header on the app. This PE Header bit is set when the Platform Target in the build configuration of Visual Studio is set to one of the following:</p>
<ul>
<li>x64: 64-bit—denotes that the developer has built the assembly specifically targeting a 64-bit process.</li>
<li>x86: 32-bit—denotes that the developer has built the assembly specifically targeting a 32-bit process.</li>
<li>Any CPU: Agnostic—denotes that the developer built the assembly that can run in either 64-bit or 32-bit mode.</li>
</ul>
<p>When .Net apps are compiled with the default “Any CPU” your program will run as a 32 bit process on a 32 bit machine or as a 64 bit process on a 64 bit machine. The Windows Loader sees such DLLs as Agnostic DLL’s.</p>
<p><u>Simply marking the Platform Target as “Any CPU” does not guarantee that it will run on both 32-bit and 64-bit Windows.</u></p>
<p>Reason:&nbsp; It is not possible to inject a 32-bit DLL into a 64-bit process, so be careful if your program has dependencies on native 32 bit DLLs or is making native calls assuming 32-bit. Exactly what was happening in my case.</p>
<p>Now how can you troubleshoot this issue when you don’t have the source code for an assembly? I use Dumpbin to evaluate this, open up your VS2005/2008 command prompt and run the following command</p>
<div style="background-color: rgb(255,255,255); font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="csharpcode">
<pre style="background-color: rgb(244,244,244); margin: 0em; width: 700px; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="alt">dumpbin Program.exe /headers</pre>
</div>
<p>
<p>How can you fix such apps to working correctly on a 64 bit machine? Applications and assemblies marked/compiled as a 32 bit can run on 64-bit Windows with WOW64 emulator, so the PE header can be modified to be run as 32 bit</p>
<p>
<p>Run the CoreFlags Conversion utility from the VS2005/2008 command prompt</p>
<p>
<div style="background-color: rgb(255,255,255); font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="csharpcode">
<pre style="background-color: rgb(244,244,244); margin: 0em; width: 700px; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="alt">CorFlags.exe Program.exe /32BIT+ </pre>
</div>
<p>
<p>This should flip the PE header bit to mark the app/assembly as a 32 bit,&nbsp; this does not affect the build of the assembly in anyway since this just conveys how the JIT compiler should interpret the assembly.</p>
<p>
<p>You can turn the bit back on with a</p>
<p>
<div style="background-color: rgb(255,255,255); font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="csharpcode">
<pre style="background-color: rgb(244,244,244); margin: 0em; width: 700px; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="alt">CorFlags.exe Program.exe /32BIT-</pre>
</div>
<p>
<p>So in my case to fix the CruiseControl issue, I just ran the following:</p>
<p>
<div style="background-color: rgb(255,255,255); font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="csharpcode">
<pre style="background-color: rgb(244,244,244); margin: 0em; width: 700px; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="alt">CorFlags.exe CCService.exe /32BIT+ </pre>
<p>
<div style="background-color: rgb(255,255,255); font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="csharpcode">
<pre style="background-color: rgb(244,244,244); margin: 0em; width: 700px; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: small" class="alt">CorFlags.exe CCNet.exe /32BIT+ </pre>
</div>
</div>
<p></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sajojacob.com/blog/2009/06/platform-agnostic-apps-failing-on-a-64-bit-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
