<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" version="2.0">
  <channel>
    <title>.NET Ramblings - Brian Noyes' Blog</title>
    <link>http://www.softinsight.com/bnoyes/</link>
    <description>Occasional mutterings on .NET architecture and development</description>
    <language>en-us</language>
    <copyright>Brian Noyes</copyright>
    <lastBuildDate>Sat, 10 May 2008 14:18:47 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>brian@softinsight.com</managingEditor>
    <webMaster>brian@softinsight.com</webMaster>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=5a11169c-cffd-46b9-b4ed-add4bfd5ec05</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,5a11169c-cffd-46b9-b4ed-add4bfd5ec05.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,5a11169c-cffd-46b9-b4ed-add4bfd5ec05.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=5a11169c-cffd-46b9-b4ed-add4bfd5ec05</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It will definitely be a busy TechEd for me this year. I'll be giving six sessions
at TechEd Developers Orlando in June, as well as spending a lot of time in the TLCs
and at the RD booth..
</p>
        <p>
The sessions are as follows:
</p>
        <p>
Tue, 3 June, 11:30-12:30 AM: Vista Ask the Experts area
</p>
        <p>
Doing Q&amp;A on selecting the right client technology.
</p>
        <p>
Tue, 3 June, 1:15-2:30 PM: WIN315 - Data Binding in WPF
</p>
        <p>
This talk will cover the A-Z of data binding capabilities in WPF. I'll start by talking
about the different kinds of data sources you can bind to and the interfaces those
data sources need to support to have high fidelity data binding. Then I'll go through
what data contexts are and how they allow you to flow data into you UI in a more decoupled
fashion. Then I'll get into Binding objects and how you use them to hook up the data
binding to your controls, and the many capabilities they expose. Then I cover navigating
and filtering your data with collection views, and finally finish up with data validation.
</p>
        <p>
Tue, 3 June, 4:00-5:00 PM: Vista Ask the Experts area
</p>
        <p>
Doing Q&amp;A on WPF Data Binding
</p>
        <p>
Wed, 4 June, 10:15-11:30 AM: ARC304 - Selecting the Right Client Technology
</p>
        <p>
This talk covers the spectrum of options that exist for building client UI applications
today, helping you to make the right choice when getting started with a new UI application.
I start by talking about the decision between smart client and browser based applications,
drawing out the pros and cons of each approach. Then I get into each of the current
technologies including WPF, Windows Forms, ASP.NET, ASP.NET AJAX, and Silverlight,
and talk about the pros/cons, differences/similarities between each of those technologies.
</p>
        <p>
Thu, 5 June, 4:30-5:45 PM: WIN301 - Windows Presentation Foundation in Windows Forms
and Vice Versa
</p>
        <p>
This talk covers the interoperability story between Windows Forms and WPF, which is
a great one. I start with the motivations of why you would want to use interop as
opposed to building a homogenous application in one or the other technology. Then
I show how to embed WPF controls in a Windows Forms application, and Windows Forms
controls in a WPF application. If it were just about the code required to do those
things, I could give this talk in about 10 minutes. But of course, there are always
other considerations and hazards to be aware of when doing interop between technology
stacks, so I then let you know what those hazards are and how to address them.
</p>
        <p>
Fri, 6 Jun, 8:30-9:45 AM: WIN306 Building Differentiated UI Applications Using Composite
Windows Presentation Foundation
</p>
        <p>
I'll be joining Glenn Block from p&amp;p to code monkey for this session on using <a href="http://www.codeplex.com/Prism">Prism</a> to
build composite WPF solutions. <a href="http://briannoyes.net/2008/04/29/PrismCompositeWPFGuidance.aspx">I've
been working</a> with the team part time building this, so Glenn was nice enough to
invite me to help present.
</p>
        <p>
Fri, 6 June, 1:00-2:15 PM: SOA305 - Getting Workflows Running and Talking in Your
Applications
</p>
        <p>
This talk covers the hosting and communications aspects of Windows Workflow Foundation
(WF). You will learn how to set up the host environment for running workflows, how
to leverage persistence and tracking, how to pass parameters into a workflow and get
them back out when it completes, and how to make calls from the host application into
the workflow. I'll also briefly discuss making service calls into and out from a workflow,
but don't demo those in details because my TLC session (listed next) covers doing
that in detail.
</p>
        <p>
Fri, 6 June, 2:45-4:00 PM: SOA08-TLC - Developing Service Oriented Workflows
</p>
        <p>
This talk shows you how to leverage the new WCF related capabilities in WF 3.5 to
build workflows that particpate directly in your service oriented architecture. You'll
see how to use the Receive and Send activities, the context bindings that take care
of automatically routing incoming messages to the right workflow instance, and the
WorkflowServiceHost class to host your workflows. This is a TLC session down on the
show floor, and the rule of the game there is max interaction, and minimum if any
PowerPoint. I in fact have only two slides planned, a couple architecture diagrams
to couch the discussion, and the rest will be all code demos showing you how to really
leverage this stuff.
</p>
        <p>
I also plan to spend an hour after each session in the associated TLC area, and then
most of the rest in the RD booth.
</p>
        <p>
If you are going to be at TechEd, I hope to see you at one of my sessions. If so,
stop by and say hi and let me know you are one of the few who actually read my blog.
:)
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=5a11169c-cffd-46b9-b4ed-add4bfd5ec05" />
      </body>
      <title>Upcoming TechEd Talks</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,5a11169c-cffd-46b9-b4ed-add4bfd5ec05.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/05/10/UpcomingTechEdTalks.aspx</link>
      <pubDate>Sat, 10 May 2008 14:18:47 GMT</pubDate>
      <description>&lt;p&gt;
