<?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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>http://jonas.follesoe.no</title>
    <link>http://jonas.follesoe.no/</link>
    <description>Programming, Life and everything in between</description>
    <image>
      <url>http://jonas.follesoe.no/content/binary/roskilde.jpg</url>
      <title>http://jonas.follesoe.no</title>
      <link>http://jonas.follesoe.no/</link>
    </image>
    <language>en-us</language>
    <copyright>Jonas Follesø</copyright>
    <lastBuildDate>Sat, 17 Oct 2009 08:45:55 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7067.0</generator>
    <managingEditor>jonas@follesoe.no</managingEditor>
    <webMaster>jonas@follesoe.no</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/follesoe" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=a81e0deb-423c-4d1a-8c62-c05356992a80</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,a81e0deb-423c-4d1a-8c62-c05356992a80.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,a81e0deb-423c-4d1a-8c62-c05356992a80.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=a81e0deb-423c-4d1a-8c62-c05356992a80</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Speaking at NNUG Kristiansand and Smidig 2009 next week</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,a81e0deb-423c-4d1a-8c62-c05356992a80.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/0lI6316GaJ4/SpeakingAtNNUGKristiansandAndSmidig2009NextWeek.aspx</link>
      <pubDate>Sat, 17 Oct 2009 08:45:55 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
On Wednesday 21 October I will be visiting the Kristiansand chapter of &lt;a href="http://nnug.no"&gt;NNUG&lt;/a&gt; to&#xD;
give two Silverlight presentations. The first will be about the MVVM design pattern,&#xD;
and the second on building business focused applications using .NET RIA Services.&#xD;
After the NNUG meeting there will be a geekbeer get-together at Patrick’s. &lt;a href="http://nnug.no/Avdelinger/Kristiansand/Moter2/NNUG-Kristiansand--Oktober-2009/"&gt;Details&#xD;
and registration for the meeting is up on the NNUG site&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
On Thursday and Friday (22-23 October) I will be attending the &lt;a href="http://smidig2009.no"&gt;Smidig&#xD;
2009&lt;/a&gt; (Agile 2009) conference in Oslo. This will be my first time attending the&#xD;
Smidig conference, and I’m really looking forward to it. The format of the conference&#xD;
is 4 lightning talks pr hour before lunch, and open spaces after lunch. Judging by&#xD;
the number of submitted talks I think it is going to be a really interesting conference,&#xD;
and I hope to learn allot about how to run successful agile software projects. I’m&#xD;
also a big fan of open spaces and the interaction between conference attendees it&#xD;
enables.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Since I was planning to attend the conference I made a last minute decision to submit &lt;a href="http://smidig2009.no/talks/111"&gt;a&#xD;
talk on UX prototyping in agile projects&lt;/a&gt; using &lt;a href="http://balsamiq.com"&gt;Balsamiq&lt;/a&gt; and &lt;a href="http://www.microsoft.com/expression/products/SketchFlow_OverView.aspx"&gt;SketchFlow&lt;/a&gt;.&#xD;
The talk got accepted, which means I will not only be attending – I will also be speaking&#xD;
at the conference!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’m looking forward to doing some presentations again, and I hope to see you in Kristiansand&#xD;
or Oslo next week!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;(Time-lapse video taken by &lt;a href="http://twitter.com/petesamuel"&gt;@petesamuel&lt;/a&gt; from&#xD;
a presentation I gave earlier this year)&lt;/em&gt; &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;object width="425" height="344"&gt;&#xD;
            &lt;param name="movie" value="http://www.youtube.com/v/Xa5FTHhFHGs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&#xD;
            &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&#xD;
            &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
            &lt;embed src="http://www.youtube.com/v/Xa5FTHhFHGs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&#xD;
            &lt;/embed&gt;&#xD;
          &lt;/object&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=a81e0deb-423c-4d1a-8c62-c05356992a80"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=0lI6316GaJ4:uo4KaCVVbAE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=0lI6316GaJ4:uo4KaCVVbAE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=0lI6316GaJ4:uo4KaCVVbAE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=0lI6316GaJ4:uo4KaCVVbAE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/0lI6316GaJ4" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,a81e0deb-423c-4d1a-8c62-c05356992a80.aspx</comments>
      <category>Agile</category>
      <category>Conferences</category>
      <category>NNUG</category>
      <category>Presentation</category>
      <category>UX</category>
    <feedburner:origLink>http://jonas.follesoe.no/SpeakingAtNNUGKristiansandAndSmidig2009NextWeek.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=87563e28-a46e-4daa-9f6f-de546186560e</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,87563e28-a46e-4daa-9f6f-de546186560e.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,87563e28-a46e-4daa-9f6f-de546186560e.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=87563e28-a46e-4daa-9f6f-de546186560e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Agile UX development using low-fidelity prototypes</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,87563e28-a46e-4daa-9f6f-de546186560e.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/rX-6yScbYMg/AgileUXDevelopmentUsingLowfidelityPrototypes.aspx</link>
      <pubDate>Sat, 26 Sep 2009 18:15:47 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
For me agile software projects is all about maximizing the customers’ value of the&#xD;
software being built by encouraging and incorporating feedback, new features and change&#xD;
requests as quickly and cheaply as possible. To achieve agility we adopt agile project&#xD;
process like &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt;,&#xD;
which helps us manage and prioritize the features of the software we are building&#xD;
into short iterations. To build a flexible code base that enables us to quickly add,&#xD;
remove or change features throughout the project we adopt agile development practices&#xD;
like &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt;.&#xD;
We try to follow good design principles like &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID&lt;/a&gt;,&#xD;
and we build and integrate our code frequently using &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;Continuous&#xD;
Integration&lt;/a&gt;. But what can we do to become more agile in the way we build the &lt;a href="http://en.wikipedia.org/wiki/User_experience_design"&gt;User&#xD;
Experience&lt;/a&gt; (screen layout, navigation structure, colors and graphic design, imagery,&#xD;
error messages, texts and labels) of our application?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
On most of the software projects I have worked on the User Experience have been left&#xD;
up to the developers to decide. Towards the end of the iteration we bring in the customer&#xD;
for a demonstration of what we have built, implemented as running HTML, Windows Forms&#xD;
or perhaps XAML code. In many cases the customer immediately starts focuses on the&#xD;
tiny (perhaps unimportant) details of the UX. Like, “the title should be bigger and&#xD;
bluer”, or “the save button should be 4 pixels to the left”. One of the reasons for&#xD;
this reaction might be that by demonstrating a complete implementation of the UX straight&#xD;
away the application looks too complete, and the customer might feel that it is too&#xD;
late in the project to make substantial changes to the UX of the software. However,&#xD;
if this does not happen and we do get good feedback, suggesting that we need to rethink&#xD;
the UX of the application, the reaction from the development team might be hesitation.&#xD;
If you have put lots of effort into building the UX of the application you don’t want&#xD;
to throw it away. And in contrast the business logic of the application we do not&#xD;
have the same refactoring and testing support for the UX of our application as we&#xD;
do for the other parts of the system, making it harder to make big changes with little&#xD;
effort.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One way to work efficiently with UX in an agile software team is to create low-fidelity&#xD;
prototypes. These prototypes can be created using &lt;a href="http://www.alistapart.com/articles/paperprototyping"&gt;pen&#xD;
and paper&lt;/a&gt;, or tools like Visio, &lt;a href="http://www.istartedsomething.com/20071018/powerpoint-prototype-toolkit-01/"&gt;PowerPoint&lt;/a&gt;, &lt;a href="http://balsamiq.com/"&gt;Balsamiq&lt;/a&gt; or &lt;a href="http://www.microsoft.com/expression/products/SketchFlow_OverView.aspx"&gt;SketchFlow&lt;/a&gt;. &lt;a href="http://www.alistapart.com/articles/paperprototyping"&gt;Low-fidelity&#xD;
prototypes&lt;/a&gt; feel less finished, but are at the same time concrete enough for the&#xD;
customer to really “get” the concepts being prototyped. Using low-fidelity prototypes&#xD;
the customer is more likely to give constructive feedback about the important aspects&#xD;
of the UX, like how the screen layout and navigation should work, which fields are&#xD;
needed, or how we are going to display error messages, than if they were presented&#xD;
with a high-fidelity prototype or near complete version of the software.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="paperprototype" border="0" alt="paperprototype" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/AgileUXdevelopmentusinglowfidelityprotot_11CDC/paperprototype_3.jpg" width="282" height="254"&gt;&lt;/img&gt;&#xD;
          &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Oppsett" border="0" alt="Oppsett" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/AgileUXdevelopmentusinglowfidelityprotot_11CDC/Oppsett_3.png" width="340" height="254"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The developers are going to be less attached to a low-fidelity prototype, as the amount&#xD;
