<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-us">
  <title>Paul van Brenk.com</title>
  <link rel="alternate" type="text/html" href="http://www.paulvanbrenk.com/blog/" />
  
  <icon>favicon.ico</icon>
  <updated>2009-06-13T07:00:00+00:00</updated>
  <author>
    <name>Paul van Brenk</name>
  </author>
  <subtitle>Standing on the shoulders of giants.</subtitle>
  <id>http://www.paulvanbrenk.com/blog/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <link rel="self" href="http://feeds.feedburner.com/paulvanbrenk" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><title type="text">Links for 2009-06-12 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/2ng872zhwuU/paul.van.brenk" /><updated>2009-06-13T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-06-12</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.matasano.com/log/1749/typing-the-letters-a-e-s-into-your-code-youre-doing-it-wrong/"&gt;Matasano Chargen &amp;raquo; Blog Archive &amp;raquo; Typing The Letters A-E-S Into Your Code? You&amp;rsquo;re Doing It Wrong!&lt;/a&gt;&lt;br/&gt;
Encryption is hard, do not attempt!&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/2ng872zhwuU" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-06-12</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-10 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/M6xC2htFWBM/paul.van.brenk" /><updated>2009-06-11T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-06-10</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx"&gt;Breaking All The Rules with WCF&lt;/a&gt;&lt;br/&gt;
Scott has a nice article about the flexibility in WCF, which allows you to bend the rules when needed.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/ricom/archive/2009/06/05/visual-studio-2010-performance-part-2-text-editor.aspx"&gt;Visual Studio 2010 Performance Part 2: Text Editor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/M6xC2htFWBM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-06-10</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/foldrTADVz0/paul.van.brenk" /><updated>2009-06-10T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-06-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://haacked.com/archive/2009/06/09/aspnetmvc-vs10beta1-roadmap.aspx"&gt;ASP.NET MVC Installer For Visual Studio 2010 Beta 1 And Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2009/06/09/code-contracts-primer-part-2-handling-legacy-code.aspx"&gt;Code Contracts Primer &amp;ndash; Part 2: Handling Legacy Code - Derik Whittaker - Devlicio.us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/foldrTADVz0" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-06-09</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-08 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/W2sW95xxup0/paul.van.brenk" /><updated>2009-06-09T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-06-08</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2009/06/08/code-contracts-primer-part-1-introduction.aspx"&gt;Code Contracts Primer &amp;ndash; Part 1: Introduction - Derik Whittaker - Devlicio.us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/W2sW95xxup0" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-06-08</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/wpB9czk2NcU/paul.van.brenk" /><updated>2009-06-06T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-06-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.bluebytesoftware.com/blog/2009/06/05/AScalableReaderwriterSchemeWithOptimisticRetry.aspx"&gt;A scalable reader/writer scheme with optimistic retry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/wpB9czk2NcU" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-06-05</feedburner:origLink></entry><entry>
    <title>Using dynamic for evil</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/busXcKLqWdw/UsingDynamicForEvil.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,15e703f4-f2a1-42a4-b6c9-a02d914d9456.aspx</id>
    <published>2009-05-29T22:53:08.736-07:00</published>
    <updated>2009-05-29T22:56:55.6411461-07:00</updated>
    <category term="Development/C#" label="Development/C#" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentC.aspx" />
    <category term="Visual Studio 2010" label="Visual Studio 2010" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,VisualStudio2010.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The new dynamic keyword and the DLR in C# 4 and the .NET Framework 4.0 can be used&#xD;