It will definitely be a busy TechEd for me this year. I'll be giving six sessions
at TechEd Developers Orlando in June, as well as spending a lot of time in the TLCs
and at the RD booth..
&lt;/p&gt;
&lt;p&gt;
The sessions are as follows:
&lt;/p&gt;
&lt;p&gt;
Tue, 3 June, 11:30-12:30 AM: Vista Ask the Experts area
&lt;/p&gt;
&lt;p&gt;
Doing Q&amp;amp;A on selecting the right client technology.
&lt;/p&gt;
&lt;p&gt;
Tue, 3 June, 1:15-2:30 PM: WIN315 - Data Binding in WPF
&lt;/p&gt;
&lt;p&gt;
This talk will cover the A-Z of data binding capabilities in WPF. I'll start by talking
about the different kinds of data sources you can bind to and the interfaces those
data sources need to support to have high fidelity data binding. Then I'll go through
what data contexts are and how they allow you to flow data into you UI in a more decoupled
fashion. Then I'll get into Binding objects and how you use them to hook up the data
binding to your controls, and the many capabilities they expose. Then I cover navigating
and filtering your data with collection views, and finally finish up with data validation.
&lt;/p&gt;
&lt;p&gt;
Tue, 3 June, 4:00-5:00 PM: Vista Ask the Experts area
&lt;/p&gt;
&lt;p&gt;
Doing Q&amp;amp;A on WPF Data Binding
&lt;/p&gt;
&lt;p&gt;
Wed, 4 June, 10:15-11:30 AM: ARC304 - Selecting the Right Client Technology
&lt;/p&gt;
&lt;p&gt;
This talk covers the spectrum of options that exist for building client UI applications
today, helping you to make the right choice when getting started with a new UI application.
I start by talking about the decision between smart client and browser based applications,
drawing out the pros and cons of each approach. Then I get into each of the current
technologies including WPF, Windows Forms, ASP.NET, ASP.NET AJAX, and Silverlight,
and talk about the pros/cons, differences/similarities between each of those technologies.
&lt;/p&gt;
&lt;p&gt;
Thu, 5 June, 4:30-5:45 PM: WIN301 - Windows Presentation Foundation in Windows Forms
and Vice Versa
&lt;/p&gt;
&lt;p&gt;
This talk covers the interoperability story between Windows Forms and WPF, which is
a great one. I start with the motivations of why you would want to use interop as
opposed to building a homogenous application in one or the other technology. Then
I show how to embed WPF controls in a Windows Forms application, and Windows Forms
controls in a WPF application. If it were just about the code required to do those
things, I could give this talk in about 10 minutes. But of course, there are always
other considerations and hazards to be aware of when doing interop between technology
stacks, so I then let you know what those hazards are and how to address them.
&lt;/p&gt;
&lt;p&gt;
Fri, 6 Jun, 8:30-9:45 AM: WIN306 Building Differentiated UI Applications Using Composite
Windows Presentation Foundation
&lt;/p&gt;
&lt;p&gt;
I'll be joining Glenn Block from p&amp;amp;p to code monkey for this session on using &lt;a href="http://www.codeplex.com/Prism"&gt;Prism&lt;/a&gt; to
build composite WPF solutions. &lt;a href="http://briannoyes.net/2008/04/29/PrismCompositeWPFGuidance.aspx"&gt;I've
been working&lt;/a&gt; with the team part time building this, so Glenn was nice enough to
invite me to help present.
&lt;/p&gt;
&lt;p&gt;
Fri, 6 June, 1:00-2:15 PM: SOA305 - Getting Workflows Running and Talking in Your
Applications
&lt;/p&gt;
&lt;p&gt;
This talk covers the hosting and communications aspects of Windows Workflow Foundation
(WF). You will learn how to set up the host environment for running workflows, how
to leverage persistence and tracking, how to pass parameters into a workflow and get
them back out when it completes, and how to make calls from the host application into
the workflow. I'll also briefly discuss making service calls into and out from a workflow,
but don't demo those in details because my TLC session (listed next) covers doing
that in detail.
&lt;/p&gt;
&lt;p&gt;
Fri, 6 June, 2:45-4:00 PM: SOA08-TLC - Developing Service Oriented Workflows
&lt;/p&gt;
&lt;p&gt;
This talk shows you how to leverage the new WCF related capabilities in WF 3.5 to
build workflows that particpate directly in your service oriented architecture. You'll
see how to use the Receive and Send activities, the context bindings that take care
of automatically routing incoming messages to the right workflow instance, and the
WorkflowServiceHost class to host your workflows. This is a TLC session down on the
show floor, and the rule of the game there is max interaction, and minimum if any
PowerPoint. I in fact have only two slides planned, a couple architecture diagrams
to couch the discussion, and the rest will be all code demos showing you how to really
leverage this stuff.
&lt;/p&gt;
&lt;p&gt;
I also plan to spend an hour after each session in the associated TLC area, and then
most of the rest in the RD booth.
&lt;/p&gt;
&lt;p&gt;
If you are going to be at TechEd, I hope to see you at one of my sessions. If so,
stop by and say hi and let me know you are one of the few who actually read my blog.
:)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=5a11169c-cffd-46b9-b4ed-add4bfd5ec05" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,5a11169c-cffd-46b9-b4ed-add4bfd5ec05.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=2f543e37-210b-4b4a-b63d-624a0b5deebd</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,2f543e37-210b-4b4a-b63d-624a0b5deebd.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,2f543e37-210b-4b4a-b63d-624a0b5deebd.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=2f543e37-210b-4b4a-b63d-624a0b5deebd</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There is an important trick I learned years ago that I always refer to as "The evil
suo file" that I thought was more common knowledge than I guess it is. I realized
this when I had to show it to my <a href="http://www.dasblonde.net/2008/04/24/MyProxyWrapperAndTheEVILSUOFile.aspx">esteemed
colleague Michele</a> and she had never heard of it. It has happened to me dozens
and dozens of times and dates back to VS 2003 or VS 2002 was when I first learned
it, source long forgotten.
</p>
        <p>
Here is the deal. If you are debugging and you are staring at the code and have something
weird happening in Visual Studio. If you can convince yourself there is no way this
could be happening, the code just can't/shouldn't be doing what you are seeing. In
Michele's case we were stepping through the code, watching one line of code setting
a property, seeing that no other code set the property through a breakpoint in the
setter, and then a line of code read the property and it was a different value than
last set.
</p>
        <p>
One thing you should try is to close VS, delete the suo file in the solution folder,
and open the solution and try it again. Like I said, dozens and dozens of times, this
has made something really squirrely go away for me.
</p>
        <p>
My general fighting and winning with VS is this. Convince myself that I am not just
trying to blame VS for something wrong with my code. VS is a wonderful, powerful,
amazing tool that makes our lives SO much easier than they used to be.
</p>
        <p>
1) If VS is doing something weird, close and reopen, and try again.
</p>
        <p>
2) If VS is still doing something weird, close delete suo, and reopen and try again.
</p>
        <p>
3) If VS is still doing something weird, close and <a href="http://www.codinghorror.com/blog/archives/000368.html">Clean
Sources</a> (delete suo and all obj/bin folders), reopen  and try again.
</p>
        <p>
4) If VS is complaining about references to do with a project, remove it from the
solution and add it back in. This happened with a customer this week where VS was
insisting we were trying to add a circular reference when trying to add a ref to a
particular project in the solution, and it was just lying. Removing it from the solution
and adding it back in (and of course patching all the removed references from all
the dependent project) fixed it.
</p>
        <p>
5) If you have any add-ins, go to Tools &gt; Add in manager and uncheck the startup
box for all add ins. Close and reopen studio and see if the problem goes away. If
so you may have a problematic add-in.
</p>
        <p>
If those don't do it, it was probably your code in the first place. 
</p>
        <p>
Again, VS is an awesome dev environment. We really have it good. However, it is not
perfect like most software. Don't waste hours chasing goblins in your code when it
may just be a touch of gas in the VS belly.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=2f543e37-210b-4b4a-b63d-624a0b5deebd" />
      </body>
      <title>The evil sou file - fighting and winning with Visual Studio</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,2f543e37-210b-4b4a-b63d-624a0b5deebd.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/05/10/TheEvilSouFileFightingAndWinningWithVisualStudio.aspx</link>
      <pubDate>Sat, 10 May 2008 14:00:07 GMT</pubDate>
      <description>&lt;p&gt;