of effort put into it is far less compared to a real implementation done in code.&#xD;
Using prototyping the development team and the customer can do multiple iterations&#xD;
trying out different ideas and concepts for the UX, hopefully coming up with a great&#xD;
solution in the end. After all, good design is all about exploring multiple ideas,&#xD;
before narrowing it down to the right design for the problem. Good design is not about&#xD;
picking the first solution that pops into a developers mind.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I think UX prototyping fits perfectly with agile software development, and should&#xD;
be a natural tool for any agile team building software that interacts directly with&#xD;
end-users. My next blog post is going to be more concrete, giving an introduction&#xD;
to two great prototyping tools: Balsamiq and Microsoft SketchFlow.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=87563e28-a46e-4daa-9f6f-de546186560e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rX-6yScbYMg:bH4lKeUdupQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rX-6yScbYMg:bH4lKeUdupQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rX-6yScbYMg:bH4lKeUdupQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=rX-6yScbYMg:bH4lKeUdupQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/rX-6yScbYMg" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,87563e28-a46e-4daa-9f6f-de546186560e.aspx</comments>
      <category>Agile</category>
      <category>Silverlight</category>
      <category>SketchFlow</category>
      <category>UX</category>
    <feedburner:origLink>http://jonas.follesoe.no/AgileUXDevelopmentUsingLowfidelityPrototypes.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=2db1100f-018d-4cc0-8fd1-261eec4796e6</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,2db1100f-018d-4cc0-8fd1-261eec4796e6.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,2db1100f-018d-4cc0-8fd1-261eec4796e6.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=2db1100f-018d-4cc0-8fd1-261eec4796e6</wfw:commentRss>
      <slash:comments>7</slash:comments>
      
      <title>Recording of my MVVM talk at NDC2009 is now online</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,2db1100f-018d-4cc0-8fd1-261eec4796e6.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/u1vX_BXyyDI/RecordingOfMyMVVMTalkAtNDC2009IsNowOnline.aspx</link>
      <pubDate>Sat, 04 Jul 2009 23:28:39 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The videos from NDC2009 are now published on &lt;a href="http://ndc2009.no/agenda.aspx?cat=1071&amp;amp;id=1813"&gt;the&#xD;
conference agenda site&lt;/a&gt;. The site isn’t the easiest to navigate, so &lt;a href="http://blog.fohjin.com/"&gt;Mark&#xD;
Nijhof&lt;/a&gt; went through the effort of creating a &lt;a href="http://blog.fohjin.com/blog/2009/7/1/NDC_videos_are_published"&gt;simple&#xD;
list of all the videos grouped by speaker&lt;/a&gt;. There is tons of great content available&#xD;
and the videos should be a great way to do some (relaxed) learning in the summer heat. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
There is a problem with some of the links, and the link to the video of my second&#xD;
talk on .NET RIA Services is broken. I’ll make a new post when that video becomes&#xD;
available.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4459"&gt;&#xD;
            &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="JoansGivingMVVMTalk" border="0" alt="JoansGivingMVVMTalk" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/RecordingofmyMVVMtalkatNDC2009isnowonlin_14C1/JoansGivingMVVMTalk_3.png" width="670" height="342"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;  &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4459"&gt;Click to view&#xD;
my Model-View-ViewModel presentation from NDC2009.&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=2db1100f-018d-4cc0-8fd1-261eec4796e6"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=u1vX_BXyyDI:qs7kXmUW638:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=u1vX_BXyyDI:qs7kXmUW638:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=u1vX_BXyyDI:qs7kXmUW638:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=u1vX_BXyyDI:qs7kXmUW638:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/u1vX_BXyyDI" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,2db1100f-018d-4cc0-8fd1-261eec4796e6.aspx</comments>
      <category>Conferences</category>
      <category>Presentation</category>
      <category>Silverlight</category>
      <category>WPF</category>
    <feedburner:origLink>http://jonas.follesoe.no/RecordingOfMyMVVMTalkAtNDC2009IsNowOnline.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=44b5816d-67a6-4b66-ad05-1402d67086e6</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,44b5816d-67a6-4b66-ad05-1402d67086e6.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,44b5816d-67a6-4b66-ad05-1402d67086e6.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=44b5816d-67a6-4b66-ad05-1402d67086e6</wfw:commentRss>
      <slash:comments>12</slash:comments>
      
      <title>Awarded Silverlight MVP 2009!</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,44b5816d-67a6-4b66-ad05-1402d67086e6.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/oXQ6sGwavIw/AwardedSilverlightMVP2009.aspx</link>
      <pubDate>Thu, 02 Jul 2009 21:26:36 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; margin: 0px 15px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MicrosoftMVP" border="0" alt="MicrosoftMVP" align="left" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/AwardedSilverlightMVP2009_1499D/MicrosoftMVP_3.png" width="85" height="132"&gt;&lt;/img&gt; Yesterday&#xD;
I was awarded &lt;a href="https://mvp.support.microsoft.com/"&gt;Microsoft Most Valuable&#xD;
Professional&lt;/a&gt; in Silverlight. The nomination came based on my involvement with&#xD;
the Silverlight community during my year in Australia. I’m truly grateful for such&#xD;
recognition, and am looking forward to continue to work closely with the Silverlight&#xD;
development community to share knowledge and learn together.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
About the MVP program (from Microsoft): &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Microsoft is pleased to recognize and award its Most Valuable Professionals (MVPs).&#xD;
We present the MVP Award to thank individuals for their exceptional contributions&#xD;
to technical communities worldwide. When a community participant sees an MVP in a&#xD;
technical community, whether in a newsgroup, as a user group host, a conference speaker,&#xD;
or a respondent in forums, that community participant can be confident that the information&#xD;
shared by the MVP will be of the highest caliber and will help every user make the&#xD;
most of the technology.&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://twitter.com/teamsilverlight/statuses/2415785003"&gt;&#xD;
            &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SilverlightMVPTweet" border="0" alt="SilverlightMVPTweet" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/AwardedSilverlightMVP2009_1499D/SilverlightMVPTweet_3.png" width="670" height="272"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;em&gt;As with all important news: It breaks first on Twitter.&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;&#xD;
            &lt;strong&gt;Update&lt;/strong&gt;: &lt;a href="https://mvp.support.microsoft.com/profile=C85D0CA7-9EE2-4236-AED3-5009DFABCACA"&gt;My&#xD;
MVP profile is now available online&lt;/a&gt;.&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=44b5816d-67a6-4b66-ad05-1402d67086e6"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=oXQ6sGwavIw:GyrdJ3aXb1E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=oXQ6sGwavIw:GyrdJ3aXb1E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=oXQ6sGwavIw:GyrdJ3aXb1E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=oXQ6sGwavIw:GyrdJ3aXb1E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/oXQ6sGwavIw" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,44b5816d-67a6-4b66-ad05-1402d67086e6.aspx</comments>
    <feedburner:origLink>http://jonas.follesoe.no/AwardedSilverlightMVP2009.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=bc199f89-8b0b-4a11-bcd6-6bb9cd87f273</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,bc199f89-8b0b-4a11-bcd6-6bb9cd87f273.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,bc199f89-8b0b-4a11-bcd6-6bb9cd87f273.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=bc199f89-8b0b-4a11-bcd6-6bb9cd87f273</wfw:commentRss>
      <slash:comments>8</slash:comments>
      
      <title>NDC 2009 is history &amp;ndash; What a blast!</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,bc199f89-8b0b-4a11-bcd6-6bb9cd87f273.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/rNw5KTbuGu0/NDC2009IsHistoryNdashWhatABlast.aspx</link>
      <pubDate>Tue, 30 Jun 2009 21:49:59 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Earlier this month I was lucky enough to both attend and speak at the &lt;a href="http://ndc2009.no/"&gt;Norwegian&#xD;
Developer Conference 2009&lt;/a&gt;. What a blast! The NDC09 featured a perfect mix of content&#xD;
– everything from the latest in technology, to the core principles of software craftsmanship&#xD;
and agile development. The &lt;a href="http://ndc2009.no/en/index.aspx?cat=1070"&gt;speaker&#xD;
lineup this year was AMAZING&lt;/a&gt;, and I feel humble to be invited among such a group&#xD;
of incredibly talented people. Hopefully I was able to keep up with the level of the&#xD;
rest the speakers. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.flickr.com/photos/grothaug/3639002589/in/set-72157619854994646/"&gt;&#xD;
            &lt;img style="border: 0px none ; display: inline;" title="JonasAndHaack" alt="JonasAndHaack" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/NDC2009ishistoryWhatablast_14CEC/JonasAndHaack_5.png" width="667" border="0" height="442"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I gave two presentations at NDC09; one on the MVVM design pattern (more easily referred&#xD;