for good, as displayed by IronRuby, IronPython and &lt;a href="http://www.nikhilk.net/CSharp-Dynamic-Programming-REST-Services.aspx"&gt;several&lt;/a&gt;&lt;a href="http://www.nikhilk.net/CSharp-Dynamic-Programming-JSON.aspx"&gt;other&lt;/a&gt;&lt;a href="http://blogs.msdn.com/vbteam/archive/2008/12/17/walkthrough-dynamic-programming-in-visual-basic-10-0-and-c-4-0-lisa-feigenbaum.aspx"&gt;samples&lt;/a&gt;. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
But it’s much more to fun to use it for evil… by making Reflection simple.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In C# 3.0 invoking members through reflection, was kind of odd and certainly not very&#xD;
readable.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;pre class="csharpcode"&gt;var employee = &lt;span class="kwrd"&gt;new&lt;/span&gt; Employee();&#xD;
var members = employee.GetType().GetMember(&lt;span class="str"&gt;"age"&lt;/span&gt;, MemberTypes.All,&#xD;
BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);&#xD;
((FieldInfo)members[0]).SetValue(employee, 30);&lt;/pre&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;blockquote&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
By wrapping all reflection magic in a dynamic object the same call would look like:&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;pre class="csharpcode"&gt;var employee = (&lt;span class="kwrd"&gt;new&lt;/span&gt; Employee()).AsDynamic();&#xD;
employee.Name = &lt;span class="str"&gt;"Paul van Brenk"&lt;/span&gt;; employee.Age = 30; Console.WriteLine(&lt;span class="str"&gt;"Employee&#xD;
{0} is {1} years old."&lt;/span&gt;, employee.Name, employee.Age);&lt;/pre&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
How this works is relatively easy.. by deriving a wrapper class from the new &lt;a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject(VS.100).aspx"&gt;DynamicObject&lt;/a&gt; and&#xD;
overriding the &lt;a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trysetmember(VS.100).aspx"&gt;TrySetMember&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trygetmember(VS.100).aspx"&gt;TryGetMember&lt;/a&gt; object&#xD;
to do the dirty work for you.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;pre class="csharpcode"&gt;&#xD;
            &lt;span class="kwrd"&gt;static&lt;/span&gt;&#xD;
            &lt;span class="kwrd"&gt;class&lt;/span&gt; DynamicHelper&#xD;
{ &lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; dynamic AsDynamic&lt;T&gt;&#xD;
(&lt;span class="kwrd"&gt;this&lt;/span&gt; T source) { &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;new&lt;/span&gt; DynamicReflection&lt;T&gt;&#xD;
(source); } &lt;span class="kwrd"&gt;class&lt;/span&gt; DynamicReflection&lt;T&gt;&#xD;
: DynamicObject { &lt;span class="kwrd"&gt;public&lt;/span&gt; DynamicReflection(T source) : &lt;span class="kwrd"&gt;base&lt;/span&gt;()&#xD;
{ &lt;span class="kwrd"&gt;this&lt;/span&gt;.Source = source; } &lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;override&lt;/span&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; TrySetMember(SetMemberBinder&#xD;
binder, &lt;span class="kwrd"&gt;object&lt;/span&gt;&lt;span class="kwrd"&gt;value&lt;/span&gt;) { &lt;span class="rem"&gt;//&#xD;
find the member&lt;/span&gt; MemberInfo member; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!TryFindMember(binder.Name, &lt;span class="kwrd"&gt;out&lt;/span&gt; member))&#xD;
{ &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;false&lt;/span&gt;; } &lt;span class="rem"&gt;//&#xD;
we can only set values to fields and properties&lt;/span&gt;&lt;span class="rem"&gt;// using&#xD;
reflection&lt;/span&gt;&lt;span class="kwrd"&gt;switch&lt;/span&gt; (member.MemberType) { &lt;span class="rem"&gt;/*&#xD;
todo: check the type of the incoming value and the type of &lt;/span&gt;&lt;span class="rem"&gt; the&#xD;
property. */&lt;/span&gt;&lt;span class="kwrd"&gt;case&lt;/span&gt; (MemberTypes.Field): ((FieldInfo)member).SetValue(Source, &lt;span class="kwrd"&gt;value&lt;/span&gt;); &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;true&lt;/span&gt;; &lt;span class="kwrd"&gt;case&lt;/span&gt; (MemberTypes.Property):&#xD;
((PropertyInfo)member).SetValue(Source, &lt;span class="kwrd"&gt;value&lt;/span&gt;,&lt;span class="rem"&gt;/*ndex*/&lt;/span&gt;&lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;//&#xD;
we don't support indexed properties&lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;true&lt;/span&gt;;&#xD;
} &lt;span class="rem"&gt;// didn't work&lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;false&lt;/span&gt;;&#xD;
} &lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;span class="kwrd"&gt;override&lt;/span&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; TryGetMember(GetMemberBinder&#xD;
binder, &lt;span class="kwrd"&gt;out&lt;/span&gt;&lt;span class="kwrd"&gt;object&lt;/span&gt; result) { &lt;span class="rem"&gt;//&#xD;
find the member&lt;/span&gt; MemberInfo member; &lt;span class="kwrd"&gt;if&lt;/span&gt; (!TryFindMember(binder.Name, &lt;span class="kwrd"&gt;out&lt;/span&gt; member))&#xD;
{ result = &lt;span class="kwrd"&gt;null&lt;/span&gt;; &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;false&lt;/span&gt;;&#xD;
} &lt;span class="rem"&gt;// we can only set values to fields and properties&lt;/span&gt;&lt;span class="rem"&gt;//&#xD;
using reflection&lt;/span&gt;&lt;span class="kwrd"&gt;switch&lt;/span&gt; (member.MemberType) { &lt;span class="rem"&gt;/*&#xD;
todo: check the type of the incoming value and the type of &lt;/span&gt;&lt;span class="rem"&gt; the&#xD;
property. */&lt;/span&gt;&lt;span class="kwrd"&gt;case&lt;/span&gt; (MemberTypes.Field): result = ((FieldInfo)member).GetValue(Source); &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;true&lt;/span&gt;; &lt;span class="kwrd"&gt;case&lt;/span&gt; (MemberTypes.Property):&#xD;
result = ((PropertyInfo)member).GetValue(Source,&lt;span class="rem"&gt;/*ndex*/&lt;/span&gt;&lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;//&#xD;
we don't support indexed properties&lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;true&lt;/span&gt;;&#xD;
} &lt;span class="rem"&gt;// didn't work&lt;/span&gt; result = &lt;span class="kwrd"&gt;null&lt;/span&gt;; &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;false&lt;/span&gt;;&#xD;
} &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; TryFindMember(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;out&lt;/span&gt; MemberInfo&#xD;
memberInfo) { &lt;span class="rem"&gt;// find the member&lt;/span&gt; var members = Type.GetMember(name,&#xD;
MemberTypes.All, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic&#xD;
| BindingFlags.Public); &lt;span class="rem"&gt;// more than 1 not supported for now&lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (members.Length&#xD;
!= 1) { memberInfo = &lt;span class="kwrd"&gt;null&lt;/span&gt;; &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;false&lt;/span&gt;;&#xD;
} memberInfo = members[0]; &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;true&lt;/span&gt;;&#xD;
} &lt;span class="kwrd"&gt;private&lt;/span&gt; Type Type { get { &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T);&#xD;
} } &lt;span class="kwrd"&gt;public&lt;/span&gt; T Source { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set;&#xD;
} } }&#xD;
&lt;/T&gt;&lt;/T&gt;&lt;/T&gt;&lt;/pre&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
More info about implementing dynamic objects and behavior can be found on &lt;a href="http://www.codeplex.com/dlr"&gt;the&#xD;
DLR CodePlex site&lt;/a&gt; (esp. &lt;a href="http://dlr.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=68818"&gt;Getting&#xD;
Started with the DLR as a Library Author&lt;/a&gt;).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Source: &lt;a href="http://www.paulvanbrenk.com/blog/content/binary/Program.cs[1].txt"&gt;Program.cs.txt&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=15e703f4-f2a1-42a4-b6c9-a02d914d9456"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YLKk-sRI5qbR-4KqJ76BbxfQktA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YLKk-sRI5qbR-4KqJ76BbxfQktA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YLKk-sRI5qbR-4KqJ76BbxfQktA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YLKk-sRI5qbR-4KqJ76BbxfQktA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=busXcKLqWdw:_WpmVdcCN7M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=busXcKLqWdw:_WpmVdcCN7M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=busXcKLqWdw:_WpmVdcCN7M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=busXcKLqWdw:_WpmVdcCN7M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/busXcKLqWdw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/05/30/UsingDynamicForEvil.aspx</feedburner:origLink></entry>
  <entry><title type="text">Links for 2009-05-25 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/t1HlBfgTgxo/paul.van.brenk" /><updated>2009-05-26T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-05-25</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.schneier.com/blog/archives/2009/05/secret_question.html"&gt;Schneier on Security: Secret Questions&lt;/a&gt;&lt;br/&gt;