There is an important trick I learned years ago that I always refer to as "The evil
suo file" that I thought was more common knowledge than I guess it is. I realized
this when I had to show it to my &lt;a href="http://www.dasblonde.net/2008/04/24/MyProxyWrapperAndTheEVILSUOFile.aspx"&gt;esteemed
colleague Michele&lt;/a&gt; and she had never heard of it. It has happened to me dozens
and dozens of times and dates back to VS 2003 or VS 2002 was when I first learned
it, source long forgotten.
&lt;/p&gt;
&lt;p&gt;
Here is the deal. If you are debugging and you are staring at the code and have something
weird happening in Visual Studio. If you can convince yourself there is no way this
could be happening, the code just can't/shouldn't be doing what you are seeing. In
Michele's case we were stepping through the code, watching one line of code setting
a property, seeing that no other code set the property through a breakpoint in the
setter, and then a line of code read the property and it was a different value than
last set.
&lt;/p&gt;
&lt;p&gt;
One thing you should try is to close VS, delete the suo file in the solution folder,
and open the solution and try it again. Like I said, dozens and dozens of times, this
has made something really squirrely go away for me.
&lt;/p&gt;
&lt;p&gt;
My general fighting and winning with VS is this. Convince myself that I am not just
trying to blame VS for something wrong with my code. VS is a wonderful, powerful,
amazing tool that makes our lives SO much easier than they used to be.
&lt;/p&gt;
&lt;p&gt;
1) If VS is doing something weird, close and reopen, and try again.
&lt;/p&gt;
&lt;p&gt;
2) If VS is still doing something weird, close delete suo, and reopen and try again.
&lt;/p&gt;
&lt;p&gt;
3) If VS is still doing something weird, close and &lt;a href="http://www.codinghorror.com/blog/archives/000368.html"&gt;Clean
Sources&lt;/a&gt; (delete suo and all obj/bin folders), reopen&amp;nbsp; and try again.
&lt;/p&gt;
&lt;p&gt;
4) If VS is complaining about references to do with a project, remove it from the
solution and add it back in. This happened with a customer this week where VS was
insisting we were trying to add a circular reference when trying to add a ref to a
particular project in the solution, and it was just lying. Removing it from the solution
and adding it back in (and of course patching all the removed references from all
the dependent project) fixed it.
&lt;/p&gt;
&lt;p&gt;
5) If you have any add-ins, go to Tools &amp;gt; Add in manager and uncheck the startup
box for all add ins. Close and reopen studio and see if the problem goes away. If
so you may have a problematic add-in.
&lt;/p&gt;
&lt;p&gt;
If those don't do it, it was probably your code in the first place. 
&lt;/p&gt;
&lt;p&gt;
Again, VS is an awesome dev environment. We really have it good. However, it is not
perfect like most software. Don't waste hours chasing goblins in your code when it
may just be a touch of gas in the VS belly.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=2f543e37-210b-4b4a-b63d-624a0b5deebd" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,2f543e37-210b-4b4a-b63d-624a0b5deebd.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=e14c5f5b-24dc-432c-ac5a-5232e31c22e3</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,e14c5f5b-24dc-432c-ac5a-5232e31c22e3.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,e14c5f5b-24dc-432c-ac5a-5232e31c22e3.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=e14c5f5b-24dc-432c-ac5a-5232e31c22e3</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#ff0000">UPDATE: Minor changes thanks to some feedback from Glenn.</font>
        </p>
        <p>
This is a post I am long overdue in making (yes, <a href="http://blogs.msdn.com/gblock/">Glenn</a>,
I am finally getting to it!). For the last 4 months, I've been working about a week
a month in between consulting and training gigs for Microsoft patterns and practices,
helping to develop and architect <a href="http://www.codeplex.com/Prism">Prism</a>,
which is the codename for a Composite WPF guidance package we have been working on.
I can't take too much credit considering I have only been dedicating 1/4 time or so
to the project, the bulk of the work has been done by the p&amp;p Prism team. Plus, <a href="http://blogs.interknowlogy.com/adamcalderon/">Adam
Calderon</a> from Interknowlogy recently joined them as another outside WPF expert,
and is filling the void nicely since I didn't have enough time to give them.
</p>
        <p>
          <strong>What is a Composite UI Application?</strong>
        </p>
        <p>
Basically Prism is looking to address most of the same concerns that led to the development
of the <a href="http://msdn2.microsoft.com/en-us/library/aa480450.aspx">Composite
UI Application Block (CAB)</a> and the <a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx">Smart
Client Software Factory (SCSF)</a>. Specifically, if you have a large, complicated
smart client application, particularly one developed by multiple (possibly distributed)
teams, you can't afford to build it all into one big monolithic mass of UI code in
a single or small number of top level windows and their code behind. You will need
to modularize the application and compose the UI that the user sees out of smaller,
more granular and well factored parts that are as decoupled as possible from one another,
but come together to make the end result without an overly complex integration effort. 
</p>
        <p>
To a small degree, you can pull this off by simply decomposing your UI into user controls
to partition the functionality across a number of these mini-screens that compose
the UI. But even with that approach you typically end up with a complicated mess of
interdependencies and communication paths between the individual parts. 
</p>
        <p>
To do it right, you need to apply a number of patterns for composing your top level
UI out of individual modules and views, each of which is decoupled from each other
and composable themselves. This is what we are setting out to make easier with Prism.
CAB and SCSF actually did a very good job of this for Windows Forms, and can be used
for WPF as well. However, CAB and SCSF had a number of negatives to them and also
don't fully leverage the capabilities of WPF. As a result, we started with a clean
slate with Prism and are not simply porting CAB. We are trying to leverage concepts
and patterns that worked well in CAB, while strictly avoiding those that were overly
cumbersome. We are also not reusing any code, with the goal of not being tainted by
any of that past work and led down the "it was good enough" mentality that plagues
many porting efforts.
</p>
        <p>
          <strong>What is it?</strong>
        </p>
        <p>
So what is Prism, or at least, what will it be when it ships? Prism is a guidance
deliverable, which is a  combination of written guidance documentation, sample
code, and the beginnings of what could become a "framework" some day. If you have
been exposed to other p&amp;p offerings such as Enterprise Library or Smart Client
Software Factory, you will find it easier to understand what we will be shipping.
Most of the effort so far has been focused on developing a "<a href="http://en.wikipedia.org/wiki/Reference_implementation">Reference
Implementation</a>" or RI, which is a sample application that represents a real world
application that is more than a simple demo, but less than a huge sample like Dinner
Now. Specifically, it is sample application that demonstrates the core concepts and
coding patterns of the project, and that allows those to be teased out while trying
to build something semi-real. While building that and refining the patterns, we also
factor out as much reusable stuff as possible into a set of class libraries that could
be considered the beginnings of a framework for building composite WPF applications.
</p>
        <p>
By the time we ship, Prism will also contain documentation that includes overview
information of goals and challenges, design patterns, how-to topics, documentation
on the RI, and documentation on the reusable parts (the framework), as well as QuickStarts.
The QuickStarts are smaller sample apps that demonstrate just one aspect of what Prism
offers, often a pattern or piece of code that we recognize as a common need for composite
apps, but not one that we can really incorporate into the RI without making it seem
like a confusing mishmash of unrelated stuff. These too will be covered in the documentation.
The frameworky pieces are designed so that they are usable in isolation - you don't
have to adopt all of Prism to use part of it (one of the big downsides of CAB).
</p>
        <p>
The key thing here is to provide stuff that makes building well designed composite
WPF applications as easy as possible. However, I do have to caution you: building
composite decoupled complex applications is... well, complex. We can help make it
easier, but we can't make it easy. You are still going to have to do the work of figuring
what the right levels of decomposition and decoupling are for your app and your dev
team, and then learn how to apply the patterns that we are fleshing out and demonstrating
for you. This will not be a push a button, read your mind, and pop out a fully implemented
application tool. It will be more like a do-it-yourself guide for building these kinds
of applications.
</p>
        <p>
          <strong>What is in Prism today?</strong>
        </p>
        <p>
