<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Robert MacLean</title><link>http://www.sadev.co.za</link><description></description><language>en</language><feedburner:info uri="sadev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>-26.0822</geo:lat><geo:long>27.9923</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.5/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://www.sadev.co.za/rss.xml" /><feedburner:emailServiceId>Sadev</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://www.sadev.co.za/rss.xml" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fwww.sadev.co.za%2Frss.xml" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>.NET 4.5 Baby Steps, Part 7: Regular Expression Timeouts</title><link>http://feedproxy.google.com/~r/Sadev/~3/zcgp7Dd9-H0/net-45-baby-steps-part-7-regular-expression-timeouts</link><category>.NET</category><category>Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 09 May 2012 04:02:12 PDT</pubDate><guid isPermaLink="false">718 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;While the regular expression passing in .NET is damn fast, there are times where it can take too long for your needs. Until now there hasn’t been much you can do but wait. In .NET 4.5 we get the ability to timeout regular expressions if they took too long.&lt;/p&gt; &lt;h1&gt;Problem&lt;/h1&gt; &lt;p&gt;So lets look at a really silly example to start off with, checking a string fifty million characters (where only one is different) against regular expression which is looking for fifty million letters. As I said it is silly, but to get a truly slow reg ex is pretty hard.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static Regex match = new Regex(@"\w{50000000}", RegexOptions.None);
static void Main(string[] args)
{
    var sw = Stopwatch.StartNew();
    Console.WriteLine(match.IsMatch(String.Empty.PadRight(49999999, 'a') + "!"));
    sw.Stop();
    Console.WriteLine(sw.Elapsed);
    Console.ReadLine();
}
&lt;/pre&gt;
&lt;p&gt;This 13.5secs on my machine!&lt;/p&gt;
&lt;h1&gt;Solution&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_246.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" align="right" src="http://www.sadev.co.za/files/image_thumb_268.png" width="275" height="216" /&gt;&lt;/a&gt;All we need to do to take advantage of the new timeouts is modify the constructor of the Regex, by adding a third parameter.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static Regex match = new Regex(@"\w{50 000 000}", RegexOptions.None, TimeSpan.FromSeconds(5));
&lt;/pre&gt;
&lt;p&gt;Now after five seconds a RegexMatchTimeoutException is raised.&lt;/p&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/RegEx timeout demo.zip"&gt;RegEx timeout demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;32.73 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zcgp7Dd9-H0:IBMhtygME-k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zcgp7Dd9-H0:IBMhtygME-k:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zcgp7Dd9-H0:IBMhtygME-k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zcgp7Dd9-H0:IBMhtygME-k:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/zcgp7Dd9-H0" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/RegEx timeout demo.zip" length="33513" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-7-regular-expression-timeouts</feedburner:origLink></item><item><title>.NET 4.5 Baby Steps, Part 5: Some more interesting blocks</title><link>http://feedproxy.google.com/~r/Sadev/~3/ZUW4Q35-eNM/net-45-baby-steps-part-5-some-more-interesting-blocks</link><category>.NET</category><category>Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 09 May 2012 02:34:47 PDT</pubDate><guid isPermaLink="false">717 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;  &lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;We have seen the IDataFlowBlock, in three different implementations and now we will look at a few more.&lt;/p&gt; &lt;h1&gt;BroadcastBlock&amp;lt;T&amp;gt;&lt;/h1&gt; &lt;p&gt;In the BatchBlock we saw that if you had multiple subscribers, messages are delivered to subscribers in a round robin way, but what about if you want to send the same message to all providers? The solution is the BoardcastBlock&amp;lt;T&amp;gt;.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static BroadcastBlock&amp;lt;string&amp;gt; pubSub = new BroadcastBlock&amp;lt;string&amp;gt;(s =&amp;gt;
    {
        return s + " relayed from publisher";
    });

static async void Process()
{
    var message = await pubSub.ReceiveAsync();
    Console.WriteLine(message);
}

static void Main(string[] args)
{
    // setup 5 subscribers
    for (int i = 0; i &amp;lt; 5; i++)
    {
        Process();
    }

    pubSub.Post(DateTime.Now.ToLongTimeString());

    Console.ReadLine();
}
&lt;/pre&gt;
&lt;a href="http://www.sadev.co.za/files/CropperCapture1_4.gif"&gt;&lt;img title="CropperCapture[1]" style="display: inline" alt="CropperCapture[1]" src="http://www.sadev.co.za/files/CropperCapture1_thumb_4.gif" width="177" height="240" /&gt;&lt;/a&gt;
&lt;h1&gt;TransformBlock&amp;lt;TInput,TOutput&amp;gt;&lt;/h1&gt;
&lt;p&gt;The next interesting block is the transform block which works similar to the action block, except that the input and output can be different types and so we can transform the data internally.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static TransformBlock&amp;lt;int, string&amp;gt; pubSub = new TransformBlock&amp;lt;int, string&amp;gt;(i =&amp;gt;
    {
        return string.Format("we got: {0}", i);
    });

static async void Process()
{
    while (true)
    {
        var message = await pubSub.ReceiveAsync();
        Console.WriteLine(message);
    }
}

static void Main(string[] args)
{
    Process();
     
    for (int i = 0; i &amp;lt; 10; i++)
    {            
        pubSub.Post(i);
        Thread.Sleep(1000);
    }

    Console.ReadLine();
}
&lt;/pre&gt;
&lt;a href="http://www.sadev.co.za/files/CropperCapture1_5.gif"&gt;&lt;img title="CropperCapture[1]" style="display: inline" alt="CropperCapture[1]" src="http://www.sadev.co.za/files/CropperCapture1_thumb_5.gif" width="177" height="240" /&gt;&lt;/a&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/Broadcast Block Demo_1.zip"&gt;Broadcast Block Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;36.31 KB&lt;/td&gt; &lt;/tr&gt;
 &lt;tr class="even"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/Transform Block Demo_1.zip"&gt;Transform Block Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.9 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZUW4Q35-eNM:_zV1hVcDdIo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZUW4Q35-eNM:_zV1hVcDdIo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZUW4Q35-eNM:_zV1hVcDdIo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZUW4Q35-eNM:_zV1hVcDdIo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/ZUW4Q35-eNM" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/Broadcast Block Demo_1.zip" length="37182" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-5-some-more-interesting-blocks</feedburner:origLink></item><item><title>.NET 4.5 Baby Steps, Part 4: BatchedBlocks</title><link>http://feedproxy.google.com/~r/Sadev/~3/0cqm_wIda_s/net-45-baby-steps-part-4-batchedblocks</link><category>.NET</category><category>Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 09 May 2012 01:53:36 PDT</pubDate><guid isPermaLink="false">715 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;We previously looked at the IDataFlowBlock interface in it’s simplest implementation ActionBlock&amp;lt;TInput&amp;gt;, today though we are going to look at more complex implementations that give amazing powers.&lt;/p&gt; &lt;h1&gt;BatchBlock&amp;lt;T&amp;gt;&lt;/h1&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture1_1.gif"&gt;&lt;img title="CropperCapture[1]" style="float: right; display: inline" alt="CropperCapture[1]" align="right" src="http://www.sadev.co.za/files/CropperCapture1_thumb_1.gif" width="191" height="440" /&gt;&lt;/a&gt;Where ActionBlock&amp;lt;TInput&amp;gt; could only be a subscriber, BatchBlock&amp;lt;T&amp;gt; is more than that – it can be a subscriber and a publisher rolled into one! As such the usage is rather different, we do not pass in the receive method in the constructor. Rather we call the Receive method to get the latest messages past to the subscriber. &lt;/p&gt; &lt;p&gt;The interesting thing about BatchBlock is it batches up messages into groups, so rather than getting each message one at a time, you get groups of messages. As such, you could wait a long time for enough the messages to arrive, so thankfully they also include a ReceiveAsync which works with C# new async methods. &lt;/p&gt; &lt;p&gt;In the sample below you can see how I create a BatchBlock with a batch size of 3, so messages get processed in groups of three. This also means the last two messages (since we are sending 20) are never processed.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static BatchBlock&amp;lt;string&amp;gt; pubSub = new BatchBlock&amp;lt;string&amp;gt;(3);
static int counter = 0;

static async void Process()
{
    while (true)
    {
        var messages = await pubSub.ReceiveAsync();
        foreach (var item in messages)
        {
            counter++;
            Console.WriteLine("Got message number {0}: {1}", counter, item);
        }
    }
}

static void Main(string[] args)
{
    Process();

    for (int i = 0; i &amp;lt; 20; i++)
    {
        Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            pubSub.Post(DateTime.Now.ToLongTimeString());
        });
    }

    Console.ReadLine();
}
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;BatchedJoinBlock&amp;lt;T1,T2&amp;gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture1_2.gif"&gt;&lt;img title="CropperCapture[1]" style="float: right; display: inline" alt="CropperCapture[1]" align="right" src="http://www.sadev.co.za/files/CropperCapture1_thumb_2.gif" width="225" height="518" /&gt;&lt;/a&gt;The second block implementation we look at is the BatchedJoinBlock&amp;lt;T1,T2&amp;gt; which is similar to BatchBlock&amp;lt;T&amp;gt; except, that it has multiple type inputs. This allows you to have a single publisher that can send messages to different subscribers based on type! The batching works the same as before, but be careful as batch sizes are based on all messages regardless of types.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static BatchedJoinBlock&amp;lt;string, int&amp;gt; pubSub = new BatchedJoinBlock&amp;lt;string, int&amp;gt;(3);
static int stringCounter = 0;
static int intCounter = 0;

static async void Process()
{
    while (true)
    {
        var messages = await pubSub.ReceiveAsync();
        foreach (var item in messages.Item1)
        {
            stringCounter++;
            Console.WriteLine("Got STRING message number {0}: {1}", stringCounter, item);
        }

        foreach (var item in messages.Item2)
        {
            intCounter++;
            Console.WriteLine("Got INT message number {0}: {1}", intCounter, item);
        }
    }
}

static void Main(string[] args)
{
    Process();

    for (int i = 0; i &amp;lt; 20; i++)
    {
        Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            pubSub.Target1.SendAsync(DateTime.Now.ToLongTimeString());
        });

        Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            pubSub.Target2.SendAsync(new Random().Next(1, 99));
        });
    }

    Console.ReadLine();
}
&lt;/pre&gt;
&lt;h1&gt;Multiple Subscribers&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture2_1.gif"&gt;&lt;img title="CropperCapture[2]" style="float: right; display: inline" alt="CropperCapture[2]" align="right" src="http://www.sadev.co.za/files/CropperCapture2_thumb_1.gif" width="205" height="278" /&gt;&lt;/a&gt;So what happens when you add multiple subscribers to the system? It handles each processing in a round robin like way. The sample below is the same as the BatchBlock&amp;lt;T&amp;gt; about, but&amp;nbsp; has three subscribers (A, B &amp;amp; C) and a batch size of two.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static BatchBlock&amp;lt;string&amp;gt; pubSub = new BatchBlock&amp;lt;string&amp;gt;(2);
static int counter = 0;

static async void Process(string id)
{
    while (true)
    {
        var messages = await pubSub.ReceiveAsync();
        foreach (var item in messages)
        {
            counter++;
            Console.WriteLine("{2} - Got message number {0}: {1}", counter, item, id);
        }
    }
}

static void Main(string[] args)
{
    Process("A");
    Process("B");
    Process("C");

    for (int i = 0; i &amp;lt; 11; i++)
    {
        Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            pubSub.Post(DateTime.Now.ToLongTimeString());
        });
    }

    Console.ReadLine();
}
&lt;/pre&gt;&lt;pre class="brush: csharp;"&gt;&lt;/pre&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/BatchBlock Demo_1.zip"&gt;BatchBlock Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.53 KB&lt;/td&gt; &lt;/tr&gt;
 &lt;tr class="even"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/BatchJoinBlock_0.zip"&gt;BatchJoinBlock Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.88 KB&lt;/td&gt; &lt;/tr&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/BatchedBlock Multiple Subscribers.zip"&gt;BatchedBlock Multiple Subscribers Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.82 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=0cqm_wIda_s:xw9S1fhApic:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=0cqm_wIda_s:xw9S1fhApic:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=0cqm_wIda_s:xw9S1fhApic:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=0cqm_wIda_s:xw9S1fhApic:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/0cqm_wIda_s" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/BatchBlock Demo_1.zip" length="7710" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-4-batchedblocks</feedburner:origLink></item><item><title>.NET 4.5 Baby Steps, Part 3: IDataFlowBlock</title><link>http://feedproxy.google.com/~r/Sadev/~3/WO8TKjXvQ-M/net-45-baby-steps-part-3-idataflowblock</link><category>.NET</category><category>ALM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 08 May 2012 06:20:23 PDT</pubDate><guid isPermaLink="false">713 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;
&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;A new interface in .NET is the IDataFlowBlock, which is implemented in many interesting ways, so to look at those we will start off with the simplest implementation. &lt;a href="http://msdn.microsoft.com/en-us/library/hh194684(v=vs.110).aspx" target="_blank"&gt;ActionBlock&amp;lt;TInput&amp;gt;&lt;/a&gt; is a completely new class in .NET 4.5 and provides a way of working with data in a very task orientated way. I simplistically think of this as the implementation of the &lt;a href="http://msdn.microsoft.com/en-us/library/dd990377.aspx" target="_blank"&gt;IObserver&lt;/a&gt; interface we got in .NET 4. but do not limit your thinking to just that. &lt;/p&gt; &lt;p&gt;To use it, you first must add a reference to &lt;em&gt;System.Threading.Tasks.DataFlow&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_245.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_267.png" width="303" height="209" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In this simple first example I am doing a fairly simple Pub/Sub demo:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var subscriber = new ActionBlock&amp;lt;string&amp;gt;(input =&amp;gt;
    {
        Console.WriteLine("Got: {0}", input);
    });

for (int i = 0; i &amp;lt; 10; i++)
{
    Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            subscriber.Post(DateTime.Now.ToLongTimeString());
        });
}