secret questions as a password backup are a huge seciurity hole&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/t1HlBfgTgxo" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-05-25</feedburner:origLink></entry><entry><title type="text">Links for 2009-05-23 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/ZMttw3KXN9Y/paul.van.brenk" /><updated>2009-05-24T00:00:00-07:00</updated><id>http://del.icio.us/paul.van.brenk#2009-05-23</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx"&gt;Code Contracts&lt;/a&gt;&lt;br/&gt;
Tools to use with the new codecontracts in vs2010&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/bclteam/archive/2009/05/22/what-s-new-in-the-bcl-in-net-4-beta-1-justin-van-patten.aspx"&gt;BCL Team Blog : What's New in the BCL in .NET 4 Beta 1 [Justin Van Patten]&lt;/a&gt;&lt;br/&gt;
Good overview of the new features in the BCL for 4.0&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/ZMttw3KXN9Y" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/paul.van.brenk#2009-05-23</feedburner:origLink></entry><entry>
    <title>.NET Services March 2009 CTP</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/YTr3eA3QBJo/NETServicesMarch2009CTP.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,ce61638b-babb-48fa-9179-b6c8c0c782d9.aspx</id>
    <published>2009-04-08T10:14:36.1375234-07:00</published>
    <updated>2009-04-08T11:13:36.2273082-07:00</updated>
    <category term="Development/Services" label="Development/Services" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentServices.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://blogs.msdn.com/clemensv"&gt;Clemens&lt;/a&gt; has posted a number of interesting&#xD;