p&amp;p runs a very agile shop. We develop with a Test-Driven Development (yes, even
test first to the degree possible) approach, short iterations (2-3 weeks), and ship
frequently (current goals and performance are to release a code drop with each iteration).
As a result, our code drops on each iteration are publicly available through the <a href="http://www.codeplex.com/Prism">Prism
Codeplex</a> side. We welcome anyone who wants to start playing with or using the
early bits to do so and give us feedback on what you like or don't like. 
</p>
        <p>
So far, Prism is mainly the RI, which is a stock trading application scenario. It
is not very fully functioned, and has to only deal with dummy data for legal reasons
yadda yadda. But it does incorporate a number of the features we have been working
on.
</p>
        <p>
The things in the RI so far include: 
</p>
        <ul>
          <li>
UI Patterns - we have Model-View-Presenter (MVP), <a href="http://www.martinfowler.com/eaaDev/PresentationModel.html">Presentation
Model</a> (aka <a href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx">Model-View-ViewModel
MVVM</a> or just View Model), and a couple kinds of controllers in the RI and QuickStarts
so far. 
</li>
          <li>
Modular decomposition - we are factoring out different pieces of functionality into
different modules to represent the way a distributed team or multiple teams would
likely decompose the work and allocate responsibility to different teams for different
parts of the UI. The modular approach allows them to work more in isolation, minimizing
dependencies and the need for shared source code access and check out (reducing source
control contention). We are not yet doing dynamic modular loading like CAB does, but
that is definitely in the backlog (to-do list). 
</li>
          <li>
Views - The UI composition is all based around the definition of views, which are
granular piece of the overall "screen" that you are putting together. We have examples
of simple views, which can be defined as a custom control, user control, or even just
a data template, as well as composite views, which have child views and possibly regions
contained within them. 
</li>
          <li>
Regions - this is the term we have settled on for something that is similar to what
CAB called a Workspace. It is basically a container or location in the UI that modules
can inject their views. For a decoupled composite app, you absolutely need these at
a shell level so that the shell (top level window) does not have to have intimate
(or any) knowledge of the contents that are provided by the modules. They can also
be important down inside a composite view that is contributed by a module, so we are
working on support at that level as well. 
</li>
          <li>
Commands - for decoupled composite UIs, the built-in routed commands of WPF are insufficient
because they are inextricably tied to the visual tree of your application. As a result,
you get stuck in focus hell if you try to use them when your command handling logic
lives anywhere other than at the root of your visual tree. To provide a more decoupled
approach that will work across views and modules, we have implemented a commanding
approach that is based on the ICommand interface of WPF, but with a different implementation. 
</li>
          <li>
Dependency Injection (DI) - Also known as Inversion of Control (IoC), this becomes
critically important for both breaking dependency chains when unit testing, and in
the context of Prism, for allowing objects to be resolved without having object references
passed explicitly all over the place, which breaks down the decoupling that you strive
for in a composite app. Prism supports using multiple different DI containers. We
are primarily using <a href="http://www.codeplex.com/unity">Unity</a>, which is a
new DI container developed by p&amp;p, but you can also use Castle Winsor, StructureMap,
Spring.net, or possible others. 
</li>
          <li>
Services - Services in Prism are not SOA web services, but rather decoupled chunks
of functionality that can be used across multiple models. We are using services for
getting data into our presentation models (with dummy data), as well as for some of
the common functionality such as region management, commands, and eventually event
brokering. 
</li>
          <li>
Custom Controls - to present some of our data in the way that we wanted, we needed
some custom controls. Luckily we were able to steal a set of them from another Microsoft
product team. They are not fully featured or production ready, but they are a starting
point you can look at if you need to develop similar controls. 
</li>
        </ul>
        <p>
There is probably a few other key things in there that I am not thinking of off the
top of my head, but hey, this post is getting long enough as it is.
</p>
        <p>
          <strong>Wrap up</strong>
        </p>
        <p>
So if you are in or moving into the WPF space, and if you are building large, enterprise
scale apps with large or distributed teams, I'd encourage you to check out Prism and
stay tuned for when we eventually release. I think you will find it will help accelerate
your WPF development.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=e14c5f5b-24dc-432c-ac5a-5232e31c22e3" />
      </body>
      <title>Prism: Composite WPF Guidance</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,e14c5f5b-24dc-432c-ac5a-5232e31c22e3.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/04/29/PrismCompositeWPFGuidance.aspx</link>
      <pubDate>Tue, 29 Apr 2008 14:31:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#ff0000&gt;UPDATE: Minor changes thanks to some feedback from Glenn.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