to as View Model) and one on .NET RIA Services. I think both talks went well – with&#xD;
the View Model talk being the strongest one, as this is something I’ve been presenting&#xD;
on many times before.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’ve uploaded both the slides and the demos from my talks. The MVVM demo is basically&#xD;
a the Dive Log example application taken further, with multiple View Models communicating&#xD;
through an Event Aggregator and a touch of navigation using the Silverlight 3 navigation&#xD;
framework. The .NET RIA Services demo is a “plain” data centric application, as well&#xD;
as a second demo app which uses nHibernate and the XML Metadata Provider (something&#xD;
I have to revisit in a later blog post).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In addition to the technical content delivered at NDC09 it was great fun to hang out&#xD;
with old and new friends. Here are some of the highlights: Had some great conversations&#xD;
with &lt;a href="http://blogs.msdn.com/gblock/"&gt;Glenn Block&lt;/a&gt; about different aspects&#xD;
and approaches to the View Model pattern. Got to catch up with &lt;a href="http://blog.brownie.com.au/Default.aspx"&gt;Andrew&#xD;
Browne&lt;/a&gt;, a good friend from the Melbourne developer community. Had dinner with &lt;a href="http://www.dotnetrocks.com/"&gt;Carl&#xD;
and Richard from .NET Rocks&lt;/a&gt;, &lt;a href="http://www.udidahan.com/"&gt;Udi Dahan&lt;/a&gt; and&#xD;
Capgemini colleagues. Had tons of good conversations with fellow Norwegian developers. &lt;a href="https://cid-b20ab1ef47af6a52.skydrive.live.com/browse.aspx/Pictures/2009-06-16%20Norway?ct=photos"&gt;Went&#xD;
fishing&lt;/a&gt; with &lt;a href="http://team.interknowlogy.com/blogs/timhuckaby/"&gt;Tim Huckaby&lt;/a&gt;. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thanks to all the speakers, organizers and attendees for making NDC2009 such an awesome&#xD;
event. Hope to see you all back there next year!&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;MVVM Design Pattern for Silverlight Applications&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/NDC2009ishistoryWhatablast_14CEC/DiveLogMVVMScreenshot_2.png"&gt;&#xD;
            &lt;img style="border: 0px none ; display: inline;" title="DiveLogMVVMScreenshot" alt="DiveLogMVVMScreenshot" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/NDC2009ishistoryWhatablast_14CEC/DiveLogMVVMScreenshot_thumb.png" width="674" border="0" height="418"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div style="text-align: left; width: 425px;" id="__ss_1664018"&gt;&#xD;
          &lt;a style="margin: 12px 0px 3px; display: block; font-family: helvetica,arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; text-decoration: underline;" title="MVVM Design Pattern NDC2009" href="http://www.slideshare.net/follesoe/mvvm-design-pattern-ndc2009?type=presentation"&gt;MVVM&#xD;
Design Pattern NDC2009&lt;/a&gt;&#xD;
          &lt;object style="margin: 0px;" width="425" height="355"&gt;&#xD;
            &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mvvmpresentationndc2009-090630160910-phpapp02&amp;amp;stripped_title=mvvm-design-pattern-ndc2009"&gt;&lt;/param&gt;&#xD;
            &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&#xD;
            &lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&#xD;
            &lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mvvmpresentationndc2009-090630160910-phpapp02&amp;amp;stripped_title=mvvm-design-pattern-ndc2009" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&#xD;
            &lt;/embed&gt;&#xD;
          &lt;/object&gt;&#xD;
          &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px;"&gt;View&#xD;
more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/follesoe"&gt;follesoe&lt;/a&gt;.&#xD;
&lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Presentations/MVVM%20Presentation%20NDC2009.pptx"&gt;Download&#xD;
slides:&lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Presentations/MVVM%20Presentation%20NDC2009.pptx" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Code%20samples/DiveLogMVVM%20NDC2009%20%7C5SL3%20Beta%7C6.zip"&gt;Download&#xD;
demo&lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Code%20samples/DiveLogMVVM%20NDC2009%20%7C5SL3%20Beta%7C6.zip" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For a collection of more resources &lt;a href="http://delicious.com/follesoe/mvvm"&gt;check&#xD;
out my MVVM tagged links on Delicious&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;.NET RIA Services&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Presentations/NET%20RIA%20Services%20NDC2009.pptx"&gt;Download&#xD;
slides&lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Presentations/NET%20RIA%20Services%20NDC2009.pptx" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Code%20samples/FishBookRIA%20NDC2009%20%7C5SL3%20Beta,%20RIA%20May%20CTP%7C6.zip"&gt;Download&#xD;
Fishbook Demo&lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Code%20samples/FishBookRIA%20NDC2009%20%7C5SL3%20Beta,%20RIA%20May%20CTP%7C6.zip" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Code%20samples/FishBookRIAnHibernate%20NDC2009.zip"&gt;Download&#xD;
Fishbook nHibernate Demo&lt;/a&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Code%20samples/FishBookRIAnHibernate%20NDC2009.zip" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;br&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For more resources &lt;a href="http://delicious.com/follesoe/ria"&gt;check out my .NET RIA&#xD;
Services tagged links on Delicious&lt;/a&gt;, as well as the talk “&lt;a href="http://videos.visitmix.com/MIX09/T41F"&gt;.NET&#xD;
RIA Services - Building Data-Driven Applications with Microsoft Silverlight and Microsoft&#xD;
ASP.NET&lt;/a&gt;” and “&lt;a href="http://videos.visitmix.com/MIX09/T40F"&gt;Building Amazing&#xD;
Business Centric Applications with Microsoft Silverlight 3&lt;/a&gt;” from MIX09.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=bc199f89-8b0b-4a11-bcd6-6bb9cd87f273"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rNw5KTbuGu0:fkUzqMV1YgA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rNw5KTbuGu0:fkUzqMV1YgA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=rNw5KTbuGu0:fkUzqMV1YgA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=rNw5KTbuGu0:fkUzqMV1YgA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/rNw5KTbuGu0" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,bc199f89-8b0b-4a11-bcd6-6bb9cd87f273.aspx</comments>
      <category>Community</category>
      <category>Conferences</category>
      <category>Presentation</category>
      <category>Silverlight</category>
    <feedburner:origLink>http://jonas.follesoe.no/NDC2009IsHistoryNdashWhatABlast.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=b93e8237-4bc4-46a0-b777-fffeff1ea47e</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=b93e8237-4bc4-46a0-b777-fffeff1ea47e</wfw:commentRss>
      <slash:comments>4</slash:comments>
      
      <title>Mom, I'm on .NET Rocks!</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/SLRVSpexUhY/MomImOnNETRocks.aspx</link>
      <pubDate>Wed, 22 Apr 2009 18:06:57 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img border="0" alt="dotnetrocks" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MomImon.NETRocks_11AE2/dotnetrocks_8d3442ab-27c3-45fa-ba2d-f3c3ce1f056d.jpg" width="478" height="128"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This Monday I had a conversation with Carl Franklin and Richard Campell on .&lt;a href="http://www.dotnetrocks.com"&gt;NET&#xD;
Rocks!&lt;/a&gt; about Silverlight, WPF, Live Mesh and different UI platforms. Having a&#xD;
two-way conversation on a postcast is quite different from giving a technical presentation,&#xD;
so I was a bit scared how this was going to turn out. Thanks to Pwop! Productions&#xD;
streamlined production process &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=439"&gt;the&#xD;
episode is now available online&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
.NET Rocks! (for the two of you who don’t know) is the most successful technology&#xD;
podcasts out there. They have been in the business of internet audio talk shows since&#xD;
long before the term podcast was invented, and the episode I appeared on was number&#xD;
439!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’ve been a big fan and avid listener to .NET Rocks! since the very beginning.&#xD;
I think episode 10 with Chris Sells was the first one I listened to back in 2002.&#xD;
So in many ways I’ve been following .NET Rocks! since the beginning of my professional&#xD;
software development career. Being invited on as a guest is a great honor.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thanks to Richard and Carl for inviting me – and I hope to invited back on some&#xD;
time in the future. If you have comments or questions regarding the show feel free&#xD;
to post them as comments to this blog post. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=b93e8237-4bc4-46a0-b777-fffeff1ea47e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=SLRVSpexUhY:4Pv1AuIfN-Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=SLRVSpexUhY:4Pv1AuIfN-Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/SLRVSpexUhY" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,b93e8237-4bc4-46a0-b777-fffeff1ea47e.aspx</comments>
    <feedburner:origLink>http://jonas.follesoe.no/MomImOnNETRocks.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=15ef3682-616a-48e0-96ce-e3f253863cbc</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,15ef3682-616a-48e0-96ce-e3f253863cbc.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,15ef3682-616a-48e0-96ce-e3f253863cbc.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=15ef3682-616a-48e0-96ce-e3f253863cbc</wfw:commentRss>
      <slash:comments>5</slash:comments>
      
      <title>MSDN Live Winter 2009 is now history!</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,15ef3682-616a-48e0-96ce-e3f253863cbc.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/TSvltb0MgoI/MSDNLiveWinter2009IsNowHistory.aspx</link>
      <pubDate>Fri, 20 Mar 2009 13:14:15 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Wow. Friday 20&lt;sup&gt;th&lt;/sup&gt; of March and MSDN Live Winter 2009 is now history. I delivered&#xD;