posts about the &lt;a href="http://msdn.microsoft.com/en-us/azure/netservices.aspx"&gt;.NET&#xD;
Services March 2009 CTP&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8d1d1d5e-1332-4186-b33f-26d053759e49&amp;amp;displaylang=en"&gt;SDK&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Introduction and new features&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/03/31/net-services-march-2009-ctp-ndash-ldquo-milestone-5-rdquo.aspx"&gt;"Milestone&#xD;
5"&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/03/31/net-services-march-2009-ctp-ndash-the-service-bus-namespace.aspx"&gt;The&#xD;
Service Bus Namespace&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Queues and Service Bus Routers &#xD;
&lt;br&gt;&lt;/strong&gt;Both are new for this release and look very promising for a number of (reliable)&#xD;
messaging scenarios between parties separated with various NAT and firewall devices.&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/01/net-services-march-2009-ctp-service-bus-routers-and-queues-part-1-fundamentals.aspx"&gt;Part&#xD;
1: Fundamentals&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/02/net-services-march-2009-ctp-service-bus-routers-and-queues-part-2-queue-policies.aspx"&gt;Part&#xD;
2: Queue Policies&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/02/net-services-march-2009-ctp-service-bus-routers-and-queues-part-3-the-rest-queue-protocol.aspx"&gt;Part&#xD;
3: The REST Queue Protocol&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/06/net-services-march-2009-ctp-service-bus-routers-and-queues-part-4-the-rest-queue-protocol-in-code-snippets.aspx"&gt;Part&#xD;
4: The REST Queue Protocol in Code Snippets&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/06/the-net-service-bus-rest-protocol-for-queues-ndash-some-comments-some-answers.aspx"&gt;The&#xD;
.NET Service Bus REST protocol for Queues - Some comments, some answers&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Miscellaneous&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://blogs.msdn.com/clemensv/archive/2009/04/05/net-services-march-2009-ctp-host-a-public-website-at-the-kitchen-table-or-from-a-coffee-shop-no-kidding.aspx"&gt;Host&#xD;
a Public Website At The Kitchen Table or from a Coffee Shop! No Kidding.&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
To get a great overview of all these posts you can also watch the recording of &lt;a href="http://videos.visitmix.com/MIX09/T03F"&gt;his&#xD;
Mix09 session&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is an ongoing series, so I’ll update this post when he posts a new article. (Or&#xD;
you can just subscribe on &lt;a href="http://blogs.msdn.com/clemensv"&gt;his site&lt;/a&gt;.)&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=ce61638b-babb-48fa-9179-b6c8c0c782d9"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4AI6jLp7FypIJpjZM4B-MERTcjI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4AI6jLp7FypIJpjZM4B-MERTcjI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4AI6jLp7FypIJpjZM4B-MERTcjI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4AI6jLp7FypIJpjZM4B-MERTcjI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=YTr3eA3QBJo:ZjOxIiBZfGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=YTr3eA3QBJo:ZjOxIiBZfGE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=YTr3eA3QBJo:ZjOxIiBZfGE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=YTr3eA3QBJo:ZjOxIiBZfGE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/YTr3eA3QBJo" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/04/08/NETServicesMarch2009CTP.aspx</feedburner:origLink></entry>
  <entry>
    <title>Book: Concurrent Programming on Windows</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/hwygyeML0tM/BookConcurrentProgrammingOnWindows.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,141634ed-e61a-4289-8c20-0aecaf14d825.aspx</id>
    <published>2009-04-03T11:58:48.0347443-07:00</published>
    <updated>2009-04-03T11:58:48.0347443-07:00</updated>
    <category term="Reading" label="Reading" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,Reading.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.amazon.com/gp/product/032143482X?ie=UTF8&amp;amp;tag=paulvanbrenkc-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=032143482X"&gt;&#xD;
            &lt;img style="border-bottom: 0px; border-left: 0px; margin: 2px; display: inline; border-top: 0px; border-right: 0px" title="412yJeVFALL[1]" border="0" alt="412yJeVFALL[1]" align="left" src="http://www.paulvanbrenk.com/blog/content/binary/WindowsLiveWriter/BookConcurrentProgrammingonWindows_12700/412yJeVFALL%5B1%5D_3.jpg" width="152" height="200"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt; Today&#xD;
I finally finished reading &lt;a href="http://www.amazon.com/gp/product/032143482X?ie=UTF8&amp;amp;tag=paulvanbrenkc-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=032143482X"&gt;Concurrent&#xD;
Programming on Windows&lt;/a&gt; by &lt;a href="http://www.bluebytesoftware.com/blog/"&gt;Joe&#xD;
Duffy&lt;/a&gt;. It took me this long, not because it’s a boring book (it’s not!), but because&#xD;
it covers a lot of ground and a goes into a lot depth.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is not a book for someone looking for a 3-step program to start writing flawless&#xD;
concurrent programs, simply because there is no such program. As Joe points out throughout&#xD;
the book, writing concurrent programs is hard and error prone. It’s definitely not&#xD;
a simple case of running running all the items in your &lt;em&gt;for&lt;/em&gt; or &lt;em&gt;foreach&lt;/em&gt; loop&#xD;
on a new thread and automagically your program got a n-times faster.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Amount of subjects the book covers easily explains it’s size (900 pages), it covers&#xD;
a wide range of subjects from low level Memory models, via threads and lock object,&#xD;
to concurrent containers and finally to Parallel Containers for .NET CTP. I think&#xD;
this is a must read book for all serious developers, who in the near or not so near&#xD;
future expect to be writing concurrent programs. Considering the future of CPU’s and&#xD;
cloudcomputing, I believe that will be all of us.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=141634ed-e61a-4289-8c20-0aecaf14d825"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5Wl1Yl427TxnbMdHCjlaeUPn_8M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Wl1Yl427TxnbMdHCjlaeUPn_8M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5Wl1Yl427TxnbMdHCjlaeUPn_8M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Wl1Yl427TxnbMdHCjlaeUPn_8M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=hwygyeML0tM:XfCwZDSwXko:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=hwygyeML0tM:XfCwZDSwXko:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=hwygyeML0tM:XfCwZDSwXko:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=hwygyeML0tM:XfCwZDSwXko:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/hwygyeML0tM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/04/03/BookConcurrentProgrammingOnWindows.aspx</feedburner:origLink></entry>
  <entry>
    <title>Single Click dasBlog installation</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/wvoGkoigF2Q/SingleClickDasBlogInstallation.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,30b9ba11-0a47-4a76-bd1f-4b506973c00c.aspx</id>
    <published>2009-03-18T09:20:31.842-07:00</published>
    <updated>2009-03-18T09:28:26.5415519-07:00</updated>
    <category term="dasBlog" label="dasBlog" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,dasBlog.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;p&gt;