This is a post I am long overdue in making (yes, &lt;a href="http://blogs.msdn.com/gblock/"&gt;Glenn&lt;/a&gt;,
I am finally getting to it!). For the last 4 months, I've been working about a week
a month in between consulting and training gigs for Microsoft patterns and practices,
helping to develop and architect &lt;a href="http://www.codeplex.com/Prism"&gt;Prism&lt;/a&gt;,
which is the codename for a Composite WPF guidance package we have been working on.
I can't take too much credit considering I have only been dedicating 1/4 time or so
to the project, the bulk of the work has been done by the p&amp;amp;p Prism team. Plus, &lt;a href="http://blogs.interknowlogy.com/adamcalderon/"&gt;Adam
Calderon&lt;/a&gt; from Interknowlogy recently joined them as another outside WPF expert,
and is filling the void nicely since I didn't have enough time to give them.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What is a Composite UI Application?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Basically Prism is looking to address most of the same concerns that led to the development
of the &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480450.aspx"&gt;Composite
UI Application Block (CAB)&lt;/a&gt; and the &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart
Client Software Factory (SCSF)&lt;/a&gt;. Specifically, if you have a large, complicated
smart client application, particularly one developed by multiple (possibly distributed)
teams, you can't afford to build it all into one big monolithic mass of UI code in
a single or small number of top level windows and their code behind. You will need
to modularize the application and compose the UI that the user sees out of smaller,
more granular and well factored parts that are as decoupled as possible from one another,
but come together to make the end result without an overly complex integration effort. 
&lt;/p&gt;
&lt;p&gt;
To a small degree, you can pull this off by simply decomposing your UI into user controls
to partition the functionality across a number of these mini-screens that compose
the UI. But even with that approach you typically end up with a complicated mess of
interdependencies and communication paths between the individual parts. 
&lt;/p&gt;
&lt;p&gt;
To do it right, you need to apply a number of patterns for composing your top level
UI out of individual modules and views, each of which is decoupled from each other
and composable themselves. This is what we are setting out to make easier with Prism.
CAB and SCSF actually did a very good job of this for Windows Forms, and can be used
for WPF as well. However, CAB and SCSF had a number of negatives to them and also
don't fully leverage the capabilities of WPF. As a result, we started with a clean
slate with Prism and are not simply porting CAB. We are trying to leverage concepts
and patterns that worked well in CAB, while strictly avoiding those that were overly
cumbersome. We are also not reusing any code, with the goal of not being tainted by
any of that past work and led down the "it was good enough" mentality that plagues
many porting efforts.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What is it?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So what is Prism, or at least, what will it be when it ships? Prism is a guidance
deliverable, which is a&amp;nbsp; combination of written guidance documentation, sample
code, and the beginnings of what could become a "framework" some day. If you have
been exposed to other p&amp;amp;p offerings such as Enterprise Library or Smart Client
Software Factory, you will find it easier to understand what we will be shipping.
Most of the effort so far has been focused on developing a "&lt;a href="http://en.wikipedia.org/wiki/Reference_implementation"&gt;Reference
Implementation&lt;/a&gt;" or RI, which is a sample application that represents a real world
application that is more than a simple demo, but less than a huge sample like Dinner
Now. Specifically, it is sample application that demonstrates the core concepts and
coding patterns of the project, and that allows those to be teased out while trying
to build something semi-real. While building that and refining the patterns, we also
factor out as much reusable stuff as possible into a set of class libraries that could
be considered the beginnings of a framework for building composite WPF applications.
&lt;/p&gt;
&lt;p&gt;
By the time we ship, Prism will also contain documentation that includes overview
information of goals and challenges, design patterns, how-to topics, documentation
on the RI, and documentation on the reusable parts (the framework), as well as QuickStarts.
The QuickStarts are smaller sample apps that demonstrate just one aspect of what Prism
offers, often a pattern or piece of code that we recognize as a common need for composite
apps, but not one that we can really incorporate into the RI without making it seem
like a confusing mishmash of unrelated stuff. These too will be covered in the documentation.
The frameworky pieces are designed so that they are usable in isolation - you don't
have to adopt all of Prism to use part of it (one of the big downsides of CAB).
&lt;/p&gt;
&lt;p&gt;
The key thing here is to provide stuff that makes building well designed composite
WPF applications as easy as possible. However, I do have to caution you: building
composite decoupled complex applications is... well, complex. We can help make it
easier, but we can't make it easy. You are still going to have to do the work of figuring
what the right levels of decomposition and decoupling are for your app and your dev
team, and then learn how to apply the patterns that we are fleshing out and demonstrating
for you. This will not be a push a button, read your mind, and pop out a fully implemented
application tool. It will be more like a do-it-yourself guide for building these kinds
of applications.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What is in Prism today?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
p&amp;amp;p runs a very agile shop. We develop with a Test-Driven Development (yes, even
test first to the degree possible) approach, short iterations (2-3 weeks), and ship
frequently (current goals and performance are to release a code drop with each iteration).
As a result, our code drops on each iteration are publicly available through the &lt;a href="http://www.codeplex.com/Prism"&gt;Prism
Codeplex&lt;/a&gt; side. We welcome anyone who wants to start playing with or using the
early bits to do so and give us feedback on what you like or don't like. 
&lt;/p&gt;
&lt;p&gt;
So far, Prism is mainly the RI, which is a stock trading application scenario. It
is not very fully functioned, and has to only deal with dummy data for legal reasons
yadda yadda. But it does incorporate a number of the features we have been working
on.
&lt;/p&gt;
&lt;p&gt;
The things in the RI so far include: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
UI Patterns - we have Model-View-Presenter (MVP), &lt;a href="http://www.martinfowler.com/eaaDev/PresentationModel.html"&gt;Presentation
Model&lt;/a&gt; (aka &lt;a href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx"&gt;Model-View-ViewModel
MVVM&lt;/a&gt; or just View Model), and a couple kinds of controllers in the RI and QuickStarts
so far. 
&lt;li&gt;
Modular decomposition - we are factoring out different pieces of functionality into
different modules to represent the way a distributed team or multiple teams would
likely decompose the work and allocate responsibility to different teams for different
parts of the UI. The modular approach allows them to work more in isolation, minimizing
dependencies and the need for shared source code access and check out (reducing source
control contention). We are not yet doing dynamic modular loading like CAB does, but
that is definitely in the backlog (to-do list). 
&lt;li&gt;
Views - The UI composition is all based around the definition of views, which are
granular piece of the overall "screen" that you are putting together. We have examples
of simple views, which can be defined as a custom control, user control, or even just
a data template, as well as composite views, which have child views and possibly regions
contained within them. 
&lt;li&gt;
Regions - this is the term we have settled on for something that is similar to what
CAB called a Workspace. It is basically a container or location in the UI that modules
can inject their views. For a decoupled composite app, you absolutely need these at
a shell level so that the shell (top level window) does not have to have intimate
(or any) knowledge of the contents that are provided by the modules. They can also
be important down inside a composite view that is contributed by a module, so we are
working on support at that level as well. 
&lt;li&gt;
Commands - for decoupled composite UIs, the built-in routed commands of WPF are insufficient
because they are inextricably tied to the visual tree of your application. As a result,
you get stuck in focus hell if you try to use them when your command handling logic
lives anywhere other than at the root of your visual tree. To provide a more decoupled
approach that will work across views and modules, we have implemented a commanding
approach that is based on the ICommand interface of WPF, but with a different implementation. 
&lt;li&gt;
Dependency Injection (DI) - Also known as Inversion of Control (IoC), this becomes
critically important for both breaking dependency chains when unit testing, and in
the context of Prism, for allowing objects to be resolved without having object references
passed explicitly all over the place, which breaks down the decoupling that you strive
for in a composite app. Prism supports using multiple different DI containers. We
are primarily using &lt;a href="http://www.codeplex.com/unity"&gt;Unity&lt;/a&gt;, which is a
new DI container developed by p&amp;amp;p, but you can also use Castle Winsor, StructureMap,
Spring.net, or possible others. 
&lt;li&gt;
Services - Services in Prism are not SOA web services, but rather decoupled chunks
of functionality that can be used across multiple models. We are using services for
getting data into our presentation models (with dummy data), as well as for some of
the common functionality such as region management, commands, and eventually event
brokering. 
&lt;li&gt;
Custom Controls - to present some of our data in the way that we wanted, we needed
some custom controls. Luckily we were able to steal a set of them from another Microsoft
product team. They are not fully featured or production ready, but they are a starting
point you can look at if you need to develop similar controls. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There is probably a few other key things in there that I am not thinking of off the
top of my head, but hey, this post is getting long enough as it is.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Wrap up&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So if you are in or moving into the WPF space, and if you are building large, enterprise
scale apps with large or distributed teams, I'd encourage you to check out Prism and
stay tuned for when we eventually release. I think you will find it will help accelerate
your WPF development.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=e14c5f5b-24dc-432c-ac5a-5232e31c22e3" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,e14c5f5b-24dc-432c-ac5a-5232e31c22e3.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=9e7f8776-82ea-4342-b148-d2a04643d5c4</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,9e7f8776-82ea-4342-b148-d2a04643d5c4.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,9e7f8776-82ea-4342-b148-d2a04643d5c4.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=9e7f8776-82ea-4342-b148-d2a04643d5c4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A little late to the game, but I have been struggling with some blog configuration
issues that were preventing me from posting, and have finally found time to tackle
those.
</p>
        <p>
I gave two talks at VS Live! San Francisco.
</p>
        <p>
Here are the slides and demos:
</p>
        <p>
Exploit WPF Graphics without Wounding the Eyes   <a href="http://www.softinsight.com/downloads/Conferences/VSLive/ExploitWPFGraphicsWithoutWoundingtheEyes.pdf">Slides</a>    <a href="http://www.softinsight.com/downloads/Conferences/VSLive/WPFGraphicsDemos.zip">Demos</a></p>
        <p>
Build Composite UI Applications with CAB and SCSF    <a href="http://www.softinsight.com/downloads/Conferences/VSLive/BuildCompositeUIAppswithCABandSCSF.pdf">Slides</a>    <a href="http://www.softinsight.com/downloads/Conferences/VSLive/CAB_SCSF_Demos.zip">Demos</a></p>
        <p>
 
</p>
        <p>
To create the database for the music data demos, you have two choices. 
</p>
        <p>