my last two talks on Silverlight during this round of MSDN Live in Oslo yesterday.&#xD;
Over the last two and a half week the MSDN Live road-show have visited Stavanger,&#xD;
Bergen, Trondheim and Oslo. It has been a great experience, and I’ve gotten to meet&#xD;
some interesting developers around the country. It has been great to hear how many&#xD;
people are starting to adopt Silverlight and WPF for their rich client applications,&#xD;
and I’m certain this trend is only going to continue. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As promised this blog post contains links to the Dive Log example application (which&#xD;
will be updated to Silverlight 3 shortly), as well as links to more information relevant&#xD;
to the two sessions I gave during MSDN Live. I've also included a Flickr Photomentury&#xD;
by &lt;a href="http://blogs.msdn.com/grothaug/"&gt;Rune Grothaug&lt;/a&gt; showing a full day&#xD;
of MSDN Live.&lt;br&gt;&lt;/p&gt;&#xD;
        &lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=67348" allowfullscreen="true" flashvars="&amp;amp;offsite=true〈=en-us&amp;amp;page_show_url=%2Fphotos%2Fgrothaug%2Fsets%2F72157615323515688%2Fshow%2F&amp;amp;page_show_back_url=%2Fphotos%2Fgrothaug%2Fsets%2F72157615323515688%2F&amp;amp;set_id=72157615323515688&amp;amp;jump_to=" width="670" height="503"&gt;&#xD;
          &lt;h4&gt;Model-View-ViewModel&#xD;
&lt;/h4&gt;&#xD;
          &lt;p&gt;&#xD;
My first talk at MSDN was about building business focused applications using Silverlight&#xD;
2. Throughout the talk I demonstrated how the MVVM pattern can help you achieve separation&#xD;
of concerns, and thus giving you more flexible, testable and designer friendly code.&#xD;
Some links to more information:&#xD;
&lt;/p&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://jonas.follesoe.no/YouCardRevisitedImplementingTheViewModelPattern.aspx"&gt;YouCard&#xD;
Re-visited: Implementing the ViewModel pattern&lt;/a&gt;&#xD;
                &lt;br&gt;&#xD;
              &lt;/b&gt;One of the first posts I wrote about the MVVM pattern, describing how I refactored&#xD;
my YouCard example application from REMIX to follow this patterns &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx"&gt;YouCard&#xD;
Re-visited: Implementing Dependency Injection in Silverlight&lt;/a&gt;&#xD;
                &lt;br&gt;&#xD;
              &lt;/b&gt;A follow-up post showing how to use Dependency Injection and IoC in a Silverlight&#xD;
context, and how it can support the MVVM pattern. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://jonas.follesoe.no/CombiningDifferentSeparatedPresentationPatterns.aspx"&gt;Combining&#xD;
different Separated Presentation Patterns&lt;/a&gt;&#xD;
              &lt;/b&gt;&#xD;
              &lt;br&gt;&#xD;
Not everything can be achieved through data binding and commands. In some cases you&#xD;
need to have more access to UI specific events, for instance to implement drag-and-drop&#xD;
behavior in your application. This post describes how you can combine multiple UI&#xD;
patterns in one application. In the concrete example I combine the MVVM pattern with&#xD;
a Supervising Controller to implement drag-and-drop in a example application. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;WPF Apps With&#xD;
The Model-View-ViewModel Design Pattern&lt;/a&gt;&#xD;
              &lt;/b&gt;&#xD;
              &lt;br&gt;&#xD;
A great MSDN Magazine article by Josh Smith discussing the MVVM pattern in a WPF context. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx"&gt;Model-View-ViewModel&#xD;
In Silverlight 2 Apps&lt;/a&gt;&#xD;
              &lt;/b&gt;&#xD;
              &lt;br&gt;&#xD;
A great MSDN Magazine article by Shawn Wildermuth discussing the MVVM pattern in a&#xD;
Silverlight context. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://delicious.com/follesoe/mvvm"&gt;My delicious.com favorites tagged&#xD;
with MVVM&lt;/a&gt;&#xD;
              &lt;/b&gt;&#xD;
            &lt;/li&gt;&#xD;
          &lt;/ul&gt;&#xD;
          &lt;h4&gt;Silverlight Tips &amp;amp; Tricks&#xD;
&lt;/h4&gt;&#xD;
          &lt;p&gt;&#xD;
My second talk at MSDN was 6 different Silverlight Tips &amp;amp; Tricks showing how to&#xD;
solve some of the not-so-obvious problems in Silverlight.&#xD;
&lt;/p&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://web-snippets.blogspot.com/2008/11/another-one-on-repacking-xaps-to-reduce.html"&gt;Recompressing&#xD;
the XAP file to save download size&lt;/a&gt;&#xD;
                &lt;br&gt;&#xD;
              &lt;/b&gt;A Silverlight XAP file is just a standard ZIP file. By recompressing it with you&#xD;
can save up to 25% download size. During my talk I demonstrated the ReXapper tool,&#xD;
which can be easily integrated to your project as a post-build command. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://jonas.follesoe.no/BackAndForwardNavigationInSilverlight2UsingASPNETAJAX.aspx"&gt;Deep&#xD;
linking in Silverlight applications&lt;/a&gt;&#xD;
                &lt;br&gt;&#xD;
              &lt;/b&gt;Linking is a core concept of the web. With Rich Internet Applications in AJAX,&#xD;
Silverlight and Flash this becomes a challenge, as we no longer have different pages&#xD;
for each piece of information or screen in the application. Instead we load the application&#xD;
once, and then dynamically load pieces of information without navigating to a new&#xD;
page. This breaks the concept of linking, booking marking and back/forward navigation&#xD;
in the browser. To solve this we need to manually manage history state. In my blog&#xD;
post I use ASP.NET AJAX to solve this. Robby Ingebretsen has &lt;a href="http://blog.nerdplusart.com/archives/deep-linking-browser-history-navigation-in-silverlight"&gt;another&#xD;
approach using jQuery to manage the browser history&lt;/a&gt;. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;&#xD;
                &lt;a href="http://jonas.follesoe.no/PrintingInSilverlight2UsingCSSAndASPNETAJAX4.aspx"&gt;Printing&#xD;
in Silverlight&lt;/a&gt;&#xD;
                &lt;br&gt;&#xD;
              &lt;/b&gt;Silverlight looks great on screen but does not have a good print story. Printing&#xD;
in Silverlight can be solved by opening a new window showing a server-side rendered&#xD;
report, or you can use the HTML Bridge to generate a client side report. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;b&gt;Testing in Silverlight&lt;/b&gt;&#xD;
              &lt;ul&gt;&#xD;
                &lt;li&gt;&#xD;
                  &lt;a href="http://jonas.follesoe.no/ct.ashx?id=48ad478e-61d7-4af6-8fb0-8bd0a589780a&amp;amp;url=http%3a%2f%2fwww.jeff.wilcox.name%2f2008%2f03%2f31%2fsilverlight2-unit-testing%2f"&gt;Unit&#xD;
Testing with Silverlight 2 by Jeff Wilcox&lt;/a&gt;&#xD;
                  &lt;br&gt;&#xD;
Jeff is the primary developer on the Silverlight testing framework, and this is probably&#xD;
the best introduction to Silverlight Unit Testing. &#xD;
&lt;/li&gt;&#xD;
                &lt;li&gt;&#xD;
                  &lt;a href="http://jonas.follesoe.no/ct.ashx?id=48ad478e-61d7-4af6-8fb0-8bd0a589780a&amp;amp;url=http%3a%2f%2fwww.jeff.wilcox.name%2f2008%2f06%2f06%2funit-testing-templates-for-microsoft-silverlight-2-beta-2%2f"&gt;Unit&#xD;
testing templates for Microsoft Silverlight 2 Beta 2&lt;/a&gt;&#xD;
                  &lt;br&gt;&#xD;
To make things easier Jeff has prepared a Visual Studio template to set up Silverlight&#xD;
Unit Testing. &#xD;
&lt;/li&gt;&#xD;
                &lt;li&gt;&#xD;
                  &lt;a href="http://jonas.follesoe.no/ct.ashx?id=48ad478e-61d7-4af6-8fb0-8bd0a589780a&amp;amp;url=http%3a%2f%2fwww.jeff.wilcox.name%2f2008%2f07%2f13%2fmy-summer-silverlight-blogging%2f"&gt;What's&#xD;
in the pipeline for Silverlight Test Developers&lt;/a&gt;&#xD;
                  &lt;br&gt;&#xD;
Jeff hints about what might come in the next version of the Silverlight testing framework. &#xD;
&lt;/li&gt;&#xD;
                &lt;li&gt;&#xD;
                  &lt;a href="http://jonas.follesoe.no/ct.ashx?id=48ad478e-61d7-4af6-8fb0-8bd0a589780a&amp;amp;url=http%3a%2f%2fjonas.follesoe.no%2fUnitTestingAsynchronousSilverlightCode.aspx"&gt;Unit&#xD;
Testing Asynchronous Code in Silverlight&lt;/a&gt;&#xD;
                  &lt;br&gt;&#xD;