Announced today: the &lt;a href="http://www.microsoft.com/web/gallery"&gt;Microsoft Web
Application Gallery&lt;/a&gt;. Combined with the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=146503"&gt;WebPI
2.0&lt;/a&gt; it's a single click experience for installing popular and free applications
on IIS, where the tool takes care of all dependencies.
&lt;/p&gt;
&lt;p&gt;
For example use this button to install the most recent (2.3) version of dasBlog:&lt;br /&gt;
&lt;a href="http://www.microsoft.com/web/gallery/Install.aspx?appsxml=www.microsoft.com%2Fweb%2Fwebpi%2F2.0%2FWebApplicationList.xml&amp;appid=100"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install DasBlog now with the Web Platform Installer" border="0" alt="Install DasBlog now with the Web Platform Installer" src="http://www.paulvanbrenk.com/blog/content/binary/wpiBadgeGreen_3.png" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
More info &lt;a href="http://www.hanselman.com/blog/MicrosoftWebPlatformWebApplicationGalleryWebPlatformInstallerAndDasBlog.aspx"&gt;@ScottHanselman&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=30b9ba11-0a47-4a76-bd1f-4b506973c00c" /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jk30GHb4IIIX_m9wybXpPvcOqe4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jk30GHb4IIIX_m9wybXpPvcOqe4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jk30GHb4IIIX_m9wybXpPvcOqe4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jk30GHb4IIIX_m9wybXpPvcOqe4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=wvoGkoigF2Q:uZbT6fYvOGk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=wvoGkoigF2Q:uZbT6fYvOGk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=wvoGkoigF2Q:uZbT6fYvOGk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=wvoGkoigF2Q:uZbT6fYvOGk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/wvoGkoigF2Q" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/03/18/SingleClickDasBlogInstallation.aspx</feedburner:origLink></entry>
  <entry>
    <title>Updated to dasBlog 2.3</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/4HCF7EG1mbU/UpdatedToDasBlog23.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,b84bc5bd-d852-424a-85ee-fe880c34a05f.aspx</id>
    <published>2009-03-16T01:38:40.3472117-07:00</published>
    <updated>2009-03-16T01:48:25.008368-07:00</updated>
    <category term="dasBlog" label="dasBlog" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,dasBlog.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
In anticipation of a big announcement on Wednesday we decided to do an interim release&#xD;
of dasBlog 2.3.9074.18820. This is a service release containing only bugfixes. Until&#xD;
Wednesday you can get this release on &lt;a href="http://dasblog.info/DailyBuilds.aspx"&gt;the&#xD;
daily build page&lt;/a&gt; (scroll to the bottom) or on &lt;a href="http://dasblog.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24783"&gt;CodePlex&lt;/a&gt;,&#xD;
after Wednesday there is an additional distribution and installation method.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=b84bc5bd-d852-424a-85ee-fe880c34a05f"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V5KyhiLSB__Wg7IzfEocUXDfUQM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V5KyhiLSB__Wg7IzfEocUXDfUQM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V5KyhiLSB__Wg7IzfEocUXDfUQM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V5KyhiLSB__Wg7IzfEocUXDfUQM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=4HCF7EG1mbU:T1QhZNOg5J0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=4HCF7EG1mbU:T1QhZNOg5J0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=4HCF7EG1mbU:T1QhZNOg5J0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=4HCF7EG1mbU:T1QhZNOg5J0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/4HCF7EG1mbU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/03/16/UpdatedToDasBlog23.aspx</feedburner:origLink></entry>
  <entry>
    <title>dasBlog on Windows Azure (local for now)</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/XMtHIiQOAaY/dasBlogOnWindowsAzureLocalForNow.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,44a30707-a6a1-4335-aa19-e0372ab7f4a6.aspx</id>
    <published>2009-02-28T08:59:57.4896038-08:00</published>
    <updated>2009-02-28T09:04:44.6020823-08:00</updated>
    <category term="Development/dasBlog" label="Development/dasBlog" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentdasBlog.aspx" />
    <category term="Development/WindowsAzure" label="Development/WindowsAzure" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentWindowsAzure.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-bottom: 0px; border-left: 0px; margin: 2px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.paulvanbrenk.com/blog/content/binary/WindowsLiveWriter/dasBlogonWindowsAzurelocalfornow_F88C/image_5.png" width="1043" height="812"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It doesn’t let you save anything, Windows Azure doesn’t like it when you try to write&#xD;