1) Follow the instructions in this post to create your own music library database
based on your own collection: 
<br /><a title="http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx" href="http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx">http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx</a></p>
        <p>
2) Download a database backup (29MB) from here: <a href="http://www.softinsight.com/downloads/MusicLibrary.bak">http://www.softinsight.com/downloads/MusicLibrary.bak</a> and
restore it.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=9e7f8776-82ea-4342-b148-d2a04643d5c4" />
      </body>
      <title>VS Live! San Francisco Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,9e7f8776-82ea-4342-b148-d2a04643d5c4.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/04/28/VSLiveSanFranciscoSlidesAndDemos.aspx</link>
      <pubDate>Mon, 28 Apr 2008 11:01:40 GMT</pubDate>
      <description>&lt;p&gt;
A little late to the game, but I have been struggling with some blog configuration
issues that were preventing me from posting, and have finally found time to tackle
those.
&lt;/p&gt;
&lt;p&gt;
I gave two talks at VS Live! San Francisco.
&lt;/p&gt;
&lt;p&gt;
Here are the slides and demos:
&lt;/p&gt;
&lt;p&gt;
Exploit WPF Graphics without Wounding the Eyes&amp;#160;&amp;#160; &lt;a href="http://www.softinsight.com/downloads/Conferences/VSLive/ExploitWPFGraphicsWithoutWoundingtheEyes.pdf"&gt;Slides&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.softinsight.com/downloads/Conferences/VSLive/WPFGraphicsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Build Composite UI Applications with CAB and SCSF&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.softinsight.com/downloads/Conferences/VSLive/BuildCompositeUIAppswithCABandSCSF.pdf"&gt;Slides&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.softinsight.com/downloads/Conferences/VSLive/CAB_SCSF_Demos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
To create the database for the music data demos, you have two choices. 
&lt;/p&gt;
&lt;p&gt;
1) Follow the instructions in this post to create your own music library database
based on your own collection: 
&lt;br /&gt;
&lt;a title="http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx" href="http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx"&gt;http://briannoyes.net/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
2) Download a database backup (29MB) from here: &lt;a href="http://www.softinsight.com/downloads/MusicLibrary.bak"&gt;http://www.softinsight.com/downloads/MusicLibrary.bak&lt;/a&gt; and
restore it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=9e7f8776-82ea-4342-b148-d2a04643d5c4" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,9e7f8776-82ea-4342-b148-d2a04643d5c4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=acd43605-4d8a-462b-855d-abe798900a18</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,acd43605-4d8a-462b-855d-abe798900a18.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,acd43605-4d8a-462b-855d-abe798900a18.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=acd43605-4d8a-462b-855d-abe798900a18</wfw:commentRss>
      <title>DevConnections Orlando Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,acd43605-4d8a-462b-855d-abe798900a18.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/04/24/DevConnectionsOrlandoSlidesAndDemos.aspx</link>
      <pubDate>Thu, 24 Apr 2008 23:10:20 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;I spoke this week at DevConnections
in Orlando. As always a great time and a good show. For those that attended my talks,
thanks for the great participation and questions! For those that didn't, you really
need to work harder on convincing your boss to send you to a DevConnections conference.
The line up of speakers is amazing and the venue is always great.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;The three talks I gave were on
building custom activities in WF, WPF Tools, and Service Oriented workflows.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;You can grab the slides and demos
from the links below.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Custom WF Activities:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/Noyes_VS_VWF310_Encapsulate_Custom_Business_Processes_with_Custom_WF_Activities.ppt"&gt;Slides&lt;/a&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VWF310_CustomWFActivitiesDemos.zip"&gt;Demos&lt;o:p&gt;&lt;/o:p&gt;
&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;WPF Tools:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/Noyes_VS_VPF304_Leverage_WPF_Development_Tools.ppt"&gt;Slides&lt;/a&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;SO Workflows:&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/Noyes_VS_VAR318_Developing_Service_Oriented_Workflows.ppt"&gt;Slides&lt;/a&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VAR318_SOWorkflowsDemos.zip"&gt;Demos&lt;o:p&gt;&lt;/o:p&gt;
&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=acd43605-4d8a-462b-855d-abe798900a18" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,acd43605-4d8a-462b-855d-abe798900a18.aspx</comments>
      <category>.NET</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=f900c4db-921f-4b7f-a6f5-f2b624be74ef</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,f900c4db-921f-4b7f-a6f5-f2b624be74ef.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,f900c4db-921f-4b7f-a6f5-f2b624be74ef.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=f900c4db-921f-4b7f-a6f5-f2b624be74ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'll  be speaking at VSLive! San Francisco this year after quite a few years
since doing a VSLive! conference. I'm looking forward to it.
</p>
        <p>
The two talks I'll be giving are:
</p>
        <p>
Exploit WPF Graphics without Wounding the Eyes
</p>
        <p>
Build Composite UI Applications with CAB and SCSF
</p>
        <p>
If you haven’t already registered for VSLive San Francisco, you can receive a $695
discount on the Gold Passport if you register using priority code SPNOY. More at <a href="http://www.vslive.com/sf">www.vslive.com/sf</a></p>
        <p>
Hope to see you there!
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=f900c4db-921f-4b7f-a6f5-f2b624be74ef" />
      </body>
      <title>Upcoming Talks at VSLive! San Francisco</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,f900c4db-921f-4b7f-a6f5-f2b624be74ef.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/22/UpcomingTalksAtVSLiveSanFrancisco.aspx</link>
      <pubDate>Fri, 22 Feb 2008 23:06:03 GMT</pubDate>
      <description>&lt;p&gt;
I'll&amp;nbsp; be speaking at VSLive! San Francisco this year after quite a few years
since doing a VSLive! conference. I'm looking forward to it.
&lt;/p&gt;
&lt;p&gt;
The two talks I'll be giving are:
&lt;/p&gt;
&lt;p&gt;
Exploit WPF Graphics without Wounding the Eyes
&lt;/p&gt;
&lt;p&gt;
Build Composite UI Applications with CAB and SCSF
&lt;/p&gt;
&lt;p&gt;
If you haven’t already registered for VSLive San Francisco, you can receive a $695
discount on the Gold Passport if you register using priority code SPNOY. More at &lt;a href="http://www.vslive.com/sf"&gt;www.vslive.com/sf&lt;/a&gt; 
&lt;p&gt;
Hope to see you there!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=f900c4db-921f-4b7f-a6f5-f2b624be74ef" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,f900c4db-921f-4b7f-a6f5-f2b624be74ef.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=cde7dda0-58b4-4549-a230-184b93afc551</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,cde7dda0-58b4-4549-a230-184b93afc551.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,cde7dda0-58b4-4549-a230-184b93afc551.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=cde7dda0-58b4-4549-a230-184b93afc551</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I did another .NET Rocks! interview with Carl and Richard last week and it has gone
live. You can <a href="http://www.dotnetrocks.com/default.aspx?showNum=315">find it
here</a>. We discussed a lot of tangential aspects of WPF including adoption rates,
UI patterns, the WPF Composite (codename Prism) work I am doing with Microsoft patterns
and practices, and a lot more.
</p>
        <p>
Check it out if you have an hour to kill away from the keyboard.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=cde7dda0-58b4-4549-a230-184b93afc551" />
      </body>
      <title>.NET Rocks! - WPF Update</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,cde7dda0-58b4-4549-a230-184b93afc551.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/14/NETRocksWPFUpdate.aspx</link>
      <pubDate>Thu, 14 Feb 2008 16:32:39 GMT</pubDate>
      <description>&lt;p&gt;