Console.ReadLine();
&lt;/pre&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture3.gif"&gt;&lt;img title="CropperCapture[3]" style="display: inline" alt="CropperCapture[3]" src="http://www.sadev.co.za/files/CropperCapture3_thumb.gif" width="240" height="222" /&gt;&lt;/a&gt; 
&lt;h1&gt;As IObserver&amp;lt;T&amp;gt;&lt;/h1&gt;
&lt;p&gt;So the first fantastic feature is that it does have the ability (via extension method) to be an IObsserver&amp;lt;T&amp;gt; so it really solves the need to build up your own subscriber classes when implementing a pub/sub model.&lt;/p&gt;
&lt;p&gt;First is the code for the publisher class – this is normal for the IObservable&amp;lt;T&amp;gt; as we had in .NET 4. This just means our new code can play well with our existing code.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;public class Publisher : IObservable&amp;lt;string&amp;gt;
{
    List&amp;lt;IObserver&amp;lt;string&amp;gt;&amp;gt; subscribers = new List&amp;lt;IObserver&amp;lt;string&amp;gt;&amp;gt;();

    public IDisposable Subscribe(IObserver&amp;lt;string&amp;gt; observer)
    {
        subscribers.Add(observer);
        return null;
    }

    public void Send()
    {
        foreach (var item in subscribers)
        {
            item.OnNext(DateTime.Now.ToLongTimeString());
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;For our demo code, which produces the same as above:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var publisher = new Publisher();

var subscriber = new ActionBlock&amp;lt;string&amp;gt;(input =&amp;gt;
    {
        Console.WriteLine("Got: {0}", input);
    });

publisher.Subscribe(subscriber.AsObserver());

for (int i = 0; i &amp;lt; 10; i++)
{
    Task.Factory.StartNew(() =&amp;gt;
        {
            Thread.Sleep(new Random().Next(200, 1000));
            publisher.Send();
        });
}
&lt;/pre&gt;
&lt;h1&gt;Complete&lt;/h1&gt;
&lt;p&gt;The next awesome feature is the Complete method which can be used to stop accepting of input when called – this is great for services where you want to shut down.&lt;/p&gt;
&lt;p&gt;In this demo code it will run until you press enter:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var subscriber = new ActionBlock&amp;lt;string&amp;gt;(input =&amp;gt;
{
    Console.WriteLine("Got: {0}", input);
});


Task.Factory.StartNew(() =&amp;gt;
{
    while (true)
    {

        Thread.Sleep(new Random().Next(200, 1000));
        subscriber.Post(DateTime.Now.ToLongTimeString());
    }
});

Console.WriteLine("Press any key to stop input");
Console.ReadLine();
subscriber.Complete();
&lt;/pre&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/ActionBlock.zip"&gt;ActionBlock&amp;lt;T&amp;gt; demos&lt;/a&gt;&lt;/td&gt;&lt;td&gt;8.36 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=WO8TKjXvQ-M:r0ifpr58_B4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=WO8TKjXvQ-M:r0ifpr58_B4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=WO8TKjXvQ-M:r0ifpr58_B4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=WO8TKjXvQ-M:r0ifpr58_B4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/WO8TKjXvQ-M" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/ActionBlock.zip" length="8564" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-3-idataflowblock</feedburner:origLink></item><item><title>.NET 4.5 Baby Steps, Part 2: Task timeout cancellation</title><link>http://feedproxy.google.com/~r/Sadev/~3/Ul3G3TW2ju0/net-45-baby-steps-part-2-task-timeout-cancellation</link><category>.NET</category><category>Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 08 May 2012 05:52:24 PDT</pubDate><guid isPermaLink="false">712 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;
&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;When Tasks where introduced in .NET 4 one of the fantastic abilities was to be able to pass in a CancellationToken and use that to cancel/break out of tasks (think like a cancel button on a file copy). &lt;/p&gt; &lt;p&gt;So in the following code we create a cancellation source and pass the token to the task and it will output the date/time until you press enter. Then we call the Cancel method and it stops.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var cancelTokenSource = new System.Threading.CancellationTokenSource();

Task.Factory.StartNew(() =&amp;gt;
{
    while (!cancelTokenSource.IsCancellationRequested)
    {                    
        Console.WriteLine(DateTime.Now.ToLongTimeString());
        Thread.Sleep(1000);
    }
}, cancelTokenSource.Token);

Console.WriteLine("Press any key to cancel");
Console.ReadLine();
cancelTokenSource.Cancel();
Console.WriteLine("Done");
Console.ReadLine();
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture1_0.gif"&gt;&lt;img title="CropperCapture[1]" style="display: inline" alt="CropperCapture[1]" src="http://www.sadev.co.za/files/CropperCapture1_thumb_0.gif" width="216" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;What is new in .NET 4.5?&lt;/h1&gt;
&lt;p&gt;.NET 4.5 adds a FANTASTIC new feature to this, the ability to cancel automatically after a set timeout! So all we need to is change the constructor and set the time out. In the demo below it is set to three seconds. &lt;/p&gt;
&lt;p&gt;It is also important to note that it is time from when you create the token source and not time from when the task starts.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;var cancelTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(3))
&lt;/pre&gt;
&lt;p&gt;Below in the screen capture, see how the word &lt;em&gt;Done&lt;/em&gt; does not appear but processing stops? That is because it is cancelled (processing stopped) but I never pressed any keys – so it is still waiting for the readline above &lt;em&gt;Done.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture2_0.gif"&gt;&lt;img title="CropperCapture[2]" style="display: inline" alt="CropperCapture[2]" src="http://www.sadev.co.za/files/CropperCapture2_thumb_0.gif" width="216" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/CancellationToken.zip"&gt;Cancellation Token Demo Code&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.75 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=Ul3G3TW2ju0:lwKxOz_iOWQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=Ul3G3TW2ju0:lwKxOz_iOWQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=Ul3G3TW2ju0:lwKxOz_iOWQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=Ul3G3TW2ju0:lwKxOz_iOWQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/Ul3G3TW2ju0" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/CancellationToken.zip" length="7939" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-2-task-timeout-cancellation</feedburner:origLink></item><item><title>.NET 4.5 Baby Steps, Part 1: ThreadLocal&lt;T&gt;</title><link>http://feedproxy.google.com/~r/Sadev/~3/UI3AZar-cNs/net-45-baby-steps-part-1-threadlocal</link><category>.NET</category><category>Development</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 08 May 2012 05:30:16 PDT</pubDate><guid isPermaLink="false">711 at http://www.sadev.co.za</guid><description>&lt;small&gt;Other posts in this series can be found on the &lt;a href="/content/net-45-baby-steps-series-index" target="_blank"&gt;Series Index Page&lt;/a&gt;&lt;/small&gt;
&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd642243.aspx" target="_blank"&gt;ThreadLocal&amp;lt;T&amp;gt;&lt;/a&gt; was introduced in .NET 4 and didn’t get much attention because it didn’t do much over the &lt;a href="http://msdn.microsoft.com/en-us/library/system.threadstaticattribute.aspx" target="_blank"&gt;ThreadStaticAttribute&lt;/a&gt; which we have had since version 1 of the framework, so let’s just review what it does. In short it gives every unique thread that uses it, it’s own global field. Let’s look at this code:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static ThreadLocal&amp;lt;int&amp;gt; balances = new ThreadLocal&amp;lt;int&amp;gt;(() =&amp;gt;
    {                
        return 10;
    });

static void Main(string[] args)
{
    for (int i = 0; i &amp;lt; 10; i++)
    {
        new Thread(AddMoney).Start();
    }

    Console.ReadLine();
}

static void AddMoney()
{
    Console.WriteLine("Before {0}", balances.Value);
    balances.Value += new Random().Next(0, 1000);
    Console.WriteLine("After {0}", balances.Value);
}
&lt;/pre&gt;
&lt;p&gt;Which produces:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture1.gif"&gt;&lt;img title="CropperCapture[1]" style="display: inline" alt="CropperCapture[1]" src="http://www.sadev.co.za/files/CropperCapture1_thumb.gif" width="186" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note that ever Before is set to 10 and that is because the lambda method that we pass to the ThreadLocal&amp;lt;T&amp;gt; constructor is run for each unique thread.&lt;/p&gt;
&lt;h1&gt;What’s new in .NET 4.5?&lt;/h1&gt;
&lt;p&gt;.NET 4.5 improves the usefulness of this by including the .Values parameter which allows you to list the results from each thread! To make use of this you need to opt-in in the constructor by adding true:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;static ThreadLocal&amp;lt;int&amp;gt; balances = new ThreadLocal&amp;lt;int&amp;gt;(() =&amp;gt;
{
    return 10;
}, true);
&lt;/pre&gt;And then in my demo I will output the results using: &lt;pre class="brush: csharp;"&gt;foreach (var item in balances.Values)
{
    Console.WriteLine("Balance at end: {0}", item);
}

&lt;/pre&gt;&lt;a href="http://www.sadev.co.za/files/CropperCapture2.gif"&gt;&lt;img title="CropperCapture[2]" style="display: inline" alt="CropperCapture[2]" src="http://www.sadev.co.za/files/CropperCapture2_thumb.gif" width="202" height="475" /&gt;&lt;/a&gt; 
&lt;p&gt;This is VERY useful when working with threads and doing individual calculations and then collating the results at the end!&lt;/p&gt;
&lt;h1&gt;Warning&lt;/h1&gt;
&lt;p&gt;ThreadLocal&amp;lt;T&amp;gt; only works with unique threads! So using with the TPL or ThreadPool which reuse threads will not work as expected!&lt;/p&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/Demo.zip"&gt;Complete Demo Code&lt;/a&gt;&lt;/td&gt;&lt;td&gt;7.62 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=UI3AZar-cNs:VmArP-1jvVM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=UI3AZar-cNs:VmArP-1jvVM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=UI3AZar-cNs:VmArP-1jvVM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=UI3AZar-cNs:VmArP-1jvVM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/UI3AZar-cNs" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/Demo.zip" length="7802" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/net-45-baby-steps-part-1-threadlocal</feedburner:origLink></item><item><title>JSinSA 2012</title><link>http://feedproxy.google.com/~r/Sadev/~3/PX6XlMifpcQ/jsinsa-2012</link><category>ALM</category><category>Development</category><category>Events</category><category>Internet Explorer</category><category>Microsoft</category><category>Presentations, Posters &amp; Cheat Sheets</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Mon, 07 May 2012 04:14:23 PDT</pubDate><guid isPermaLink="false">710 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/jsinsa.png"&gt;&lt;img title="jsinsa" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="jsinsa" src="http://www.sadev.co.za/files/jsinsa_thumb.png" width="163" height="60" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/AsHoIrXCEAA2s1Y.jpg"&gt;&lt;img title="AsHoIrXCEAA2s1Y" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="AsHoIrXCEAA2s1Y" align="right" src="http://www.sadev.co.za/files/AsHoIrXCEAA2s1Y_thumb.jpg" width="288" height="216" /&gt;&lt;/a&gt;This past weekend was the ever fantastic JavaScript in South Africa (JSinSA) conference. This year focus was on HTML 5, JavaScript &amp;amp; CSS 3 – easily some of the MOST important topics for developers regardless of platform to know about.&lt;/p&gt; &lt;p&gt;It was it’s second year and while I was very lucky to go to it as an attendee in the first year, this year I was even more lucky to be a presenter at the conference. I was also very lucky to present on a topic I am passionate about: Windows 8. &lt;/p&gt; &lt;p&gt;The talk provided an introduction to Windows 8 &amp;amp; how development works, and in the 45mins I was done, we built an application which could take a photo from a web cam and &lt;a href="https://twitter.com/#!/rmaclean/status/198695094352744448/" target="_blank"&gt;send it to Twitter&lt;/a&gt; (the actual photo is to the right).&lt;/p&gt; &lt;p&gt;You can get the slides and bits from the talk below.&lt;/p&gt;
&lt;!--break--&gt;
&lt;div id="__ss_12808933" style="width: 425px"&gt;&lt;iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/12808933" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/script.docx"&gt;Demo Script&lt;/a&gt;&lt;/td&gt;&lt;td&gt;18.56 KB&lt;/td&gt; &lt;/tr&gt;
 &lt;tr class="even"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/working demo.zip"&gt;Completed Demo&lt;/a&gt;&lt;/td&gt;&lt;td&gt;660.07 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PX6XlMifpcQ:iWXwVpuMylU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PX6XlMifpcQ:iWXwVpuMylU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PX6XlMifpcQ:iWXwVpuMylU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PX6XlMifpcQ:iWXwVpuMylU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/PX6XlMifpcQ" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/script.docx" length="19006" type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /><feedburner:origLink>http://www.sadev.co.za/content/jsinsa-2012</feedburner:origLink></item><item><title>South African Postal Codes for Windows Phone</title><link>http://feedproxy.google.com/~r/Sadev/~3/v_H_difGQvg/south-african-postal-codes-windows-phone</link><category>.NET</category><category>Development</category><category>Tools &amp; Apps</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Mon, 16 Apr 2012 21:34:38 PDT</pubDate><guid isPermaLink="false">709 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/1_1.png"&gt;&lt;img title="1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="1" align="right" src="http://www.sadev.co.za/files/1_thumb_0.png" width="184" height="305" /&gt;&lt;/a&gt;I can NEVER EVER remember the postal code for where I work or where I live – that little four digit number just eludes my brain. So to solve that I thought, why can’t I have EVERY postal code with me always? So that is what I made happen with this simple Windows Phone application: Postal codes!&lt;/p&gt; &lt;p&gt;It is dog simple: one input the name of what you want then hit search and boom results. It includes both street and box codes &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_36.png" /&gt;&lt;/p&gt; &lt;p&gt;For the developers out there, this application source code is available too at: &lt;a href="https://bitbucket.org/rmaclean/postal-codes"&gt;https://bitbucket.org/rmaclean/postal-codes&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://windowsphone.com/s?appid=0df231a2-eae0-41d5-9df8-0224394e9632" target="_blank"&gt;&lt;img src="http://www.sadev.co.za/files/Windows-Phone-7-Download-Button_0.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=v_H_difGQvg:8PNF8zsH_CE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=v_H_difGQvg:8PNF8zsH_CE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=v_H_difGQvg:8PNF8zsH_CE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=v_H_difGQvg:8PNF8zsH_CE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/v_H_difGQvg" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/south-african-postal-codes-windows-phone</feedburner:origLink></item><item><title>Windows 8 for the .NET developer</title><link>http://feedproxy.google.com/~r/Sadev/~3/V-87ccixT_4/windows-8-net-developer</link><category>.NET</category><category>ALM</category><category>Development</category><category>Presentations, Posters &amp; Cheat Sheets</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 11 Apr 2012 00:55:41 PDT</pubDate><guid isPermaLink="false">708 at http://www.sadev.co.za</guid><description>&lt;p&gt;Last night I presented on Windows 8 for the .NET developer at the fantastic Developer User Group! We had a bumper crowd there which was great and really had some interesting discussions during and after the talk. Thank you to all that attended!&lt;/p&gt; &lt;p&gt;For those looking for the slides, demo script and demo bits they are below!&lt;/p&gt; &lt;div id="__ss_12496507" style="width: 425px"&gt;&lt;object id="__sse12496507" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=win8-120411024421-phpapp01&amp;amp;stripped_title=windows-8-for-the-net-developer&amp;amp;userName=rmaclean" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;embed name="__sse12496507" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=win8-120411024421-phpapp01&amp;amp;stripped_title=windows-8-for-the-net-developer&amp;amp;userName=rmaclean" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/CommunityNight.zip"&gt;Completed Demo Files&lt;/a&gt;&lt;/td&gt;&lt;td&gt;54.29 KB&lt;/td&gt; &lt;/tr&gt;
 &lt;tr class="even"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/Demo.docx"&gt;Demo script&lt;/a&gt;&lt;/td&gt;&lt;td&gt;16.71 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=V-87ccixT_4:jtv6uwt4j3U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=V-87ccixT_4:jtv6uwt4j3U:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=V-87ccixT_4:jtv6uwt4j3U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=V-87ccixT_4:jtv6uwt4j3U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/V-87ccixT_4" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/CommunityNight.zip" length="55592" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/windows-8-net-developer</feedburner:origLink></item><item><title>Why the harder you work to prove to Microsoft you know better, the less chance it will ever happen</title><link>http://feedproxy.google.com/~r/Sadev/~3/gvDpVZzRxhA/why-harder-you-work-prove-microsoft-you-know-better-less-chance-it-will-ever-happen</link><category>ALM Rangers</category><category>Annoyances</category><category>Development</category><category>Microsoft</category><category>Something Different</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 04 Apr 2012 07:12:43 PDT</pubDate><guid isPermaLink="false">707 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I do not work for Microsoft and these are my views based on discussions with multiple people at Microsoft which I have stitched together – maybe I misunderstood everyone and this is all wrong too. All examples I use are my own. I am no lawyer – check with a lawyer for legal &amp;amp; license advice. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; Microsoft is really worried about being sued and thus is risk adverse to “stuff from the internet”. It is better to tell Microsoft what you dislike, not how to fix it. Learn about licensing content.&lt;/p&gt; &lt;h1&gt;Paper Work&lt;/h1&gt; &lt;p&gt;A few years ago I went on an &lt;a href="http://www.sadev.co.za/content/rangers-sabbatical-series-index" target="_blank"&gt;amazing trip&lt;/a&gt; to work with Microsoft but before I could do that I needed to sign not only a NDA, but also waivers for the work I would do – which makes sense. I did it for free and Microsoft didn’t want me to sue them for money later for my work. Not only that I had to sign them, &lt;a href="http://www.bbd.co.za" target="_blank"&gt;my employer&lt;/a&gt; had to do the exact same thing. Once again because I work for someone else who could claim money from Microsoft and Microsoft lawyers had deemed that a risk and needed to be protected.&lt;/p&gt; &lt;p&gt;This involved a lot of time and money, it is VERY expensive to have lawyers review documents from other lawyers and the DHL the originals half way round the world, but it is far cheaper than being sued. &lt;/p&gt; &lt;p&gt;I know that neither myself of BBD would sue Microsoft for the work I did, but that doesn’t still the hearts of those lawyers who live in a world of ugly mean liars that will cheat the system if it was easy and good. I wish it wasn’t this way but some wishes don’t happen.&lt;/p&gt; &lt;h1&gt;The Users Voice&lt;/h1&gt; &lt;p&gt;A while back Microsoft started spinning up loads of &lt;a href="http://www.uservoice.com" target="_blank"&gt;uservoice.com&lt;/a&gt; (UV) sites to collect feedback and I believe they are successful in getting some things changed. There is an odd issue I see on UV especially with how Microsoft deals with it, that being as technology advanced users &amp;amp; developers we are taught to give the most detail as possible – really there is nothing like too much detail… however in UV, it seems that Microsoft ignores them and favours those who do and give very little. A great example of this, is in Visual Studio land where we can compare the current top two ideas: this short idea which is “under review”&lt;/p&gt; &lt;p&gt;&lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2623017-add-some-color-to-visual-studio-11-beta"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_243.png" width="303" height="119" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;versus to this guy who has pages of details and even as taking the design and proving a lot of it could work – for all his hard work, nothing.&lt;/p&gt; &lt;p&gt;&lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2623659-go-all-in-with-a-zune-style-metro-ui-see-my-makeo"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_244.png" width="303" height="212" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;WTF?! Microsoft doesn’t listen to me&lt;/h1&gt; &lt;p&gt;If you read both suggestions they seem to say the same thing except the lazy guys one got the reward, right? No – it is more fundamental than that. The first one is really just discussing the &lt;em&gt;what &amp;amp; why &lt;/em&gt;the VS colour change that is an issue, the second piece of feedback though is discussing how to fix it. The problem for Microsoft is if they take the second guys stuff, a person who hasn’t signed a waiver, the how guy has a legal ability to sue Microsoft for the money they owe him for work/royalties etc… And Microsoft legal won’t allow that to happen because that is their job, to protect Microsoft legal issues. &lt;/p&gt; &lt;p&gt;This is not a complaint about legal, I am sure they are nice people that are just doing their job and it is annoying their job and my wishes do not align...&lt;/p&gt; &lt;p&gt;The thing about taking the what feedback is Microsoft is pretty safe in taking and improving VS in anyway they see fit and that is why the what &amp;amp; why is under review and not the how.&lt;/p&gt; &lt;h2&gt;Licensing &amp;amp; Public Domain&lt;/h2&gt; &lt;p&gt;The next that will be brought up is that this is work in the public domain and thus “free”… wrong. Public domain work is more a legal trap than anything, and there is so many steps that you need to jump through to get access to using that “free” work that often it is easier to redo it yourself. This is why ANYTHING you do should have a license, even if you want to just give it away and never see it again or if you want someone like Microsoft to be able to use it.&lt;/p&gt; &lt;p&gt;For software check out a good &lt;a href="http://www.opensource.org/"&gt;open source license&lt;/a&gt;, such as &lt;a href="http://www.opensource.org/licenses/BSD-3-Clause"&gt;BSD 3-clause&lt;/a&gt; which basically says do what you like with my work and I promise I won't sue you except if you use me as an endorsement for your product which contains my work. For non-code items,&amp;nbsp; like art, music or blog posts have a look at the &lt;a href="http://creativecommons.org"&gt;creative commons licenses&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Microsoft can fix this too&lt;/h2&gt; &lt;p&gt;Microsoft could reach out to people with good ideas and get them to sign waivers (WAY too much work and also maybe risky after the work is provided), but better would be to adopt an approach like &lt;a href="http://stackexchange.com/"&gt;StackExchange&lt;/a&gt; (SE) does. SE states if you provide feedback on their sites it is creative commons. &lt;/p&gt; &lt;p&gt;Microsoft could do the same and even put in a waiver clause on UV, I don’t know if UV allows for this, but Microsoft is big enough to get it done. It doesn’t solve great ideas that are posted elsewhere, those still required YOU to take the time to learn a little about licensing, public domain and so on and take the right steps so we can ALL benefit… not just the lawyers who get paid to say no.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=gvDpVZzRxhA:redJoxSzByQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=gvDpVZzRxhA:redJoxSzByQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=gvDpVZzRxhA:redJoxSzByQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=gvDpVZzRxhA:redJoxSzByQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/gvDpVZzRxhA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/why-harder-you-work-prove-microsoft-you-know-better-less-chance-it-will-ever-happen</feedburner:origLink></item><item><title>IntelliTrace vs. PreEmptive Analytics</title><link>http://feedproxy.google.com/~r/Sadev/~3/xqPL1fQX4K4/intellitrace-vs-preemptive-analytics</link><category>.NET</category><category>ALM</category><category>Development</category><category>Microsoft</category><category>Tools &amp; Apps</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Fri, 30 Mar 2012 05:19:39 PDT</pubDate><guid isPermaLink="false">706 at http://www.sadev.co.za</guid><description>&lt;h1&gt;IntelliTrace&lt;/h1&gt; &lt;p&gt;Visual Studio 2010 introduced an amazing feature: &lt;a href="http://msdn.microsoft.com/en-us/library/dd264915.aspx" target="_blank"&gt;IntelliTrace&lt;/a&gt; which allows for deep debugging experiences inside Visual Studio by collecting an AMAZING amount of information (basically a stack trace for every call in your code + meta data) and allowing you to use it later to replay the way the application was used. With this feature you could eliminate those “No Repro” bugs! The catch in 2010 was it was &lt;a href="http://www.edsquared.com/2010/02/12/Can+I+Collect+An+IntelliTrace+Log+In+Production.aspx" target="_blank"&gt;NOT allowed to be used in production&lt;/a&gt;. In Visual Studio 11 that has changed and we can use it in production: &lt;a href="http://msdn.microsoft.com/en-us/library/hh398365(v=vs.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh398365(v=vs.110).aspx&lt;/a&gt; &amp;amp; &lt;a href="http://msdn.microsoft.com/en-us/hh440472"&gt;http://msdn.microsoft.com/en-us/hh440472&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;PreEmptive Analytics&lt;/h1&gt; &lt;p&gt;This change in licensing may seem to put IntelliTrace in direct competition with another great tool, PreEmptive Analytics (PA). I have &lt;a href="http://www.sadev.co.za/content/pulled-apart-part-xv-understanding-usage-runtime-intelligence" target="_blank"&gt;mentioned this amazing tool before&lt;/a&gt; and with Visual Studio 11 it is included “in the box” so there seems to be a conflict brewing – but there isn’t.&lt;/p&gt; &lt;h1&gt;Two sides of the same coin&lt;/h1&gt; &lt;p&gt;These two tools are both part of the &lt;em&gt;collect information so you can react to it later and fix bugs &lt;/em&gt;set of tools, but they have very different use cases. IntelliTrace is specific to the scenario of replaying an application for diagnosis and debugging purposes. It is not meant to be an always on tool and it is a tool that writes to a local file that needs to be collected some how.&lt;/p&gt; &lt;p&gt;PA on the other hand is a tool to always have on, it does capture error information but nothing more than the simple Exception + Stack which is not as useful, detailed or integrated into VS when compared to IntelliTrace. In addition PA allows me to do a lot of a lot of analytics on my application that are not possible in IntelliTrace:  &lt;ul&gt; &lt;li&gt;what features are people using  &lt;/li&gt;&lt;li&gt;where in the world are they  &lt;/li&gt;&lt;li&gt;when are they using it  &lt;/li&gt;&lt;li&gt;what are their machines like&lt;/li&gt;&lt;/ul&gt; &lt;/p&gt;&lt;p&gt;In addition the PA reports get automatically sent to a server (that they run or that you can run if you have privacy/security concerns) so there is not need to waddle around collecting files.  &lt;/p&gt;&lt;p&gt;I can also see scenarios that these two work hand in hand – PreEmptive getting higher level info that shows a lot of users having issue X, then the support guys contact some users and do a more detailed capture of the issue with IntelliTrace.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=xqPL1fQX4K4:TqIH1DsL-Qs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=xqPL1fQX4K4:TqIH1DsL-Qs:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=xqPL1fQX4K4:TqIH1DsL-Qs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=xqPL1fQX4K4:TqIH1DsL-Qs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/xqPL1fQX4K4" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/intellitrace-vs-preemptive-analytics</feedburner:origLink></item><item><title>South African ID Numbers: The racial identifier flag</title><link>http://feedproxy.google.com/~r/Sadev/~3/ASQ9eRL12NI/south-african-id-numbers-racial-identifier-flag</link><category>Something Different</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Fri, 30 Mar 2012 02:13:13 PDT</pubDate><guid isPermaLink="false">705 at http://www.sadev.co.za</guid><description>&lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;In a previous post on &lt;a href="http://www.sadev.co.za/content/what-south-african-id-number-made" target="_blank"&gt;what makes up an ID number&lt;/a&gt; I mention that&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The second last number used to be a racial identifier but now means nothing. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;But I never went into the topic so lets dive into the options – today it is for almost everyone 08 (I suspect a 09 or two may be floating around) but in the “&lt;a href="http://en.wikipedia.org/wiki/Apartheid_in_South_Africa" target="_blank"&gt;bad old days&lt;/a&gt;” there was a variety of options:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Population Group&lt;/td&gt; &lt;td valign="top" width="133"&gt;S.A. Citizen&lt;/td&gt; &lt;td valign="top" width="133"&gt;Non-S.A. Citizen&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;White&lt;/td&gt; &lt;td valign="top" width="133"&gt;00&lt;/td&gt; &lt;td valign="top" width="133"&gt;10&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Cape Coloured&lt;/td&gt; &lt;td valign="top" width="133"&gt;01&lt;/td&gt; &lt;td valign="top" width="133"&gt;11&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Malay&lt;/td&gt; &lt;td valign="top" width="133"&gt;02&lt;/td&gt; &lt;td valign="top" width="133"&gt;12&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Griqua&lt;/td&gt; &lt;td valign="top" width="133"&gt;03&lt;/td&gt; &lt;td valign="top" width="133"&gt;13&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Chinese&lt;/td&gt; &lt;td valign="top" width="133"&gt;04&lt;/td&gt; &lt;td valign="top" width="133"&gt;14&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Indian&lt;/td&gt; &lt;td valign="top" width="133"&gt;05&lt;/td&gt; &lt;td valign="top" width="133"&gt;15&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Other Asian&lt;/td&gt; &lt;td valign="top" width="133"&gt;06&lt;/td&gt; &lt;td valign="top" width="133"&gt;16&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="133"&gt;Other Coloured&lt;/td&gt; &lt;td valign="top" width="133"&gt;07&lt;/td&gt; &lt;td valign="top" width="133"&gt;17&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;For my non-South African readers the use of Coloured as a group here is not the same as the American racial slur, in South Africa we have a population group called Coloured: &lt;a href="http://en.wikipedia.org/wiki/Coloured"&gt;http://en.wikipedia.org/wiki/Coloured&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;How did we change from the old to the new?&lt;/h1&gt; &lt;p&gt;So what happened to those bits as we do not have them now? In 1986 there was the introduction of a new law: Identification Act no 72, which caused the law that made the classification (and a horrible concept where every black person had to carry a “Pass Book”) repelled.&lt;/p&gt; &lt;p&gt;So over the course of 1986 and 1987 everyone in South Africa was issued a new ID number and somewhere inside the government there is a database that maps old ID numbers to new ones for people born before 1986! I can’t remember what this was process was like, since I was about 4 years old at this point. This means though I have a different number on my birth certificate to what I use now!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ASQ9eRL12NI:ZgPp_ig0hK0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ASQ9eRL12NI:ZgPp_ig0hK0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ASQ9eRL12NI:ZgPp_ig0hK0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ASQ9eRL12NI:ZgPp_ig0hK0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/ASQ9eRL12NI" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/south-african-id-numbers-racial-identifier-flag</feedburner:origLink></item><item><title>.NET 4.5 and how it sits in the .NET ecosystem</title><link>http://feedproxy.google.com/~r/Sadev/~3/PK99HtmFmN8/net-45-and-how-it-sits-net-ecosystem</link><category>.NET</category><category>Microsoft</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 28 Mar 2012 05:37:32 PDT</pubDate><guid isPermaLink="false">704 at http://www.sadev.co.za</guid><description>&lt;h1&gt;tl;dr &lt;/h1&gt; &lt;ul&gt; &lt;li&gt;.NET 4.5 – 8th major release.  &lt;/li&gt;&lt;li&gt;.NET 4.5 is an in place replacement of .NET 4.0.  &lt;ul&gt; &lt;li&gt;Installing it could cause issues for .NET 4.0, but is very unlikely and likely shows your app is using undocumented features or using features incorrectly.&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;.NET vesions, CLR versions &amp;amp; language versions are not in sync.  &lt;/li&gt;&lt;li&gt;There is an awesome chart below which makes it easy to see the relationships in the ecosystem.&lt;/li&gt;&lt;/ul&gt; &lt;h1&gt;Introduction&lt;/h1&gt; &lt;p&gt;.NET 4.5 is the next release and it is important to take a look how it fits in the .NET ecosystem. This is the &lt;strong&gt;8th&lt;/strong&gt; major release of .NET! What do I mean by major release? I mean any release that is not a patch/support only release, or put another way a major release it included major new features in the CLR and/or a new language options.&lt;/p&gt; &lt;h1&gt;SxS vs. Replacement&lt;/h1&gt; &lt;p&gt;In .NET we are lucky that many versions can run side by side (SxS) provided they have different versions of the CLR, however if a new major release shares the same CLR it is a replacement/additive version. For example: .NET 3.0 used the same CLR as .NET 2.0 (the CLR 2.0) and when installed replaced many of the files in .NET 2.0 with new versions and it is only via compiler directives that some things are turned on and off. The advantage of the SxS model is installing a new version doesn’t influence apps on the previous version in any way (i.e. if the app is 1.1 and works fine before .NET 2.0 was installed, it will keep working fine after .NET 2.0 is installed). &lt;/p&gt; &lt;p&gt;The problem with replacement model is that there is a chance that installing a new version breaks apps on the original version – however Microsoft does a RIDICULOUS number of testing to make sure this doesn’t happen, so that chance is very small. In fact if you happen to hit one, the chance is higher you are using undocumented features or using features incorrectly.&lt;/p&gt; &lt;p&gt;The reason for this explanation of SxS vs. replacement is that .NET 4.5 is an in place replacement for .NET 4.&lt;/p&gt; &lt;h1&gt;Version Naming&lt;/h1&gt; &lt;p&gt;Part of the confusion I suspect around me saying that .NET 4.5 is the eighth release is because Microsoft naming of versions is about as far from logic as you can get – the worst examples are the .NET Version 3.5 SP 1 is a major release labelled a Service Pack 1?! and the fact we do not have a version 3 of the CLR, it was just skipped?!&lt;/p&gt; &lt;p&gt;The other aspect is that versions of the CLR, versions of the Framework and versions of the languages are completely out of sync, so .NET 4.5 runs on the CLR version 4 and we write code in C# version 5.0 or VB version 11.0 – cause that makes sense :S&lt;/p&gt; &lt;h1&gt;Awesome Poster&lt;/h1&gt; &lt;p&gt;Here is an awesome poster to help remind you of all the above!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_242.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_266.png" width="863" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PK99HtmFmN8:IjW4EpxKVUQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PK99HtmFmN8:IjW4EpxKVUQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=PK99HtmFmN8:IjW4EpxKVUQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=PK99HtmFmN8:IjW4EpxKVUQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/PK99HtmFmN8" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/net-45-and-how-it-sits-net-ecosystem</feedburner:origLink></item><item><title>Installing Windows Phone Developer Tools on Windows 8</title><link>http://feedproxy.google.com/~r/Sadev/~3/lbG2qj5OopI/installing-windows-phone-developer-tools-windows-8</link><category>.NET</category><category>ALM</category><category>Development</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 27 Mar 2012 07:18:37 PDT</pubDate><guid isPermaLink="false">703 at http://www.sadev.co.za</guid><description>&lt;p&gt;The joys of being on the bleeding edge, is we are sometimes bleeding such as the fact the Windows Phone Developer tools have not worked on Windows 8… until now. However the steps to do get this working are not easy and are spread out a bit on the Internet, so this post aims to give you a one stop, quick reference way on how to get it done in five steps.&lt;/p&gt; &lt;h1&gt;Step 1 – Get the bits&lt;/h1&gt; &lt;p&gt;You will need THREE downloads for this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The Games for Windows Marketplace Client: &lt;a href="http://www.xbox.com/en-US/LIVE/PC/DownloadClient"&gt;http://www.xbox.com/en-US/LIVE/PC/DownloadClient&lt;/a&gt;  &lt;/li&gt;&lt;li&gt; &lt;p&gt;The Windows Phone SDK 7.1: &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27570&lt;/a&gt;&lt;/p&gt; &lt;p&gt;personally I would get the ISO for it from: &lt;a title="http://go.microsoft.com/fwlink/?LinkID=226694" href="http://go.microsoft.com/fwlink/?LinkID=226694"&gt;http://go.microsoft.com/fwlink/?LinkID=226694&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;The Windows Phone SDK 7.1.1 Update: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=29233"&gt;http://www.microsoft.com/download/en/details.aspx?id=29233&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This should set you back 1.1Gb in bandwidth.&lt;/p&gt; &lt;h1&gt;Step 2 – Install the Games for Windows Marketplace Client&lt;/h1&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_234.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_258.png" width="314" height="213" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Troubleshooting notes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you have problems with the install for the GWM client please see: &lt;a href="http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx"&gt;http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;If you installed the Phone SDK first (step 4 before step 1, madness) then you need to do a repair of the Windows Phone SDK after you install this.&lt;/li&gt;&lt;/ul&gt; &lt;h1&gt;Step 3 – Install .NET Framework 3.5&lt;/h1&gt; &lt;p&gt;Now pop in your Windows 8 DVD (or mount the ISO), next open a command prompt AS ADMINISTRATOR and navigate to the \sources\sxs folder on the DVD and run the following command. My DVD was mounted on drive F so note you may need to change the underlined part of the command to match your situation: &lt;em&gt;dism.exe /online /enable-feature /featurename:NetFX3 /All &lt;u&gt;/Source:f:\sources\sxs&lt;/u&gt; /LimitAccess&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_235.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_259.png" width="314" height="159" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;Step 4 – Install Windows Phone SDK 7.1&lt;/h1&gt; &lt;p&gt;Now run the installer for the Windows Phone SDK 7.1 as per normal.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_236.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_260.png" width="240" height="216" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/image_237.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_261.png" width="240" height="216" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Troubleshooting notes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you get any errors about installing some components, try to copy them from the disk to the desktop – if you get a invalid MS-DOS function error, then you have a corrupt ISO and need to download it all again.&lt;/li&gt;&lt;/ul&gt; &lt;h1&gt;Step 5 – Install Windows Phone SDK update&lt;/h1&gt; &lt;p&gt;Almost there, just the Phone SDK update to install!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_238.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_262.png" width="230" height="216" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;Done!&lt;/h1&gt; &lt;p&gt;And there we are, the tiles are on the start screen, Visual Studio 2010 launches (and hurts my eyes with all those colours :P ), the new emulator options are all there in the drop downs and the EMULATOR WORKS!!!!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_239.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_263.png" width="208" height="216" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/image_240.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_264.png" width="237" height="107" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/image_241.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_265.png" width="212" height="216" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Troubleshooting notes:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If you have a CPU that supports SLAT (for example a Core i7) you can run Hyper-V on Windows 8, which hurts emulator performance. Turn if off it you can.&lt;/li&gt;&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=lbG2qj5OopI:YR5pAWP1ojA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=lbG2qj5OopI:YR5pAWP1ojA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=lbG2qj5OopI:YR5pAWP1ojA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=lbG2qj5OopI:YR5pAWP1ojA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/lbG2qj5OopI" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/installing-windows-phone-developer-tools-windows-8</feedburner:origLink></item><item><title>Windows 8 Bootcamp</title><link>http://feedproxy.google.com/~r/Sadev/~3/3pVjdEdkDnY/windows-8-bootcamp</link><category>.NET</category><category>Development</category><category>Events</category><category>Microsoft</category><category>Presentations, Posters &amp; Cheat Sheets</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 20 Mar 2012 06:54:52 PDT</pubDate><guid isPermaLink="false">702 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/windows8logo_large_verge_medium_landscape.jpg"&gt;&lt;img title="windows8logo_large_verge_medium_landscape" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="windows8logo_large_verge_medium_landscape" align="right" src="http://www.sadev.co.za/files/windows8logo_large_verge_medium_landscape_thumb.jpg" width="314" height="216" /&gt;&lt;/a&gt;Last week (14th March 2012, to be exact) I had a great opportunity to travel to Cape Town and present the first ever Windows 8 Bootcamp there! (I missed the first in South Africa by two days, that was presented in Jo’burg by &lt;a href="http://www.rudigrobler.net" target="_blank"&gt;Rudi Grobler&lt;/a&gt;). &lt;/p&gt; &lt;p&gt;It was a small event, but it was a great day of learning and sharing and what a lovely place it was to present, as you can see from the photos below!&lt;/p&gt; &lt;p&gt;One of the requests from those who attended the event was the demos &amp;amp; slides – however there is a snag, Microsoft owns the slides and they are not ready for them to be publically shared &lt;img class="wlEmoticon wlEmoticon-sadsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Sad smile" src="http://www.sadev.co.za/files/wlEmoticon-sadsmile_14.png" /&gt;&amp;nbsp; That said the demo bits are below, so hopefully that will keep you sorted until the slides arrive.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/WP_000655.jpg"&gt;&lt;img title="WP_000655" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="WP_000655" src="http://www.sadev.co.za/files/WP_000655_thumb.jpg" width="318" height="240" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/WP_000656.jpg"&gt;&lt;img title="WP_000656" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="WP_000656" src="http://www.sadev.co.za/files/WP_000656_thumb.jpg" width="318" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/Windows 8 Cape Town Camp.zip"&gt;Windows 8 Cape Town Camp.zip&lt;/a&gt;&lt;/td&gt;&lt;td&gt;597.72 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=3pVjdEdkDnY:ZCFeXhwY_Ts:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=3pVjdEdkDnY:ZCFeXhwY_Ts:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=3pVjdEdkDnY:ZCFeXhwY_Ts:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=3pVjdEdkDnY:ZCFeXhwY_Ts:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/3pVjdEdkDnY" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/Windows 8 Cape Town Camp.zip" length="612064" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/windows-8-bootcamp</feedburner:origLink></item><item><title>Upgrading Visual Studio "11" Developer Preview Metro Projects to Visual Studio "11" Beta Metro Projects</title><link>http://feedproxy.google.com/~r/Sadev/~3/OsRFdUdK10E/upgrading-visual-studio-11-developer-preview-metro-projects-visual-studio-11-beta-metro</link><category>.NET</category><category>ALM</category><category>Annoyances</category><category>Development</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 29 Feb 2012 17:14:13 PST</pubDate><guid isPermaLink="false">701 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/76451.jpg"&gt;&lt;img title="76451" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="76451" align="right" src="http://www.sadev.co.za/files/76451_thumb.jpg" width="305" height="215" /&gt;&lt;/a&gt;If you created Metro style (WinRT) projects in Visual Studio “11” developer preview (alpha) and you try to open them up in the beta you will have a few load issues. These are ones I have found in my apps so it is not exhaustive, but seems like the most common.&lt;/p&gt; &lt;h3&gt;Projects will not load&lt;/h3&gt; &lt;p&gt;The projects themselves will not load with the following error: &lt;em&gt;The imported project "C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v1.0\Microsoft.Windows.UI.Xaml.CSharp.targets" was not found. Confirm that the path in the &amp;lt;Import&amp;gt; declaration is correct, and that the file exists on disk.&amp;nbsp; &lt;/em&gt;&lt;/p&gt; &lt;p&gt;The solution to this is to open the project file and navigate to the &amp;lt;Import&amp;gt; node and change the path from v1.0 to v11.0 (see the highlighted extra 1 in the image below that is needed):&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_233.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_257.png" width="863" height="43" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Compiler Directive&lt;/h3&gt; &lt;p&gt;If you used the compiler directive WINRT that has been changed to NETFX_CORE so you will need to update your code.&lt;/p&gt; &lt;h3&gt;Package fails to build&lt;/h3&gt; &lt;p&gt;The package fails to build/deploy and complains about an InitialRotationPreference attribute. To solve this open the &lt;em&gt;Package.appxmanifest &lt;/em&gt;file and find the &amp;lt;VisualElements&amp;gt; node and you should find an line similar to this:&lt;/p&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;VisualElements DisplayName="AtomicMVVM Metro Style App Demo" Logo="Images\Logo.png" SmallLogo="Images\SmallLogo.png" Description="AtomicMVVM Metro Style App Demo" ForegroundText="light" BackgroundColor="#000000" InitialRotationPreference="portrait"&amp;gt;

&lt;/pre&gt;
&lt;p&gt;What you need to do is remove the InitialRotationPreference attribute from the end, so it ends like this:&lt;/p&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;VisualElements DisplayName="AtomicMVVM Metro Style App Demo" Logo="Images\Logo.png" SmallLogo="Images\SmallLogo.png" Description="AtomicMVVM Metro Style App Demo" ForegroundText="light" BackgroundColor="#000000"&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;font size="1"&gt;Big load failure image from: &lt;/font&gt;&lt;a href="http://www.hostedfile.com/pictures/76451/big-load-failure.html"&gt;&lt;font size="1"&gt;http://www.hostedfile.com/pictures/76451/big-load-failure.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OsRFdUdK10E:uEVkZRDtm5w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OsRFdUdK10E:uEVkZRDtm5w:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OsRFdUdK10E:uEVkZRDtm5w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OsRFdUdK10E:uEVkZRDtm5w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/OsRFdUdK10E" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/upgrading-visual-studio-11-developer-preview-metro-projects-visual-studio-11-beta-metro</feedburner:origLink></item><item><title>How different is Metro Style (WinRT) development really? The beta post</title><link>http://feedproxy.google.com/~r/Sadev/~3/5P-fbNBBTJg/how-different-metro-style-winrt-development-really-beta-post-0</link><category>.NET</category><category>Development</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 29 Feb 2012 16:56:55 PST</pubDate><guid isPermaLink="false">700 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.sadev.co.za/files/goodwork.jpg"&gt;&lt;img title="goodwork" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="goodwork" align="right" src="http://www.sadev.co.za/files/goodwork_thumb.jpg" width="240" height="240" /&gt;&lt;/a&gt;Note: &lt;/strong&gt;Before you read this post, it is using the public consumer preview (beta) of Windows 8, VS 11 &amp;amp; .NET 4.5, so I expect some issues will likely be resolved in later releases. Check the &lt;a href="http://www.sadev.co.za/search/node/winrt" target="_blank"&gt;site out&lt;/a&gt; for more info! &lt;/p&gt; &lt;p&gt;With the beta of Win8, VS 11 &amp;amp; .NET 4.5 now out I thought I should post again (first post about this can be found &lt;a href="http://www.sadev.co.za/content/how-different-winrt-really" target="_blank"&gt;here&lt;/a&gt; – recommended reading to see how it has improved) how it has improved or changed since the alpha. This is not meant to be an exhaustive list, it is a list of the most common things (where most common is what I use, because I am pretty common &lt;img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile with tongue out" src="http://www.sadev.co.za/files/wlEmoticon-smilewithtongueout_5.png" /&gt;)&lt;/p&gt; &lt;h3&gt;Namespaces&lt;/h3&gt; &lt;p&gt;Namespaces have been polished and there is a much better alignment of the new awesomeness to the old so this is getting much better.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;#if NETFX_CORE
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml;
    using Windows.UI.Core;
    using Windows.UI.Xaml.Controls.Primitives;
#else
    using System.Windows.Controls;    
    using System.Windows.Controls.Primitives;
#endif
&lt;/pre&gt;
&lt;h3&gt;Duplication of INotifyPropertyChanged, ICommand &amp;amp; INotifyCollectionChanged is SOLVED!&lt;/h3&gt;
&lt;p&gt;I mentioned about the EPIC FAIL of the duplication of core interfaces – that has been solved! &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_35.png" /&gt;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_35.png" /&gt;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_35.png" /&gt;&lt;/p&gt;
&lt;h3&gt;ObservableCollection&amp;lt;T&amp;gt; is broken is SOLVED!&lt;/h3&gt;
&lt;p&gt;The double facepalm that was breaking ObservableCollection&amp;lt;T&amp;gt; has also been solved – so this means your Metro style apps are more like your WPF &amp;amp; Silverlight apps than ever before.&lt;/p&gt;
&lt;h3&gt;User Controls must be created on the main thread is SOLVED!&lt;/h3&gt;
&lt;p&gt;I did not get a stupid behaviour where a user control had to be created on the main thread, and thankfully that has been solved! You can now create user controls on other threads! &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_35.png" /&gt;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_35.png" /&gt;&lt;/p&gt;
&lt;h3&gt;IValueConverter has been changed&lt;/h3&gt;
&lt;p&gt;Previously the Convert &amp;amp; ConvertBack methods second parameter was a string, now it has been changed to a Type. This is a good move as it allows for better compares, but means any IValueConverters from alpha will be broken and it is a simple change:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;//Before broken
public object Convert(object value, string typeName, object parameter, string language)

//After changing type of second parameter = working
public object Convert(object value, Type typeName, object parameter, string language)

&lt;/pre&gt;
&lt;p&gt;&lt;font size="1"&gt;Good work image from &lt;/font&gt;&lt;a href="http://bloggers.com/posts/happy-developer-37379"&gt;&lt;font size="1"&gt;http://bloggers.com/posts/happy-developer-37379&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5P-fbNBBTJg:KWeHxOSFWQ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5P-fbNBBTJg:KWeHxOSFWQ8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5P-fbNBBTJg:KWeHxOSFWQ8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5P-fbNBBTJg:KWeHxOSFWQ8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/5P-fbNBBTJg" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/how-different-metro-style-winrt-development-really-beta-post-0</feedburner:origLink></item><item><title>Important changes to Express Editions of Visual Studio "11"</title><link>http://feedproxy.google.com/~r/Sadev/~3/jrj_Oj0cSFA/important-changes-express-editions-visual-studio-11</link><category>.NET</category><category>ALM</category><category>Annoyances</category><category>Development</category><category>Microsoft</category><category>Tools &amp; Apps</category><category>Windows</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 29 Feb 2012 09:34:01 PST</pubDate><guid isPermaLink="false">693 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="/files/manualtrafficexchangetip.gif"&gt;&lt;img title="manualtrafficexchangetip" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="manualtrafficexchangetip" align="right" src="http://www.sadev.co.za/files/manualtrafficexchangetip_thumb.gif" width="237" height="240" /&gt;&lt;/a&gt;Note: The source of this is the Visual Studio “11” beta Product Guide (&lt;a title="http://go.microsoft.com/fwlink/?linkid=243994" href="http://go.microsoft.com/fwlink/?linkid=243994"&gt;http://go.microsoft.com/fwlink/?linkid=243994&lt;/a&gt;) so this may change by release.&lt;/p&gt;  &lt;p&gt;Today we have five Express products: C++, C#, Visual Basic, Web and Phone however with the launch of Visual Studio “11” we will only have TWO!&lt;/p&gt;  &lt;p&gt;These two editions of Express we will have are Web &amp;amp; Windows. I do not believe we will only ever have two editions, as the 2010 Express editions grew during the product so I would expect a few new ones coming along post launch. &lt;/p&gt;  &lt;p&gt;So how does the old Express editions map to the new Express editions?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C++ maps to NOTHING&lt;/li&gt;    &lt;li&gt;C# for WinForm/WPF/Silverlight maps to NOTHING&lt;/li&gt;    &lt;li&gt;VB for WinForm/WPF/Silverlight maps to NOTHING&lt;/li&gt;    &lt;li&gt;Phone maps to NOTHING&lt;/li&gt;    &lt;li&gt;Web maps to Web&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#061623"&gt;Let me reiterate this, &lt;u&gt;if you want to build non-Metro applications (unless they are web) there is NO Express edition anymore for this&lt;/u&gt;! The Windows Express edition ONLY allows the building of Metro apps (including ARM). Web dev using Express editions still continue to work as before.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#061623"&gt;Both Express editions have a new enhancements too, which is a fantastic thing: The ability &lt;/font&gt;&lt;font color="#061623"&gt;Version Control &amp;amp; Work Item Tracking with TFS is included out of the box.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;For the Windows express edition it has even more enhancements&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A subset of static analysis (fxCop) for helping developers pass Win Store evaluation&lt;/li&gt;    &lt;li&gt;Performance Profiling has been added: CPU Sampling for C#/VB/C++ Metro apps and Instrumentation for HTML/JS Metro Apps&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#061623"&gt;&lt;font size="1"&gt;Stop/Important image from &lt;/font&gt;&lt;a href="http://sitechoppers.com/why-it-is-important-to-build-your-downline/"&gt;&lt;font size="1"&gt;http://sitechoppers.com/why-it-is-important-to-build-your-downline/&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=jrj_Oj0cSFA:bB3M0EieTzI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=jrj_Oj0cSFA:bB3M0EieTzI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=jrj_Oj0cSFA:bB3M0EieTzI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=jrj_Oj0cSFA:bB3M0EieTzI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/jrj_Oj0cSFA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/important-changes-express-editions-visual-studio-11</feedburner:origLink></item><item><title>Charting with Lightswitch</title><link>http://feedproxy.google.com/~r/Sadev/~3/OqXa3IpYrkE/charting-lightswitch</link><category>.NET</category><category>ALM</category><category>Development</category><category>Microsoft</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Fri, 24 Feb 2012 04:04:30 PST</pubDate><guid isPermaLink="false">692 at http://www.sadev.co.za</guid><description>&lt;p&gt;One of the key business aspects not included with Lightswitch 2011 is a great set of charting controls and often I need to have a few for the projects I am working on. Thankfully with the &lt;a href="http://silverlight.codeplex.com" target="_blank"&gt;Silverlight Toolkit&lt;/a&gt; and a touch of code I can have BRILLIANT charts for no extra costs! &lt;/p&gt; &lt;p&gt;Below are three charts using the Silverlight Toolkit in Lightswitch, which I think look FANTASTIC and it is fairly easy to do in four easy to follow stages.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_219.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_243.png" width="271" height="165" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/image_220.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_244.png" width="271" height="165" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.sadev.co.za/files/image_221.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_245.png" width="271" height="165" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For this tutorial I have a simple structure of engine parts, costs over time and purchases which looks a little like the image below and for I have already created the data structure and UI for adding those in Lightswitch.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_222.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_246.png" width="271" height="177" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Stage 1: Get the toolkit&lt;/h3&gt; &lt;p&gt;To start off we need to switch out of the &lt;em&gt;Logical View&lt;/em&gt; and into the &lt;em&gt;Files View&lt;/em&gt;, to do this in &lt;em&gt;Solution Explorer &lt;/em&gt;click the “Lie to me button” (that is what I call it) and change the view.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_223.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_247.png" width="157" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Next right click on the client project and select &lt;em&gt;Manage Nuget Packages&lt;/em&gt;. If you do not have Nuget yet, stop, download Nuget from &lt;a href="http://www.Nuget.org"&gt;www.Nuget.org&lt;/a&gt; and install it and come back. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_224.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_248.png" width="271" height="198" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In Nuget search for the &lt;em&gt;silverlight toolkit &lt;/em&gt;and install the &lt;em&gt;Data Visualization &lt;/em&gt;package. Now unfortunately Lightswitch isn’t too good with Nuget, so really we are using this as a way to get the packages but they are not properly installed as you may expect.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_225.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_249.png" width="238" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Stage 2: Create the screen and add the control&lt;/h3&gt; &lt;p&gt;Now switch back to the &lt;em&gt;Logical view &lt;/em&gt;and add a new &lt;em&gt;Editable Grid Screen&lt;/em&gt;, give it a nice name but do not select any &lt;em&gt;Screen Data&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_226.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_250.png" width="271" height="194" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In your new screen, click the &lt;em&gt;add &lt;/em&gt;button at the bottom and select &lt;em&gt;New Custom Control.&lt;/em&gt; If you do not have that, you have selected the &lt;em&gt;add&lt;/em&gt; option for the &lt;em&gt;Screen Command Bar&lt;/em&gt;, so make sure the &lt;em&gt;Rows Layout&lt;/em&gt; at the top is selected.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_227.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_251.png" width="218" height="198" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now we need to add the assemblies for the &lt;em&gt;Silverlight Toolkit &lt;/em&gt;packages, to do this press the &lt;em&gt;Add Reference&lt;/em&gt; button in the &lt;em&gt;Add custom control&lt;/em&gt; screen.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_228.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_252.png" width="178" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Browse to the &lt;em&gt;packages &lt;/em&gt;folder in the root of the Lightswitch project and add the two assemblies. Once done browse the &lt;em&gt;System.Windows.Controls.DataVisualization.Toolkit &lt;/em&gt;assembly and go to &lt;em&gt;System.Windows.Controls.DataVisualization.Charting.Chart &lt;/em&gt;class and select &lt;em&gt;OK.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_229.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_253.png" width="178" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Stage 3: Configure the chart control in Lightswitch&lt;/h3&gt; &lt;p&gt;The control should now be listed. Next go to the properties and give the chart a name, this is important so name it something you will remember.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_230.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_254.png" width="271" height="69" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now we change the sizing of the chart control to be &lt;em&gt;Stretch &lt;/em&gt;for both &lt;em&gt;Horizontal &lt;/em&gt;and &lt;em&gt;Vertical Alignment&lt;/em&gt;. This allows the chart to use all the space on the screen!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_231.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_255.png" width="146" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Stage 4: Add some code to get the data and put it in the chart&lt;/h3&gt; &lt;p&gt;Now we need to add the code to get the data and render the chart. We do this in the &lt;em&gt;Created&lt;/em&gt; event for the screen (to get there, click the &lt;em&gt;Write Code &lt;/em&gt;button in the toolbar and select the event).&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_232.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.sadev.co.za/files/image_thumb_256.png" width="251" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Now we add some code to the event, which does:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;font color="#000000"&gt;Find the chart control.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;Get the data from the DataWorkspace into a list.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;Set chart to use the data.&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre class="brush: csharp;"&gt;partial void CostOverTimeChart_Created()
{
    // Write your code here.
    var chart = this.FindControl("chart");
    chart.ControlAvailable += (s, e) =&amp;gt;
    {
        this.Details.Dispatcher.BeginInvoke(() =&amp;gt;
        {
            var dataPoints = (from Costs c in this.DataWorkspace.ApplicationData.CostsSet
                              group c by c.EnginePart).ToList();

            var chartControl = e.Control as Chart;
            chartControl.Dispatcher.BeginInvoke(() =&amp;gt;
            {
                chartControl.Series.Clear();
                foreach (var group in dataPoints)
                {
                    chartControl.Series.Add(new LineSeries()
                    {

                        Title = group.Key,
                        IndependentValuePath = "PointInTime",
                        DependentValuePath = "Cost",
                        ItemsSource = group
                    });
                }
            });
        });
    };
}
&lt;/pre&gt;
&lt;p&gt;If we dive into the code:&lt;/p&gt;
&lt;li&gt;Line 4&lt;font color="#000000"&gt;: We use the &lt;em&gt;FindControl &lt;/em&gt;method with the magic string we named the chart to find the control that wraps the chart.&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;Line 5: We attach to the event for when the chart is available.&lt;/li&gt;
&lt;li&gt;Line 7: We use the dispatcher for the screen to run a call to the &lt;em&gt;DataWorkspace&lt;/em&gt; to get the data and put it into a list. We need to dispatch this as the &lt;em&gt;DataWorkspace&lt;/em&gt; is in a separate thread.&lt;/li&gt;
&lt;li&gt;Line 12: We get the actual chart control now from the event arguments.&lt;/li&gt;
&lt;li&gt;Line 13: To set the values on the control we use the charts dispatcher as it is separately threaded.&lt;/li&gt;
&lt;li&gt;Line 15: We clear any existing&amp;nbsp; series and then add new series. This code is nothing special to Lightswitch, this is just normal Silverlight charting.&lt;/li&gt;
&lt;h3&gt;Wrap up&lt;/h3&gt;
&lt;p&gt;It seems like a lot to do this, and it is. You could make this easier by wrapping this in a custom Lightswitch control which would give you GREAT reuse, but that is a lot of work too. In the long run if you use lots of charts you will save time by building the custom control – but if you need just one or two this is a little quicker and less learning. &lt;/p&gt;
&lt;p&gt;Below you will find a link to the sample product I used to create all the charts and it has all the code in it too, if you are looking for it. Make sure you have Nuget installed before you use it!&lt;/p&gt;&lt;table id="attachments" class="sticky-enabled"&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class="odd"&gt;&lt;td&gt;&lt;a href="http://www.sadev.co.za/files/DemoLS.zip"&gt;DemoLS.zip&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1.97 MB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OqXa3IpYrkE:bvJTE1PvGN4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OqXa3IpYrkE:bvJTE1PvGN4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=OqXa3IpYrkE:bvJTE1PvGN4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=OqXa3IpYrkE:bvJTE1PvGN4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/OqXa3IpYrkE" height="1" width="1"/&gt;</description><enclosure url="http://www.sadev.co.za/files/DemoLS.zip" length="2070275" type="application/zip" /><feedburner:origLink>http://www.sadev.co.za/content/charting-lightswitch</feedburner:origLink></item><item><title>VS/TFS 11 Announcement Crib Notes</title><link>http://feedproxy.google.com/~r/Sadev/~3/-yvYAO0bbJs/vstfs-11-announcement-crib-notes</link><category>.NET</category><category>ALM</category><category>Development</category><category>Microsoft</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Thu, 23 Feb 2012 23:00:27 PST</pubDate><guid isPermaLink="false">691 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/1680_SolutionExplorer-2.png"&gt;&lt;img title="1680.SolutionExplorer-2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="1680.SolutionExplorer-2" align="right" src="http://www.sadev.co.za/files/1680_SolutionExplorer-2_thumb.png" width="332" height="182" /&gt;&lt;/a&gt;The last few hours have been a buzz of excitement for .NET developers as the covers have been lifted for the next releases of TFS, VS &amp;amp; .NET 4.5 – however there is a problem. There is SO much info wrapped in nice marketing &amp;amp; business talk you will spend hours trying to get through it all, so here are the crib notes. Following each note is a number in braces, this is the number of the source so you can go to it for more info if you wish:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;.NET 4.5, VS 11 &amp;amp; TFS 11 beta’s will be available on the 29th Feb. [1] &lt;/li&gt;    &lt;li&gt;You can use the products in production from beta (technically called a go-live licence) [2] &lt;/li&gt;    &lt;li&gt;Visual Studio 11 has had a UI polish, similar layout but less toolbars by default, less colours (icons are monotone) &amp;amp; a touch of Metro like thinking (white space &amp;amp; typography) [2] &lt;/li&gt;    &lt;li&gt;Five editions (or SKUs) of Visual Studio will ship: Express, Test Pro, Pro, Premium &amp;amp; Ultimate. Same as we have in 2010. [3] &lt;/li&gt;    &lt;li&gt;TFS will have at least two editions, Express (think TFS basic but FREE) and another edition. We may have more than that. [8] &lt;/li&gt;    &lt;li&gt;Visual Studio Professional and up will include Lightswitch! [3] &lt;/li&gt;    &lt;li&gt;The architecture tool diagrams can now be read in professional &amp;amp; premium versions too (in 2010 it was premium only). Creation still requires ultimate. [4] &lt;/li&gt;    &lt;li&gt;IntelliTrace is supported in production (still an ultimate only feature). [4] &lt;/li&gt;    &lt;li&gt;Windows Phone 7 tools included with professional and higher editions of Visual Studio 11. [4] &lt;/li&gt;    &lt;li&gt;Express will have two versions: Windows (WPF, WinRT, etc..) &amp;amp; Web (ASP.NET, MVC etc…). [5] &lt;/li&gt;    &lt;li&gt;There are two themes for Visual Studio: Light (pictured above) &amp;amp; Dark which feels like a Expression Blend style. [6] &lt;/li&gt;    &lt;li&gt;Quick launch is a new search feature allows you to search for any command or option in Visual Studio. [6] &lt;/li&gt;    &lt;li&gt;Search has been added to most used tool windows, like solution explorer. [6] &lt;/li&gt;    &lt;li&gt;ASP.NET MVC 4 has a bunch of evolutionary improvements, nothing to wet your pants on IMHO. [7] &lt;/li&gt;    &lt;li&gt;ASP.NET Web API is a big new feature for both MVC &amp;amp; WebForms for building API’s for the web. Think services like WCF but built for the modern web. [9] &lt;/li&gt;    &lt;li&gt;Visual Studio 11 is a code name – expect a name change by release. [10] &lt;/li&gt;    &lt;li&gt;Workflow hubs in Visual Studio 11 allows you to focus on a task in a single place, rather than have to move around multiple windows. [11] &lt;/li&gt;    &lt;li&gt;Preview tabs allow you to sneak a peek at documents without needing to actually open them. [10] &lt;/li&gt;    &lt;li&gt;C# 5 (yes, it is version 5 of C# that is shipping with .NET 4.5 – who says this is confusing) has support for async. [10] &lt;/li&gt;    &lt;li&gt;New code compare tool &amp;amp; UI that doesn’t suck. [11] &lt;/li&gt;    &lt;li&gt;New code review tool support in TFS &amp;amp; Visual Studio. [12] &lt;/li&gt;    &lt;li&gt;New mock up design tool that ships with Visual Studio/TFS that allows you to build mock user interfaces in Powerpoint. Think Sketchflow without the code or Balsamiq. [13] &lt;/li&gt;    &lt;li&gt;New Visual Studio METRO’d logo [14]: &lt;a href="http://www.sadev.co.za/files/logo_vs11beta_print.jpg"&gt;&lt;img title="VS11-Beta_h_c" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="VS11-Beta_h_c" src="http://www.sadev.co.za/files/logo_vs11beta_print_thumb.jpg" width="244" height="31" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Want to see some pictures of all of this? &lt;a href="http://www.microsoft.com/presspass/presskits/developer/imagegallery.aspx"&gt;http://www.microsoft.com/presspass/presskits/developer/imagegallery.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Sources&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/somasegar/archive/2012/02/23/the-road-to-visual-studio-11-beta-and-net-4-5-beta.aspx"&gt;http://blogs.msdn.com/b/somasegar/archive/2012/02/23/the-road-to-visual-studio-11-beta-and-net-4-5-beta.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/23/sneak-preview-of-visual-studio-11-and-net-framework-4-5-beta.aspx"&gt;http://blogs.msdn.com/b/jasonz/archive/2012/02/23/sneak-preview-of-visual-studio-11-and-net-framework-4-5-beta.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/beta-products"&gt;http://www.microsoft.com/visualstudio/en-us/products/beta-products&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/features-chart"&gt;http://www.microsoft.com/visualstudio/en-us/products/features-chart&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/beta-express"&gt;http://www.microsoft.com/visualstudio/en-us/products/beta-express&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/visualstudio/"&gt;http://blogs.msdn.com/b/visualstudio/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2012/02/19/asp-net-mvc-4-beta.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2012/02/19/asp-net-mvc-4-beta.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2012/02/23/asp-net-web-api-part-1.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2012/02/23/asp-net-web-api-part-1.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/features/2012/feb12/02-23VisualStudioBetaPreview.mspx"&gt;http://www.microsoft.com/presspass/features/2012/feb12/02-23VisualStudioBetaPreview.mspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=2c8135ad-fefd-48c2-888f-83b6987a4e87"&gt;http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=2c8135ad-fefd-48c2-888f-83b6987a4e87&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=2a0b1cf8-9d74-4603-a2d1-03d8ef989a8c"&gt;http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=2a0b1cf8-9d74-4603-a2d1-03d8ef989a8c&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=240cbb53-9dd5-4262-b0cc-cdb9a57485d3"&gt;http://www.microsoft.com/presspass/ImageGallery/ImageDetails.mspx?id=240cbb53-9dd5-4262-b0cc-cdb9a57485d3&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/imagegallery/images/products/developer/vs/logo_vs11beta_print.jpg"&gt;http://www.microsoft.com/presspass/imagegallery/images/products/developer/vs/logo_vs11beta_print.jpg&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=-yvYAO0bbJs:qmgibWcSkz0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=-yvYAO0bbJs:qmgibWcSkz0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=-yvYAO0bbJs:qmgibWcSkz0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=-yvYAO0bbJs:qmgibWcSkz0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/-yvYAO0bbJs" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/vstfs-11-announcement-crib-notes</feedburner:origLink></item><item><title>Windows Phone: Icons not loading, Internet Explorer just black, performance poor</title><link>http://feedproxy.google.com/~r/Sadev/~3/LMeAKqR6C_4/windows-phone-icons-not-loading-internet-explorer-just-black-performance-poor-0</link><category>Annoyances</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Thu, 23 Feb 2012 22:37:18 PST</pubDate><guid isPermaLink="false">690 at http://www.sadev.co.za</guid><description>&lt;p&gt;My Windows Phone the other day started acting badly, any icon from an application that I installed refused to load, Internet Explorer would just show a black screen and the performance on the phone was VERY poor. The cause? I use this awesome device too much and I had run out of space:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/oops.jpg"&gt;&lt;img title="oops" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="oops" src="http://www.sadev.co.za/files/oops_thumb.jpg" width="408" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Using the Zune software is the only way to see that!&lt;/p&gt;  &lt;p&gt;What had happened is that I hadn’t installed new apps, but I had done a bunch of updates the day it started and so it seems the updates filled it up. Once I cleaned up some apps &amp;amp; games I don’t use I freed up a few gigs and all started working fantastically again!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=LMeAKqR6C_4:hKIJttIZ1Y4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=LMeAKqR6C_4:hKIJttIZ1Y4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=LMeAKqR6C_4:hKIJttIZ1Y4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=LMeAKqR6C_4:hKIJttIZ1Y4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/LMeAKqR6C_4" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/windows-phone-icons-not-loading-internet-explorer-just-black-performance-poor-0</feedburner:origLink></item><item><title>Want awesome banners for your Windows Phone Apps? Nokia to the rescue!</title><link>http://feedproxy.google.com/~r/Sadev/~3/ZNQpgE56Spc/want-awesome-banners-your-windows-phone-apps-nokia-rescue</link><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 14 Feb 2012 01:08:44 PST</pubDate><guid isPermaLink="false">688 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/e47edec2-d988-4ca5-9226-03bc19d92932"&gt;&lt;img title="-nokia-lumia-800-13" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="-nokia-lumia-800-13" align="right" src="http://www.sadev.co.za/files/-nokia-lumia-800-13.jpg" width="124" height="604" /&gt;&lt;/a&gt;Check out that great banner to the right for my Windows Phone App, FireFly. It looks so professional (right fonts, my icon is there), plus it is on the gorgeous Nokia Lumia device in it! &lt;/p&gt;  &lt;p&gt;How did I create it? With a FREE tool from Nokia that allows you to create banners for Windows Phone apps and Symbian Apps! You can access the tool at: &lt;a title="http://snac.nokia.com/2/omt" href="http://snac.nokia.com/2/omt"&gt;http://snac.nokia.com/2/omt&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It took about 5 minutes to do it and in the end I got 14 banners generated for me in all different shapes and sizes. Thanks Nokia for the great tool!&lt;/p&gt;  &lt;p&gt;Here are some more samples:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/e47edec2-d988-4ca5-9226-03bc19d92932"&gt;&lt;img title="-nokia-lumia-800-10" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="-nokia-lumia-800-10" src="http://www.sadev.co.za/files/-nokia-lumia-800-10.jpg" width="304" height="254" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/e47edec2-d988-4ca5-9226-03bc19d92932"&gt;&lt;img title="-nokia-lumia-800-4" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="-nokia-lumia-800-4" src="http://www.sadev.co.za/files/-nokia-lumia-800-4.jpg" width="172" height="46" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/e47edec2-d988-4ca5-9226-03bc19d92932"&gt;&lt;img title="-nokia-lumia-800-2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="-nokia-lumia-800-2" src="http://www.sadev.co.za/files/-nokia-lumia-800-2.jpg" width="220" height="58" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsphone.com/en-US/apps/e47edec2-d988-4ca5-9226-03bc19d92932"&gt;&lt;img title="-nokia-lumia-800-0" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="-nokia-lumia-800-0" src="http://www.sadev.co.za/files/-nokia-lumia-800-0.jpg" width="304" height="79" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZNQpgE56Spc:ggYl4Vhiad0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZNQpgE56Spc:ggYl4Vhiad0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZNQpgE56Spc:ggYl4Vhiad0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZNQpgE56Spc:ggYl4Vhiad0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/ZNQpgE56Spc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/want-awesome-banners-your-windows-phone-apps-nokia-rescue</feedburner:origLink></item><item><title>Silverlight - When does it REALLY end?</title><link>http://feedproxy.google.com/~r/Sadev/~3/ZLD_sCYnnyg/silverlight-when-does-it-really-end</link><category>.NET</category><category>Development</category><category>Microsoft</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Sun, 12 Feb 2012 22:57:37 PST</pubDate><guid isPermaLink="false">687 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_218.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" align="right" src="http://www.sadev.co.za/files/image_thumb_242.png" width="492" height="253" /&gt;&lt;/a&gt;When you ask Microsoft, “Microsoft WTF is going on with Silverlight 5? Is it the last version of Silverlight? Will you support more versions?”, you get given a link to the &lt;a href="http://support.microsoft.com/lifecycle/?c2=12905" target="_blank"&gt;Silverlight Product Support Lifecycle Page&lt;/a&gt; (this has happened more than once to me). This page lists when Microsoft will support Silverlight until, and you will see that for releases 1 through 4 it was between two &amp;amp; three years. For Silverlight 5 it is a DECADE. This &lt;u&gt;implies&lt;/u&gt; that this release will be with us for some time, so it is a good bet that it will be the last one. Before I continue this post is about Silverlight on the desktop not Silverlight on the phone which is a different thing all together, I have very different views to Silverlight on the phone.&lt;/p&gt;  &lt;p&gt;So what does that REALLY mean to us? Mainstream support will end in 2021. Does that mean browsers will work &amp;amp; Visual Studio will work? Maybe is the real answer. Mainstream support (as defined on the &lt;a href="http://support.microsoft.com/lifecycle/#tab2" target="_blank"&gt;Microsoft website&lt;/a&gt;) means &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You can contact Microsoft and ask for help. You may get this for free or pay for it. I’ve used this in the past and gotten hotfixes and general installation help on other products. It is GREAT! &lt;/li&gt;    &lt;li&gt;Security patches. &lt;/li&gt;    &lt;li&gt;The ability to request non-security hotfixes (i.e. you find a bug, you log it with support, you wait a while, you get a fix).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It does not mean tools or browsers will support it! Both are listed on the Silverlight page so they have given us this info too. Tooling is promised for a minimum of 12 months after release which means that Visual Studio &amp;amp; Blend releases 12 months following the release of Silverlight 5 will support it. This means we can expect Visual Studio 11 and Blend 5 to support it. However there is NO promise for further tooling updates, which means that VS 11 &amp;amp; Blend 5 are likely the last releases to support Silverlight. Visual Studio has a &lt;a href="http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&amp;amp;alpha=Visual Studio&amp;amp;Filter=FilterNO" target="_blank"&gt;trend of 5 years support&lt;/a&gt; so expect bugs in tooling to no longer be fixed after that. The other tool we must consider is Lightswitch, which is based on Silverlight. What is it’s life? It is listed as 2017! So do not expect you current Lightswitch projects to continue until then! &lt;/p&gt;  &lt;p&gt;In reality those are tools, we can continue to use them long after end of life (as the SQL team forces ANYONE who wants to create reports for SQL 2000 or 2005 will know). The real concern must be out customers and their interface to Silverlight, the browser. The support lifecycle page links to a page with &lt;a href="http://go.microsoft.com/fwlink/?LinkId=236043" target="_blank"&gt;supported browsers&lt;/a&gt; and has an interesting note. They will support those browsers until end of mainstream Silverlight support (2021) or until the browsers own support ends WHICH EVER IS SHORTER!&amp;#160; So that means if IE ends of life sooner, they get to stop supporting it sooner. So when will that really end? The latest browser on the list is IE 9, so &lt;a href="http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&amp;amp;alpha=internet+explorer&amp;amp;Filter=FilterNO" target="_blank"&gt;looking that up&lt;/a&gt; gives us nothing – it is a component and thus it’s lifecycle is linked to it’s parent product Windows 7 which &lt;a href="http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&amp;amp;alpha=Windows+7&amp;amp;Filter=FilterNO" target="_blank"&gt;ends of life in 2015&lt;/a&gt;!&amp;#160; I am running the Windows 8 beta and I know Silverlight 5 does run on it with Internet Explorer 10, so if we &lt;u&gt;assume&lt;/u&gt; that they follow the same lifecycle and this is the last release to support it that means we can expect browser support only until 2017!&lt;/p&gt;  &lt;p&gt;So the reality is that your operating system, your browser &amp;amp; your tools all stop supporting it in 2017 – that is the real end of life to me, and that is 5 years away! Sure you can get security hotfixes for another 4 years after that, but really what good are those when your tools, OS &amp;amp; browser can not be fixed. So for me the real end of life is 2017. &lt;/p&gt;  &lt;p&gt;Finally let be clear, there is assumptions and estimations based on previous support life cycle numbers. Microsoft could be preparing something and just not communicating it and this could all be wrong, but as Microsoft is not communicating this is all we have to go on anyway. There is another Silverlight, that one powers Windows Phone apps – I view these are two completely separate products (similar features but not the same, but different tools and different requirements) with the same name so my view here does not imply ANYTHING to Windows Phone 7 – I do believe that Silverlight will be with us for much longer.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZLD_sCYnnyg:A_hXZ8b2md4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZLD_sCYnnyg:A_hXZ8b2md4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ZLD_sCYnnyg:A_hXZ8b2md4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ZLD_sCYnnyg:A_hXZ8b2md4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/ZLD_sCYnnyg" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/silverlight-when-does-it-really-end</feedburner:origLink></item><item><title>How different is WinRT really?</title><link>http://feedproxy.google.com/~r/Sadev/~3/tI9LK1jwGdo/how-different-winrt-really</link><category>.NET</category><category>Annoyances</category><category>Development</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Thu, 09 Feb 2012 22:04:57 PST</pubDate><guid isPermaLink="false">686 at http://www.sadev.co.za</guid><description>&lt;blockquote&gt;Update 29 Feb 2012: There is now a post covering the Consumer Preview/Beta changes: &lt;A href="http://www.sadev.co.za/content/how-different-metro-style-winrt-development-really-beta-post-0"&gt;How different is Metro Style (WinRT) development really? The beta post&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;Before you read this post, it is using the public technical preview of Windows 8, VS 11 &amp;amp; .NET 4.5, so I expect some issues will likely be resolved in later releases. Check the &lt;a href="http://www.sadev.co.za/search/node/winrt" target="_blank"&gt;site out&lt;/a&gt; for more info!&lt;/p&gt;  &lt;p&gt;Recently I have been working on a &lt;a href="https://bitbucket.org/rmaclean/atomicmvvm/" target="_blank"&gt;MVVM framework&lt;/a&gt; (it’s the new Hello World project for developers) and I wanted to make sure it worked with WPF, Silverlight &amp;amp; the new hotness: WinRT (or Metro or Windows 8 depending on who you ask). So I started to retrofit the framework and build a demo application at the same time to show it off. I quickly found a bunch of issues that you need to take care of when moving to WinRT.&lt;/p&gt;  &lt;h3&gt;Namespaces&lt;/h3&gt;  &lt;p&gt;It has been mentioned since //Build that we will have new namespaces so this should not be a surprise. In my MVVM framework it looks like this:&lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;#if WINRT
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Core;
    using Windows.UI.Xaml.Data;
#else
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    using System.Windows.Controls.Primitives;
    using System.ComponentModel;
#endif&lt;/pre&gt;

&lt;p&gt;You should be able to spot almost a one to one mapping there, except for the last few, but we will get to those.&lt;/p&gt;

&lt;h3&gt;Duplication of INotifyPropertyChanged, ICommand &amp;amp; INotifyCollectionChanged&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/home-simpson-fire-cereal-epic-fail.jpg"&gt;&lt;img title="home-simpson-fire-cereal-epic-fail" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="home-simpson-fire-cereal-epic-fail" align="right" src="http://www.sadev.co.za/files/home-simpson-fire-cereal-epic-fail_thumb.jpg" width="254" height="204" /&gt;&lt;/a&gt;This issue will affect EVERY developer in WinRT and it is a MASSIVE fail on Microsoft’s part. The INotifyPropertyChanged, ICommand &amp;amp; INotifyCollectionChanged that are used in every XAML based system are not the ones used in WinRT XAML based systems. In fact the framework has TWO of each – one in the old namespace and one in the new namespace. So you will find your databinding just broken with no compiler errors! To solve this you have to switch the namespaces.&lt;/p&gt;

&lt;h3&gt;ObservableCollection&amp;lt;T&amp;gt; is broken&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/doublefacepalm.jpg"&gt;&lt;img title="doublefacepalm" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="doublefacepalm" align="right" src="http://www.sadev.co.za/files/doublefacepalm_thumb.jpg" width="254" height="204" /&gt;&lt;/a&gt;Hand in hand with the previous one is that the trusted ObservableCollection&amp;lt;T&amp;gt; no longer works either! It implements the old (wrong INotifyCollectionChanged) and thus all bindings to it are broken. You need to bind to a class that implements IVectorCollection&amp;lt;T&amp;gt;. One problem, the framework doesn’t ship with an implementation! So to bind to collections, you need to build your own collection class or &lt;a href="http://www.scottlogic.co.uk/blog/colin/2011/10/using-observablecollection-with-winrt-via-a-little-shim/" target="_blank"&gt;grab a shim&lt;/a&gt; (as I chose to).&lt;/p&gt;

&lt;h3&gt;Proxies &amp;amp; WebRequest&lt;/h3&gt;

&lt;p&gt;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_34.png" /&gt;&amp;#160;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_34.png" /&gt; I used WebRequest in the demo to pull images from Flickr and you know what just worked – proxy settings. The first time ever in .NET! I hope who ever decided that proxies should just work gets an award! &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_34.png" /&gt;&amp;#160;&lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_34.png" /&gt;&lt;/p&gt;

&lt;h3&gt;Reflection has added a whole new layer&lt;/h3&gt;

&lt;p&gt;In non-WinRT we can get all kinds of info on a type directly by working with that type (i.e. Type.GetType). However in WinRT that is not the case! Type.GetType is no longer enough, when you have gotten the type you need to call GetTypeInfo on that to get to all the information on the type. Why this extra layer is here is beyond me.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;#if WINRT
                if (control != null &amp;amp;&amp;amp; typeof(ButtonBase).GetTypeInfo().IsAssignableFrom(control.GetType().GetTypeInfo()))
#else
#if SILVERLIGHT
                if (control != null &amp;amp;&amp;amp; typeof(ButtonBase).IsAssignableFrom(control.GetType()))
#else
                if (control != null &amp;amp;&amp;amp; control is ICommandSource)
#endif
#endif&lt;/pre&gt;

&lt;h3&gt;MIA Types &amp;amp; Methods&lt;/h3&gt;

&lt;p&gt;For a MVVM framework you will have a bit of reflection and so the first thing I noticed is the super handy Types.EmptyTypes is gone! So to have as close to a single code base I am doing this nonsense now &lt;img class="wlEmoticon wlEmoticon-sadsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Sad smile" src="http://www.sadev.co.za/files/wlEmoticon-sadsmile_13.png" /&gt;&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;#if (WINRT)
        private readonly Type[] EmptyTypes = new Type[] { };
#else
        private readonly Type[] EmptyTypes = Type.EmptyTypes;
#endif&lt;/pre&gt;

&lt;p&gt;There is a fair bit of these missing properties &amp;amp; methods like Type.GetType is missing some of the overloads I have come to love:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;#if WINRT
            var viewType = Type.GetType(viewName);
#else
            var viewType = Type.GetType(viewName, true, true);
#endif&lt;/pre&gt;

&lt;p&gt;Lastly do not expect the trusted methods like GetConstructor, GetMethod or GetProperty to exist. Now we have collections we can iterate over. I admit this is a better option, but some helper methods here would've been useful.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public static MethodInfo GetMethod(this Type type, string methodName, Type[] parameters)
{
    var results = from m in type.GetTypeInfo().DeclaredMethods
                  where m.Name == methodName
                  let methodParameters = m.GetParameters().Select(_ =&amp;gt; _.ParameterType).ToArray()
                  where methodParameters.Length == parameters.Length &amp;amp;&amp;amp;
                        !methodParameters.Except(parameters).Any() &amp;amp;&amp;amp;
                        !parameters.Except(methodParameters).Any()
                  select m;

    return results.FirstOrDefault();
}&lt;/pre&gt;

&lt;p&gt;So be aware when working in reflection be aware that it will work differently.&lt;/p&gt;

&lt;h3&gt;User Controls must be created on the main thread!&lt;/h3&gt;

&lt;p&gt;This I do not get at all, but in WPF &amp;amp; Silverlight a background thread can create a user control and pass the content to a Window on the main thread. This is SUPER useful for the creation of content and then when needing popping it into the foreground almost instantly! However WinRT has different ideas, all user controls MUST BE created on the main thread – YUCK!&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;#if (WINRT)
                Window.Current.Dispatcher.Invoke(CoreDispatcherPriority.High, (s, e) =&amp;gt;
                    {
#endif
                        shell = (IShell)typeof(TShell).GetConstructor(EmptyTypes).Invoke(null);
#if (WINRT)
                    }, this, null);
#endif&lt;/pre&gt;

&lt;p&gt;&lt;font size="1"&gt;Simpson Fail Image from: &lt;/font&gt;&lt;a title="http://www.thebuzzmedia.com/creator-of-wikipedia-fail-fast-fail-often/" href="http://www.thebuzzmedia.com/creator-of-wikipedia-fail-fast-fail-often/"&gt;&lt;font size="1"&gt;http://www.thebuzzmedia.com/creator-of-wikipedia-fail-fast-fail-often/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="1"&gt;Double face palm image from: &lt;/font&gt;&lt;a title="http://tvtropes.org/pmwiki/pmwiki.php/Main/FacePalm" href="http://tvtropes.org/pmwiki/pmwiki.php/Main/FacePalm"&gt;&lt;font size="1"&gt;http://tvtropes.org/pmwiki/pmwiki.php/Main/FacePalm&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=tI9LK1jwGdo:jD6asD93MGE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=tI9LK1jwGdo:jD6asD93MGE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=tI9LK1jwGdo:jD6asD93MGE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=tI9LK1jwGdo:jD6asD93MGE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/tI9LK1jwGdo" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/how-different-winrt-really</feedburner:origLink></item><item><title>The MVP award</title><link>http://feedproxy.google.com/~r/Sadev/~3/YZCJqIPByD0/mvp-award</link><category>Microsoft</category><category>Something Different</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Thu, 09 Feb 2012 00:40:56 PST</pubDate><guid isPermaLink="false">685 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/WP_000575.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP_000575" border="0" alt="WP_000575" align="right" src="http://www.sadev.co.za/files/WP_000575_thumb.jpg" width="271" height="204" /&gt;&lt;/a&gt;Being a MVP gets you very little, some status boost in those who misunderstand it (&lt;a href="http://www.sadev.co.za/content/what-alm-mvp" target="_blank"&gt;MVPs are not awarded for technical skill&lt;/a&gt; &amp;amp; a lot of people think MVP = expert), a MSDN subscription, a lot of paperwork (including multiple NDA’s), some access to product teams (this varies from product team to product team – some have great interactions others are poor) and a trophy. &lt;/p&gt; &lt;p&gt;To the right is my MVP trophy (as well as ALM Rangers award and MVP of the year cube) and I think it looks pretty awesome but how does it get to me? &lt;/p&gt; &lt;p&gt;In this post I want to take a slightly tongue in cheek look at the box the MVP award comes in and what it is saying about MVP’s.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/WP_000576.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP_000576" border="0" alt="WP_000576" src="http://www.sadev.co.za/files/WP_000576_thumb.jpg" width="271" height="204" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/WP_000577.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP_000577" border="0" alt="WP_000577" src="http://www.sadev.co.za/files/WP_000577_thumb.jpg" width="271" height="204" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/WP_000578.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP_000578" border="0" alt="WP_000578" src="http://www.sadev.co.za/files/WP_000578_thumb.jpg" width="271" height="204" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Above you can see the three years of the trophy box. So lets analyse those box covers. I am assuming that the person on the box is supposed to represent MVP’s.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;MVP’s are dress smart casual always – chinos &amp;amp; a blue shirt are required. Hah, not likely.  &lt;/li&gt;&lt;li&gt;MVP’s have neck problems causing them to tilt their heads. This is likely true from all the time people spend at their machines.  &lt;/li&gt;&lt;li&gt;MVP’s always have their laptops with them. Also likely true. Next year he better have a Windows 8 tablet though.  &lt;/li&gt;&lt;li&gt;Interesting that 2010 guy got one cover while 2011 guy got to come back in 2012. Guess 2010 guy wasn’t re-awarded &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://www.sadev.co.za/files/wlEmoticon-winkingsmile_13.png" /&gt;  &lt;/li&gt;&lt;li&gt;2011 guy has gotten smaller in 2012 – are we shrinking away or did Mr 2011 not do enough work?  &lt;/li&gt;&lt;li&gt;In 2010 and 2011 the ghosts of MVP’s past are clearly standing in support for the MVP. In 2012 they aren’t concerned anymore and just chatting with each other. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;What would I do differently? Easily, take a photo from MVP summit with real MVP’s engaging with each other and put that on the cover. What may be nice is to have new 2012 MVP’s (i.e. first timers) get together to pose for it and so there is extra incentive for 2013 – a box with real MVP’s that could include you. &lt;/font&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=YZCJqIPByD0:5dYqSuQOq48:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=YZCJqIPByD0:5dYqSuQOq48:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=YZCJqIPByD0:5dYqSuQOq48:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=YZCJqIPByD0:5dYqSuQOq48:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/YZCJqIPByD0" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/mvp-award</feedburner:origLink></item><item><title>You never debug standing up</title><link>http://feedproxy.google.com/~r/Sadev/~3/XK0V9m5dFRM/you-never-debug-standing</link><category>Development</category><category>Personal</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 07 Feb 2012 23:28:34 PST</pubDate><guid isPermaLink="false">684 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/humility_road_sign.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="humility_road_sign" border="0" alt="humility_road_sign" align="right" src="http://www.sadev.co.za/files/humility_road_sign_thumb.jpg" width="305" height="204" /&gt;&lt;/a&gt;Being a professional developer means following standards, standards that are set by smart people (smarter than me at least) and when you start to break those standards will wrong. I know this! However this past Friday I broke many a rule and failed, because thought I knew better this one time. So this post is a retrospective of what went wrong, so that I never forget again.&lt;/p&gt; &lt;p&gt;The project is a fairly complex backend system for a special mobile device, and when I mean complex I mean in size and scope. We have VB.NET, C#, Java, JavaScript and a ton of inline SQL! The work itself is done by three different companies with three different agreements, policies and methodologies! That sounds like a recipe for disaster but it isn’t – we have exceeded every goal! That is until Friday.&lt;/p&gt; &lt;p&gt;On Friday we get told the customer is coming at 9am on Monday for a demo! We have 8 hours to get ready for it! The software is in a state between alpha and beta and we have known issues that need resolving by the demo. So we worked hard and make great headway until about 3pm. Then we hit an issue everyone in the room thought was on the mobile device. The first problem is the mobile dev company isn’t onsite today, so we are really guessing at the issue. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/confidence.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="confidence" border="0" alt="confidence" align="right" src="http://www.sadev.co.za/files/confidence_thumb.jpg" width="310" height="252" /&gt;&lt;/a&gt;We start experimenting at fixes, pushing 7 builds to QA in an hour (in reality we are lucky if get 5 build to QA in a day). At the same time we are adding bug fixes and tweaks for other items too! Then the answer comes in the mobile device developer – they breaking because their expectation of the spec is not the same as ours. More fixes and adjustments and then the server just stops.&lt;/p&gt; &lt;p&gt;At this point, I am looking at my watch, I have a two year old son sitting at school and it is almost time to pick him up. tick tock. Being a single parent means I MUST leave and soon. The mobile guys have gone offline completely. Another dev from the third company is needing to go and propose (she said yes &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.sadev.co.za/files/wlEmoticon-smile_33.png" /&gt;)! We are all rushing, skipping testing, skipping building locally before checkins… I even checked code in without comments! NOTHING, no matter what I try it keeps breaking, tick tock, same error every time, tick tock, I can’t find it, tick tock, the PM is looking worried and looking at me to solve it, tick tock. OUT OF TIME. &lt;/p&gt; &lt;p&gt;I apologise and leave, feeling crap. I failed. I let a client down. &lt;/p&gt; &lt;p&gt;Saturday, I sit down to dig into the code. Now without the time pressure, and I read the stack trace &lt;u&gt;properly&lt;/u&gt; for the first time (stopped assuming what it was saying as I was when I was rushed) and quickly found the issue and resolved it. One code checkin (built first locally, with check in comment, and assigned to work items etc…) and it is working. The test client works too! &lt;/p&gt; &lt;p&gt;In retrospect what should I have done is simple: We knew there is a demo, it was late notice but we had chance to choose what to show to the customer. We should’ve set a cut off time after lunch for fixes and changes and then just not included broken things in the demo. Rather have taken that after lunch time and made sure the demo showed 80% and that 80% worked 100% than rush to get 100% to show and in the end break it all.&lt;/p&gt; &lt;p&gt;I should’ve also stepped back earlier and done something else for a second – get coffee or something. Just to clear my mind and calm myself. Stepping back always helps, just think of how many times you ask someone for help and in explaining it you solve it yourself.&lt;/p&gt; &lt;p&gt;Finally skipping the standards that make us professional leads to disaster and I should’ve made sure the following standards were kept!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;make sure it builds locally before checkin  &lt;/li&gt;&lt;li&gt;check in comments  &lt;/li&gt;&lt;li&gt;assign each checkin to a work item  &lt;/li&gt;&lt;li&gt;test locally before checkin  &lt;/li&gt;&lt;li&gt;If we have a deadline, then we get everyone in the room to make it happen. We win and lose as a team.  &lt;/li&gt;&lt;li&gt;The more detailed the spec is, the better for everyone.  &lt;/li&gt;&lt;li&gt;Do one thing per checkin (keep those checkins small and focused) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Monday has come and gone, the customer loves it and the demo was great. We succeeded. It required sacrifice from the team of some of their weekend, a sacrifice that if we have acted more professionally and clear headed could’ve been avoided. This doesn’t happen often to me, as I am often surrounded by professionals and when one of us loses it the rest helps push that one back into place, so this post really is a reminder why we do that for each other and what others can learn.&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&lt;em&gt;Management is doing things right; leadership is doing the right things&lt;/em&gt; – Peter Drucker&lt;/font&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=XK0V9m5dFRM:4z1TWoNuURs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=XK0V9m5dFRM:4z1TWoNuURs:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=XK0V9m5dFRM:4z1TWoNuURs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=XK0V9m5dFRM:4z1TWoNuURs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/XK0V9m5dFRM" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/you-never-debug-standing</feedburner:origLink></item><item><title>Presentation Dump - End 2011: Azure, Windows 8, Lightswitch, Visual Studio Tools, TFS &amp; Roslyn</title><link>http://feedproxy.google.com/~r/Sadev/~3/ENA7INT_Nk8/presentation-dump-end-2011-azure-windows-8-lightswitch-visual-studio-tools-tfs-roslyn</link><category>.NET</category><category>ALM</category><category>ALM Rangers</category><category>Development</category><category>Microsoft</category><category>Presentations, Posters &amp; Cheat Sheets</category><category>Tools &amp; Apps</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Tue, 03 Jan 2012 22:54:56 PST</pubDate><guid isPermaLink="false">676 at http://www.sadev.co.za</guid><description>&lt;p&gt;With 2011 finally done and dusted it is time for the bi-annual presentation dump, where I upload most of the slides I have done in the last six months to share with you! I say most, as some presentations are NDA and those, unfortunately, I can’t share out – but where I can upload slides I do!&lt;/p&gt;  &lt;p&gt;In this presentation dump we have:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Windows Azure Platform Overview: &lt;/strong&gt;This is a talk I gave at the ImagineCup to faculty members about what Microsoft Azure can offer!&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows 8:&lt;/strong&gt; A brief introduction shortly after the //Build conference to help share what information we had on Windows 8&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Lightswitch: &lt;/strong&gt;The latest iteration of my Lightswitch talk contains a structure overview before the demo and then goes into detail on the themes and extension model in the product.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Developer Productivity Tools: &lt;/strong&gt;A session that looks at FIVE FREE tools for Visual Studio that will assist in the productivity of any Microsoft .NET developer in Visual Studio. Tools covered are fxCop, StyleCop, Pro Power Tools, CodeRush Xpress &amp;amp; Nuget.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;An Introduction to TFS: &lt;/strong&gt;The target audience for this is someone or company who is using another source control (like VSS) and is thinking about moving to TFS but isn’t sure where to start. This BRIEF introduction tries to provide a high level view that TFS is not just source control it is a LOT of more and thus has a lot more power. It also mentions migration from VSS and provides guidance for success.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Roslyn: &lt;/strong&gt;This is an early look at Roslyn&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;It is definitely a quieter period than most, in terms of number of unique slide shows and I think a lot of that comes out of the information black out from Microsoft prior to //Build, but it was still a very period with me presenting Lightswitch NUMEROUS times and also &lt;a href="/content/teched-africa-slides-scripts-thoughts" target="_blank"&gt;Tech·Ed Africa&lt;/a&gt; where I did four presentations!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;You can get all the slides and details by clicking “read more” below!&lt;/font&gt;&lt;/p&gt;
&lt;!--break--&gt;
&lt;h3&gt;Windows Azure Platform Overview&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10791198" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;h3&gt;Windows 8&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10791194" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;h3&gt;Lightswitch&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10791185" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;h3&gt;Developer Productivity Tools&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10791182" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;h3&gt;An Introduction To TFS&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10791174" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;   &lt;h3&gt;Roslyn&lt;/h3&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8853348" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ENA7INT_Nk8:I103FIg2GZs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ENA7INT_Nk8:I103FIg2GZs:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=ENA7INT_Nk8:I103FIg2GZs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=ENA7INT_Nk8:I103FIg2GZs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/ENA7INT_Nk8" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/presentation-dump-end-2011-azure-windows-8-lightswitch-visual-studio-tools-tfs-roslyn</feedburner:origLink></item><item><title>MVP for a third time :)</title><link>http://feedproxy.google.com/~r/Sadev/~3/9AwvfWnhXnQ/mvp-third-time</link><category>ALM</category><category>Microsoft</category><category>Personal</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Mon, 02 Jan 2012 23:30:18 PST</pubDate><guid isPermaLink="false">674 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="/files/mvp_0.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="mvp" border="0" alt="mvp" align="right" src="/files/mvp_thumb.png" width="228" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="/content/its-mvp-time-again" target="_blank"&gt;364 days ago&lt;/a&gt; &amp; &lt;a href="/content/and-award-goes-to"&gt;829 days ago&lt;/a&gt;, I blogged about being awarded a MVP from Microsoft and I am proud to announce that I have been awarded a MVP for a THIRD time! &lt;/p&gt;  &lt;p&gt;Thank you to all that were part of making this happen, I am very honoured by all of you.&lt;/p&gt;  &lt;p&gt;What is an MVP? In short it is a thank you for helping Microsoft communities. The long version can be found &lt;a href="/content/what-alm-mvp"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=9AwvfWnhXnQ:v0HwexSBdKw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=9AwvfWnhXnQ:v0HwexSBdKw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=9AwvfWnhXnQ:v0HwexSBdKw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=9AwvfWnhXnQ:v0HwexSBdKw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/9AwvfWnhXnQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/mvp-third-time</feedburner:origLink></item><item><title>Portal 2: Lab Rat</title><link>http://feedproxy.google.com/~r/Sadev/~3/5Yk08cp72zA/portal-2-lab-rat</link><category>Tools &amp; Apps</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Wed, 21 Dec 2011 00:28:54 PST</pubDate><guid isPermaLink="false">673 at http://www.sadev.co.za</guid><description>&lt;p&gt;If you do not know what Portal is, then you are dead to me! DEAD! But since I know everyone knows of Portal that won’t be an issue. What you may not have known is that &lt;a href="http://www.valvesoftware.com" target="_blank"&gt;Valve&lt;/a&gt; created a comic book that chronicles the gap between the end of Portal 1 and the beginning of Portal 2, and your character (Chell) ends up back inside the facility. &lt;/p&gt;  &lt;p&gt;This comic is called Lab Rat and you can view it in super great details at &lt;a title="http://www.thinkwithportals.com/comic/" href="http://www.thinkwithportals.com/comic/"&gt;http://www.thinkwithportals.com/comic/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But what about when you are travelling this festive season and want to read it quickly, or show your family so they can be caught up before you take them through Portal 2 on Christmas day? Well, for my seventh WP7 app (yes, I have build 7 Windows Phone apps this year!) let me introduce Lab Rat. &lt;/p&gt;  &lt;p&gt;In addition to offering the comic in your pocket you can save any page, with or without text, to your phone for use as a login screen or any such thing! AWESOME!&lt;/p&gt;  &lt;p&gt;In no way should you think this is an alternative to going online though, the detail of this comic should be seen at the BEST resolution possible – but this makes a good companion experience. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://windowsphone.com/s?appid=d54ff0c0-d458-4ec4-a1e2-044dcbe80624" target="_blank"&gt;&lt;img src="http://www.sadev.co.za/files/Windows-Phone-7-Download-Button.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_5_10.png"&gt;&lt;img title="screenshot-v1.0_12-9-2011_14.18.5.10" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="screenshot-v1.0_12-9-2011_14.18.5.10" src="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_5_10_thumb.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_8_170.png"&gt;&lt;img title="screenshot-v1.0_12-9-2011_14.18.8.170" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="screenshot-v1.0_12-9-2011_14.18.8.170" src="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_8_170_thumb.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_27_813.png"&gt;&lt;img title="screenshot-v1.0_12-9-2011_14.18.27.813" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="screenshot-v1.0_12-9-2011_14.18.27.813" src="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_27_813_thumb.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;a href="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_29_695.png"&gt;&lt;img title="screenshot-v1.0_12-9-2011_14.18.29.695" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="screenshot-v1.0_12-9-2011_14.18.29.695" src="http://www.sadev.co.za/files/screenshot-v1_0_12-9-2011_14_18_29_695_thumb.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5Yk08cp72zA:GSOzXMGfsCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5Yk08cp72zA:GSOzXMGfsCI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=5Yk08cp72zA:GSOzXMGfsCI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=5Yk08cp72zA:GSOzXMGfsCI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/5Yk08cp72zA" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/portal-2-lab-rat</feedburner:origLink></item><item><title>Platforms &gt; Implementations</title><link>http://feedproxy.google.com/~r/Sadev/~3/zT9D-1u8zqc/platforms-implementations</link><category>.NET</category><category>Development</category><category>Microsoft</category><category>Something Different</category><category>Windows</category><category>Windows Phone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Robert MacLean</dc:creator><pubDate>Thu, 01 Dec 2011 00:13:59 PST</pubDate><guid isPermaLink="false">672 at http://www.sadev.co.za</guid><description>&lt;p&gt;&lt;a href="http://www.sadev.co.za/files/image_217.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://www.sadev.co.za/files/image_thumb_241.png" width="449" height="287" /&gt;&lt;/a&gt;I recently read an &lt;a href="http://www.neophilic.com/b2evo/blogs/blog4.php/2011/09/02/programming-isnt-fun-any-more" target="_blank"&gt;insightful post&lt;/a&gt; about how being a developer is less about coding and more about tooling, and while I do not agree with all of the post, the fact we as developers are tool obsessed rings very true. This obsession with tools becomes a white hot rage when our favourite tool is threated with extinction or causes a world of panic when a competing tool is proposed without enough information on it. &lt;/p&gt;  &lt;p&gt;Let’s look at two key examples of that:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WinForms was very popular and when Microsoft brought us WPF, there was major push back from those who did not want to change and learn a new tool. If you reading this, then you are thinking well time solved that, I disagree. This very week I was asked about WinForms vs. WPF again. Time doesn’t heal all wounds, it just gives some of us time to move on.&lt;/li&gt;    &lt;li&gt;To illustrate the world of panic I can use a more recent issue – Windows 8! Remember all the discussion before &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;//Build&lt;/a&gt; about the death of &amp;lt;insert your favourite tool here&amp;gt;? The confusion caused by incomplete discussions around tools we love caused panic.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;So what is the solution to this? I think simply a mind set change would be enough. The mind set change needed is to remember that a &lt;u&gt;platform is more important/powerful/useful than a tool&lt;/u&gt;. I would like to take credit for this idea, but the first time I heard anyone mention this was a few years back and it was &lt;a href="http://www.hanselman.com/" target="_blank"&gt;Scott Hanselman&lt;/a&gt; talking on &lt;a href="http://www.sadev.co.za/content/scott-hanselman-last-night-microsoft" target="_blank"&gt;MVC almost three years ago to the day&lt;/a&gt;. He mentioned that ASP.NET &amp;gt; ASP.NET Web Forms and ASP.NET &amp;gt; ASP.NET MVC. In short he was saying that the core understanding of ASP.NET, the core features and the core uses of the platform are bigger than a single implementation (tool) could be. Sure, you need to learn a new tool, but you aren’t starting at zero if you know the platform.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&lt;a href="http://www.sadev.co.za/files/Silverlight_h_rgb.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Silverlight_h_rgb" border="0" alt="Silverlight_h_rgb" align="right" src="http://www.sadev.co.za/files/Silverlight_h_rgb_thumb.png" width="425" height="130" /&gt;&lt;/a&gt;Why I am bringing this up? It is because of the discussions I have been having about another tool recently: Silverlight. We are approaching the panic stage on this tool due to rumours of it’s demise. However it is VERY important to take a step back and see what the platform is and how knowing the platform means that a tool can move along and we are still able to work/code/make money etc…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;The platform Silverlight uses is XAML based UI technologies, a core set of how we can layout UI components using an XML dialect called XAML. This platform also has lots of options for things like binding, the MVVM patterns and so on that are either difficult or impossible to do with other UI technologies (like WinForms for example).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;XAML based UI technologies started with a single tool: WPF – an implementation of the platform designed to run on top of the .NET Framework. A second tool, Silverlight, later appeared – this is an implementation of the platform designed to run as a plugin in a browser. A third tool, Silverlight for Windows Phone 7, came next and while very close to Silverlight it had it’s differences as it was an implementation of the platform for the phone. In the last few months we have had the forth implementation of the XAML based UI technologies appear: WinRT. This is the Windows Runtime in Windows 8 and when you develop with C#, VB.NET or C++ your UI technology is just another implementation of the platform.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Every implementation of the platform has been different, some in big ways and some in smaller ways but the core of the XAML based UI technology platform hasn’t changed and there is not a single rumour, plan, or hint that we are even close to seeing the end of XAML based UI technologies. We may see a tool end of life and die (like some rumours say about&amp;#160; Silverlight) or other tools just find completeness and not need new work done (like WPF if) but the platform remains and grows and&lt;u&gt; learning a platform is always more important/powerful/useful&lt;/u&gt;.&lt;/font&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zT9D-1u8zqc:zT4vWDXXqUQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zT9D-1u8zqc:zT4vWDXXqUQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?i=zT9D-1u8zqc:zT4vWDXXqUQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Sadev?a=zT9D-1u8zqc:zT4vWDXXqUQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Sadev?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Sadev/~4/zT9D-1u8zqc" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.sadev.co.za/content/platforms-implementations</feedburner:origLink></item></channel></rss>

