<?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>Danny Thorpe &#187; Mesh</title>
	<atom:link href="http://dannythorpe.com/tag/mesh/feed/" rel="self" type="application/rss+xml" />
	<link>http://dannythorpe.com</link>
	<description></description>
	<lastBuildDate>Mon, 07 Jun 2010 17:57:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Updated Release Notes for Live Framework Tools April CTP</title>
		<link>http://dannythorpe.com/2009/03/19/updated-release-notes-for-live-framework-tools-april-ctp/</link>
		<comments>http://dannythorpe.com/2009/03/19/updated-release-notes-for-live-framework-tools-april-ctp/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 00:57:03 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Mesh]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2009/03/19/updated-release-notes-for-live-framework-tools-april-ctp/</guid>
		<description><![CDATA[Amidst the fanfare and excitement of Mix09 this week, we&#8217;ve received reports on the discussion forum from a few folks that were having trouble with the Live Framework SDK and Tools April CTP released last week.  Here&#8217;s an update on that issue.
Issue: Visual Studio closes unexpectedly when launching Help: About or when creating or opening [...]]]></description>
			<content:encoded><![CDATA[<p>Amidst the fanfare and excitement of <a href="http://2009.visitmix.com">Mix09</a> this week, we&#8217;ve received reports on the discussion forum from a few folks that were having trouble with the <a href="http://dannythorpe.com/2009/03/12/live-framework-sdk-and-tools-april-ctp-release/">Live Framework SDK and Tools April CTP</a> released last week.  Here&#8217;s an update on that issue.</p>
<p><strong>Issue:</strong> Visual Studio closes unexpectedly when launching Help: About or when creating or opening a Live Mesh project in some non-ENU operating systems.</p>
<p><strong>Workaround:</strong> Modify or add the following registry key to a value of &#8220;False&#8221;:</p>
<p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 12" /><meta name="Originator" content="Microsoft Word 12" /></p>
<link href="file:///C:%5CUsers%5Cdthorpe%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List" />
<link href="file:///C:%5CUsers%5Cdthorpe%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData" />
<link href="file:///C:%5CUsers%5Cdthorpe%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping" /><!--[if gte mso 9]><xml>  <w:WordDocument>   <w:View>Normal</w:View>   <w:Zoom>0</w:Zoom>   <w:TrackMoves/>   <w:TrackFormatting/>   <w:PunctuationKerning/>   <w:ValidateAgainstSchemas/>   <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>   <w:IgnoreMixedContent>false</w:IgnoreMixedContent>   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>   <w:DoNotPromoteQF/>   <w:LidThemeOther>EN-US</w:LidThemeOther>   <w:LidThemeAsian>ZH-TW</w:LidThemeAsian>   <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>   <w:Compatibility>    <w:BreakWrappedTables/>    <w:SnapToGridInCell/>    <w:WrapTextWithPunct/>    <w:UseAsianBreakRules/>    <w:DontGrowAutofit/>    <w:SplitPgBreakAndParaMark/>    <w:DontVertAlignCellWithSp/>    <w:DontBreakConstrainedForcedTables/>    <w:DontVertAlignInTxbx/>    <w:Word11KerningPairs/>    <w:CachedColBalance/>   </w:Compatibility>   <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>   <m:mathPr>    <m:mathFont m:val="Cambria Math"/>    <m:brkBin m:val="before"/>    <m:brkBinSub m:val="&#45;-"/>    <m:smallFrac m:val="off"/>    <m:dispDef/>    <m:lMargin m:val="0"/>    <m:rMargin m:val="0"/>    <m:defJc m:val="centerGroup"/>    <m:wrapIndent m:val="1440"/>    <m:intLim m:val="subSup"/>    <m:naryLim m:val="undOvr"/>   </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml>  <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267">   <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal"/>   <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>   <w:LsdException Locked="false" Priority="39" Name="toc 1"/>   <w:LsdException Locked="false" Priority="39" Name="toc 2"/>   <w:LsdException Locked="false" Priority="39" Name="toc 3"/>   <w:LsdException Locked="false" Priority="39" Name="toc 4"/>   <w:LsdException Locked="false" Priority="39" Name="toc 5"/>   <w:LsdException Locked="false" Priority="39" Name="toc 6"/>   <w:LsdException Locked="false" Priority="39" Name="toc 7"/>   <w:LsdException Locked="false" Priority="39" Name="toc 8"/>   <w:LsdException Locked="false" Priority="39" Name="toc 9"/>   <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>   <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title"/>   <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>   <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>   <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong"/>   <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>   <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid"/>   <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>   <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>   <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>   <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>   <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote"/>   <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenU<br />
sed="false" Name="Light Grid Accent 2"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="fals<br />
e" Name="Colorful List Accent 6"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>   <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>   <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>   <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>   <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>   <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>   <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>   <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>  </w:LatentStyles> </xml><![endif]--></p>
<style> <!--  /* Font Definitions */  @font-face 	{font-family:PMingLiU; 	panose-1:2 2 5 0 0 0 0 0 0 0; 	mso-font-alt:????; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611969 684719354 22 0 1048577 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"\@PMingLiU"; 	panose-1:2 2 5 0 0 0 0 0 0 0; 	mso-font-charset:136; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611969 684719354 22 0 1048577 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:PMingLiU; 	mso-fareast-theme-font:minor-fareast; 	mso-bidi-font-family:"Times New Roman";} p 	{mso-style-noshow:yes; 	mso-style-priority:99; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:PMingLiU; 	mso-fareast-theme-font:minor-fareast;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --> </style>
<p><!--[if gte mso 10]></p>
<style>  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:PMingLiU; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} </style>
<p> <![endif]--></p>
<p><span style="font-size: 10pt">HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Cloud Computing Tools\Update Notification\AutomaticUpdatesEnabled=&#8221;False&#8221;<o:p></o:p></span></p>
<p>This will resolve the issue so that you can get back to exploring the new tools in VS.</p>
<p>Keep an eye here or on the <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/threads">Live Framework discussion forum</a> for further updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2009/03/19/updated-release-notes-for-live-framework-tools-april-ctp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live Framework SDK and Tools April CTP Release</title>
		<link>http://dannythorpe.com/2009/03/12/live-framework-sdk-and-tools-april-ctp-release/</link>
		<comments>http://dannythorpe.com/2009/03/12/live-framework-sdk-and-tools-april-ctp-release/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 23:56:21 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Mesh]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2009/03/12/live-framework-sdk-and-tools-april-ctp-release/</guid>
		<description><![CDATA[I&#8217;m pleased to announce that we have released our April CTP release of the Live Framwork SDK and Tools in preparation for MIX09 next week.  For full details see the official announcement on the Live Framework blog, but here are the highlights:

You can now run the local client for mesh.com side by side with the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that we have released our April CTP release of the Live Framwork SDK and Tools in preparation for <a href="http://2009.visitmix.com/">MIX09</a> next week.  For full details see the official announcement on the <a href="http://blogs.msdn.com/liveframework/archive/2009/03/11/live-framework-updated.aspx">Live Framework blog</a>, but here are the highlights:</p>
<ol>
<li>You can now run the local client for mesh.com side by side with the local client for developer.mesh-ctp.com.</li>
<li>Support for Windows 7 and IE8</li>
<li>Single install for the Live Framework SDK and VS Tools &#8211; no more chasing down multiple bits and pieces to install in the right order!</li>
<li>Continuing on that &#8220;chasing down bits&#8221; theme, auto update introduced in the January CTP release will bring this new release to you.  If you enabled auto update in the January CTP release, it should notify you now (in the next 24 hours or so) that the April CTP is available and give you a link to click on to get the update.</li>
</ol>
<p>I say, this whole thing is beginning to feel downright civilized.  Wouldn&#8217;t you agree?</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2009/03/12/live-framework-sdk-and-tools-april-ctp-release/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mesh Your Ride</title>
		<link>http://dannythorpe.com/2008/12/05/mesh-your-ride/</link>
		<comments>http://dannythorpe.com/2008/12/05/mesh-your-ride/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 20:48:11 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[carputer]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Mesh]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Ori Amiga]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/12/05/mesh-your-ride/</guid>
		<description><![CDATA[This may be old news to some, but it just popped up on my radar:  Ori Amiga, frustrated with the lack of truely usable and connected smart devices in the automotive market, built his own custom touchscreen PC console for his Porsche.  It&#8217;s a full-on PC running Vista and loaded up with GPS, WiFI, BlueTooth, [...]]]></description>
			<content:encoded><![CDATA[<p>This <img border="0" vspace="5" align="right" width="215" src="http://blogs.msdn.com/blogfiles/oriamiga/WindowsLiveWriter/bcb2caf513f6_FED/display_2.jpg" hspace="5" alt="Live Mesh enabled car-puter" height="160" />may be old news to some, but it just popped up on my radar:  Ori Amiga, frustrated with the lack of truely usable and connected smart devices in the automotive market, <a href="http://blogs.msdn.com/oriamiga/archive/2008/11/09/introducing-the-meshmobile.aspx">built his own custom touchscreen PC console for his Porsche</a>.  It&#8217;s a full-on PC running Vista and loaded up with GPS, WiFI, BlueTooth, cell phone 3G networking, and just about everything else you can think of. </p>
<p>That&#8217;s kinda neat as gizmos go, but not really earth shattering. </p>
<p>Then Ori worked on software to make that &#8220;<a href="http://en.wikipedia.org/wiki/Carputer">carputer</a>&#8221; mesh-aware, connecting to his mesh data in Live Mesh.  If he drops MP3s into a mesh folder on his PC at the office, it will show up in his playlist in his car, ready to play on the road.  While he&#8217;s driving, the GPS-enabled unit can write GPS tracks into a mesh object, which can be read by family or friends (whoever he&#8217;s given access to read that private mesh object) to see where he is or how late he&#8217;ll be arriving. </p>
<p>Ok, that&#8217;s a bit more interesting.</p>
<p>Here&#8217;s the kicker:  While he did have to write some code for the carputer to move data between the devices built into the carputer and objects in his mesh using the <a href="http://dev.live.com/liveframework/">Live Framework SDK</a>, <strong>none of the code he wrote ever opens a network connection</strong>.  All the network data transfer is handled in the background by Live Mesh&#8217;s automatic data sync.  The code on the carputer reads and writes data in the local mesh running on the carputer, and the local mesh client handles synchronizing data changes to and from the cloud mesh whenever the car has a network connection via WiFi, WiMax, cellphone or whatever.</p>
<p>Now *that&#8217;s* cool. </p>
<p>That&#8217;s what mesh is all about, and shows another example of <a href="http://dannythorpe.com/2008/11/18/client-side-live-operating-environment-whats-it-for/">why the local client is so important</a> as a game-changing facilitator.  Your mesh-enabled web apps and mesh-aware desktop apps or cloud services don&#8217;t have to think in terms of dealing with network connections across unreliable or occasionally connected networks.  They just need to think in terms of data handling and change notifications.</p>
<p>Channel9 did a video segment with Ori about his <a href="http://channel9.msdn.com/posts/Charles/Ori-Amiga-Mesh-Mobile/">meshmobile (&#8220;mesh-mo-beel&#8221;) project</a> back in October.  There&#8217;s a lot of talking heads airtime through most of the video (which has some great info) but they finally get around to showing the goods at the end of the clip.  If you want to see the demo before investing time in the chitchat, skip ahead to about 18:30. </p>
<p>Oh, and by the way - <a href="http://blogs.msdn.com/oriamiga/default.aspx">Ori Amiga</a> is Principal Group Program Manager of the <a href="http://dev.live.com/liveframework/">Live Developer Platform</a> team (the developer side of <a href="http://mesh.com">Live Mesh</a>).  It&#8217;s good to see the leadership having fun with the technology after hours.  Passion rocks.</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/12/05/mesh-your-ride/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Live Framework Webcast Monday December 8, 2008</title>
		<link>http://dannythorpe.com/2008/12/01/live-framework-webcast-monday-december-8-2008/</link>
		<comments>http://dannythorpe.com/2008/12/01/live-framework-webcast-monday-december-8-2008/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 18:53:33 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Services]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[webcast]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/12/01/live-framework-webcast-monday-december-8-2008/</guid>
		<description><![CDATA[The Live Services team will be hosting a live webcast to discuss and demo Live Frameworks development topics next Monday December 8, 2008 from 8am to 10am PST (12am &#8211; 2am GMT). 
This will be a great opportunity to listen in on technical topics on developing applications with Live Frameworks, both standalone desktop apps as well as [...]]]></description>
			<content:encoded><![CDATA[<p>The Live Services team will be hosting a live webcast to discuss and demo Live Frameworks development topics next Monday December 8, 2008 from 8am to 10am PST (12am &#8211; 2am GMT). </p>
<p>This will be a great opportunity to listen in on technical topics on developing applications with Live Frameworks, both standalone desktop apps as well as mesh-enabled web apps. A large chunk of the webcast time has been set aside for Q&amp;A, but the best way to get your specific questions answered is to send them to us prior to the event so they can be worked into the presentation schedule.  Post your questions to <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/thread/c47ca578-daf9-49f7-8ab7-da5fbab7c60c">this thread</a> in the Live Framework discussion forum.</p>
<p>To join the webcast, visit this link:  <a href="https://www.livemeeting.com/cc/microsoft/join?id=LiveFx_Dec8&amp;role=attend">https://www.livemeeting.com/cc/microsoft/join?id=LiveFx_Dec8&amp;role=attend</a></p>
<p>For more information and agenda, see the <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/thread/c47ca578-daf9-49f7-8ab7-da5fbab7c60c">announcement on the Live Frameworks forum</a>.</p>
<p>See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/12/01/live-framework-webcast-monday-december-8-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Batch Processing Live Mesh Data with Windows Azure or Live Framework</title>
		<link>http://dannythorpe.com/2008/11/24/batch-processing-live-mesh-data-with-windows-azure-or-live-framework/</link>
		<comments>http://dannythorpe.com/2008/11/24/batch-processing-live-mesh-data-with-windows-azure-or-live-framework/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 23:25:05 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[delegated authorization]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Mesh]]></category>
		<category><![CDATA[LiveID]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/24/batch-processing-live-mesh-data-with-windows-azure-or-live-framework/</guid>
		<description><![CDATA[SondreB asks
I’m working on a scenario where I need to process mesh data at intervals. My concern is how I can do delegated authorization in a secure way. How and where do I store the user credentials (or their auth token) in my Windows Azure service? Is there a way of doing interval based processing [...]]]></description>
			<content:encoded><![CDATA[<p>SondreB asks</p>
<blockquote><p>I’m working on a scenario where I need to process mesh data at intervals. My concern is how I can do delegated authorization in a secure way. How and where do I store the user credentials (or their auth token) in my Windows Azure service? Is there a way of doing interval based processing in the cloud other than Windows Azure (excluding offerings from other third parties)?</p></blockquote>
<p>You have three approaches to process data in a user&#8217;s Live Mesh at regular intervals: </p>
<ul>
<li>An application that runs on the client machine</li>
<li>A service that runs on a traditional server</li>
<li>A service that runs in the cloud.</li>
</ul>
<h4>Client Application </h4>
<p>A client application running on the local machine can access the currently logged-in user&#8217;s mesh data.  Your app could be written as a desktop .NET Windows application, using the Live Framework SDK to connect to the user&#8217;s mesh.  Your desktop app will need to present valid authentication credentials to the Live Framework APIs; to avoid having to store and protect the user&#8217;s credentials, use the LiveID SDK.  If the user checks &#8220;remember me&#8221; and &#8220;remember my password&#8221;, your app can login on the user&#8217;s behalf using the LiveID API&#8217;s cached credentials.</p>
<p>You could implement your client app as a mesh-enabled web application, written in HTML+JavaScript or Silverlight.  User authentication is automatic in this situation, since the user must be logged in before they can run your app.  If the user has installed the Live Framework Client on their local machine, they can run your app on their local desktop just as they would a normal desktop app.  When your app is running on the local desktop, it will default to talking to the local cache of mesh data which is synch&#8217;d frequently with the cloud when the machine is connected to the network.</p>
<p>These client-side approaches may be sufficient for simple scenarios.  Client side code is convenient to write and doesn&#8217;t require allocation or management of server resources, but client side code is at the mercy of the local machine and network connection.  If your users tend to leave their machines on most of the time, this might be good enough, but if you need true round-the-clock processing you need a server side solution.</p>
<h4>Traditional Server Application</h4>
<p>You could implement mesh data processing in a traditional web server architecture, such as IIS with ASP.NET or Apache with PHP, Perl, or Python scripting.  This will require delegated authorization, and delegated auth requires that your server have a stable domain name.</p>
<p>Delegated authorization requires that the end user approve or opt-into allowing your application to access (parts of) their mesh data.  This approval must take place using a special Microsoft branded web page, so that the user will know that they are telling <em>Microsoft</em> that it&#8217;s ok for <em>you</em> to access their data. </p>
<p>The flow typically looks something like this:</p>
<ol>
<li>Your web page explains what data you want access to, and what you will do with it, and then forwards the user to a Windows Live authorization page</li>
<li>LiveID login will interject if the user is not already logged in, then forward to the intended page</li>
<li>The user reads the information on the Windows Live web page and chooses to allow or deny access to your site (your domain).</li>
<li>The user&#8217;s response forwards the user back to a landing page on your web site.  If the user allowed access, this response will contain an authorization token.</li>
<li>You store the authorization token in your system, usually paired with the user&#8217;s name within your system so you will know which auth token to use to access this user&#8217;s data in the future. </li>
</ol>
<p>How you store this auth token is up to you, but it should be under physical and network access protection.  At a minimum, you should encrypt whatever table or file you store the auth token in and restrict access to the file to only the administrators and web services that need to access it. You should also avoid transmitting the auth token across the network except when needed, and only via a secure SSL connection.</p>
<p>The auth token cryptographically combines your domain name with the user&#8217;s LiveID username.  The auth token can only be used on requests made from your domain name, can only access that particular user&#8217;s data, and can only access the kinds of data the user gave you access to.  The user can revoke your access (invalidate the auth token) at any time using the Windows Live web site.</p>
<p>Once you have the user&#8217;s authorization to access their data with the auth token, accessing their mesh data is fairly straightforward.  You can use the Live Framework SDK to make data requests of the user&#8217;s mesh data from within an ASP.NET server app, or you can make plain old REST style HTPPS requests to the Live Services cloud using your favorite server scripting tools.  You add the delegated authorization token for the particular user in a header to outgoing requests.</p>
<p>And finally, you can schedule your service to check the user&#8217;s mesh data on regular intervals, using cron or AT or whatever scheduling tool is appropriate.</p>
<h4>Cloud Service</h4>
<p>You can implement your mesh-checking logic in a hosted cloud environment, such as <a href="http://www.microsoft.com/azure/default.mspx">Windows Azure</a>, Amazon EC2, GoogleApp, or a variety of other hosting providers.  You will still need to use delegated authorization as with the traditional server scenario and walk through the same steps to obtain the user&#8217;s permission and be issued an auth token. The code you write to access the user&#8217;s mesh data using the auth token is pretty much the same as what you would write in the traditional server scenario.</p>
<p>Data security is a core requirement of every app, but especially of cloud hosted applications.  I think you&#8217;ll find data security is a core component of Windows Azure cloud data services. You can store the username + auth token in a table in Azure&#8217;s cloud data service.</p>
<p>Scalability and cost management are where running as a cloud service has a distinct advantage over the traditional server scenario.  Scalability is easy: having the option to fire up additional instances of your cloud service by the tens or thousands as needed to meet demand is a key aspect of large scale cloud hosting that traditional servers in the closet or co-lo&#8217;s can&#8217;t begin to touch.</p>
<p>If your application needs to be checking the user&#8217;s mesh data every 5 minutes all day every day, the operational differences between cloud and traditional server will be relatively small, and perhaps offer no cost savings at all. </p>
<p>If your application needs to run only during business hours or only on certain days of the week, you can do something with a cloud service that you can&#8217;t do with a traditional server, hosted VM or co-lo:  You can turn the cloud service off when you don&#8217;t need it, and stop paying for it until you turn it on again.</p>
<p>Anticipating a holiday rush?  You can scale up your customer capacity to massive volume during the holiday shopping crunch, then get rid of it in January and coast by on a shoestring ops budget until the next holiday surge.</p>
<p>If your mesh-checking app needs to check for changes in the user&#8217;s mesh data every 5 minutes, your service will be running pretty much non-stop.  If you only need to check 4 times a day, though, you might just turn your cloud service off until the next update interval.</p>
<p>When designing your mesh-checking architecture, be sure to take a close look at the notification features offered by Live Frameworks.  Notifications and data sync metadata could significantly reduce the frequency and amount of work your app needs to do to detect changes.</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/24/batch-processing-live-mesh-data-with-windows-azure-or-live-framework/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Client-Side Live Operating Environment: What&#8217;s It For?</title>
		<link>http://dannythorpe.com/2008/11/18/client-side-live-operating-environment-whats-it-for/</link>
		<comments>http://dannythorpe.com/2008/11/18/client-side-live-operating-environment-whats-it-for/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 08:42:37 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Google Gears]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/18/client-side-live-operating-environment-whats-it-for/</guid>
		<description><![CDATA[Dare Obasanjo has written up his characteristically frank first impressions of Live Framework and how it compares to Google&#8217;s GData API.  It&#8217;s a good read:  Live Framework (LiveFx): Is It Microsoft&#8217;s GData or Something More? 
 Dare closes the article with this:
On the flip side, the client-side Live Operating Environment is a technology whose benefits elude me. [...]]]></description>
			<content:encoded><![CDATA[<p>Dare Obasanjo has written up his characteristically frank first impressions of Live Framework and how it compares to Google&#8217;s GData API.  It&#8217;s a good read:  <a href="http://www.25hoursaday.com/weblog/2008/11/17/LiveFrameworkLiveFXIsItMicrosoftsGDataOrSomethingMore.aspx">Live Framework (LiveFx): Is It Microsoft&#8217;s GData or Something More?</a> </p>
<p> Dare closes the article with this:</p>
<blockquote><p>On the flip side, the client-side Live Operating Environment is a technology whose benefits elude me. I admit it is kind of cool but I can&#8217;t see its utility.</p></blockquote>
<p>The answer, in a word, is &#8220;offline.&#8221; </p>
<p>The local Live Operating Environment (local LOE) is what makes running mesh-enabled web applications on the desktop, outside the browser, possible.  The local LOE creates and manages a sandboxed execution environment for the mesh app, just like a browser would for an HTML+JavaScript or Silverlight application but without the browser UI frame looming overhead. </p>
<p>It seems like a trivial thing, whether or not the browser frame surrounds your app UI. Does it matter? The answer is yes &#8211; having your app surrounded by browser UI constantly and forcibly reminds the user that this isn&#8217;t a real app, it&#8217;s just a web page with lipstick.</p>
<p>This is doubly true if you throw offline execution into the mix.  We&#8217;ve done a great job drilling into non-technical heads that viewing the web is an online activity (Yes, browsers have offline cached content modes now, but have you ever seen any non-geek use them?).  Now say we&#8217;re offline.  &#8220;I can&#8217;t get to the web, but I can get to that app in the browser?  (wimper) I don&#8217;t understand!&#8221; or &#8220;I click on this shortcut and it brings up my app in the browser. Hey! Is the network connected?  How did that happen?&#8221;</p>
<p>There is no such confusion when the user perceives a desktop application that uses the network. The best way to dissociate the app from the browser is to not show the app inside the browser. Thus we arrive at one of the holy grails of web apps: to run on the desktop and look just like any other client app on that local machine.</p>
<p>But I digress.  Back to the LOE.</p>
<p>The local LOE coordinates the data sync between the cloud and the local machine to keep the local cache of Mesh Objects and their data feeds up to date with changes made in the cloud, and to push changes made locally up to the cloud.  This includes pulling down updates to the mesh apps themselves, since they are stored in Mesh Objects also. (Well, isn&#8217;t that con<em>veeen</em>ient&#8230;)</p>
<p>The local LOE manages the user login and identity for mesh-enabled web apps running on the local desktop, just as the browser does for web apps running in the browser.</p>
<p>The local LOE implements the Live Framework APIs for data feed reading, editing, and synchronizing, so that a mesh-enabled web app can use the same APIs with the same semantics whether it&#8217;s running in the browser talking to data stored in the cloud or running on the local desktop talking to data stored (cached) on the local machine.  The only real difference between cloud and local is the domain name, and the mesh app doesn&#8217;t even have to care about that (the Live Framework client library will take care of it).</p>
<p>Having the local LOE doing all of these things on the local machine gives you the ultimate goal: running mesh-enabled web applications offline, while the network connection is disconnected completely or connected only intermittantly. The local LOE provides the execution environment, the data storage and data sync, the user identity credentials, and the RESTful APIs that the mesh app expects from a cloud - when there isn&#8217;t a cloud.</p>
<p>This is a very different approach from the path we chose when building Google Gears (I was a <a href="http://blogs.msdn.com/dthorpe/archive/2007/05/31/quot-undisclosed-browser-technology-quot.aspx">founding member of the Gears team</a> at Google in 2005).  Google Gears is first and foremost a browser extension. We joked at the time that you can talk about getting the browser out of the app (creating &#8220;chromeless&#8221; web apps with no apparent browser UI), but not getting the app out of the browser. For Google, the browser <em>is</em> the platform, end of discussion. </p>
<p>The Live Framework local LOE is exactly the opposite &#8211; it&#8217;s a client application that works like a browser.  It may even create an instance of the browser internally (I don&#8217;t know the internal details of the LOE) but it is fundamentally treated as &#8220;not the browser.&#8221;</p>
<p>Take the challenge of executing JavaScript while offline.  In Gears, we figured out some neat tricks to have our browser extension tap into the browser&#8217;s URL decoding stream, so that we could intercept requests for JavaScript URLs that we had cached or preloaded in local storage.  This even worked for desktop shortcuts that contained URLs to our web app.</p>
<p>In Live Framework, such interception tricks are unnecessary because you&#8217;re either running the app on the local desktop (in the local LOE sandbox) or you&#8217;re running the app in the browser (in the cloud LOE). Either way, the LOE knows what to do.</p>
<p>I&#8217;m making no argument that either solution is better or worse than the other, just that their architectural assumptions are fundamentally different.</p>
<p>Regardless of whether you&#8217;re in the Google camp or in the Microsoft camp, I think it&#8217;s a fair statement to say that these differences of viewpoint accurately reflect each company&#8217;s core strength and focus:  Google wants the browser to grow to subsume the desktop;  Microsoft wants the desktop to grow to subsume the cloud.</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdannythorpe.com%2f2008%2f11%2f18%2fclient-side-live-operating-environment-whats-it-for%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdannythorpe.com%2f2008%2f11%2f18%2fclient-side-live-operating-environment-whats-it-for%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/18/client-side-live-operating-environment-whats-it-for/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>How Do I Mesh Thee?  Let Me Count The Ways</title>
		<link>http://dannythorpe.com/2008/11/14/how-do-i-mesh-thee-let-me-count-the-ways/</link>
		<comments>http://dannythorpe.com/2008/11/14/how-do-i-mesh-thee-let-me-count-the-ways/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 09:40:01 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Google Gears]]></category>
		<category><![CDATA[Live Framework]]></category>
		<category><![CDATA[Live Mesh]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/14/how-do-i-mesh-thee-let-me-count-the-ways/</guid>
		<description><![CDATA[A few folks I&#8217;ve talked to in the Live Frameworks CTP forum or in email have expressed a little bit of confusion or a lot of surprise at what you can do with the Live Mesh platform and Live Frameworks. Let&#8217;s run through a few of scenarios to give you an idea of the breadth of options you have to leverage Live [...]]]></description>
			<content:encoded><![CDATA[<p>A few folks I&#8217;ve talked to in the <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/threads/">Live Frameworks CTP forum </a>or in email have expressed a little bit of confusion or a lot of surprise at what you can do with the Live Mesh platform and <a href="http://dev.live.com/liveframework/">Live Frameworks</a>. Let&#8217;s run through a few of scenarios to give you an idea of the breadth of options you have to leverage Live Mesh and Live Services in your applications.</p>
<p>First, let&#8217;s look at what kinds of applications can access user data stored in the user&#8217;s mesh (after user consent, of course):</p>
<ol>
<li>Silverlight mesh-enabled web apps</li>
<li>DHTML + JavaScript mesh-enabled web apps</li>
<li>Server-side web applications (<a href="http://www.microsoft.com/azure/windowsazure.mspx">Windows Azure</a>, ASP.NET, Apache, PHP, etc)</li>
<li>Cloud-based web services (Windows Azure, Amazon EC2, Google Apps, etc)</li>
<li>Desktop .NET apps</li>
<li>Win32 apps</li>
<li>Win64 apps</li>
<li>Linux apps</li>
<li>Mac apps</li>
<li>Mobile device apps</li>
<li>Anything that can make HTTP requests, set HTTP request headers, and process XML responses.  With a little bit of code, your Internet-connected lawn sprinker controller can load its watering schedule from a mesh object in your Live Mesh! </li>
</ol>
<p>We provide .NET client libraries to facilitate using the Live Operating Environment (LOE) services in your app, but .NET is not required to talk to the LOE or to specific services in the Live Services cloud &#8211; you can also talk to Live Services (and the LOE) with RESTful HTTP requests built on industry standards such as Atom, RSS, JSON, and XML using whatever programming tools you want, from whatever device or platform you want.</p>
<h4>Mesh Enabled vs Mesh Aware</h4>
<p>A mesh-enabled web app is a DHTML or Silverlight web application that can not only talk to mesh services and access the user&#8217;s mesh data, but the app itself is a mesh object deployed and sync&#8217;d through the cloud to whatever Internet browser enabled device the user has in front of them.</p>
<p>A mesh-aware application is any other kind of app, running on the client device or on the server, which talks to Live Services and can make use of user data stored in their mesh.  These do not get the benefit of automatic deployment or updates orchestrated by the LOE, but they are also not restricted to the security sandbox of a mesh-enabled web app.</p>
<h4>Online and Offline Modes</h4>
<p>The user&#8217;s mesh data can be accessed by applications when the device is online.  If the Live Mesh client is installed on a device, apps can access user mesh data even when the device has no network connection. Data changes written to the local LOE while offline will be sync&#8217;d to the cloud LOE the next time a network connection is available.</p>
<h4>Data Sync</h4>
<p>The Live Framework automatically synchronizes data changes between the local client and the cloud, in both directions.  The user can select which Mesh Objects are sync&#8217;d to which devices in their mesh.  You&#8217;d want to sync photos from your cameraphone / mobile device up to a mesh folder in the cloud, but you would probably not want to sync all of your photos in the cloud down to your phone.</p>
<h4>Mode Transparency</h4>
<p>Mesh-enabled and mesh-aware applications use the same APIs / HTTP request patterns to access user mesh data in the local LOE as to access user data in the cloud LOE.  What changes is the domain name used in the HTTP request (localhost:port versus cloud domain), and that&#8217;s needed only when making the initial connection to the LOE.  After that, all LOE requests are relative to the base URL of the selected LOE.  And if you&#8217;re using the .NET client libraries, nearly all of that local/cloud selection will be taken care of automatically behind the scenes.</p>
<h4>User Authentication, Authorization, and Delegation </h4>
<p>You can use the LiveID SDK to enable users to log into their mesh account from within your mesh-aware desktop or device applications.  You can also use LiveID in your own Windows Azure cloud services: read <a href="http://dev.live.com/blogs/devlive/archive/2008/11/12/432.aspx">Windows Azure Integration with Windows Live ID, Active Directory and OpenID</a>.</p>
<p>You don&#8217;t have to use LiveID.  If your app is a server-side web app or other service that the end user cannot log into directly, you can use Live Service&#8217;s delegated authorization to obtain an authorization token that you can use to access data in the user&#8217;s mesh independent of the user&#8217;s login state.  The user has to opt in to giving you that token, and can revoke your access (invalidate the token) if you don&#8217;t play nice.  The authorization token is cryptographically bound to your domain and the user&#8217;s id. </p>
<p>Mesh-enabled web apps don&#8217;t need to do anything with authentication because the user will have already logged in prior to executing the mesh-enabled web app, and the web app lives &#8220;inside&#8221; that authenticated sandbox context.</p>
<h4>Sharing</h4>
<p>The user can choose to share a Mesh Object with other users.  If your app writes to a particular Mesh Object and the user shares it with others, your app data can be distributed to the social graph without any work on your part.  Your app can also see who has access to or is sharing the Mesh Object. </p>
<h4>A Few Scenarios</h4>
<ul>
<li>A desktop .NET application (written in any .NET language) reading and writing app data to the user&#8217;s mesh. </li>
<li>The same app (same binary executable module) writing data to the user&#8217;s mesh while the machine is offline. (local LOE)</li>
<li>A desktop Win32 application reading and writing from the user&#8217;s contacts. (LiveID SDK + raw HTTP / AtomPub)</li>
<li>A web server app that writes data to a mesh object in the user&#8217;s mesh in response to a button click or form submit. (online)</li>
<li>A headless cloud based web service that updates data in the user&#8217;s mesh every 3 hours. (delegated auth)</li>
<li>A DHTML+JavaScript mesh-enabled web app running in the browser reading and writing data to the user&#8217;s mesh. (online)</li>
<li>A Silverlight mesh-enabled web application running on the local desktop (via Live Mesh client) while offline.  (Offline Silverlight!)</li>
<li>A DHTML+JavaScript mesh-enaabled web application running in any JavaScript-enabled browser on a smartphone. (online)</li>
<li>A Silverlight mesh-enabled web application that displays interactive features on current events, updated continually (daily) with new content and code logic (online/offline, data sync and app sync)</li>
<li>Store your application&#8217;s personalization settings in the user&#8217;s mesh.  The user&#8217;s preferences follow them to any machine they run that app on, regardless of whether your app is a mesh-enabled web app or a traditional installed desktop app.  (Think: student computer lab.  Many machines all configured the same used by many students all demanding to be different)</li>
<li>Same as previous scenario, but now across different kinds of devices.  User&#8217;s preferences and settings sync across PC, Mac, cellphone, etc.</li>
<li>Briefcase application:  Grab a dataset of client leads into your mesh-enabled sales lead app while at the office.  Review client dossiers while offline in transit.  Update sales contacts and enter purchase orders at client site, while offline.  Sync changes and purchase orders to office (to a cloud mesh object shared with and watched by a mesh app at the office) at an Internet cafe in the airport on the way to the next client. Show next client how to enter orders themselves using your purchase order mesh-enabled web app (the same one you have running offline on your PDA-phone) running in their browser. </li>
</ul>
<p>These are just a tiny sampling of the kinds of things you can do with the Live Framework.  There are many more features I haven&#8217;t mentioned that add additional dimentions to the sample matrix:  your mesh-aware and mesh-enabled apps running on the client device can programmatically construct resource scripts (expression trees) which can be executed on a server in the cloud (to move large data around on the server without making a round trip to the client across the network); there&#8217;s a server-side cross-domain proxy service that lets your mesh-enabled web app (executing in the context of a cloud domain name) &#8220;phone home&#8221; to your own web server or domain; and so forth.</p>
<p>If I had to name one thing that sets the Live Framework head and shoulders apart from other products that attempt to bridge the online/offline gap, it has to be Live Framework&#8217;s data synchronization.  Other tools such as Google Gears can help you run your web app offline, but getting your offline data back into the cloud is left as an exercise for the reader.  In Live Framework, synchronization is a fundamental assumption, a cornerstone of the core architecture.</p>
<p>When data automagically appears in all the places it&#8217;s supposed to go, you suddenly find that you have a lot less code to write, debug, and maintain.  You can get back to focusing on business logic and spend a lot less time on infrastructure.</p>
<p>With apologies to &#8216;The Bard&#8217;</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fdannythorpe.com%2f2008%2f11%2f14%2fhow-do-i-mesh-thee-let-me-count-the-ways%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fdannythorpe.com%2f2008%2f11%2f14%2fhow-do-i-mesh-thee-let-me-count-the-ways%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/14/how-do-i-mesh-thee-let-me-count-the-ways/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Blog Chatter on Live Framework Tools</title>
		<link>http://dannythorpe.com/2008/11/06/blog-chatter-on-live-framework-tools/</link>
		<comments>http://dannythorpe.com/2008/11/06/blog-chatter-on-live-framework-tools/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 17:02:44 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Live Framework Tools]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/06/blog-chatter-on-live-framework-tools/</guid>
		<description><![CDATA[Now that the PDC crowd is back home again and has had a chance to digest the mountains of information collected during the conference, we&#8217;re seeing an uptick in blog posts talking about writing apps for Live Mesh using the Live Framework Tools for Microsoft Visual Studio.
Here are a few posts I&#8217;ve stumbled into over [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the PDC crowd is back home again and has had a chance to digest the mountains of information collected during the conference, we&#8217;re seeing an uptick in blog posts talking about writing apps for Live Mesh using the <a href="http://msdn.microsoft.com/en-us/vstudio/cc972640.aspx">Live Framework Tools for Microsoft Visual Studio</a>.</p>
<p>Here are a few posts I&#8217;ve stumbled into over the past few days, in no particular order:</p>
<p><a href="http://dotnetaddict.dotnetdevelopersjournal.com/helloworld_livemesh.htm">Kevin Hoffman: Live Mesh Tutorial1 &#8211; Hello Live Mesh</a><br />
<a href="http://orand.blogspot.com/2008/10/live-mesh-flash-adobe-air.html">Oran Dennison: Live Mesh + Flash == Adobe Air</a><br />
<a href="http://orand.blogspot.com/2008/11/dissecting-live-mesh-app-packages.html">Oran Dennison: Dissecting Live Mesh App Packages</a><br />
<a href="http://orand.blogspot.com/2008/11/live-mesh-resource-script-demo.html">Oran Dennison: Live Mesh Resource Script Demo</a><br />
<a href="http://blogs.msdn.com/dparys/archive/2008/10/30/how-to-find-and-install-the-live-framework-sdk-ctp.aspx">Dariusz quatscht: How to Find and Install the Live Framework SDK (CTP)</a><br />
<a href="http://news.cnet.com/8301-13860_3-10079520-56.html">Ina Fried/CNet News: Microsoft&#8217;s Other New Platform: Live Framework</a><br />
<a href="http://blogs.zdnet.com/microsoft/?p=1682">Mary-Jo Foley/ZNet: Microsoft&#8217;s Live Framework</a></p>
<p>If you find (or write!) an interesting article on Live Services, Live Mesh, or Live Frameworks Tools, let everyone know about it by posting a link in the <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/threads/">Live Framework forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/06/blog-chatter-on-live-framework-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inside Live Framework Tools for Visual Studio CTP1</title>
		<link>http://dannythorpe.com/2008/11/05/inside-live-framework-tools-for-visual-studio-ctp1/</link>
		<comments>http://dannythorpe.com/2008/11/05/inside-live-framework-tools-for-visual-studio-ctp1/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 22:48:23 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Live Framework Tools]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/05/inside-live-framework-tools-for-visual-studio-ctp1/</guid>
		<description><![CDATA[Oran Dennison has been dissecting the new Live Framework Tools for Microsoft Visual Studio (&#8220;VS tools&#8221;) and raised a few questions about how the VS tools are uploading Live Mesh application files into the cloud.
&#8220;Why does VS upload files to the cloud individually instead of as one zip file?&#8221;
VS uploads individual files to the cloud because that&#8217;s what [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://orand.blogspot.com/2008/11/dissecting-live-mesh-app-packages.html">Oran Dennison</a> has been dissecting the new <a href="http://msdn.microsoft.com/en-us/vstudio/cc972640.aspx">Live Framework Tools for Microsoft Visual Studio</a> (&#8220;VS tools&#8221;) and <a href="http://orand.blogspot.com/2008/11/dissecting-live-mesh-app-packages.html">raised a few questions</a> about how the VS tools are uploading Live Mesh application files into the cloud.</p>
<h3>&#8220;Why does VS upload files to the cloud individually instead of as one zip file?&#8221;</h3>
<p>VS uploads individual files to the cloud because that&#8217;s what the cloud service APIs for application upload require.  When you manually upload an application zip file to the <a href="http://lx.azure.microsoft.com/">http://lx.azure.microsoft.com</a> developer portal, the developer portal internally unzips the files and uploads them to the actual cloud storage.  The developer portal is just a UI frontend to the actual cloud services backend.  VS tools talk to the cloud services backend.</p>
<h3>&#8220;What if Visual Studio dies before uploading all the application files?  It seems like updating an app by manually uploading a zip file is a safer, slightly more atomic operation.&#8221;</h3>
<p>First of all, the goal of tools is to eliminate <strong>manual</strong> repetitive tasks.  Uploading an app to the cloud certainly qualifies as manual and tedious and something that is going to need to be done a lot (every time you hit F5 to run the app).</p>
<p>If VS dies (or more likely, you lose your network connection) before uploading all the application files, the worst thing that will happen is that you will be left with a debug application resource feed that is incomplete.  VS doesn&#8217;t upload files into your existing installed mesh application, it creates a separate debug application resource to upload into and debug from.  This helps ensure that the bits you&#8217;re debugging are the bits that VS put there that match your local debug symbols, without any interference from automatic application updates caused by changes elsewhere in the system.</p>
<h3>&#8220;Once real production apps are being upgraded, something more robust would be nice&#8221; </h3>
<p>Visual Studio never debugs or uploads applications into a public, production environment. You&#8217;re always operating on an application that is tagged as in &#8220;development&#8221; mode in the cloud.  When you&#8217;re finished with development (and testing) you go to the developer portal and throw a big switch to push your application into production mode, accessible to the general public. </p>
<p>I believe (not sure here) that pushing the app into production will only expose one version of the application&#8217;s resource feed.  If that is the case, then you should be able to continue development of that app in VS because VS always uploads and debugs from a separate (private / nonpublished) debug application resource feed.</p>
<h3>&#8220;When my app is sync&#8217;d to my local machine, does it download the zip file or the individual files of the app?&#8221;</h3>
<p>The files in your application are stored in the cloud as entries in an application resource feed. When the contents of your application feed needs to be sync&#8217;d to a particular device, the sync granularity is at the level of individual files.  The Live Mesh client does not download the zip file you uploaded to the cloud because (as far as I know) that zip file no longer exists anywhere.</p>
<p>A lot of what you see in this CTP release of the tools will change significantly before we release.  For example, the manual process of uploading the app to the cloud to get the app self link to paste into VS will <em>definitely</em> be going away as soon as the cloud implements and exposes the app creation and provisioning services needed by tools.</p>
<p>Our goal for the Live Framework Tools for Visual Studio is to make developing Live Mesh enabled applications as seamless as developing a desktop app.  You create a project, make some edits and F5 to run the app, stop at some source code breakpoints, evaluate some variables, close the app, edit and F5 to run again.  Whether the app is in the cloud or on the local machine will be a footnote to the development cycle you&#8217;re used to, not a radical departure.</p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/05/inside-live-framework-tools-for-visual-studio-ctp1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Default Permissions in Mesh Apps Created With Live Framework Tools for Microsoft Visual Studio</title>
		<link>http://dannythorpe.com/2008/11/04/fixing-default-permissions-in-apps-created-with-live-framework-tools-for-microsoft-visual-studio/</link>
		<comments>http://dannythorpe.com/2008/11/04/fixing-default-permissions-in-apps-created-with-live-framework-tools-for-microsoft-visual-studio/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 18:03:02 +0000</pubDate>
		<dc:creator>dthorpe</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[Live Framework Tools]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[workarounds]]></category>

		<guid isPermaLink="false">http://dannythorpe.com/2008/11/04/fixing-default-permissions-in-apps-created-with-live-framework-tools-for-microsoft-visual-studio/</guid>
		<description><![CDATA[We&#8217;ve discovered a bug in how the Live Framework Tools for Microsoft Visual Studio (&#8220;VS tools&#8221;) set permission values for Live Mesh-enabled web apps uploaded using the VS tools.  This results in your mesh app running with fewer permissions than the intended default permission set, which will prevent your app from modifying mesh feeds for contacts or news.
You [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve discovered a bug in how the Live Framework Tools for Microsoft Visual Studio (&#8220;VS tools&#8221;) set permission values for Live Mesh-enabled web apps uploaded using the VS tools.  This results in your mesh app running with fewer permissions than the intended default permission set, which will prevent your app from modifying mesh feeds for contacts or news.</p>
<p>You can fix the default permissions on your app after you perform the first upload steps in VS and the dev portal.</p>
<ol>
<li>Perform the first-time app upload steps in VS to upload the zip to the dev portal and set the app self link in the VS project.</li>
<li>In VS, press F5 again to verify that your mesh app starts up in Live Desktop in the browser, under VS debugger control.</li>
<li>Close the Live Desktop browser to end the debug session.</li>
<li>Open a new browser window and log into Live Desktop (<a href="http://developer-ctp.mesh.com/"><font color="#0072bc">http://developer-ctp.mesh.com</font></a>) </li>
<li>Select the Apps page. </li>
<li>Find your mesh app in the list of installed mesh apps.  Click on the name of your mesh app instance to view its details page.</li>
</ol>
<p>The permissions listed on the details page will look like this:</p>
<blockquote><p><strong>Permissions</strong><br />
Read access to my Live Mesh object<br />
Read access to my Windows Live Contacts<br />
Read access to my Live Mesh User News</p></blockquote>
<p>To adjust the permissions to the correct default values, click on the &#8220;Edit&#8221; link in the top right corner of the panel.</p>
<p>An &#8220;Access Permission&#8221; page will be displayed.  Click Cancel to return to the app instance list. </p>
<p>Click on the app instance link in the installed applications list to view the app&#8217;s details page again.</p>
<p>The app permissions should now look like this:</p>
<blockquote><p><strong>Permissions</strong><br />
Read access to my Windows Live Profiles<br />
Read access to my Live Mesh Devices<br />
Read and update access to my Windows Live Contacts<br />
Full access to my Live Mesh User News</p></blockquote>
<p>Your mesh app can now write to its contacts and news feeds.</p>
<p>This permissions adjustment only needs to be done <strong>once</strong> after the VS tools have uploaded the app for the first time.  Subsequent edits &amp; updates by VS will not change the permissions.</p>
<p>This default permissions bug will be fixed in the next update of the VS tools.</p>
<p> Originally posted in the <a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/thread/695f4201-7ab3-4942-bf45-b929f75f2237">Live Framework discussion forum</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dannythorpe.com/2008/11/04/fixing-default-permissions-in-apps-created-with-live-framework-tools-for-microsoft-visual-studio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