This is a post I did back in June describing how to use the Asynchronous attribute,&#xD;
and how to write asynchronous tests in Silverlight. &#xD;
&lt;/li&gt;&#xD;
                &lt;li&gt;&#xD;
                  &lt;a href="http://jonas.follesoe.no/ct.ashx?id=48ad478e-61d7-4af6-8fb0-8bd0a589780a&amp;amp;url=http%3a%2f%2fweblogs.asp.net%2fnunitaddin%2farchive%2f2008%2f05%2f01%2fsilverlight-nunit-projects.aspx"&gt;Silverlight&#xD;
NUnit Projects&lt;/a&gt;&#xD;
                  &lt;br&gt;&#xD;
Jamie Cansdale explains how to use NUnit to do Silverlight testing. The benefit of&#xD;
using NUnit is that you can run your tests outside the browser, execute the tests&#xD;
from TestDriven.Net, and even get code coverage. For integration testing (network,&#xD;
browser integration) you still need to use the Silverlight Testing Framework from&#xD;
Microsoft. &#xD;
&lt;/li&gt;&#xD;
              &lt;/ul&gt;&#xD;
            &lt;/li&gt;&#xD;
          &lt;/ul&gt;&#xD;
          &lt;p&gt;&#xD;
Hopefully you enjoyed this round of MSDN Live and got a good introduction on how to&#xD;
build Silverlight 2 applications. If you have any questions related to the presentations&#xD;
feel free to post them in the comments section. The code and slides are available&#xD;
as downloads from my SkyDrive (embedded in the blog post). &#xD;
&lt;br&gt;&lt;/p&gt;&#xD;
          &lt;table width="400" border="0" cellpadding="2" cellspacing="0"&gt;&#xD;
            &lt;tbody&gt;&#xD;
              &lt;tr&gt;&#xD;
                &lt;td width="200" valign="top"&gt;&#xD;
                  &lt;strong&gt;&#xD;
                    &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Code%20samples/Silverlight%20MSDN%20Live%202009%20Demo.zip"&gt;Dive&#xD;
Log and Flickr Demo&lt;/a&gt;&#xD;
                  &lt;/strong&gt;&#xD;
                &lt;/td&gt;&#xD;
                &lt;td width="200" valign="top"&gt;&#xD;
                  &lt;strong&gt;&#xD;
                    &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Presentations/Silverlight%20MSDN%20Live%202009%20Presentasjoner.zip"&gt;Slides&#xD;
for both presentations&lt;/a&gt;&#xD;
                  &lt;/strong&gt;&#xD;
                &lt;/td&gt;&#xD;
              &lt;/tr&gt;&#xD;
              &lt;tr&gt;&#xD;
                &lt;td width="200" valign="top"&gt;&#xD;
                  &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Code%20samples/Silverlight%20MSDN%20Live%202009%20Demo.zip" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
                  &lt;/iframe&gt;&#xD;
                &lt;/td&gt;&#xD;
                &lt;td width="200" valign="top"&gt;&#xD;
                  &lt;iframe style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0px; background-color: rgb(255, 255, 255); width: 240px; height: 66px;" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Presentations/Silverlight%20MSDN%20Live%202009%20Presentasjoner.zip" marginwidth="0" frameborder="0" scrolling="no"&gt;&#xD;
                  &lt;/iframe&gt;&#xD;
                &lt;/td&gt;&#xD;
              &lt;/tr&gt;&#xD;
            &lt;/tbody&gt;&#xD;
          &lt;/table&gt;&#xD;
          &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=15ef3682-616a-48e0-96ce-e3f253863cbc"&gt;&lt;/img&gt;&#xD;
        &lt;/embed&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=TSvltb0MgoI:vNupJFfnl0A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=TSvltb0MgoI:vNupJFfnl0A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=TSvltb0MgoI:vNupJFfnl0A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=TSvltb0MgoI:vNupJFfnl0A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/TSvltb0MgoI" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,15ef3682-616a-48e0-96ce-e3f253863cbc.aspx</comments>
      <category>Presentation</category>
      <category>Silverlight</category>
    <feedburner:origLink>http://jonas.follesoe.no/MSDNLiveWinter2009IsNowHistory.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=c00b7b51-02a0-4bd6-b976-04ddc6a1af70</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,c00b7b51-02a0-4bd6-b976-04ddc6a1af70.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,c00b7b51-02a0-4bd6-b976-04ddc6a1af70.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=c00b7b51-02a0-4bd6-b976-04ddc6a1af70</wfw:commentRss>
      <slash:comments>8</slash:comments>
      
      <title>Speaking at MSDN Live next month</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,c00b7b51-02a0-4bd6-b976-04ddc6a1af70.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/pRmHwbbF3qM/SpeakingAtMSDNLiveNextMonth.aspx</link>
      <pubDate>Sun, 22 Feb 2009 21:41:53 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I know. It’s been too long since my last post, and just to clarify; I’m not dead,&#xD;
nor have I been eaten by sharks or anything like that. I’ve just been busy rebooting&#xD;
my life back in Trondheim after coming back from Australia. I started working again&#xD;
in Trondheim in the beginning on January and went straight back on to a Windows Forms/WPF&#xD;
project I helped start up back in September 2007. It has been really fun to see how&#xD;
the code base has evolved over the year I’ve been gone. After getting back on the&#xD;
project I’ve spent most my time developing WPF components inside the Windows Forms&#xD;
client. It’s been an interesting experience, and I’m really happy with how well WPF&#xD;
integrates with existing Windows Forms applications. I will definitely be blogging&#xD;
about some of my experiences around WPF and Windows Forms in the weeks to come.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, the main reason for the slowdown in posts is not work related. Hege and I &lt;a href="http://flickr.com/photos/hegerokenes/sets/72157613665473334/"&gt;just&#xD;
bought an apartment&lt;/a&gt;, and ever since we moved in all available time have gone to&#xD;
painting walls, shopping for furniture and all kinds of other things you need to get&#xD;
in order when moving into a new place. We are really happy with the apartment, and&#xD;
things are really starting to shape up. We finished painting the last room this weekend.&#xD;
I will be posting a “tour of the geek crib” once all the tech stuff (fun stuff) is&#xD;
in place.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Okay – enough excuses for not blogging. The more topic of this blog post is that I’m&#xD;
doing a series of talks on Silverlight 2 during the &lt;a href="http://www.microsoft.com/norge/msdn_technet_live/"&gt;MSDN&#xD;
Live tour&lt;/a&gt;. First stop of the tour is Stavanger (05. March), before moving on to&#xD;
Bergen (10. March), Trondheim (12. March) and finally Oslo (19. March). I will be&#xD;
giving two sessions, one on developing data centric/business focused Silverlight 2&#xD;
applications (similar to my Tech Ed Talk), and one on Silverlight 2 tips and tricks.&#xD;
The tips and tricks session will be 5-6 covering things like printing, deep linking,&#xD;
search engine optimization, design time support, continuous integration etc.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’ve included the session abstract (in Norwegian):&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;&#xD;
            &lt;strong&gt;&#xD;
              &lt;em&gt;&#xD;
                &lt;strong&gt;&#xD;
                  &lt;img style="margin: 10px 20px 20px 10px;" alt="msdnlive" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/SpeakingatMSDNLivenextmonth_13F21/msdnlive_907b5800-8119-4e3d-a6ad-4550f8d9a4c8.png" width="305" align="left" border="0" height="226"&gt;&lt;/img&gt;&#xD;
                &lt;/strong&gt;&#xD;
              &lt;/em&gt;Forretningsapplikasjoner&#xD;
i Silverlight 2&lt;/strong&gt;&#xD;
            &lt;br&gt;&#xD;
Silverlight 2 ble lansert nå i høst og legger et godt grunnlag for utviklere som ønsker&#xD;
å lage rike internett applikasjoner (RIA) basert på .NET. I denne sesjonen går vi&#xD;
i dypden på Silverlight 2 som utviklingsplattform og fordelene ved å velge Silverlight&#xD;
2 som plattform for data-sentriske forretningsapplikasjoner. Sesjonen vil blandt annet&#xD;
dekke dataaksess via sikrede WCF tjenester, hvordan strukturere koden ved hjelp av&#xD;
Model-View-ViewModel patternet (MVVM), hvordan skrive kode designere kan jobbe med,&#xD;
og enkle Blend-tips for utviklere. Sesjonen vil bygges rundt en dykkeloggapplikasjon&#xD;
hvor koden vil bli gjort tilgjengelig etter presentasjonen.&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;&#xD;
            &lt;strong&gt;Tips og triks for Silverlight 2-utviklere &#xD;