to the filesystem, but it shows the posts &amp;amp; loads the theme. And with only minor&#xD;
changes!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I used the manual from “Cloudy in Seattle” &lt;a href="http://blogs.msdn.com/jnak/archive/2009/02/05/using-an-existing-asp-net-web-application-as-a-windows-azure-web-role.aspx"&gt;to&#xD;
get an existing ASP.NET app running on Windows Azure&lt;/a&gt;, to get started. Because&#xD;
ASP.NET is an older application we still had a referce to MSBuild 8.0 in the proj.&#xD;
file and the Azure packaging tool didn’t like that so I removed the following from&#xD;
the web project.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="csharpcode"&gt;&#xD;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&#xD;
          &lt;span class="html"&gt;Import&lt;/span&gt;&#xD;
          &lt;span class="attr"&gt;Project&lt;/span&gt;&#xD;
          &lt;span class="kwrd"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets"&lt;/span&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;span class="attr"&gt;Condition&lt;/span&gt;&#xD;
          &lt;span class="kwrd"&gt;=" '$(Solutions.VSVersion)'&#xD;
== '8.0'"&lt;/span&gt;&#xD;
          &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
Further I added a dummy log file to the logs directory to make sure that directory&#xD;
was avaialble got created. And made sure all files which are required have the Build&#xD;
action set to content:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-bottom: 0px; border-left: 0px; margin: 2px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.paulvanbrenk.com/blog/content/binary/WindowsLiveWriter/dasBlogonWindowsAzurelocalfornow_F88C/image3.png" width="380" height="249"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The final thing to do is make sure you use the IIS 7 web.config file and disable tracing.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="csharpcode"&gt;&#xD;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&#xD;
          &lt;span class="html"&gt;trace&lt;/span&gt;&#xD;
          &lt;span class="attr"&gt;enabled&lt;/span&gt;&#xD;
          &lt;span class="kwrd"&gt;="false"&lt;/span&gt;&#xD;
          &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=44a30707-a6a1-4335-aa19-e0372ab7f4a6"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ClTBaN4vugeVqW9YvqXV3Byot7E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ClTBaN4vugeVqW9YvqXV3Byot7E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ClTBaN4vugeVqW9YvqXV3Byot7E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ClTBaN4vugeVqW9YvqXV3Byot7E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=XMtHIiQOAaY:DIid7fDZbd0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=XMtHIiQOAaY:DIid7fDZbd0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulvanbrenk?a=XMtHIiQOAaY:DIid7fDZbd0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulvanbrenk?i=XMtHIiQOAaY:DIid7fDZbd0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/XMtHIiQOAaY" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/02/28/dasBlogOnWindowsAzureLocalForNow.aspx</feedburner:origLink></entry>
  <entry>
    <title>Project Geneva Overview</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/0hopINe56uU/ProjectGenevaOverview.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,62d1603d-43b0-4005-808a-51aa4f97ca89.aspx</id>
    <published>2009-02-24T02:09:28.6235867-08:00</published>
    <updated>2009-02-24T02:10:41.2571867-08:00</updated>
    <category term="Security" label="Security" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,Security.aspx" />
    <category term="Services" label="Services" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,Services.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
In November last year &lt;a href="http://www.identityblog.com/?p=1019"&gt;Kim Cameron&lt;/a&gt; wrote&#xD;
a series of posts about Project Geneva. It’s a little late, but still very interesting.&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a title="Project Geneva - Part 1" href="http://www.identityblog.com/?p=1019"&gt;Project&#xD;
Geneva - Part 1&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.identityblog.com/?p=1020"&gt;Project Geneva - Part 2&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.identityblog.com/?p=1021"&gt;Project Geneva - Part 3&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.identityblog.com/?p=1024"&gt;Project Geneva - Part 4&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://www.identityblog.com/?p=1026"&gt;Project Geneva - Part 5&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
And the PDF with the &lt;a href="http://www.identityblog.com/?p=1035"&gt;Identity Software&#xD;
+ Services Roadmap&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=62d1603d-43b0-4005-808a-51aa4f97ca89"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5sg-QZAFpG4aDlBYdafS8sbzNV0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5sg-QZAFpG4aDlBYdafS8sbzNV0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5sg-QZAFpG4aDlBYdafS8sbzNV0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5sg-QZAFpG4aDlBYdafS8sbzNV0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=chL4daqq"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=JO2LM4Z4"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=ckBsxCKQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?i=ckBsxCKQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/0hopINe56uU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/02/24/ProjectGenevaOverview.aspx</feedburner:origLink></entry>
  <entry>
    <title>How I build the SilverLight LiveStream</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/g3U-pnn7Xcg/HowIBuildTheSilverLightLiveStream.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,69cb2878-cfbe-4d1f-9838-0cb29c397958.aspx</id>
    <published>2009-02-20T07:42:30.7038774-08:00</published>
    <updated>2009-02-20T07:42:30.7038774-08:00</updated>
    <category term="Development/SilverLight" label="Development/SilverLight" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentSilverLight.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Since today there is a beta version of a SilverLight livestream control on &lt;a href="http://www.paulvanbrenk.com/"&gt;the&#xD;