I did another .NET Rocks! interview with Carl and Richard last week and it has gone
live. You can &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=315"&gt;find it
here&lt;/a&gt;. We discussed a lot of tangential aspects of WPF including adoption rates,
UI patterns, the WPF Composite (codename Prism) work I am doing with Microsoft patterns
and practices, and a lot more.
&lt;/p&gt;
&lt;p&gt;
Check it out if you have an hour to kill away from the keyboard.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=cde7dda0-58b4-4549-a230-184b93afc551" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,cde7dda0-58b4-4549-a230-184b93afc551.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=579f6338-09ed-4e24-a7fc-336fe902ea90</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,579f6338-09ed-4e24-a7fc-336fe902ea90.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,579f6338-09ed-4e24-a7fc-336fe902ea90.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=579f6338-09ed-4e24-a7fc-336fe902ea90</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have a music database I have been using for years for demos because lets face it,
music data is a lot more engaging than tired old Northwind. The database I was using
had been hacked together with some crude code that read MP3 metadata tags through
some Windows APIs and a web service client that pulled down album art from Amazon.
However it was write once/run once sort of code and I never got around to cleaning
it up so others could generate their own database and not be stuck with the few albums
I had data for in mine.
</p>
        <p>
My buddy <a href="http://blogs.interknowlogy.com/timhuckaby/">Tim</a> recently used
that database for a demo VSTO app he wrote and is demoing this week at the Office
System Developer Conference, and he prodded me to update that utility code, so I finally
got off my butt and did so (sorry it wasn't in time for your session buddy!). One
decision I made was to not try to resurrect the code for using the Amazon Web Service
directly. The problem with doing so is twofold. One problem is that unless you find
an exact match on Artist and Album, it is hard to pull down the right album cover
in an automated fashion without getting garbage. And unless the metadata is already
up to date on your MP3 or WMV files, or you have been extremely disciplined with a
folder convention matching the artist and album name, you are hosed for trying to
do that matching. The other hitch is that to use the Amazon Web Service, you have
to go register as a dev with them, get some IDs, and then make sure that you don't
make more than one call per second to their web service. 
</p>
        <p>
I decided a better approach was to leverage embedded album covers in the MP3/WMV file
metadata. That of course requires that your music files have those. So how do you
get them there? You do what it says <a href="http://lifehacker.com/software/album-art/alpha-geek-whip-your-mp3-library-into-shape-part-ii--album-art-231476.php">here</a> and <a href="http://lifehacker.com/software/album-art/alpha-geek-whip-your-mp3-library-into-shape-part-iii-metadata-233336.php">here</a>. <a href="http://www.mediamonkey.com/">MediaMonkey</a> is
a great little app for updating the metadata of your music files, and it will pull
down the album cover for you - one at a time. So it did take me a few hours one day
that I was extremely brain dead and lazy and not feeling like doing anything remotely
challenging to go through my hundreds of albums and get their album covers updated
into the file. But that benefits you for Zune, iPod, Windows Media Player, and any
other decent software that plays those files, so I have already found it well worth
doing.
</p>
        <p>
Once your music files have the album art in them, updating my utility became more
of a one-stop shop. I just needed a library that would pull those tags out of the
metadata for me. I found a nice one in CSID3Lib (<a title="http://sourceforge.net/projects/csid3lib" href="http://sourceforge.net/projects/csid3lib">http://sourceforge.net/projects/csid3lib</a>).
This made it a snap to load an MP3 file and suck the metadata out of it. Then a little
LINQ to SQL sprinkled on and I have a decent little database generating tool.
</p>
        <p>
You can find the source <a href="http://www.softinsight.com/downloads/MusicDBBuilder.zip">code
for the database builder here</a>. I also have a little WPF data app that demonstrates <a href="http://www.softinsight.com/downloads/MusicClient.zip">using
the database here</a>. There is a SQL script in the MusicDBBuilder project that you
will need to run to create the database, but there is a command line switch that will
do that for you. If you choose this, you will need to run once with the -c and master
as the database connection string, then run again without the -c and the connection
string to the new database, which will be named MusicLibrary based on the SQL script. 
</p>
        <p>
The project is currently configured in the debug command line parameters so that if
you just run it in the debugger, it will create the database for you (or blow it away
if it already existed and was not up to date).
</p>
        <p>
You will need to go into the project properties and change the file path command line
parameter to the root folder of wherever your music files live and change the connection
strinig to the new database after the first run that creates the DB. It will recursively
probe for music files, but will only read MP3 files in the current version. There
is also a command line switch to turn off recursion and you can remove the -c if you
just want it to add what it finds to the database instead of starting from scratch.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=579f6338-09ed-4e24-a7fc-336fe902ea90" />
      </body>
      <title>Build your own music database for demos and samples</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,579f6338-09ed-4e24-a7fc-336fe902ea90.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/13/BuildYourOwnMusicDatabaseForDemosAndSamples.aspx</link>
      <pubDate>Wed, 13 Feb 2008 05:35:14 GMT</pubDate>
      <description>&lt;p&gt;
I have a music database I have been using for years for demos because lets face it,
music data is a lot more engaging than tired old Northwind. The database I was using
had been hacked together with some crude code that read MP3 metadata tags through
some Windows APIs and a web service client that pulled down album art from Amazon.
However it was write once/run once sort of code and I never got around to cleaning
it up so others could generate their own database and not be stuck with the few albums
I had data for in mine.
&lt;/p&gt;
&lt;p&gt;
My buddy &lt;a href="http://blogs.interknowlogy.com/timhuckaby/"&gt;Tim&lt;/a&gt; recently used
that database for a demo VSTO app he wrote and is demoing this week at the Office
System Developer Conference, and he prodded me to update that utility code, so I finally
got off my butt and did so (sorry it wasn't in time for your session buddy!). One
decision I made was to not try to resurrect the code for using the Amazon Web Service
directly. The problem with doing so is twofold. One problem is that unless you find
an exact match on Artist and Album, it is hard to pull down the right album cover
in an automated fashion without getting garbage. And unless the metadata is already
up to date on your MP3 or WMV files, or you have been extremely disciplined with a
folder convention matching the artist and album name, you are hosed for trying to
do that matching. The other hitch is that to use the Amazon Web Service, you have
to go register as a dev with them, get some IDs, and then make sure that you don't
make more than one call per second to their web service. 
&lt;/p&gt;
&lt;p&gt;
I decided a better approach was to leverage embedded album covers in the MP3/WMV file
metadata. That of course requires that your music files have those. So how do you
get them there? You do what it says &lt;a href="http://lifehacker.com/software/album-art/alpha-geek-whip-your-mp3-library-into-shape-part-ii--album-art-231476.php"&gt;here&lt;/a&gt; and &lt;a href="http://lifehacker.com/software/album-art/alpha-geek-whip-your-mp3-library-into-shape-part-iii-metadata-233336.php"&gt;here&lt;/a&gt;. &lt;a href="http://www.mediamonkey.com/"&gt;MediaMonkey&lt;/a&gt; is
a great little app for updating the metadata of your music files, and it will pull
down the album cover for you - one at a time. So it did take me a few hours one day
that I was extremely brain dead and lazy and not feeling like doing anything remotely
challenging to go through my hundreds of albums and get their album covers updated
into the file. But that benefits you for Zune, iPod, Windows Media Player, and any
other decent software that plays those files, so I have already found it well worth
doing.
&lt;/p&gt;
&lt;p&gt;
Once your music files have the album art in them, updating my utility became more
of a one-stop shop. I just needed a library that would pull those tags out of the
metadata for me. I found a nice one in CSID3Lib (&lt;a title="http://sourceforge.net/projects/csid3lib" href="http://sourceforge.net/projects/csid3lib"&gt;http://sourceforge.net/projects/csid3lib&lt;/a&gt;).
This made it a snap to load an MP3 file and suck the metadata out of it. Then a little
LINQ to SQL sprinkled on and I have a decent little database generating tool.
&lt;/p&gt;
&lt;p&gt;
You can find the source &lt;a href="http://www.softinsight.com/downloads/MusicDBBuilder.zip"&gt;code
for the database builder here&lt;/a&gt;. I also have a little WPF data app that demonstrates &lt;a href="http://www.softinsight.com/downloads/MusicClient.zip"&gt;using
the database here&lt;/a&gt;. There is a SQL script in the MusicDBBuilder project that you
will need to run to create the database, but there is a command line switch that will
do that for you. If you choose this, you will need to run once with the -c and master
as the database connection string, then run again without the -c and the connection
string to the new database, which will be named MusicLibrary based on the SQL script. 
&lt;/p&gt;
&lt;p&gt;
The project is currently configured in the debug command line parameters so that if
you just run it in the debugger, it will create the database for you (or blow it away
if it already existed and was not up to date).
&lt;/p&gt;
&lt;p&gt;
You will need to go into the project properties and change the file path command line
parameter to the root folder of wherever your music files live and change the connection
strinig to the new database after the first run that creates the DB. It will recursively
probe for music files, but will only read MP3 files in the current version. There
is also a command line switch to turn off recursion and you can remove the -c if you
just want it to add what it finds to the database instead of starting from scratch.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=579f6338-09ed-4e24-a7fc-336fe902ea90" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,579f6338-09ed-4e24-a7fc-336fe902ea90.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=c50def7e-3ce6-4a74-a6b1-f2a97e201366</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,c50def7e-3ce6-4a74-a6b1-f2a97e201366.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,c50def7e-3ce6-4a74-a6b1-f2a97e201366.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=c50def7e-3ce6-4a74-a6b1-f2a97e201366</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I recorded a DNR TV episode back in December that took a little while to hit the site,
but is up now. This episode walks through the data binding features of WPF and shows
how to set up basic data binding, converters, work with data contexts and more.
</p>
        <p>
          <a title="http://www.dnrtv.com/default.aspx?showNum=101" href="http://www.dnrtv.com/default.aspx?showNum=101">http://www.dnrtv.com/default.aspx?showNum=101</a>
        </p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c50def7e-3ce6-4a74-a6b1-f2a97e201366" />
      </body>
      <title>Data Binding in WPF - .NET Rocks! TV</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,c50def7e-3ce6-4a74-a6b1-f2a97e201366.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/07/DataBindingInWPFNETRocksTV.aspx</link>
      <pubDate>Thu, 07 Feb 2008 21:22:47 GMT</pubDate>
      <description>&lt;p&gt;
I recorded a DNR TV episode back in December that took a little while to hit the site,
but is up now. This episode walks through the data binding features of WPF and shows
how to set up basic data binding, converters, work with data contexts and more.
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.dnrtv.com/default.aspx?showNum=101" href="http://www.dnrtv.com/default.aspx?showNum=101"&gt;http://www.dnrtv.com/default.aspx?showNum=101&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c50def7e-3ce6-4a74-a6b1-f2a97e201366" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,c50def7e-3ce6-4a74-a6b1-f2a97e201366.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=fb0af6e4-166d-4329-b9d8-a00faf953610</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,fb0af6e4-166d-4329-b9d8-a00faf953610.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,fb0af6e4-166d-4329-b9d8-a00faf953610.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=fb0af6e4-166d-4329-b9d8-a00faf953610</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We are very excited to announce that the legendary <a href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=3&amp;tabid=5#Esposito">Dino
Esposito</a> has joined us as a member of <a href="http://www.idesign.net">IDesign</a>.
Dino is well known throughout the .NET community for his wonderful books, articles,
and conference talks. He will be teaching a number of classes through IDesign as well
as doing consulting with us. Later this year he will be launching a new .NET Design
Patterns class as well.
</p>
        <p>
We are honored to have Dino among our ranks!
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=fb0af6e4-166d-4329-b9d8-a00faf953610" />
      </body>
      <title>Dino Esposito Joins IDesign!</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,fb0af6e4-166d-4329-b9d8-a00faf953610.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/05/DinoEspositoJoinsIDesign.aspx</link>
      <pubDate>Tue, 05 Feb 2008 13:58:35 GMT</pubDate>
      <description>&lt;p&gt;
We are very excited to announce that the legendary &lt;a href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=3&amp;amp;tabid=5#Esposito"&gt;Dino
Esposito&lt;/a&gt; has joined us as a member of &lt;a href="http://www.idesign.net"&gt;IDesign&lt;/a&gt;.
Dino is well known throughout the .NET community for his wonderful books, articles,
and conference talks. He will be teaching a number of classes through IDesign as well
as doing consulting with us. Later this year he will be launching a new .NET Design
Patterns class as well.
&lt;/p&gt;
&lt;p&gt;
We are honored to have Dino among our ranks!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=fb0af6e4-166d-4329-b9d8-a00faf953610" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,fb0af6e4-166d-4329-b9d8-a00faf953610.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=3522bc7f-2cbd-411e-ab05-c1157a49dd8d</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,3522bc7f-2cbd-411e-ab05-c1157a49dd8d.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,3522bc7f-2cbd-411e-ab05-c1157a49dd8d.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=3522bc7f-2cbd-411e-ab05-c1157a49dd8d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blog.nukeation.com/default.aspx">Dax Panhdi</a> (who designed my blog
and site, as well as <a href="http://intellectualhedonism.com/">many others</a>) and
I had a great email and IM conversation yesterday regarding differentiated UI. He
adapted that into a great post on <a href="http://blog.nukeation.com/post/Differentiated-UX.aspx">Differentiated
UI and design here</a>.
</p>
        <p>
Definitely worth a read if you are moving into the WPF and Silverlight space.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=3522bc7f-2cbd-411e-ab05-c1157a49dd8d" />
      </body>
      <title>Continuing the Conversation on Differentiated UI</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,3522bc7f-2cbd-411e-ab05-c1157a49dd8d.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2008/02/02/ContinuingTheConversationOnDifferentiatedUI.aspx</link>
      <pubDate>Sat, 02 Feb 2008 12:52:53 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blog.nukeation.com/default.aspx"&gt;Dax Panhdi&lt;/a&gt; (who designed my blog
and site, as well as &lt;a href="http://intellectualhedonism.com/"&gt;many others&lt;/a&gt;) and
I had a great email and IM conversation yesterday regarding differentiated UI. He
adapted that into a great post on &lt;a href="http://blog.nukeation.com/post/Differentiated-UX.aspx"&gt;Differentiated
UI and design here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Definitely worth a read if you are moving into the WPF and Silverlight space.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=3522bc7f-2cbd-411e-ab05-c1157a49dd8d" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,3522bc7f-2cbd-411e-ab05-c1157a49dd8d.aspx</comments>
    </item>
  </channel>
</rss>