&lt;br&gt;&lt;/strong&gt;denne andre sesjonen vil vi bygge videre på dykkeloggen og fokusere på en&#xD;
del konkrete tips og triks for Silverlight 2-utviklere. Tett integrasjon med nettleseren&#xD;
er viktig for en best mulig brukeropplevelse. Vi vil blant annet se på hvordan integrere&#xD;
med fram/tilbake knappene i nettleseren, hvordan optimalisere Silverlight applikasjoner&#xD;
for søkemotorer, hvordan bruke dyplenking i Silverlight og hvordan håndtere utskrift&#xD;
fra Silverlight. Presentasjonen vil gå i dybden på blant annet HTML-bridgen som brukes&#xD;
for å integrere Silverlight med JavaScript som allerede kjører på siden, eller for&#xD;
å aksessere nettleserens DOM.&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the sad things about this round of MSDN Live is that Microsoft have to charge&#xD;
for it. Previously MSDN Live have been a free (and really popular) event, but Microsoft&#xD;
is feeling the financial crisis just like everyone else. So in order to be able to&#xD;
deliver MSDN Live this time they had to charge for it. &lt;a href="http://borge3000.no/2009/02/18/n-koster-msdn-live-penger-hvorfor-det/"&gt;Børge&#xD;
Hansen&lt;/a&gt; from Microsoft Norway and &lt;a href="http://blog.torresdal.net/2009/02/16/WhyHaveMicrosoftNorwayStartedToChargeMoneyForMSDNLive.aspx"&gt;Jon&#xD;
Torresdal&lt;/a&gt; from NNUG Bergen have shared their thoughts on this decision. I was&#xD;
really bummed about this decision myself, but I really hope that you find &lt;a href="http://www.microsoft.com/norge/msdn_technet_live/agenda.aspx"&gt;the&#xD;
content presented&lt;/a&gt; at MSDN Live interesting, and that you get a chance to attend.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Since this post is about upcoming speaking engagement I figure I could finish the&#xD;
post by sharing a time lapse video of a Silverlight 2 presentation I did last week&#xD;
at the local university. The time lapse is created by Pete J Samuel, a colleague of&#xD;
mine at Capgemini Trondheim.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;embed src="http://www.youtube.com/v/Xa5FTHhFHGs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="385"&gt;&#xD;
          &lt;/embed&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Hope to see you at MSDN Live in Stavanger, Bergen, Trondheim or Oslo!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=c00b7b51-02a0-4bd6-b976-04ddc6a1af70"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=pRmHwbbF3qM:1CdGSK4rXOk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=pRmHwbbF3qM:1CdGSK4rXOk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=pRmHwbbF3qM:1CdGSK4rXOk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=pRmHwbbF3qM:1CdGSK4rXOk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/pRmHwbbF3qM" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,c00b7b51-02a0-4bd6-b976-04ddc6a1af70.aspx</comments>
      <category>Presentation</category>
      <category>Silverlight</category>
    <feedburner:origLink>http://jonas.follesoe.no/SpeakingAtMSDNLiveNextMonth.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=81378618-cefb-4d67-ac27-b48bb16cc57d</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,81378618-cefb-4d67-ac27-b48bb16cc57d.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,81378618-cefb-4d67-ac27-b48bb16cc57d.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=81378618-cefb-4d67-ac27-b48bb16cc57d</wfw:commentRss>
      <slash:comments>12</slash:comments>
      
      <title>Mesh-enabling the Dive Log Silverlight Application</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,81378618-cefb-4d67-ac27-b48bb16cc57d.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/hpaI6fFDApQ/MeshenablingTheDiveLogSilverlightApplication.aspx</link>
      <pubDate>Mon, 22 Dec 2008 10:51:27 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
One of the big themes of PDC this year was Windows Azure and Microsoft’s cloud&#xD;
computing initiative. Live Services is one of the building blocks of Windows Azure,&#xD;
and includes a set of services known as Live Mesh. I did a blog post about Live Mesh&#xD;
back in April when it was first announced. With lots of enthusiasm I speculated about &lt;a href="http://jonas.follesoe.no/MicrosoftUnveilsLiveMeshNdashTakeYourSilverlightApplicationOffline.aspx"&gt;how&#xD;
this would enable us to build offline/desktop enabled Silverlight applications&lt;/a&gt;.&#xD;
During the second day keynote &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;,&#xD;
coding hero and vice president at Microsoft, announced that;&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="503" alt="...in a few minutes you will learn about how you can actually run Silverlight both inside the browser and now outside the browser…" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/ScottGuDesktopSilverlight_8715ca61-3818-47b2-892b-4b2c1a8c94a0.jpg" width="670" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;br&gt;&#xD;
          &lt;em&gt;Photo by &lt;a href="http://flickr.com/photos/begley"&gt;DBegley&lt;/a&gt; - &lt;/em&gt;&#xD;
          &lt;a href="http://flickr.com/photos/begley/2981196411/"&gt;&#xD;
            &lt;em&gt;check&#xD;