homepage of this site&lt;/a&gt;, which shows my activity on &lt;a href="http://twitter.com/paulvanbrenk/"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.delicious.com/paul.van.brenk"&gt;Delicious&lt;/a&gt; and &lt;a href="/blog"&gt;this&#xD;
blog&lt;/a&gt;. It’s not the most original idea, but it was a small enough project to learn&#xD;
something about SilverLight.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Loading the items&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You can use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webclient(VS.95).aspx"&gt;WebClient&lt;/a&gt; class&#xD;
(which internally uses the &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webrequest(VS.95).aspx"&gt;WebRequest&lt;/a&gt; class)&#xD;
to load data from the internet, this has some restrictions. To successfully connect&#xD;
to a site different from the site where the control is hosted, the site has to have&#xD;
a clientaccesspolicy.xml file or a crossdomain.xml which allows remote connections.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For performance reasons all methods on the WebClient class are asynchronous and since&#xD;
I request 3 different streams, I request those using using workitems in the ThreadPool&#xD;
(from a Timerevent every 5 minutes).&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;pre class="csharpcode"&gt;&#xD;
            &lt;span class="kwrd"&gt;public&lt;/span&gt;&#xD;
            &lt;span class="kwrd"&gt;void&lt;/span&gt; ProcessFeeds(&lt;span class="kwrd"&gt;object&lt;/span&gt; state)&#xD;
{ &lt;span class="rem"&gt;// twitter crossdomain.xml is very strict, so we have to have&#xD;
to &lt;/span&gt;&lt;span class="rem"&gt;// use a proxy&lt;/span&gt; ThreadPool.QueueUserWorkItem(&lt;span class="kwrd"&gt;new&lt;/span&gt; WaitCallback(StartLoadFeed), &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"http://feeds2.feedburner.com/paulvanbrenk/twitter"&lt;/span&gt;));&#xD;
ThreadPool.QueueUserWorkItem(&lt;span class="kwrd"&gt;new&lt;/span&gt; WaitCallback(StartLoadFeed), &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"http://feeds2.feedburner.com/paulvanbrenk/clean"&lt;/span&gt;));&#xD;
ThreadPool.QueueUserWorkItem(&lt;span class="kwrd"&gt;new&lt;/span&gt; WaitCallback(StartLoadFeed), &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"http://feeds.delicious.com/v2/rss/paul.van.brenk"&lt;/span&gt;));&#xD;
} &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; StartLoadFeed(&lt;span class="kwrd"&gt;object&lt;/span&gt; url)&#xD;
{ WebClient client = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebClient(); client.OpenReadCompleted&#xD;
+= &lt;span class="kwrd"&gt;new&lt;/span&gt; OpenReadCompletedEventHandler(client_OpenReadCompleted);&#xD;
client.OpenReadAsync((Uri)url); } &lt;span class="kwrd"&gt;void&lt;/span&gt; client_OpenReadCompleted(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender,&#xD;
OpenReadCompletedEventArgs e) { SyndicationFeed feed; &lt;span class="kwrd"&gt;using&lt;/span&gt; (var&#xD;
xReader = XmlReader.Create(e.Result)) { feed = SyndicationFeed.Load(xReader); } &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var&#xD;
item &lt;span class="kwrd"&gt;in&lt;/span&gt; feed.Items) { Dispatcher.BeginInvoke(&lt;span class="kwrd"&gt;new&lt;/span&gt; AddItem(&lt;span class="kwrd"&gt;delegate&lt;/span&gt;(FeedItem&#xD;
x) { feedItems.Add(x); }), FeedItem.Create(item)); } } &lt;span class="kwrd"&gt;private&lt;/span&gt;&lt;span class="kwrd"&gt;delegate&lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; AddItem(FeedItem&#xD;
item); &lt;/pre&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
We need to use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher(VS.95).aspx"&gt;Dispatcher&lt;/a&gt; to&#xD;
add the items to the collection, since the collection is bound to a UI element, which&#xD;
responds to changes in the collection.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Binding the items to the UI&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The items are bound to the panel which renders them, using the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext(VS.95).aspx"&gt;DataContext&lt;/a&gt;.&#xD;
This makes it easy to use the Binding Markup Extension to extract information from&#xD;
the bound items and allows the panel to monitor the collection for changes (if the&#xD;
collection implements the &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.specialized.inotifycollectionchanged(VS.95).aspx"&gt;INotifyCollectionChanged&lt;/a&gt; interface). &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Render the items&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The items are rendered using an &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx"&gt;ItemsControl&lt;/a&gt;,&#xD;
with the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemspanel(VS.95).aspx"&gt;ItemsPanelTemplate&lt;/a&gt; set&#xD;
the &lt;a href="http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201&amp;amp;referringTitle=Home&amp;amp;ANCHOR#WrapPanel"&gt;WrapPanel&lt;/a&gt; from&#xD;
the &lt;a href="http://www.codeplex.com/Silverlight"&gt;SilverLight Toolkit&lt;/a&gt;, this way&#xD;
the items are wrapped over multiple lines. The items are renderd using a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.datatemplate(VS.95).aspx"&gt;DataTemplate&lt;/a&gt; in&#xD;
the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemtemplate(VS.95).aspx"&gt;ItemsTemplate&lt;/a&gt;.&#xD;
The image for each type of feed is converted from the type of the item using to an &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.imagebrush(VS.95).aspx"&gt;ImageBrush&lt;/a&gt; using&#xD;
a class implementing the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(VS.95).aspx"&gt;IValueConverter&lt;/a&gt; interface.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Improvements:&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
Implement an ICollectionView instead of wrapping an ObservableCollection&lt;strong&gt;&lt;/strong&gt;in&#xD;
a custom collection; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Use some smart caching for the feeditem collection; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Add an info button, instead of the the info in the bottom left; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Improved the design; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Add filtering and sorting; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Make the SilverLight plugin resize with the browser; &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Support more feed types like flickr and youtube. &#xD;
&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
[Download the project from &lt;a title="http://code.msdn.microsoft.com/LiveStream" href="http://code.msdn.microsoft.com/LiveStream"&gt;http://code.msdn.microsoft.com/LiveStream&lt;/a&gt;]&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=69cb2878-cfbe-4d1f-9838-0cb29c397958"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nVWIYqvYVbmwu_bELrgxRNtmx-0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nVWIYqvYVbmwu_bELrgxRNtmx-0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nVWIYqvYVbmwu_bELrgxRNtmx-0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nVWIYqvYVbmwu_bELrgxRNtmx-0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=20BfrYnH"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=jNTIsvhe"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=XAO0oB01"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?i=XAO0oB01" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/g3U-pnn7Xcg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/02/20/HowIBuildTheSilverLightLiveStream.aspx</feedburner:origLink></entry>
  <entry>
    <title>ASP.NET MVC Experience and what data to send to the view</title>
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/paulvanbrenk/~3/Zce__ZWo6jI/ASPNETMVCExperienceAndWhatDataToSendToTheView.aspx" />
    <id>http://www.paulvanbrenk.com/blog/PermaLink,guid,a28c5a72-6aa9-474e-851b-2cd9f303729b.aspx</id>
    <published>2009-02-18T08:56:48.6730634-08:00</published>
    <updated>2009-02-18T09:10:14.0144357-08:00</updated>
    <category term="Development/ASP.NET" label="Development/ASP.NET" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,DevelopmentASPNET.aspx" />
    <category term="Security" label="Security" scheme="http://www.paulvanbrenk.com/blog/CategoryView,category,Security.aspx" />
    <author>
      <name>Paul van Brenk</name>
    </author>
    <content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://wildermuth.com/"&gt;Shawn Wildermuth&lt;/a&gt; wrote about his experience using&#xD;
ASP.NET MVC for a new site he developed.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://wildermuth.com/2009/01/28/Building_AgiliTrain_Part_1_-_Why_ASP_NET_MVC"&gt;Part&#xD;
1: Why ASP.NET MVC&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://wildermuth.com/2009/01/31/Building_AgiliTrain_Part_2_-_MVC_in_Action"&gt;Part&#xD;
2: MVC in action&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;a href="http://wildermuth.com/2009/02/05/Building_AgiliTrain_Part_3_-_Data_Validation"&gt;Part&#xD;
3: Datavalidation&lt;/a&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the things he does is sending "complex" models to the view to render, I'm not&#xD;
sure that's something you should do. I believe that you should stick so simple strings&#xD;
and have the controller do all the heavy lifting. It's a slippery slope you're stepping&#xD;
on, before you know, you're sending 'models' straight from the Entity Model to the&#xD;
view.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Not sure if that's really feasible (or the simplest/easiest) in all situations, but&#xD;
it ensure a clean separation between business logic in the controller and the model&#xD;
and the UI in the view.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
More info:&lt;a rel="nofollow" class="taggedlink" href="http://www.cs.usfca.edu/%7Eparrt/papers/mvc.templates.pdf"&gt;Enforcing&#xD;
Strict Model-View Separation in Template Engines&lt;/a&gt; (pdf)&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.paulvanbrenk.com/blog/aggbug.ashx?id=a28c5a72-6aa9-474e-851b-2cd9f303729b"&gt;&lt;/img&gt;&#xD;
      &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bW7UBC6HBsp0S0Nuhy9PPCIHzRU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bW7UBC6HBsp0S0Nuhy9PPCIHzRU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bW7UBC6HBsp0S0Nuhy9PPCIHzRU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bW7UBC6HBsp0S0Nuhy9PPCIHzRU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=qXDapoXH"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=A0RKlgFa"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?d=43" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/paulvanbrenk?a=ZHp1Ykqy"&gt;&lt;img src="http://feeds.feedburner.com/~f/paulvanbrenk?i=ZHp1Ykqy" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulvanbrenk/~4/Zce__ZWo6jI" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://www.paulvanbrenk.com/blog/2009/02/18/ASPNETMVCExperienceAndWhatDataToSendToTheView.aspx</feedburner:origLink></entry>
</feed>
