<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Developing with your head in the clouds</title>
	<atom:link href="http://skylore.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://skylore.wordpress.com</link>
	<description>Cloud Computing</description>
	<lastBuildDate>Sat, 28 Jan 2012 10:30:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='skylore.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Developing with your head in the clouds</title>
		<link>http://skylore.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://skylore.wordpress.com/osd.xml" title="Developing with your head in the clouds" />
	<atom:link rel='hub' href='http://skylore.wordpress.com/?pushpress=hub'/>
		<item>
		<title>An IEnumerable is not a List, it&#8217;s just a promise of a List</title>
		<link>http://skylore.wordpress.com/2011/11/11/an-ienumerable-is-not-a-list-its-just-a-promise-of-a-list-2/</link>
		<comments>http://skylore.wordpress.com/2011/11/11/an-ienumerable-is-not-a-list-its-just-a-promise-of-a-list-2/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:44:15 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[IEnumerable]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Projection]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/?p=164</guid>
		<description><![CDATA[It is actually quite obvious, but figuring out the implications still took me a few minutes today. Suppose you have a simple list of objects: 1: List&#60;Object&#62; list = new List&#60;Object&#62; { new Object(), new Object() }; And for some reasons you’d like to create a projection from this list using a wrapper class. One [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=164&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is actually quite obvious, but figuring out the implications still took me a few minutes today.</p>
<p>Suppose you have a simple list of objects:</p>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> List&lt;Object&gt; list = <span style="color:#0000ff;">new</span> List&lt;Object&gt; { <span style="color:#0000ff;">new</span> Object(), <span style="color:#0000ff;">new</span> Object() };</pre>
<p><!--CRLF--></div>
</div>
<p>And for some reasons you’d like to create a projection from this list using a wrapper class. One reason why you would do this is wrapping business objects into ViewModels.</p>
<p id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> var enumerable = from o <span style="color:#0000ff;">in</span> list</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span>                  select <span style="color:#0000ff;">new</span> Wrapper(o);</pre>
<p><!--CRLF--></div>
</p>
<p>The Wrapper class only adds the capability of being flagged to the whole story:</p>
<p id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Wrapper</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span> {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> IsFlagged { get; set; }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>     <span style="color:#0000ff;">private</span> Object Obj;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>     <span style="color:#0000ff;">public</span> Wrapper(Object o)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>         Obj = o;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span> }</pre>
<p><!--CRLF--></div>
</p>
<p>So what you now have in enumerable is an IEnumerable&lt;Wrapper&gt;. Next, you’d like to use the wrapper functionality and flag the two elements in enumerable:</p>
<p id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">foreach</span> (var e <span style="color:#0000ff;">in</span> enumerable)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span> {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>     e.IsFlagged = <span style="color:#0000ff;">true</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span> }</pre>
<p><!--CRLF--></div>
</p>
<p>And then you go forth using your enumerable, only to discover that none of the contained elements are flagged.</p>
<p>What!? Why?</p>
<p>It’s because an IEnumerable is not a List. One needs to understand that prior to calling .ToList() or using foreach() to enumerate over it, no constructor of wrapper has been invoked. Put another way, only because we used this nifty LINQ projection, no Wrapper instances exist yet.</p>
<p>They came into life when we foreach’ed them and disappeared right after that. Whenever we try to use enumerable again, we are enumerating this LINQ expression again. Which means we call the constructors again and we get totally different instances of Wrapper.</p>
<p>For example, suppose we’d use this expression in order to check how many elements are actually selected as an effort to find out why the program doesn’t work as expected:</p>
<p id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">int</span> numberFlagged = enumerable.Count(e =&gt; e.IsFlagged);</pre>
<p><!--CRLF--></div>
</p>
<p>This will return 0, as we already know. The best way to find out is to step through the provided code and put a breakpoint into the Wrapper constructor. Please find the whole source code ready for copy &amp; paste at the end of this article.</p>
<p>Although i knew how an IEnumerable behaves, it took me 10 minutes today to find my error in a slightly more complicated example. I guess it’s the special case of using a linq projection together with an IEnumerable that got me.</p>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#0000ff;">class</span> Program</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">{</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">void</span> Main(<span style="color:#0000ff;">string</span>[] args)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        List&lt;Object&gt; list = <span style="color:#0000ff;">new</span> List&lt;Object&gt; { <span style="color:#0000ff;">new</span> Object(), <span style="color:#0000ff;">new</span> Object() };</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        var enumerable = from o <span style="color:#0000ff;">in</span> list</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">                            select <span style="color:#0000ff;">new</span> Wrapper(o);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">foreach</span> (var e <span style="color:#0000ff;">in</span> enumerable)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            e.IsFlagged = <span style="color:#0000ff;">true</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">int</span> numberFlagged = enumerable.Count(e =&gt; e.IsFlagged);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Wrapper</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> IsFlagged { get; set; }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">&#160;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">private</span> Object Obj;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        <span style="color:#0000ff;">public</span> Wrapper(Object o)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">            Obj = o;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">        }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;">}</pre>
<p><!--CRLF--></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=164&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/11/11/an-ienumerable-is-not-a-list-its-just-a-promise-of-a-list-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile Flares for Windows Phone 7: Setup</title>
		<link>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7-setup/</link>
		<comments>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7-setup/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 18:43:00 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Flares]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7-setup/</guid>
		<description><![CDATA[I’d like to give a brief overview of the project for starters. The first important thing to notice here is that in this first step, there are no Mango tools involved. We are still working with the first version of the windows phone tools (7.0) and will switch to Mango later in the project. Fairly [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=146&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’d like to give a brief overview of the project for starters. The first important thing to notice here is that in this first step, there are no Mango tools involved. We are still working with the first version of the windows phone tools (7.0) and will switch to Mango later in the project. Fairly soon, though.</p>
<p>So the first thing I have done was reusing the parser logic. Clearly by far not the finest piece of code I&#8217;ve ever written, but we don&#8217;t even need to cover it here. The only thing worth mentioning is that it is responsible for issuing a HTTP GET to the HeavensAbove website with the coordinates your phone detected. All this scraping and parsing lives in the projects <em>FlareParser</em> and <em>HeavensAboveParser</em>. MobileFlares.Core is responsible for defining the interfaces and BusinessObjects the parsed, raw data gets transformed into.</p>
<p>I nearly forgot to mention the use of Async CTP features in the code, which greatly simplify working with asynchronous calls. <a href="http://www.microsoft.com/download/en/details.aspx?id=9983" target="_blank">Visual Studio Async CTP SP1 Refresh</a> ships with assemblies for Windows Phone 7, which are included in the solution. Although the solution is self contained, you will still need to install the CTP should you want to build it yourself.</p>
<p>I&#8217;ve used the databound template for this project. This sets up your project with one page for master data and one page for detail data. For this step, we don&#8217;t even need the details page, we will only bind the data to a list on the master page (called MainPage.xaml)</p>
<p><sub></sub><sub></sub>MobileFlares/SampleData contains MainViewModelSampleData.xaml to throw design time data at the list on the master page. This is wired up in MainPage.xaml using this line:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:038eba3d-7f4d-4f8c-9125-d454d0e271ed" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;overflow:auto;"><span style="color:#000000;">d:DataContext</span><span style="color:#000000;">=</span><span style="color:#800000;">"</span><span style="color:#800000;">{d:DesignData SampleData/MainViewModelSampleData.xaml}</span><span style="color:#800000;">"</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>The DataTemplate for visualizing flare data is called <em>FlareOverviewTemplate</em> and resides in App.xaml.</p>
<p>That&#8217;s it for the project layout. A bit more interesting is how the <em>GeoCoordinateWatcher</em> is set up. There is an initalization method in the code behind for MainPage.xaml:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:8f93f7cf-64f1-44ff-aa9c-7cf7f67422a4" class="wlWriterEditableSmartContent">
<pre style="background-color:#FFFFFF;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"><span style="color:#0000FF;">private</span><span style="color:#000000;"> </span><span style="color:#0000FF;">void</span><span style="color:#000000;"> InitGeoWatcher()
{
  geoWatcher </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">new</span><span style="color:#000000;"> GeoCoordinateWatcher(GeoPositionAccuracy.Default);
  geoWatcher.MovementThreshold </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#800080;">1000</span><span style="color:#000000;">; </span><span style="color:#008000;">//</span><span style="color:#008000;"> Notify about new position every 1km travelled</span><span style="color:#008000;">
</span><span style="color:#000000;">  geoWatcher.PositionChanged </span><span style="color:#000000;">+=</span><span style="color:#000000;"> geoWatcher_PositionChanged;
  geoWatcher.Start();
}</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<p>By specifying <em>GeoPositionAccuracy.Default</em> we tell the watcher that we don&#8217;t need GPS accuracy and are happy to use coordinates that have been determined through cell tower triangulation. This cuts down power consumption because the GPS sensor does not need to get activated.</p>
<p>Movement threshold is another option for reducing both power consumption and the number of calls to the website. As long as the app is running, the PositionChanged event will only fire if the position has changed more than 1km. This is still good enough for accurate flare predictions.<br />
  </p>
<p>There is also a LogPage implementation that can be hooked up to attach itself to the ApplicationBar. Up to this point, it has only been used to check when the <em>GeoCoordinateWatcher</em> fires its <em>PositionChanged</em> event.</p>
<p>So this is what happened up to revision 3: The app will get the location from your device, use the coordinates to fire a request to the website, parse the response into business objects and bind it through <em>MainViewModel</em> to a list on the screen.</p>
<p><a href="http://skylore.files.wordpress.com/2011/09/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://skylore.files.wordpress.com/2011/09/image_thumb.png?w=357&#038;h=722" width="357" height="722" /></a></p>
<p>The next step will already contain the upgrade to Mango tools and using the Compass API to implement what I called guidance.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/146/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=146&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>

		<media:content url="http://skylore.files.wordpress.com/2011/09/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile Flares for Windows Phone 7</title>
		<link>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7/</link>
		<comments>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 18:41:00 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mobile Flares]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7/</guid>
		<description><![CDATA[Introduction Setup and project overview Some ideas are more or less useless, but also just as timeless. Some time ago, I started to implement a project called Mobile Flares for Windows Mobile 6.5. It was a small app for getting flare predictions for Iridium Flares. After I got myself a brand new Windows Phone I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=156&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ol>
<li><font></font><font><a href="http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7" target="_blank">Introduction</a></font></li>
<li><font><a href="http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7-setup/" target="_blank">Setup and project overview</a></font></li>
</ol>
<p>Some ideas are more or less useless, but also just as timeless. <a href="https://skylore.wordpress.com/2009/06/06/satellites-in-your-pocket/">Some time ago</a>, I started to implement a project called <a href="http://mobileflares.codeplex.com/" target="_blank">Mobile Flares</a> for Windows Mobile 6.5. It was a small app for getting flare predictions for <a href="http://heavens-above.com/iridiumhelp.asp">Iridium Flares</a>.</p>
<p>After I got myself a brand new <a href="http://en.wikipedia.org/wiki/Windows_Phone">Windows Phone</a> I thought about revisiting the project to make it work on the new platform. But it was only when the new Windows Phone <a href="http://en.wikipedia.org/wiki/Windows_Phone_7.1">Mango features</a> were announced that I eventually got into it. Mango has interesting new APIs this small application can benefit from, which is why I’d like to shine some light on implementation details in order to turn the project into a Mango tutorial.</p>
<p>In the following posts, I will describe the implementation progress in steps and also point to the corresponding code revision. All the code is available on <a href="http://mobileflares7.codeplex.com/" target="_blank">Codeplex</a>, I am using <a href="http://mercurial.selenic.com/" target="_blank">Mercurial</a> as version control software. I have to apologize for my random switching between german and english commit comments, I will restrict it to english from now on.</p>
<p>Even though the main use case of Mobile Flares is extremely simple (get predictions for the current location) there are a lot of sub-usecases revolving around this, which is why the application uses, among other APIs:</p>
<ul>
<li>Location API </li>
<li>Compass API </li>
<li>Background Agents </li>
<li>Live Tiles </li>
<li>Local Database </li>
<li>Reminders </li>
</ul>
<p>It also uses <a href="http://www.microsoft.com/download/en/details.aspx?id=9983" target="_blank">Visual Studio Async CTP (SP1 Refresh)</a> and <font><a href="http://mvvmlight.codeplex.com/" target="_blank">MVVM Light</a></font><font></font>.</p>
<p>What I like about Windows Phone development is that it’s only a special flavor of Silverlight development, and Silverlight will look familiar to anyone who has done some WPF, which is, as it happens, exactly what I have done. I will not cover the basics of XAML, data binding etc for this is not a Silverlight tutorial. </p>
<p>Instead, I will show how to achieve this with LiveTiles:</p>
<p><a href="http://skylore.files.wordpress.com/2011/09/image1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0;" title="image" border="0" alt="image" src="http://skylore.files.wordpress.com/2011/09/image_thumb1.png?w=244&#038;h=125" width="244" height="125" /></a></p>
<p>and this using reminders</p>
<p><a href="http://skylore.files.wordpress.com/2011/09/image2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0;" title="image" border="0" alt="image" src="http://skylore.files.wordpress.com/2011/09/image_thumb2.png?w=242&#038;h=244" width="242" height="244" /></a></p>
<p>and this using compass data</p>
<p><a href="http://skylore.files.wordpress.com/2011/09/image3.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://skylore.files.wordpress.com/2011/09/image_thumb3.png?w=244&#038;h=213" width="244" height="213" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=156&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/09/26/mobile-flares-for-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>

		<media:content url="http://skylore.files.wordpress.com/2011/09/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://skylore.files.wordpress.com/2011/09/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://skylore.files.wordpress.com/2011/09/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Debranding Light for Windows Phone 7</title>
		<link>http://skylore.wordpress.com/2011/06/06/debranding-light-for-windows-phone-7/</link>
		<comments>http://skylore.wordpress.com/2011/06/06/debranding-light-for-windows-phone-7/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 18:13:57 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2011/06/06/debranding-light-for-windows-phone-7/</guid>
		<description><![CDATA[So now you are the owner of a shiny WP7 device and even got a marketplace signup so you can code applications for this thing. And after a while you realize that Microsoft released a firmware update that contains some functionality you would like to incorporate into your apps, like copy &#38; paste for example. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=145&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So now you are the owner of a shiny WP7 device and even got a marketplace signup so you can code applications for this thing. And after a while you realize that Microsoft released a firmware update that contains some functionality you would like to incorporate into your apps, like copy &amp; paste for example.</p>
<p>But your phone just never tells you about the update, and there is nothing to be installed, and some friends of yours already got the update while you are still unable to thoroughly test your app. Then you realize the difference: You bought the phone from a different carrier.</p>
<p>Some carriers hold back new updates for WP7 for quite some time, which – from a developer’s point of view – might be unacceptable.</p>
<p>And then someone tells you that flashing your phone with an original (unbranded) ROM might do the trick, but this means that you are losing all your messages and settings and so on – almost everything in fact, since the device will be completely reset, just like after doing a fresh reinstall of you favorite OS on your PC. But at least for a PC there are a lot of backup solutions available that will bring all your data back.</p>
<p>At the time of writing, this is not true for WP7 devices – the <a href="http://forum.xda-developers.com/showthread.php?t=1103011">only backup solution</a> worth mentioning I know of will do a complete backup of the phone – including the device’s current ROM which means that this is only applicable if you do NOT want do upgrade the ROM. But this is precisely what debranding is about.</p>
<p>If your only goal is to unlock the updates for your phone so that it uses MS updates directly instead of waiting for your carrier to release them, then there is <a href="http://windowsphonehacker.com/articles/how_to_unbrand_any_wp7_device_to_receive_updates-03-28-11">another solution</a>. Essentially, it will only flick a switch telling your phone not to receive the updates from your carrier but directly from MS. It will not alter your branded boot screen nor any other settings on your phone. Most importantly, it will not do anything to your precious data.</p>
<p>This is a short outline of what I did for my Samsung Omnia 7:</p>
<ol>
<li>(Optional) Create a complete backup of your phone so you could roll back in case of failure. This might be a good idea anyway.</li>
<ol>
<li>Install the <a href="http://support.microsoft.com/kb/2530409">support tool</a> for WP7</li>
<li>Install this <a href="http://forum.xda-developers.com/showthread.php?t=1103011">wrapper for the support tool</a> (this is the backup solution I mentioned previously)</li>
<li>Perform a backup of the phone. For me, it was ok to remove the USB cable when the app told me to even though the phone was displaying an image at that time strongly advising me not to do so</li>
</ol>
<li>Follow the instructions <a href="http://windowsphonehacker.com/articles/how_to_unbrand_any_wp7_device_to_receive_updates-03-28-11">on this site</a>. For me this meant:</li>
<ol>
<li>Installing the registry editor for Samsung devices. This editor comes as an XAP file which must be deployed to the phone via the Windows Phone SDK <em>Application Deployment</em> tool</li>
<li>After that I had to edit one registry value and</li>
<li>Reboot the phone</li>
</ol>
<li>This should be it. My phone announced available updates and I installed them after Zune was finished updating itself to a new version.</li>
</ol>
<p>Some forum members claimed that this took more than one attempt for them. While it worked for me at once, some had to try 20 times.</p>
<p>HTH</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=145&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/06/06/debranding-light-for-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Visiting the WCF Data Services Toolkit April 2011 Update</title>
		<link>http://skylore.wordpress.com/2011/05/08/visiting-the-wcf-data-services-toolkit-april-2011-update/</link>
		<comments>http://skylore.wordpress.com/2011/05/08/visiting-the-wcf-data-services-toolkit-april-2011-update/#comments</comments>
		<pubDate>Sun, 08 May 2011 19:23:48 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Azure Storage Services]]></category>
		<category><![CDATA[Azure Table Storage]]></category>
		<category><![CDATA[OData]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/?p=142</guid>
		<description><![CDATA[Looking for a way to expose data from Windows Azure Table Storage via an OData webservice I quickly discovered that in its current form, WCF Data Services are primarily meant to expose relational data when using the Entity Framework. Since working with Azure Storage &#8211; such as TableStorage – typically does not involve a relational [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=142&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Looking for a way to expose data from Windows Azure Table Storage via an OData webservice I quickly discovered that in its current form, WCF Data Services are primarily meant to expose relational data when using the Entity Framework. Since working with Azure Storage &#8211; such as TableStorage – typically does not involve a relational data model, OData seemed to be a difficult path. Not using Entity Framework means you will have to implement your own LINQ provider to get the job done. This is not a trivial task as it involves juggling – or rather messing &#8211; around with expression trees.</p>
<p>At this point I discovered the <a href="http://wcfdstoolkit.codeplex.com/">WCF Data Services Toolkit on Codeplex</a> which circumvents the need to write your own LINQ provider by using a repository pattern architecture for you to hook into. I also found <a href="http://wcfdstoolkit.codeplex.com/documentation">documentation</a> to get me started, however I discovered later that the documentation does not match the current (beta) release of the toolkit.</p>
<p>As a prerequisite, please read the author’s blog post about <a href="http://lostintangent.com/post/4092419024/handling-updates-with-the-wcf-data-services-toolkit">updating resources</a> with the toolkit. Here he describes the <em>IWriteableRepository</em> interface. Please note that this documentation is partly out of date as with the april update:</p>
<p>&#160;</p>
<h2><em>IWriteableRepository</em> interface is gone</h2>
<p>But fear not. It is a breaking change, but simply removing it from the class declaration will do the trick. This is because methods on your repository will be called by convention (hence by reflection). This has multiple advantages which the author mentions at the end of the <a href="http://lostintangent.com/post/4092419024/handling-updates-with-the-wcf-data-services-toolkit">updating resources post</a>.    </p>
<h2><em>CreateDefaultEntity</em> has been renamed to <em>CreateResource</em></h2>
<p>While the previous change might have been obvious, this one is not. But again, this is easy to solve, just rename the method.</p>
<p>&#160;</p>
<p>This is it for the changes. Some random things I discovered while using the Toolkit:</p>
<p>Make sure to implement CreateResource. In there, simply new up a new instance of your entity (or do more advanced stuff if necessary). Otherwise, the toolkit will try to use Activator.CreateInstance() to create an entity instance, which did not work for me because the type to create an instance from was in a different assembly. This is a known issue (#12 on Codeplex) and I sent a patch for this to the author.</p>
<p>&#160;</p>
<p>Just for reference: The list of methods one can implement in the repository:</p>
<ol>
<li>public void Save(&lt;YourType&gt; entity) </li>
<li>public void Remove(&lt;YourType&gt; entity) </li>
<li>public void CreateRelation(&lt;YourType&gt; entity, &lt;YourOtherType&gt; relatedEntity) </li>
<li>public object CreateResource() </li>
</ol>
<p>So far, I really like the toolkit and how it helped me to work with Azure Storage. Keep up the good work!</p>
<ol><!--EndFragment--></ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=142&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/05/08/visiting-the-wcf-data-services-toolkit-april-2011-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight with WIF and REST Web Services</title>
		<link>http://skylore.wordpress.com/2011/01/09/silverlight-with-wif-and-rest-web-services/</link>
		<comments>http://skylore.wordpress.com/2011/01/09/silverlight-with-wif-and-rest-web-services/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 18:39:17 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Claims]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[Windows Identity Foundation]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/?p=137</guid>
		<description><![CDATA[Using Silverlight in conjunction with Windows Identity Foundation prevents you from calling REST web services, at least out of the box. Here is why: Using WIF to authenticate the Silverlight client against a server relies on security tokens being sent from client to server. These tokens are sent as cookies Sending cookies from a Silverlight [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=137&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Using Silverlight in conjunction with Windows Identity Foundation prevents you from calling REST web services, at least out of the box. Here is why:</p>
<ol>
<li>Using WIF to authenticate the Silverlight client against a server relies on security tokens being sent from client to server. These tokens are sent as cookies
<li>Sending cookies from a Silverlight application means you have to use the BrowserHTTP network stack since the other option for silverlight (ClientHTTP stack) is incapable of sending cookies
<li>BrowserHTTP in turn is limited to sending GET and POST requests. But REST web service methods often use other HTTP verbs as well, such as PUT and DELETE
<li>So this means we can’t use WIF with Silverlight AND call web service methods by HTTP verbs other than GET and POST, right?</li>
</ol>
<p>Right, not as it is. But in certain circumstances, one is able to get over this limitation.</p>
<p>These are the moving parts:</p>
<ul>
<li>I’ve been using the Silverlight in Browser WIF Example of the <font face="Verdana"><font><a href="http://blogs.msdn.com/b/vbertocci/archive/2010/03/15/identity-developer-training-kit-march-2010-update-wif-silverlight-wif-wcf-on-windows-azure.aspx">Identity Developer Training Kit March 2010 update</a></font></font>
<li>Silverlight Version 4
<li>My REST web service has been implemented in ASP.NET MVC 1</li>
</ul>
<p>So what is needed for our workaround? The web service has to understand and handle a request header that you can set in your Silverlight App and that is being used to tunnel the actual verb.</p>
<p>I chose to use <em>X-HTTP-Method-Override</em> as header. If you are responsible for the implementation of the web service, you could of course use every spare header you’d like, but I think <em>X-HTTP-Method-Override</em> pretty much sticks to the standards<em>.</em></p>
<p>The solution can be outlined as follows:</p>
<ol>
<li>You still use the BrowserHTTP stack, which lets WIF do its magic.
<li>Whenever you want to send, lets say a PUT request, you set a header in the Silverlight app on this request which contains the actual verb you want to use (in this example, PUT) and let the stack issue a POST request to the resource.
<li>The web service recognizes the header and uses the contained verb to handle the requests as opposed to the verb the stack reported.</li>
</ol>
<p>Here is some code to tunnel the verb by setting a header:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:a2281271-4e19-4c0e-99fb-bb97fb3956cd" class="wlWriterEditableSmartContent">
<pre style="background-color:Silver;overflow:none;font-family:Microsoft Sans Serif;font-size:9px;"><span style="color:#000000;">var request </span><span style="color:#000000;">=</span><span style="color:#000000;"> (HttpWebRequest)System.Net.Browser.WebRequestCreator.BrowserHttp.Create(</span><span style="color:#0000FF;">new</span><span style="color:#000000;"> Uri(fullUri));
request.Headers[</span><span style="color:#800000;">"</span><span style="color:#800000;">X-HTTP-Method-Override</span><span style="color:#800000;">"</span><span style="color:#000000;">] </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#800000;">"</span><span style="color:#800000;">PUT</span><span style="color:#800000;">"</span><span style="color:#000000;">;
request.Method </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#800000;">"</span><span style="color:#800000;">POST</span><span style="color:#800000;">"</span><span style="color:#000000;">;</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<pre>&nbsp;</pre>
<pre><font face="Verdana">Next, here is what is necessary to make the web service understand this header.</font></pre>
<pre><font face="Verdana">ASP.NET MVC offers the [Authorize] attribute to make sure incoming calls to a method are authenticated. </font></pre>
<p><font face="Verdana">This attribute uses the actual verb and does not recognize our custom header, so we will need to provide another implementation for that. Luckily, that one is easy. Below is the full sample implementation of an attribute that uses the custom header if present, otherwise it will use the real verb. This implementation is mostly based on the ASP.NET MVC version of the Authorize attribute.</font></p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:45004cbc-7647-424b-9cc9-0f557df7f98c" class="wlWriterEditableSmartContent">
<pre style="background-color:Silver;overflow:auto;font-family:Microsoft Sans Serif;font-size:9px;"><span style="color:#000000;">[AspNetHostingPermission(System.Security.Permissions.SecurityAction.LinkDemand, Level </span><span style="color:#000000;">=</span><span style="color:#000000;"> AspNetHostingPermissionLevel.Minimal)]
[AttributeUsage(AttributeTargets.Method, AllowMultiple </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">false</span><span style="color:#000000;">, Inherited </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">true</span><span style="color:#000000;">)]
</span><span style="color:#0000FF;">public</span><span style="color:#000000;"> </span><span style="color:#0000FF;">class</span><span style="color:#000000;"> AcceptTunneledVerbsAttribute : ActionMethodSelectorAttribute
{
   </span><span style="color:#0000FF;">public</span><span style="color:#000000;"> AcceptTunneledVerbsAttribute(HttpVerbs verbs)
       : </span><span style="color:#0000FF;">this</span><span style="color:#000000;">(EnumToArray(verbs))
   {
   }

   </span><span style="color:#0000FF;">public</span><span style="color:#000000;"> AcceptTunneledVerbsAttribute(</span><span style="color:#0000FF;">params</span><span style="color:#000000;"> </span><span style="color:#0000FF;">string</span><span style="color:#000000;">[] verbs)
   {
       </span><span style="color:#0000FF;">if</span><span style="color:#000000;"> (verbs </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#0000FF;">null</span><span style="color:#000000;"> </span><span style="color:#000000;">||</span><span style="color:#000000;"> verbs.Length </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#800080;">0</span><span style="color:#000000;">)
       {
           </span><span style="color:#0000FF;">throw</span><span style="color:#000000;"> </span><span style="color:#0000FF;">new</span><span style="color:#000000;"> ArgumentException(</span><span style="color:#800000;">"</span><span style="color:#800000;">Argument was null or empty</span><span style="color:#800000;">"</span><span style="color:#000000;">, </span><span style="color:#800000;">"</span><span style="color:#800000;">verbs</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       }

       Verbs </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">new</span><span style="color:#000000;"> ReadOnlyCollection</span><span style="color:#000000;">&lt;</span><span style="color:#0000FF;">string</span><span style="color:#000000;">&gt;</span><span style="color:#000000;">(verbs);
   }

   </span><span style="color:#0000FF;">public</span><span style="color:#000000;"> ICollection</span><span style="color:#000000;">&lt;</span><span style="color:#0000FF;">string</span><span style="color:#000000;">&gt;</span><span style="color:#000000;"> Verbs
   {
       </span><span style="color:#0000FF;">get</span><span style="color:#000000;">;
       </span><span style="color:#0000FF;">private</span><span style="color:#000000;"> </span><span style="color:#0000FF;">set</span><span style="color:#000000;">;
   }

   </span><span style="color:#0000FF;">private</span><span style="color:#000000;"> </span><span style="color:#0000FF;">static</span><span style="color:#000000;"> </span><span style="color:#0000FF;">void</span><span style="color:#000000;"> AddEntryToList(HttpVerbs verbs, HttpVerbs match, List</span><span style="color:#000000;">&lt;</span><span style="color:#0000FF;">string</span><span style="color:#000000;">&gt;</span><span style="color:#000000;"> verbList, </span><span style="color:#0000FF;">string</span><span style="color:#000000;"> entryText)
   {
       </span><span style="color:#0000FF;">if</span><span style="color:#000000;"> ((verbs </span><span style="color:#000000;">&amp;</span><span style="color:#000000;"> match) </span><span style="color:#000000;">!=</span><span style="color:#000000;"> </span><span style="color:#800080;">0</span><span style="color:#000000;">)
       {
           verbList.Add(entryText);
       }
   }

   </span><span style="color:#0000FF;">internal</span><span style="color:#000000;"> </span><span style="color:#0000FF;">static</span><span style="color:#000000;"> </span><span style="color:#0000FF;">string</span><span style="color:#000000;">[] EnumToArray(HttpVerbs verbs)
   {
       List</span><span style="color:#000000;">&lt;</span><span style="color:#0000FF;">string</span><span style="color:#000000;">&gt;</span><span style="color:#000000;"> verbList </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000FF;">new</span><span style="color:#000000;"> List</span><span style="color:#000000;">&lt;</span><span style="color:#0000FF;">string</span><span style="color:#000000;">&gt;</span><span style="color:#000000;">();

       AddEntryToList(verbs, HttpVerbs.Get, verbList, </span><span style="color:#800000;">"</span><span style="color:#800000;">GET</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       AddEntryToList(verbs, HttpVerbs.Post, verbList, </span><span style="color:#800000;">"</span><span style="color:#800000;">POST</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       AddEntryToList(verbs, HttpVerbs.Put, verbList, </span><span style="color:#800000;">"</span><span style="color:#800000;">PUT</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       AddEntryToList(verbs, HttpVerbs.Delete, verbList, </span><span style="color:#800000;">"</span><span style="color:#800000;">DELETE</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       AddEntryToList(verbs, HttpVerbs.Head, verbList, </span><span style="color:#800000;">"</span><span style="color:#800000;">HEAD</span><span style="color:#800000;">"</span><span style="color:#000000;">);

       </span><span style="color:#0000FF;">return</span><span style="color:#000000;"> verbList.ToArray();
   }

   </span><span style="color:#0000FF;">public</span><span style="color:#000000;"> </span><span style="color:#0000FF;">override</span><span style="color:#000000;"> </span><span style="color:#0000FF;">bool</span><span style="color:#000000;"> IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
   {
       </span><span style="color:#0000FF;">if</span><span style="color:#000000;"> (controllerContext </span><span style="color:#000000;">==</span><span style="color:#000000;"> </span><span style="color:#0000FF;">null</span><span style="color:#000000;">)
       {
           </span><span style="color:#0000FF;">throw</span><span style="color:#000000;"> </span><span style="color:#0000FF;">new</span><span style="color:#000000;"> ArgumentNullException(</span><span style="color:#800000;">"</span><span style="color:#800000;">controllerContext</span><span style="color:#800000;">"</span><span style="color:#000000;">);
       }

       </span><span style="color:#0000FF;">string</span><span style="color:#000000;"> incomingVerb </span><span style="color:#000000;">=</span><span style="color:#000000;"> controllerContext.HttpContext.Request.Headers[</span><span style="color:#800000;">"</span><span style="color:#800000;">X-HTTP-Method-Override</span><span style="color:#800000;">"</span><span style="color:#000000;">] </span><span style="color:#000000;">??</span><span style="color:#000000;"> controllerContext.HttpContext.Request.HttpMethod;
       </span><span style="color:#0000FF;">return</span><span style="color:#000000;"> Verbs.Contains(incomingVerb, StringComparer.OrdinalIgnoreCase);
   }
}</span></pre>
<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --></div>
<pre><font face="Verdana"></font>&nbsp;</pre>
<pre><font face="Verdana">Credit to whom credit is due: These have been my sources</pre>
<p></font></p>
<p>Golo Roden: Hint for tunneling the verb (german) <a href="http://www.des-eisbaeren-blog.de/post/2009/07/13/ClientHttpStack-in-Silverlight-3.aspx">http://www.des-eisbaeren-blog.de/post/2009/07/13/ClientHttpStack-in-Silverlight-3.aspx</a></p>
<p>Jeff Prosise: Differences between Silverlight network stacks <a href="http://www.wintellect.com/CS/blogs/jprosise/archive/2009/10/14/silverlight-3-s-new-client-networking-stack.aspx">http://www.wintellect.com/CS/blogs/jprosise/archive/2009/10/14/silverlight-3-s-new-client-networking-stack.aspx</a></p>
<p>stack<strong>overflow</strong> user Levi pointed into the right direction for handling the header in ASP.NET MVC. Make sure to read the comments, subclassing the Attribute does not work. <a href="http://stackoverflow.com/questions/467535/is-it-possible-to-implement-x-http-method-override-in-asp-net-mvc">http://stackoverflow.com/questions/467535/is-it-possible-to-implement-x-http-method-override-in-asp-net-mvc</a></p>
<p><font face="Verdana"><br />&nbsp;</p>
<p></font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=137&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2011/01/09/silverlight-with-wif-and-rest-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>New Windows Azure Feature Announced at PDC 2010</title>
		<link>http://skylore.wordpress.com/2010/10/29/new-windows-azure-feature-announced-at-pdc-2010/</link>
		<comments>http://skylore.wordpress.com/2010/10/29/new-windows-azure-feature-announced-at-pdc-2010/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 09:05:19 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[PDC 2010]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2010/10/29/new-windows-azure-feature-announced-at-pdc-2010/</guid>
		<description><![CDATA[This morning, I received a newsletter from the Windows Azure Platform Team. Besides the fact that it’s formatting is horrible as usual since all German umlauts are displayed as some weird unreadable symbol, it contained a lot of new and exciting features for Windows Azure. Also be sure to check out this video which provides [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=134&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This morning, I received a newsletter from the Windows Azure Platform Team. Besides the fact that it’s formatting is horrible as usual since all German umlauts are displayed as some weird unreadable symbol, it contained a lot of new and exciting features for Windows Azure. Also be sure to <a href="http://player.microsoftpdc.com/Session/52f82526-db49-4975-9b0e-dccd11131c8a">check out this video</a> which provides a fast overview of new features for Windows Azure.</p>
<h2>Extra Small Instances</h2>
<p>This is one of the features I was really waiting for. Before this announcement, the smallest instance size was <em>Small</em>, having a price tag of $0.12 per hour. Now there is an <em>Extra Small</em> instance size with $0.05 / hour.</p>
<p>I went ahead and replicated the table from <a href="http://www.microsoft.com/windowsazure/compute/default.aspx">this Microsoft web site</a> to have the most current overview on my blog. This should come in handy, at least for me because I will keep forgetting this stuff. </p>
<table border="2" cellspacing="0" cellpadding="2" width="476">
<tbody>
<tr>
<td valign="top" width="137"><b><font size="1">Compute Instance Size</font></b></td>
<td valign="top" width="79"><b><font size="1">CPU</font></b></td>
<td valign="top" width="51"><b><font size="1">Memory</font></b></td>
<td valign="top" width="69"><b><font size="1">Instance Storage</font></b></td>
<td valign="top" width="78"><b><font size="1">I/O Performance</font></b></td>
<td valign="top" width="58"><b><font size="1">Cost per hour</font></b></td>
</tr>
<tr>
<td valign="top" width="137">Extra Small</td>
<td valign="top" width="79">1.0 GHz<font size="1"></font></td>
<td valign="top" width="51">768 MB<font size="1"></font></td>
<td valign="top" width="69">20 GB<font size="1"></font></td>
<td valign="top" width="78">Low<font size="1"></font></td>
<td valign="top" width="58">$0.05</td>
</tr>
<tr>
<td valign="top" width="137">Small<font size="1"></font></td>
<td valign="top" width="79">1.6 GHz</td>
<td valign="top" width="51">1.75 GB<font size="1"></font></td>
<td valign="top" width="69">225 GB<font size="1"></font></td>
<td valign="top" width="78">Moderate</td>
<td valign="top" width="58">$0.12<font size="1"></font></td>
</tr>
<tr>
<td valign="top" width="137">Medium<font size="1"></font></td>
<td valign="top" width="79">2 x 1.6 GHz<font size="1"></font></td>
<td valign="top" width="51">3.5 GB<font size="1"></font></td>
<td valign="top" width="69">490 GB<font size="1"></font></td>
<td valign="top" width="78">High</td>
<td valign="top" width="58">$0.24<font size="1"></font></td>
</tr>
<tr>
<td valign="top" width="137">Large<font size="1"></font></td>
<td valign="top" width="79">4 x 1.6 GHz<font size="1"></font></td>
<td valign="top" width="51">7 GB<font size="1"></font></td>
<td valign="top" width="69">1,000 GB<font size="1"></font></td>
<td valign="top" width="78">High</td>
<td valign="top" width="58">$0.24<font size="1"></font></td>
</tr>
<tr>
<td valign="top" width="137">Extra large<font size="1"></font></td>
<td valign="top" width="79">8 x 1.6 GHz</td>
<td valign="top" width="51">14 GB<font size="1"></font></td>
<td valign="top" width="69">2,040 GB<font size="1"></font></td>
<td valign="top" width="78">High<font size="1"></font></td>
<td valign="top" width="58">$0.96<font size="1"></font></td>
</tr>
</tbody>
</table>
<p>As explained in <a href="http://player.microsoftpdc.com/Session/d77df625-90b5-4d6c-ad64-7f608f8900b9">this video</a>, Extra Small Instances share resources (CPU, memory) with other VMs on the same node. Furthermore, the network bandwidth is capped at around 5 Mbps. This is not the case with larger instance sizes, where CPU and memory are not shared and your service can leverage unused bandwidth.</p>
<p>I believe this is a very good idea. Amazon’s smallest Windows instance (Micro Instance) is available <a href="http://aws.amazon.com/about-aws/whats-new/2010/09/09/announcing-micro-instances-for-amazon-ec2/">at a cut-price $0.03 per hour</a>, but we can’t compare these offerings 1:1 because Azure offers more functionality. We don’t have to pay extra for load balancing services and we don’t have to worry about OS updates etc. Besides, Azure’s Extra Small instance has 155MB more RAM, which could make a lot of difference.</p>
<p>This is why I like this new instance size so much: It means that it just got easier to get a small service running without downtime. By that I mean that I can now pay 2 extra small instances for a small service which gives me the ability to enable rolling upgrades without downtime. This includes automatic OS updates as well as my own updates to my service when delivering new features. This is still cheaper than having one small instance without all these benefits. I would expect this to activate the SLAs also, but I’m not sure about that. This won’t be the case while this feature is still in beta.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=134&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2010/10/29/new-windows-azure-feature-announced-at-pdc-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Things I Believe Windows Azure is Missing</title>
		<link>http://skylore.wordpress.com/2010/10/24/things-i-believe-windows-azure-is-missing/</link>
		<comments>http://skylore.wordpress.com/2010/10/24/things-i-believe-windows-azure-is-missing/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 09:57:00 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Amazon AWS]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2010/10/25/things-i-believe-windows-azure-is-missing/</guid>
		<description><![CDATA[Lately I was in the comfortable situation of having some time to dig deeper into some features of Windows Azure. While I am really excited about what Azure means to me as a .NET developer who wants to leverage PaaS and not IaaS, I also feel that some very important features are still missing. Some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=132&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lately I was in the comfortable situation of having some time to dig deeper into some features of Windows Azure. While I am really excited about what Azure means to me as a .NET developer who wants to leverage PaaS and not IaaS, I also feel that some very important features are still missing.</p>
<p>Some missing features require workarounds, others are simply showstoppers. For example, this week I hit a wall with Table Storage. Ouch. I was really happy about the approach I used with it and had even already applied some workarounds to my solution when, suddenly and sadly, I had to realize that Table Storage just doesn’t support case insensitive search.</p>
<p>Without going into much detail, let me put all this into a list. While it may seem that this post is essentially a rant about Windows Azure, that is not true. The rant is really only about documentation, see below. Everything else are just features I want to have and I believe the Azure platform needs to have ASAP if MS doesn’t want to get left behind. Some other big players in Cloud Computing are doing a splendid job of throwing new features at developers almost monthly and letting them know as soon as possible.</p>
<p>So all this boils down to: Deliver crucial new features. Do it fast. Let everyone know about it.</p>
<h2>Table Storage</h2>
<p>There is no support for <strong>secondary indexes</strong>. Amazon SimpleDB has it. Missing this kind of feature means we will have to store information redundantly, just to be able to query efficiently for them. This results in additional development effort as well as increased storage costs. Since storage is cheap, this is ok. Since when done properly, Table Storage can do an enormous scale out, I am even willing to invest some more time to get this right. So this is not necessarily a showstopper.</p>
<p>There is no support for <strong>case insensitive search</strong>. This means that I would have to store a lowercase version of whatever I need to search for, together with the version containing the correct spelling.</p>
<p>There is also no way for doing <strong>full text searches</strong> on the storage. There is a workaround for StartsWith() but none for EndsWith() or Contains(). And I’m not talking about not being able to do that efficiently. I’m talking about not being able to do that. Because the LINQ provider just doesn’t support these kinds of queries. And no, doing that on the client side is not always an option.</p>
<p>So MS, please, don’t tell me that Table Storage is missing all those features by design and that it was always intended to be only a very simple way of storing data. Just don’t. Give it a few more features and make it a powerful No-SQL storage. I’m not asking for making it support all the relational stuff like cascading deletes and the like. I understand that it is non-relational. But don’t stop on half the way. Continue, quickly.</p>
<h2>Hosting</h2>
<p>Yes I know this one is probably just for devs trying to grok the way Azure works or maybe small startups, but still … <strong>hosting a small service on Azure</strong> is <a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/9ed63b5f-09fa-40fd-8adb-462c4057901f">just too expensive</a>. As already mentioned, this is not a problem when you put your virtual machine’s power to good use, but the pay-as-you-grow model has a flaw here – the inital price might be too high if your needs are too low. Ah yes, <a href="http://aws.amazon.com/about-aws/whats-new/2010/09/09/announcing-micro-instances-for-amazon-ec2/">Amazon has that</a>, too.</p>
<h2>Sending Emails</h2>
<p>Did I mention that Amazon has a feature called SNS? This is not sufficient for sending emails to your customers, but it is perfectly acceptable for anything else, including email messaging in case of failure etc. There are <a href="http://blogs.msdn.com/b/windowsazure/archive/2010/10/08/adoption-program-insights-sending-emails-from-windows-azure-part-1-of-2.aspx">solutions for that</a>, but these are merely workarounds.</p>
<h2>Caching</h2>
<p>While I am happy that there are projects like <a href="http://cloudcache.codeplex.com/">CloudCache</a> that are based on <a href="http://memcached.org/">Memcached</a>, I really hope that support for <strong>Velocity a.k.a. AppFabric Cache</strong> is coming soon. And by soon I do not mean PDC 2011. If there is no announcement (with specific date) at PDC 2010, I will go with Memcached.</p>
<h2 align="left">Fixed IPs</h2>
<p align="left">IPs <a href="http://blogs.msdn.com/b/simondavies/archive/2010/03/01/how-does-ip-address-allocation-work-for-compute-services-in-windows-azure.aspx">seem to remain fixed over the lifetime of a deployment</a>. While this may be true, there is no official statement from Microsoft saying that this behavior is supported. To some, that might seem fair enough since you don’t have to bother about that anyway, right? Well, say you’d have to communicate with some other service that requires your IP to be whitelisted. Not your domain but your IP. Then assume that it will take some time to get another whitelist entry in case something happens to your first IP. You could try to get a ‘backup IP’ whitelisted parallel to your real IP, but this would require another deployment to run on a different production slot, so this is also a clumsy workaround.</p>
<p align="left">And Amazon has the <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1346">concept of</a> – ah, never mind.</p>
<h2>Documentation</h2>
<p>Honestly. This is just too hard. Its not surprising the Azure community keeps on providing link lists and compilations of Azure resources. Information is scattered, insufficient and sometimes out-dated.</p>
<p>And I’m getting tired of saying this, but compared to Microsoft’s approach, Amazon’s is really centralized. You find a long list of documentation for every feature AWS offers on the starting page for that feature and from there on, you can follow links to complementary information.</p>
<p>There is a monthly AWS newsletter saying “we are happy to announce”. Well, I am happy if there is ANY way for me to figure out what Microsoft is up to in the next few months with regard to Azure. Why is communication so bad on this topic?</p>
<p>Last time I checked, the <a href="http://www.mygreatwindowsazureidea.com/">official voting forum for Windows Azure Feature Requests</a> lists 8 completed requests and 1 accepted request (secondary indexes for Table Storage). Even then, there has been no further information on secondary indexes since like 11 months. No, let me check that again, this can’t be true … aargg, it is true. There are a lot of other very important requests but none of them made it to ‘accepted’. Does this mean the Azure team is not currently working on any of these feature requests? I hope not! Really, I hope not.</p>
<p>I would like to see that Microsoft uses this platform (or any other means, just DO it) to communicate upcoming changes to developers and decision makers. That way, everybody would be able to plan ahead and be less frustrated. Developers like me would have a central way of being kept in the loop and appreciate new features instead of being angry for not being told.</p>
<p>Only they don’t. So they won’t. So they are not. And we haven’t. So I am not (at least to a certain degree).</p>
<p>And I definitely believe it is not a good idea for MS to keep roadmaps and timelines as secret as possible, wait a whole year until next PDC and only then make information about all that publicly available. That being said, I really hope there will be some interesting announcements at PDC 2010. I need certain new features to make it easier for me to get customers adopt Azure. Otherwise they will rather go with Amazon.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=132&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2010/10/24/things-i-believe-windows-azure-is-missing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Just &#8230; get &#8230; rid of it!</title>
		<link>http://skylore.wordpress.com/2010/09/17/just-get-rid-of-it/</link>
		<comments>http://skylore.wordpress.com/2010/09/17/just-get-rid-of-it/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 17:08:30 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[SQL Server 2008 R2 November CTP]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2010/09/17/just-get-rid-of-it/</guid>
		<description><![CDATA[Oh dear. I just had an 2 hour adventure trying to install SQL Server 2008 R2 Express. This is a rough outline: Downloaded the installer from here and executed it This failed with a well-known error which I discovered just after step 3 So I tried to uninstall SQL Server 2008 R2 November CTP because [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=128&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oh dear. I just had an 2 hour adventure trying to install SQL Server 2008 R2 Express. This is a rough outline:</p>
<ol>
<li>Downloaded the installer <a href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx">from here</a> and executed it</li>
<li>This failed with a <a href="http://social.msdn.microsoft.com/Forums/en/sqlexpress/thread/befb3f11-26a4-4eb9-8170-36cc097636ec">well-known error</a> which I discovered just after step 3</li>
<li>So I tried to uninstall SQL Server 2008 R2 November CTP because I thought these errors were related</li>
<li>This is when I discovered that trying to do this via Add/Remove programs is pretty useless, these installers are getting in each other’s way because they all fail to uninstall dependent objects and these very objects just won’t show up in Add/Remove</li>
<li>But then I found <a href="http://blogs.msdn.com/b/astebner/archive/2005/10/30/487096.aspx">this post</a> that said I had to run a tool <a href="http://blogs.msdn.com/b/astebner/archive/2005/07/01/434814.aspx">mentioned here</a> to get a list of installed software I could search for product ids and get rid of them using <a href="http://cid-27e6a35d1a492af7.skydrive.live.com/self.aspx/Blog%7C_Tools/smartmsizap.zip">this smart uninstaller</a></li>
<li>I was then able to use the Web Platform Installer to get SQL Server Express and Management Studio installed.</li>
</ol>
<p>I wrote this post to thank Aaron Stebner for his blog posts and tools, to thank the guys responsible for the Web Platform installer for being the only reliable way to install anything that has ‘SQL Server’ in it and to blame the guys from SQL Server because of the same reason.</p>
<p>Why, oh why does it always have to be this way with SQL Server, I NEVER experience NO trouble.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=128&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2010/09/17/just-get-rid-of-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
		<item>
		<title>Azure Tools and Resources</title>
		<link>http://skylore.wordpress.com/2010/08/06/azure-tools-and-resources/</link>
		<comments>http://skylore.wordpress.com/2010/08/06/azure-tools-and-resources/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 15:39:27 +0000</pubDate>
		<dc:creator>Jonas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Azure Storage Services]]></category>
		<category><![CDATA[SQL Azure]]></category>

		<guid isPermaLink="false">https://skylore.wordpress.com/2010/08/06/azure-tools-and-resources/</guid>
		<description><![CDATA[Some time ago, someone requested sort of an overview of Azure features and resources. I thought this was a rather useful idea since I keep forgetting links to even the most commonly used Azure sites. This is not meant to be an introduction to Windows Azure or Cloud Computing in general but rather a opinionated [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=125&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some time ago, someone requested sort of an overview of Azure features and resources. I thought this was a rather useful idea since I keep forgetting links to even the most commonly used Azure sites. This is not meant to be an introduction to Windows Azure or Cloud Computing in general but rather a opinionated collection of otherwise scattered resources.</p>
<h3><a href="http://www.microsoft.com/windowsazure/whitepapers/">Whitepapers</a></h3>
<p>Whitepapers are also some sort of resources, but I thought I’d give them some extra attention here instead of just adding them to the resources link list, otherwise no one including me would know what’s inside them.</p>
<h4>Implementation Whitepapers</h4>
<ul>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=153400">Programming Blob Storage</a> Describes the Blob Storage hierarchy, how to work with blobs, use pagination and handle errors.</li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=153401">Programming Table Storage</a> Learn the basics about Partition Keys, CRUD operations on Entities via LINQ, supported data types, Best Practices and Known Issues. This will also give you an idea about the difference between Relational Databases and the Table Storage Model.</li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=153402">Programming Queue Storage</a> This is about connecting and sharing information between different application blocks in a loosely coupled way a.k.a. “the way it’s meant to be”. This is done by pushing messages (processing orders) into a queue and let some other part of the application deal with it.</li>
<li>SQL Azure<br />
The best way to get started with SQL Azure is probably to already have a basic understanding of SQL Server 2008. If you want to build your tables from scratch, you might want to know about the <a href="http://go.microsoft.com/?linkid=9692818">similarities and differences</a> between SQL Server and SQL Azure. Due to the lack of designer support on SQL Azure (you can use SSMS to get access to your SQL Azure databases, but you can only manipulate table structures by scripts) I prefer to create and test tables on my local dev machine, then use the <a href="http://sqlazuremw.codeplex.com/">SQL Azure Migration Wizard</a> to create these tables on my SQL Azure database.</li>
<li>Project Houston can do what SSMS doesn’t do for you – provide design capabilities for SQL Azure. This is implemented as Silverlight Client.</li>
<li><span style="color:#ff0000;"><span style="color:#000000;">You know how Skype is able to communicate with other Skype instances running on different machines, all sitting behind firewalls? No? Well that’s exactly what</span> </span><a href="http://www.microsoft.com/windowsazure/appfabric/">AppFabric Service Bus</a> does. Its primary goal is to bridge on-premise and off-premise solutions.</li>
</ul>
<h3>Tools</h3>
<p><a href="http://azurestorageexplorer.codeplex.com/">Azure Storage Explorer</a> Have a look at and manipulate your Azure Tables, Blobs and Queues.</p>
<p><a href="http://sqlazuremw.codeplex.com/">SQL Azure Migration Wizard</a> Set up a local database and load it into your SQL Azure database. Or the other way round: Back up your SQL Azure to a local machine. Or to another SQL Azure instance if you feel like it.</p>
<p><a href="http://code.msdn.microsoft.com/AzureManagementTools">Azure Services Management Tools</a> Manage Azure Services such as .NET Access Control Services and the .NET Workflow Service.<em> Please note that these tools are out of date as of 06.08.2010</em></p>
<p><a href="http://code.msdn.microsoft.com/azurecmdlets">Windows Azure Service Management CmdLets</a> Use PowerShell to script your deployments, upgrades, and scaling of Windows Azure Applications</p>
<h3>Resources</h3>
<ul>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=153400">Pricing Overview</a></li>
<li><a href="http://msdn.microsoft.com/en-us/subscriptions/ee461076.aspx">MSDN Subscription Benefits</a></li>
<li><a href="https://mocp.microsoftonline.com/site/default.aspx">Microsoft Online Customer Portal</a></li>
</ul>
<p>Videos, Frameworks?</p>
<ul>
<li><a title="http://blogs.msdn.com/jnak/archive/2010/03/18/videos-of-the-windows-azure-sessions-at-mix10.aspx" href="http://blogs.msdn.com/jnak/archive/2010/03/18/videos-of-the-windows-azure-sessions-at-mix10.aspx">Videos of the Windows Azure Sessions at MIX10</a></li>
<li><a href="http://msdn.microsoft.com/en-us/azure/dd439432.aspx">&#8220;How Do I?&#8221; Videos for Windows Azure Platform</a></li>
<li><a href="http://channel9.msdn.com/posts/dunnry/Windows-Azure-Storage-Overview/">Windows Azure Storage Videos</a></li>
</ul>
<p>As of 06.08.2010, the Windows Azure Storage Videos are offline but should have been replaced by 15.02.2010. Right. Maybe it’s a typo.</p>
<h3>English Blogs</h3>
<ul>
<li><a href="http://blog.smarx.com/">Blog of Steve Marx (Windows Azure Team Member)</a></li>
<li><a href="http://blogs.msdn.com/b/windowsazure/">Windows Azure Blogs</a></li>
</ul>
<h3>German blogs</h3>
<ul>
<li><a href="http://blogs.msdn.com/b/hsirtl/">Holger Sirtl</a>
<ul>
<li><a href="http://blogs.msdn.com/hsirtl/archive/2010/01/14/aktualisierungen-in-azure-version-1-0-teil-1-6-allgemeine-nderungen-der-windows-azure-platform.aspx">Änderungen an der Windows Azure Platform seit CTP</a></li>
</ul>
</li>
<li><a href="http://www.codefest.at/post/2009/12/03/Announcing-e28093-Cloud-Computing-e28093-Windows-Azure-Tutorial-Serie.aspx">Windows Azure Tutorial Serie</a></li>
</ul>
<h3>Some other resources</h3>
<ul>
<li><a href="http://code.msdn.microsoft.com/windowsazuresamples">Windows Azure Code Samples</a></li>
<li><a href="http://www.microsoft.com/windowsazure/faq/">Windows Azure FAQs</a></li>
</ul>
<p><strong>[Update]</strong> I believe <a href="http://netindonesia.net/blogs/wely/archive/2010/10/01/complete-list-of-windows-azure-platform-online-learning-resources.aspx">this</a> to be a quite comprehensive list of Windows Azure resources</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skylore.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skylore.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skylore.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skylore.wordpress.com&amp;blog=7888888&amp;post=125&amp;subd=skylore&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skylore.wordpress.com/2010/08/06/azure-tools-and-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7ef01552440c45a30f01f70a1f04aa57?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">masterfu</media:title>
		</media:content>
	</item>
	</channel>
</rss>