out original on Flickr&lt;/em&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This announcement immediately caused a lot of buzz in the Twitter-sphere. What made&#xD;
the announcement even more interesting is that a lot of people didn’t quite&#xD;
get what Scott was talking about, or if they even showed Silverlight running outside&#xD;
the browser at all. So what was the Silverlight out-of-browser story at PDC? After&#xD;
Scotts keynote Anthony Rose entered stage and demoed their BBC iPlayer. He didn’t&#xD;
explicitly say that this was the “Silverlight running on the desktop”-story,&#xD;
but what he was showing was the &lt;a href="http://www.marcmywords.org/post/BBC-iPlayer-in-the-Mesh.aspx"&gt;iPlayer&#xD;
implemented as a Mesh-Enabled Silverlight application&lt;/a&gt; running on the desktop! &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="447" alt="Anthony Rose" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/AnthonyRose_cac4c4a1-7a5f-44af-ab79-22d5d0a45646.jpg" width="670" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;br&gt;&#xD;
Photo by &lt;a href="http://flickr.com/photos/begley"&gt;DBegley&lt;/a&gt; - &lt;a href="http://flickr.com/photos/begley/2982342378/"&gt;check&#xD;
out the original on Flickr&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In this blog post I’m going to show how I Mesh-enabled the Dive Log application&#xD;
using the Live Framework. I will also try to cover some of the benefits of using Live&#xD;
Mesh as an application platform for web application.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Where do you start?&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
To build Mesh-Enabled Web Applications you need access to the &lt;a href="http://dev.live.com/liveframework/sdk/"&gt;Live&#xD;
Framework SDK and Tools&lt;/a&gt;. The SDK is currently only available in a private CTP,&#xD;
and to get access you need to apply for a token through the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=130226"&gt;Microsoft&#xD;
Connect&lt;/a&gt; site. I don’t know how many people they will let in on the CTP,&#xD;
or how long the process of getting a token takes.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once you have downloaded and installed the SDK you get a new project type called Live&#xD;
Framework, which comes in two flavors; “Mesh-enabled Web Application”&#xD;
and “Silverlight Mesh-enabled Web Application”. The difference is that&#xD;
the first one is for writing JavaScript and HTML based Mesh-applications, while the&#xD;
second is for Silverlight applications that use the Live Framework libraries. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="164" alt="Live Framework Project Type" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/LiveFrameworkProjectType_bd28612d-f6a6-4a16-a8f4-7abd63309b88.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After selecting the “Silverlight Mesh-enabled Web Application” template&#xD;
you get a new solution with two projects; a Silverlight 2 project and a Live Framework&#xD;
project. The Live Framework project has a reference to the Silverlight project, and&#xD;
contains a simple HTML and JavaScript file to embed the Silverlight application on&#xD;
the HTML page. The project also contains an icon for the application, and an XML manifest&#xD;
file describing the application. The Silverlight project has references to two new&#xD;
assemblies; &lt;em&gt;Microsoft.LiveFX.Client&lt;/em&gt; and &lt;em&gt;Microsoft.LiveFX.ResourceModel&lt;/em&gt;.&#xD;
These are the Live Framework libraries that give you a managed API for Live Services.&#xD;
All Live Services are based on open protocols and standards like HTTP, ATOM, &lt;a href="http://dev.live.com/feedsync/"&gt;FeedSync&lt;/a&gt; and&#xD;
RSS, so you could write applications without these libraries, in any language or platform&#xD;
you like, but Live Framework makes it allot easier by providing a nice abstraction&#xD;
layer on top of the web services.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="216" alt="Live Framework Project Structure" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/LiveFrameworkProjectStructure_98bdf06a-44c1-4354-8b90-2f93e147fb46.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;Mesh-enabling the Dive Log application&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="margin: 0px 0px 10px 10px" height="168" alt="meshappsicon" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/meshappsicon_d8fe2806-150f-4e28-bc96-c3dc870df7d9.jpg" width="150" align="right" border="0"&gt;&lt;/img&gt; The&#xD;
first thing I did after creating a new Live Framework project was to remove the automatically&#xD;
generated Silverlight 2 project. Instead I included my existing Dive Log Silverlight&#xD;
project and referenced the Live Framework Silverlight assemblies. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The Dive Log application was originally written as a demo for my &lt;a href="http://jonas.follesoe.no/TechEd2008NdashSilverlight2ForDevelopers.aspx"&gt;TechEd&#xD;
talks back in September&lt;/a&gt;. One of the things I wanted to demonstrate was how to&#xD;
use the &lt;a href="http://jonas.follesoe.no/YouCardRevisitedImplementingTheViewModelPattern.aspx"&gt;Model-View-ViewModel&#xD;
pattern&lt;/a&gt; in a Silverlight application, and how this can make your application easier&#xD;
to design in Expression Blend. The way I did that is to use &lt;a href="http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx"&gt;dependency&#xD;
injection to inject a mock-implementation of any external dependencies&lt;/a&gt;, like web&#xD;
service proxies, into the view model. That way the mock service can generate sample&#xD;
data when the code is being consumed in Expression Blend. When the application is&#xD;
running in the browser the real web service will be used.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The benefit of this design is that I can easily configure my inversion of control&#xD;
container to use different implementations of different application services. So to&#xD;
first run the Dive Log application inside Live Mesh I simply configured the IoC container&#xD;
to always use the mock implementation of the web service. That way I could deploy&#xD;
my application to Live Mesh without having to prepare my web services for cross domain&#xD;
access.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After TechEd I have extended the Dive Log application with new features like &lt;a href="http://jonas.follesoe.no/PrintingInSilverlight2UsingCSSAndASPNETAJAX4.aspx"&gt;printing&#xD;
support&lt;/a&gt; and support for &lt;a href="http://jonas.follesoe.no/BackAndForwardNavigationInSilverlight2UsingASPNETAJAX.aspx"&gt;back-&#xD;
and forward navigation in the browser&lt;/a&gt;. These features depend on the ASP.NET AJAX&#xD;
client library to be available on the page hosting the application. For my Mesh-enabled&#xD;
Dive Log I can’t depend on these libraries to be present, and I guess they don’t&#xD;
make sense when the application is deployed on the desktop anyway. So to disable these&#xD;
features I simply made an empty implementation of the IPrintDives and IManageHistory&#xD;
interfaces and configured my IoC container to use these to handle browser history&#xD;
and printing.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="368" alt="IoC container configuration code (available in download)" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/MeshModuleConfiguration_adcc5e59-042c-4123-b61b-31081db8e857.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once the application was configured to use the mock web service, and to disable printing&#xD;
and history, I could simply hit F5 to build and deploy the application to Live Mesh.&#xD;
The Live Framework project template includes a build task that will connect and deploy&#xD;
the application to Live Mesh. Currently there is no local development environment&#xD;
for Mesh-enabled web applications, something that can be a little bit bothersome as&#xD;
you have to redeploy the application to Live Mesh every time you make a change.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="337" alt="Application beeing deployed to Live Mesh" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/LiveFrameworkDeployment_707d3672-1a8d-4b68-a251-6b0af34eb1fa.png" width="603" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;b&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;Mapping the Dive Log against the Live Framework Resource Model&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
The next step of Mesh-enabling the Dive Log application is to use the Live Framework&#xD;
Resource Model as the data storage for logged dives. The original application uses&#xD;
a web service to store dives remotely. This diagram shows a high level overview of&#xD;
the Live Framework Resource model. The blue boxes indicate the main components the&#xD;
Dive Log application will use.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="438" alt="Live Framework Resource Model Diagram" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/LiveFrameworkResourceModel_93bdfc61-7b50-4b2a-b768-37ae2fbfbd08.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As I mentioned earlier the web service is an external dependency that is injected&#xD;
into the View Model using an IoC container. A trick I’ve used on many projects&#xD;
is to extract an interface defining the methods and events used on the web service&#xD;
client class. I then use a partial class to implement this interface on the automatically&#xD;
generated web service client class. This enables me to implement multiple versions&#xD;
of the interface, for instance for design time data or unit testing. This design enables&#xD;
me implement a new service that reads and writes dives to the Live Framework Resource&#xD;
Model. A simple configuration change of the IoC container will inject the Live Framework&#xD;
based service to the View Model. That way I don’t have to change any code in&#xD;
the UI or the View Model to use Live Mesh as my data storage.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="337" alt="IDiveLogServiceClient Diagram" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/IDiveLogServiceDiagram_c3a5c7d4-5181-445e-8c77-44f49b62124e.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next challenge I faced was figuring out how to map my Dive Log application against&#xD;
the different concepts of the &lt;a href="http://blogs.msdn.com/liveframework/archive/2008/12/11/live-framework-resource-model-part-1.aspx"&gt;Live&#xD;
Framework Resource Model&lt;/a&gt;. After reading about the resource model my initial idea&#xD;
was to create one Mesh Object for each Dive Log, and then start adding items to a&#xD;
Data Feed. When I tried to create a new Mesh Object from my Silverlight application&#xD;
I got some weird exceptions. After discussion this on the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/liveframework/threads"&gt;Live&#xD;
Framework forum&lt;/a&gt; I learned that Mesh-enabled web applications don’t have&#xD;
permission to create new Mesh Objects. After some more trail-and-error, as well as&#xD;
watching sessions &lt;a href="http://channel9.msdn.com/tags/pdc2008.live+framework/"&gt;Live&#xD;
Framework sessions from PDC&lt;/a&gt; I came up with the following mapping of Dive Log concepts&#xD;
against the Live Framework Resource Model:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="426" alt="Dive Log to Live Framework Resource Model Mapping Diagram" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/DiveLogResourceModelMapping_8df5a605-b39f-4ebe-9afc-cc9cf6c1b51a.png" width="663" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The Mesh Object is the level of granularity for sharing, synchronization and authorization.&#xD;
In fact each instance of a Mesh-enabled web application is in itself a Mesh Object.&#xD;
This means that each Mesh-enabled web application got access to a single Mesh Object;&#xD;
the object representing the application instance. This enables you to share application&#xD;
instances with other users, and the Live Framework Client will synchronize the Mesh&#xD;
Object (application instance) across your devices. If you want to create two dive&#xD;
logs, one for hobby dives and one for professional dives, you simply create two application&#xD;
instances. This would create two Mesh Objects, one for each instance, which you could&#xD;
shared with other users and synchronize across devices. The following diagram illustrates&#xD;
the application sharing model. Each instance is a Mesh Object shared with another&#xD;
user, and both the application and its data get synchronized between users.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="402" alt="Live Framework Application Sharing Model" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/LiveFrameworkApplicationSharing_83867f36-dabf-4e29-9623-43b412ed5352.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;Coding against the Live Framework Resource Model&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
After working out how to map the Dive Log against the Live Framework Resource Model&#xD;
the next step was to write the actual implementation of the storage service. This&#xD;
was fairly straight forward as the Live Framework provides a nice API to work with&#xD;
the Live Services. In fact the complete implementation of the Live Framework backed&#xD;
storage service was less than 200 lines of code. One of the changes I had to make&#xD;
to my Dive-object was to add a new Mesh ID so that I could map Dive-objects against&#xD;
Sync Entry objects. When the user clicks the save button the code will create a new&#xD;
Sync Entry object and set the Dive-object as the user data. This enables you to serialize&#xD;
custom objects into a Mesh Sync/Data Entry. Both Sync- and Data Entries hang of a&#xD;
Data Feed. The main difference is that Sync Entries is the implementation of the &lt;a href="http://dev.live.com/feedsync/"&gt;Feed&#xD;
Sync standard&lt;/a&gt;. This helps you deal with synchronization of data across devices.&#xD;
This is helpful since multiple users could be writing data to the same application&#xD;
instance, some who might be offline and only synchronize data back into the cloud&#xD;
at a later stage. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The following piece of code shows the implementation of the save method. The code&#xD;
will iterate over each dive being saved and check if it has been changed. If the object&#xD;
is changed the code will see if it can find a Sync Entry matching the Dive. If it&#xD;
finds a Sync Entry it will update the object by calling SetUserData. If no Sync Entry&#xD;
can be found a new one is created and the dive object is stored by calling SetUserData&#xD;
on the new Sync Entry. Finally the Synchronize method is called on the Data Feed.&#xD;
This will push any changes made locally back into the cloud, as well as read any new&#xD;
objects added remotely by other users/devices.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="641" alt="Synchronizing dives back to Live Mesh" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/SaveDivestoMesh_c401837a-b3b0-4e9e-b89d-404cbbd93c9d.png" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;Benefits from Mesh-enabling the Dive Log application&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Mesh-enabled web applications are a new type of applications. They are developed using&#xD;
web techniques like HTML, CSS, JavaScript or Silverlight, but can be deployed to the&#xD;
Live Mesh, and executed both inside the browser and on the desktop. This new application&#xD;
model opens up several new scenarios, and I think the Dive Log is a good example of&#xD;
an application that can benefit from being Mesh-enabled.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img height="408" alt="Screenshot of Dive Log Mesh on desktop" src="http://jonas.follesoe.no/content/binary/WindowsLiveWriter/MeshenablingtheDiveLogSilverlightApplica_9380/DiveLogMeshScreenshot_91f25f29-5dae-41b3-91a3-19f4b86c7020.jpg" width="670" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;b&gt;No need for server infrastructure&lt;/b&gt;&#xD;
            &lt;br&gt;&#xD;
As an application developer I can release the Dive Log application to the world without&#xD;
having to worry about server infrastructure. The application is deployed to Live Mesh,&#xD;
and all data is stored in the cloud. The user is in control of its own data and, and&#xD;
all dives are stored in an open ATOM based format that can be read by other applications. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;b&gt;Don’t have to worry about authentication and authorization&lt;/b&gt;&#xD;
            &lt;br&gt;&#xD;
I don’t have to worry about authentication, user management and authorization.&#xD;
All this is handled by Live Mesh and the Live Framework. The user authenticates using&#xD;
their Live ID, and authorization is managed by setting permissions on the Mesh-enabled&#xD;
application. &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;b&gt;Transparent offline and online support&lt;/b&gt;&#xD;
            &lt;br&gt;&#xD;
My Dive Log application can work both offline and online. This is a big deal as a&#xD;
user might be interested in logging dives on his laptop onboard a boat far at sea.&#xD;
This would be hard to do in traditional web applications. With Mesh-enabled web applications&#xD;
the application is synchronized to the laptop, and any data added offline will be&#xD;
synchronized back into the cloud when a connection is available. The best thing is&#xD;
that you as an application developer don’t have to worry about it. The Live&#xD;
Framework client libraries will detect if the user is offline or online, and use the&#xD;
correct service endpoint (remote or local). &#xD;
&lt;br&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;b&gt;Making the Dive Log application social&lt;/b&gt;&#xD;
            &lt;br&gt;&#xD;
By Mesh-enabling the Dive Log application I get access to a big social network. Users&#xD;
can share their Dive Logs with friends, invite other users to use the application,&#xD;
and share news stories as the log new dives. &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
These are just some of the benefits from Mesh-enabling the Dive Log application. I&#xD;
think Live Mesh and Live Services are going to be an interesting application platform&#xD;
to watch as it matures. Currently the benefits for consumer based applications are&#xD;
obvious. It will be interesting to see if this platform can provide value for more&#xD;
business focused applications.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Download the Mesh-enabled Dive Log application&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
I have &lt;a href="http://cid-1a08c11c407c0d8e.skydrive.live.com/self.aspx/Code%20samples/DiveLog%20Mesh%20November%20CTP.zip"&gt;uploaded&#xD;
the source code of the Mesh-enabled Dive Log application&lt;/a&gt;. It is a simple Silverlight&#xD;
2 application without the Live Framework project. You need to download and install&#xD;
the Live Framework SDK separately and then create a new Mesh-enabled Silverlight Project.&#xD;
Follow the steps described earlier in this post and add the Dive Log Silverlight application&#xD;
to your Live Framework project.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I have also &lt;a href=" https://developer.mesh-ctp.com/Web/Apps/AppConsent.aspx?AppUrl=Mesh%2fApplications%2fQY3AFZTLRDAUVGT342YQPHAEAI"&gt;published&#xD;
the Dive Log application to Live Mesh&lt;/a&gt; if you just want to run it as an end-user.&#xD;
You need to use the &lt;a href="http://developer.mesh-ctp.com/"&gt;Live Mesh Tech Preview&#xD;
online environment&lt;/a&gt;, as well as download the Live Mesh Tech Preview client (if&#xD;
you want to run the application from your desktop and not only inside the browser).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-1a08c11c407c0d8e.skydrive.live.com/embedrowdetail.aspx/Code%20samples/DiveLog%20Mesh%20November%20CTP.zip" frameborder="0" scrolling="no"&gt;&#xD;
          &lt;/iframe&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=81378618-cefb-4d67-ac27-b48bb16cc57d"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=hpaI6fFDApQ:qlzLCGVQLUY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=hpaI6fFDApQ:qlzLCGVQLUY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=hpaI6fFDApQ:qlzLCGVQLUY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=hpaI6fFDApQ:qlzLCGVQLUY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/hpaI6fFDApQ" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,81378618-cefb-4d67-ac27-b48bb16cc57d.aspx</comments>
      <category>Live Framework</category>
      <category>Live Mesh</category>
      <category>Silverlight</category>
      <category>Windows Azure</category>
    <feedburner:origLink>http://jonas.follesoe.no/MeshenablingTheDiveLogSilverlightApplication.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://jonas.follesoe.no/Trackback.aspx?guid=bab650c3-c814-4354-bfbb-385dbd4a85e7</trackback:ping>
      <pingback:server>http://jonas.follesoe.no/pingback.aspx</pingback:server>
      <pingback:target>http://jonas.follesoe.no/PermaLink,guid,bab650c3-c814-4354-bfbb-385dbd4a85e7.aspx</pingback:target>
      <dc:creator>Jonas Folles</dc:creator>
      <wfw:comment>http://jonas.follesoe.no/CommentView,guid,bab650c3-c814-4354-bfbb-385dbd4a85e7.aspx</wfw:comment>
      <wfw:commentRss>http://jonas.follesoe.no/SyndicationService.asmx/GetEntryCommentsRss?guid=bab650c3-c814-4354-bfbb-385dbd4a85e7</wfw:commentRss>
      <slash:comments>6</slash:comments>
      
      <title>Last User Group Presentation in Australia</title>
      <guid isPermaLink="false">http://jonas.follesoe.no/PermaLink,guid,bab650c3-c814-4354-bfbb-385dbd4a85e7.aspx</guid>
      <link>http://feedproxy.google.com/~r/follesoe/~3/khhT0ki5Wx8/LastUserGroupPresentationInAustralia.aspx</link>
      <pubDate>Sun, 07 Dec 2008 09:15:27 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I had originally planned that my Silverlight Designer &amp;amp; Developer Network presentation&#xD;
was going to be the last one I gave in Australia before flying back to Norway. But&#xD;
then me and Hege decided to do some traveling before going home, and we’re currently&#xD;
up in Byron Bay enjoying some diving and surfing. Wednesday we fly down to Sydney&#xD;
for a couple of days, and my good friend Adam Cogan asked if I could give a Silverlight&#xD;
talk at the Sydney .NET User Group. Off course I said yes – so Wednesday evening (December&#xD;
10th) I’m giving a talk on business applications in Silverlight. The title and abstract&#xD;
goes as follow:&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;p&gt;&#xD;
            &lt;strong&gt;Building data-centric applications in Silverlight 2&lt;/strong&gt;&#xD;
            &lt;br&gt;&#xD;
            &lt;em&gt;In this presentation you will get a overview of how to build data-centric (line-of-business)&#xD;
applications in Silverlight 2 using LINQ to SQL and WCF on the server. The presentation&#xD;
will cover how to deal with authentication for your WCF services from a Silverlight&#xD;
application, tips on how to architect your Silverlight application, and how to build&#xD;
flexible, testable code your designers can work with. You will also get a sneak preview&#xD;
of an application framework Microsoft is working on to make building business applications&#xD;
easier.&lt;/em&gt;&#xD;
          &lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
For registration, time and location check out the &lt;a href="http://www.ssw.com.au/ssw/NETUG/Sydney.aspx"&gt;Sydney&#xD;
.NET User Group web site&lt;/a&gt;. I expect the details to be published some time over&#xD;
the weekend.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
While in &lt;a href="http://www.coogeecastaway.com.au/"&gt;Sydney we’re going to stay at&#xD;
our favorite accommodation in Coogee&lt;/a&gt;, which is going to be great. We plant to&#xD;
finally see the opera house (I’ve been to Sydney multiple times for work, but have&#xD;
never actually seen the building!). Friday we fly down to Canberra to spend the weekend&#xD;
with a friend, before flying back to Melbourne Monday, and then back to Norway Wednesday&#xD;
December 17th.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Hope to see you in Sydney!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Update&lt;/strong&gt;: The details are now available on the SSW site and &lt;a href="http://www.facebook.com/home.php?#/event.php?eid=50698004831&amp;amp;ref=mf"&gt;on&#xD;
their Facebook group&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;em&gt;Time and Place Date&lt;/em&gt;: Wednesday, December 10, 2008 &#xD;
&lt;br&gt;&lt;em&gt;Time&lt;/em&gt;: 6:00pm - 9:00pm &#xD;
&lt;br&gt;&lt;em&gt;Location&lt;/em&gt;: Microsoft HQ, North Ryde &#xD;
&lt;br&gt;&lt;em&gt;Street&lt;/em&gt;: 1 Epping Road, North Ryde NSW 2113 &#xD;
&lt;br&gt;&lt;em&gt;City/Town&lt;/em&gt;: Lane Cove, Australia &#xD;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://jonas.follesoe.no/aggbug.ashx?id=bab650c3-c814-4354-bfbb-385dbd4a85e7"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=khhT0ki5Wx8:kUQjzcWlzME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=khhT0ki5Wx8:kUQjzcWlzME:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/follesoe?a=khhT0ki5Wx8:kUQjzcWlzME:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/follesoe?i=khhT0ki5Wx8:kUQjzcWlzME:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/follesoe/~4/khhT0ki5Wx8" height="1" width="1"/&gt;</description>
      <comments>http://jonas.follesoe.no/CommentView,guid,bab650c3-c814-4354-bfbb-385dbd4a85e7.aspx</comments>
      <category>Presentation</category>
      <category>Silverlight</category>
      <category>Travel</category>
    <feedburner:origLink>http://jonas.follesoe.no/LastUserGroupPresentationInAustralia.aspx</feedburner:origLink></item>
  </channel>
</rss>
