<?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>Adam Salvo (z) - Technology|Conference Notes</title>
    <link>http://blog.salvoz.com/</link>
    <description>newtelligence powered</description>
    <language>en-us</language>
    <copyright>Adam Salvo</copyright>
    <lastBuildDate>Sat, 16 Jan 2010 22:49:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>adam@salvoz.com</managingEditor>
    <webMaster>adam@salvoz.com</webMaster>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=6c4cdab1-ffa0-4cba-b09c-3a2137bbb048</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,6c4cdab1-ffa0-4cba-b09c-3a2137bbb048.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,6c4cdab1-ffa0-4cba-b09c-3a2137bbb048.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6c4cdab1-ffa0-4cba-b09c-3a2137bbb048</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
PDC Session Link: <a title="Advanced WPF Application Performance Tuning and Analysis" href="http://microsoftpdc.com/Sessions/CL06">Networking
and Web Services in Silverlight</a></p>
        <p>
This session went over the different ways to expose data to a Silverlight application.
Data access requirements for Silverlight was grouped in two ways and presented as
the following graphic:
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09CL06NetworkingandWebServicesinSilve_EC4A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09CL06NetworkingandWebServicesinSilve_EC4A/image_thumb.png" width="244" height="122" />
          </a>
        </p>
        <p>
Each example fell somewhere on the X/Y axis of the chart above. Resource Centric was
explained to be CRUD operations, while operation centric was more behavior driven. 
</p>
        <p>
          <strong>Forms Over Data</strong>
        </p>
        <p>
The first examples were your typical forms over data applications, which are Resource
Centric and follow a Request/Reply model. 
</p>
        <p>
If you control, and have direct access to the data, then RIA services was recommended.
Aside from a short demo, not a lot of time was spent on RIA services, as there are
other presentations that get into the details. 
</p>
        <p>
Another option for when you control the data, is to use WCF Data Services, which exposes
your data in a RESTFul manner that adheres to the open data protocol (OData). In addition
to data you control, services like SharePoint expose the data contained with-in via
the open data protocol as well. The advantages to using OData sources over public
REST services, is that more is known about the data, so you get a better development
experience. 
</p>
        <p>
If you are working with a public data store exposed with REST, and it’s not OData,
then use the enhanced (for Silverlight 4) ClientHttp library. It has a good programming
model, and a lot of the deficiencies in previous versions have been solved. For example
there is now support for Basic HTTP Authentication secured with SSL.
</p>
        <p>
          <strong>2 Way and Streaming</strong>
        </p>
        <p>
The second group of examples looked at duplex and streaming scenarios. The first example
was a chat application which is an operation centric example that has some request/reply
elements, but mainly users a duplex model. WCF was the recommend technology to support
the duplex model. The included binary encoder provided a 71% performance improvement
over the standard text encoder, even over HTTP. Binary has been the default encoder
since Silverlight 3, but is only useful when both endpoints are .Net applications.
</p>
        <p>
Duplex itself can be setup in your WCF bindings in one of two ways. For internet scenarios,
you will need to use an HTTP binding, which is a polling based duplex model. While
not present in the beta that was released at PDC, there are plans to enable HTTP Chunking,
which would allow for multiple messages per HTTP request to increase performance.
For intranet scenarios, you can use the NetTcp binding for the best performance. Remember,
since this is WCF, you code once, and just change your bindings as needed.
</p>
        <p>
Silverlight 4 supports UDP multicast, but it is pretty much an intranet only solution,
as your network must be configured to support UDP multicast. 
</p>
        <p>
There is a new Silverlight TCP Socket Policy server project template in the online
template gallery (accessible in VS 2010). This makes it very easy to setup the policy
server to allow cross domain socket calls for your Silverlight application. An enhancement
being considered for Silverlight 4 is that if the application has been elevated, then
you will not need to worry about policies. 
</p>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=6c4cdab1-ffa0-4cba-b09c-3a2137bbb048" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – CL06: Networking and Web Services in Silverlight</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,6c4cdab1-ffa0-4cba-b09c-3a2137bbb048.aspx</guid>
      <link>http://blog.salvoz.com/2010/01/16/PDC09CL06NetworkingAndWebServicesInSilverlight.aspx</link>
      <pubDate>Sat, 16 Jan 2010 22:49:01 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
PDC Session Link: &lt;a title="Advanced WPF Application Performance Tuning and Analysis" href="http://microsoftpdc.com/Sessions/CL06"&gt;Networking
and Web Services in Silverlight&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This session went over the different ways to expose data to a Silverlight application.
Data access requirements for Silverlight was grouped in two ways and presented as
the following graphic:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09CL06NetworkingandWebServicesinSilve_EC4A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09CL06NetworkingandWebServicesinSilve_EC4A/image_thumb.png" width="244" height="122"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Each example fell somewhere on the X/Y axis of the chart above. Resource Centric was
explained to be CRUD operations, while operation centric was more behavior driven. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Forms Over Data&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The first examples were your typical forms over data applications, which are Resource
Centric and follow a Request/Reply model. 
&lt;/p&gt;
&lt;p&gt;
If you control, and have direct access to the data, then RIA services was recommended.
Aside from a short demo, not a lot of time was spent on RIA services, as there are
other presentations that get into the details. 
&lt;/p&gt;
&lt;p&gt;
Another option for when you control the data, is to use WCF Data Services, which exposes
your data in a RESTFul manner that adheres to the open data protocol (OData). In addition
to data you control, services like SharePoint expose the data contained with-in via
the open data protocol as well. The advantages to using OData sources over public
REST services, is that more is known about the data, so you get a better development
experience. 
&lt;/p&gt;
&lt;p&gt;
If you are working with a public data store exposed with REST, and it’s not OData,
then use the enhanced (for Silverlight 4) ClientHttp library. It has a good programming
model, and a lot of the deficiencies in previous versions have been solved. For example
there is now support for Basic HTTP Authentication secured with SSL.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2 Way and Streaming&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The second group of examples looked at duplex and streaming scenarios. The first example
was a chat application which is an operation centric example that has some request/reply
elements, but mainly users a duplex model. WCF was the recommend technology to support
the duplex model. The included binary encoder provided a 71% performance improvement
over the standard text encoder, even over HTTP. Binary has been the default encoder
since Silverlight 3, but is only useful when both endpoints are .Net applications.
&lt;/p&gt;
&lt;p&gt;
Duplex itself can be setup in your WCF bindings in one of two ways. For internet scenarios,
you will need to use an HTTP binding, which is a polling based duplex model. While
not present in the beta that was released at PDC, there are plans to enable HTTP Chunking,
which would allow for multiple messages per HTTP request to increase performance.
For intranet scenarios, you can use the NetTcp binding for the best performance. Remember,
since this is WCF, you code once, and just change your bindings as needed.
&lt;/p&gt;
&lt;p&gt;
Silverlight 4 supports UDP multicast, but it is pretty much an intranet only solution,
as your network must be configured to support UDP multicast. 
&lt;/p&gt;
&lt;p&gt;
There is a new Silverlight TCP Socket Policy server project template in the online
template gallery (accessible in VS 2010). This makes it very easy to setup the policy
server to allow cross domain socket calls for your Silverlight application. An enhancement
being considered for Silverlight 4 is that if the application has been elevated, then
you will not need to worry about policies. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=6c4cdab1-ffa0-4cba-b09c-3a2137bbb048" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,6c4cdab1-ffa0-4cba-b09c-3a2137bbb048.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Data Access</category>
      <category>Technology/Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=0d7b99ff-de61-4178-b031-7f0d32b6af7d</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,0d7b99ff-de61-4178-b031-7f0d32b6af7d.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,0d7b99ff-de61-4178-b031-7f0d32b6af7d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0d7b99ff-de61-4178-b031-7f0d32b6af7d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
PDC Session Link: <a title="Advanced WPF Application Performance Tuning and Analysis" href="http://microsoftpdc.com/Sessions/CL11">Advanced
WPF Application Performance Tuning and Analysis</a></p>
        <p>
This presentation was how you can analyze and tune your WPF applications in 4 key
areas: Memory Usage, Cold Startup Time, Warm Startup Time, and Runtime. There were
several tools used through out the presentation, and the demos were very well done.
I would recommend watching this session to get a better feel for the concepts. The
sample application used for the session is called <a href="http://www.codeplex.com/fishbowl">Fishbowl</a>,
and is a WPF application that lets you work with Facebook in new ways. 
</p>
        <p>
          <strong>Introduction</strong>
        </p>
        <ul>
          <li>
Measure early and measure often</li>
          <li>
Be sure to test on older hardware</li>
          <li>
Grab low hanging fruit</li>
          <li>
Understand perceived performance (i.e. keep the UI responsive during long running
requests)</li>
          <li>
Trade Offs</li>
          <ul>
            <li>
CPU vs. Memory vs. Disk IO</li>
            <li>
Within your application, you may have to pick and choose which features are faster
then others</li>
          </ul>
        </ul>
        <p>
          <strong>Memory Usage</strong>
        </p>
        <ul>
          <li>
150MB of memory was deemed as high for an application like Fishbowl</li>
          <ul>
            <li>
              <em>I found this to be very surprising given how many seemingly simple WPF apps I
have seen using over 200mb of memory at startup. Is memory cheap these days? Yes,
unless you count limited memory on Netbooks, older computers, and virtual machines.</em>
            </li>
          </ul>
          <li>
Process Explorer to view overall memory usage 
</li>
          <li>
Sys-internals VMap to view detailed memory usage by process 
</li>
          <ul>
            <li>
Image: .exe, .dll, etc</li>
            <li>
Heap: Pure managed applications should have lower native heap then managed heap. You
will always have some native heap, as some CLR stuff uses native memory, like the
render thread. Images (pictures) are also stored in the native heap and are one source
of high native heap usage. 
</li>
            <li>
Managed: 
</li>
          </ul>
          <li>
The cause of the high memory usage was the use of 114 images for the startup animation. 
</li>
          <ul>
            <li>
# of images * width in pixles * hieght in pixles * 4 (32 bit color) = memory usage</li>
            <li>
114 * 272 * 294 * 4 = 34.7MB</li>
            <li>
The actual cause turned out to be that the start view was not being disposed after
it was finished, so the images remained in memory. 
</li>
          </ul>
          <li>
SaciTech Memory Profiler on memProfiler.com</li>
          <ul>
            <li>
Costs money</li>
            <li>
WPF perf team uses this tool internally</li>
            <li>
Lets you do snapshots so you can compare memory usage over time</li>
            <li>
You can drill down by object type, as well as what is holding onto the reference for
a particular object.</li>
          </ul>
          <li>
Element count (virtualization) is another pain point</li>
        </ul>
        <p>
          <strong>Cold Start</strong>
        </p>
        <ul>
          <li>
Cold start is impacting most by Disk IO</li>
          <li>
Windows Performance Tool Kit or Windows SDK?</li>
          <ul>
            <li>
xperf command line tool (there is a PDC session on xpef and ETW)</li>
            <li>
Event Tracing for windows (ETW): Add ETW statements to your app and profile with xperf</li>
            <li>
Demo showed a batch file to start up xperf</li>
            <li>
Look for for highest number of reads</li>
          </ul>
          <li>
Remove unneeded dll references</li>
          <ul>
            <li>
System.Windows.Forms and System.Windows.Drawing shouldn’t be needed in pure WPF application</li>
          </ul>
          <li>
If you are using only one or two methods from a dll, you could merge it into your
application</li>
          <ul>
            <li>
You can use Scitech Mem Profiler to see how many types for dll to see you can eliminate
or merge</li>
          </ul>
          <li>
If you are using a managed API that is dealing with win32 api’s, you could add p/Inovke’s
to your code to eliminate an extra dll. 
</li>
          <li>
Be sure to test in release mode with no debuggers attached</li>
          <li>
You can use NGen to speed up cold start, but it might slow down warm start</li>
        </ul>
        <p>
          <strong>Warm Start</strong>
        </p>
        <ul>
          <li>
Warm Start is CPU bound, so you will see high CPU usage. There should also be lower
disk IO then cold start.</li>
          <li>
If you see low CPU usage, there might be something blocking, like network access (using
xperf again)</li>
          <li>
CPU Profiler</li>
          <ul>
            <li>
Comes with Team Suite</li>
          </ul>
          <li>
WPF Perf</li>
          <ul>
            <li>
Part of Windows Performance tool kit</li>
            <li>
Check item count, is virtualization enabled. Sometimes virtualization can’t be used,
like when list element height is dynamic, which would screw up the scroll bar 
</li>
          </ul>
        </ul>
        <p>
          <strong>Runtime</strong>
        </p>
        <ul>
          <li>
More WPF Perf usage</li>
          <li>
Trouble shoot jerky animations</li>
          <ul>
            <li>
Layout vs. Rendering</li>
          </ul>
          <li>
Pererator Tool:</li>
          <ul>
            <li>
Review hardware IRT’s. In the example, 20 hardware IRTs was too high.</li>
          </ul>
          <li>
Problem was traced to drop shadow animation. Solution was to create two elements,
one with and one without drop shadow, then toggle visibility</li>
          <li>
Other stuff</li>
          <ul>
            <li>
Don’t block on the UI thread</li>
            <li>
Virtualization when needed</li>
            <li>
Freeze your freezables</li>
            <ul>
              <li>
No change notification call backs</li>
            </ul>
            <li>
Hardware vs. Software</li>
            <ul>
              <li>
use RenderCapabilities.Tier to determine when you should dial down visual effects.</li>
            </ul>
          </ul>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=0d7b99ff-de61-4178-b031-7f0d32b6af7d" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – CL11: Advanced WPF Application Performance Tuning and Analysis</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,0d7b99ff-de61-4178-b031-7f0d32b6af7d.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/29/PDC09CL11AdvancedWPFApplicationPerformanceTuningAndAnalysis.aspx</link>
      <pubDate>Sun, 29 Nov 2009 04:36:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
PDC Session Link: &lt;a title="Advanced WPF Application Performance Tuning and Analysis" href="http://microsoftpdc.com/Sessions/CL11"&gt;Advanced
WPF Application Performance Tuning and Analysis&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This presentation was how you can analyze and tune your WPF applications in 4 key
areas: Memory Usage, Cold Startup Time, Warm Startup Time, and Runtime. There were
several tools used through out the presentation, and the demos were very well done.
I would recommend watching this session to get a better feel for the concepts. The
sample application used for the session is called &lt;a href="http://www.codeplex.com/fishbowl"&gt;Fishbowl&lt;/a&gt;,
and is a WPF application that lets you work with Facebook in new ways. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Measure early and measure often&lt;/li&gt;
&lt;li&gt;
Be sure to test on older hardware&lt;/li&gt;
&lt;li&gt;
Grab low hanging fruit&lt;/li&gt;
&lt;li&gt;
Understand perceived performance (i.e. keep the UI responsive during long running
requests)&lt;/li&gt;
&lt;li&gt;
Trade Offs&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
CPU vs. Memory vs. Disk IO&lt;/li&gt;
&lt;li&gt;
Within your application, you may have to pick and choose which features are faster
then others&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Memory Usage&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
150MB of memory was deemed as high for an application like Fishbowl&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;I found this to be very surprising given how many seemingly simple WPF apps I
have seen using over 200mb of memory at startup. Is memory cheap these days? Yes,
unless you count limited memory on Netbooks, older computers, and virtual machines.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Process Explorer to view overall memory usage 
&lt;/li&gt;
&lt;li&gt;
Sys-internals VMap to view detailed memory usage by process 
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Image: .exe, .dll, etc&lt;/li&gt;
&lt;li&gt;
Heap: Pure managed applications should have lower native heap then managed heap. You
will always have some native heap, as some CLR stuff uses native memory, like the
render thread. Images (pictures) are also stored in the native heap and are one source
of high native heap usage. 
&lt;/li&gt;
&lt;li&gt;
Managed: 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
The cause of the high memory usage was the use of 114 images for the startup animation. 
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
# of images * width in pixles * hieght in pixles * 4 (32 bit color) = memory usage&lt;/li&gt;
&lt;li&gt;
114 * 272 * 294 * 4 = 34.7MB&lt;/li&gt;
&lt;li&gt;
The actual cause turned out to be that the start view was not being disposed after
it was finished, so the images remained in memory. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
SaciTech Memory Profiler on memProfiler.com&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Costs money&lt;/li&gt;
&lt;li&gt;
WPF perf team uses this tool internally&lt;/li&gt;
&lt;li&gt;
Lets you do snapshots so you can compare memory usage over time&lt;/li&gt;
&lt;li&gt;
You can drill down by object type, as well as what is holding onto the reference for
a particular object.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Element count (virtualization) is another pain point&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Cold Start&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Cold start is impacting most by Disk IO&lt;/li&gt;
&lt;li&gt;
Windows Performance Tool Kit or Windows SDK?&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
xperf command line tool (there is a PDC session on xpef and ETW)&lt;/li&gt;
&lt;li&gt;
Event Tracing for windows (ETW): Add ETW statements to your app and profile with xperf&lt;/li&gt;
&lt;li&gt;
Demo showed a batch file to start up xperf&lt;/li&gt;
&lt;li&gt;
Look for for highest number of reads&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Remove unneeded dll references&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
System.Windows.Forms and System.Windows.Drawing shouldn’t be needed in pure WPF application&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
If you are using only one or two methods from a dll, you could merge it into your
application&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
You can use Scitech Mem Profiler to see how many types for dll to see you can eliminate
or merge&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
If you are using a managed API that is dealing with win32 api’s, you could add p/Inovke’s
to your code to eliminate an extra dll. 
&lt;/li&gt;
&lt;li&gt;
Be sure to test in release mode with no debuggers attached&lt;/li&gt;
&lt;li&gt;
You can use NGen to speed up cold start, but it might slow down warm start&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Warm Start&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Warm Start is CPU bound, so you will see high CPU usage. There should also be lower
disk IO then cold start.&lt;/li&gt;
&lt;li&gt;
If you see low CPU usage, there might be something blocking, like network access (using
xperf again)&lt;/li&gt;
&lt;li&gt;
CPU Profiler&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Comes with Team Suite&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
WPF Perf&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Part of Windows Performance tool kit&lt;/li&gt;
&lt;li&gt;
Check item count, is virtualization enabled. Sometimes virtualization can’t be used,
like when list element height is dynamic, which would screw up the scroll bar 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Runtime&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
More WPF Perf usage&lt;/li&gt;
&lt;li&gt;
Trouble shoot jerky animations&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Layout vs. Rendering&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Pererator Tool:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Review hardware IRT’s. In the example, 20 hardware IRTs was too high.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Problem was traced to drop shadow animation. Solution was to create two elements,
one with and one without drop shadow, then toggle visibility&lt;/li&gt;
&lt;li&gt;
Other stuff&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Don’t block on the UI thread&lt;/li&gt;
&lt;li&gt;
Virtualization when needed&lt;/li&gt;
&lt;li&gt;
Freeze your freezables&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
No change notification call backs&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Hardware vs. Software&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
use RenderCapabilities.Tier to determine when you should dial down visual effects.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=0d7b99ff-de61-4178-b031-7f0d32b6af7d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,0d7b99ff-de61-4178-b031-7f0d32b6af7d.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/WPF</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=5910971b-e00d-46cb-b433-d1239489d651</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,5910971b-e00d-46cb-b433-d1239489d651.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,5910971b-e00d-46cb-b433-d1239489d651.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5910971b-e00d-46cb-b433-d1239489d651</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
PDC Link: <a href="http://microsoftpdc.com/Sessions/CL22">Advanced Topics for Building
Large-Scale Applications with Microsoft Silverlight</a><br />
Presenter: <a href="http://www.johnpapa.net">John Papa</a> (@john_papa)
</p>
        <p>
The title of this presentation is a little misleading. It could have just as easily
been titled, best practices for building line of business applications in SilverLight.
The concepts, if not most of the code can be applied to WPF as well. There was a lot
of talk about <a href="http://www.codeplex.com/CompositeWPF">Prism</a>, which I have
not looked at in great detail. However, as a result of this presentation, I will take
a closer look at it once I get around to working with SilverLight and WPF more. John
pointed out several times that you are able to pick and choose what parts of Prism
you want to use, which at least makes it sound a little less invasive then some of
the other things to come out of Patterns and Practice. 
</p>
        <p>
A similar framework which is not developed by Microsoft is <a href="http://www.codeplex.com/caliburn">Caliburn</a>.
Which one is better, is probably open to debate, and both are continued to be developed.
John did mention some gaps in Prism, which he developed some code for (posted via
his blog), but perhaps these are available in Caliburn. If you are just starting out
with SilverLight or WPF, I would suggest looking at both frameworks. If you are already
using one or the other, I don’t know how much sense it would make to switch, but I
always like to keep my options open. 
</p>
        <p>
          <strong>MVVM</strong>
        </p>
        <p>
The first part of the presentation was focused on defining MVVM, or the Model, View,
View-Model pattern. The primary benefit of the MVVM pattern, is that is allows for
good separation of concerns, which leads to increased testability and maintainability.
As you can see below, a lot of time was spent on describing the View-Model and how
it fits in, while the View and Model are fairly straight forward.
</p>
        <ul>
          <li>
View: Responsible for rendering the UI only 
</li>
          <li>
Model: Contains your domain entities (i.e. customer, order and order details) 
</li>
          <li>
View-Model: 
<ul><li>
Handles the communication between your View and Model thru bindings, commands, events. 
</li><li>
Responsible for providing everything (data) a particular view requires. 
</li><li>
Sometimes your View-Model will look almost identical to your model. Other times, it
will contain a mash-up of various entities as required by the view. 
</li><li><em>Ensures that your view knows nothing about your model, and that your model doesn’t
known anything about the view (or require references to view related dependencies)</em></li></ul></li>
        </ul>
        <p>
Three ways to implement MVVM were presented. I had never considered the first two,
while the 3rd one is where frameworks like Prism, Caliburn, Ninject (Inversion of
control) come into play.
</p>
        <ul>
          <li>
ViewFirst (Static Resource): View Model can be created as a static resource in the
view. This tightly couples the View Model to the view, but gives you the best experience
when using Blend (referred to as blenability) 
</li>
          <li>
ViewFirst (Code Behind): The view is injected to the View Model constructor. Since
you loose the blendability, I’m not sure why you would pick this over option 3. 
</li>
          <li>
View + View Model Marrige: Use a intermediary to marry the View and the View-Model
together. Again, you loose blendability, but this is the approach that everyone takes
when using Prism, Caliburn or a home grown framework. 
</li>
        </ul>
        <p>
When creating a SilverLight application using MVVM, there are some common functionality
that you need to implement, which is where Prism and Caliburn come into play. Since
this session used Prism, I will list what was shown, which was limited to what Prism
can offer. I expect that Caliburn offers a similar set of functionality. 
</p>
        <ul>
          <li>
Shell: Container for all UI modules, such as menus, windows etc. 
</li>
          <li>
Regions: Shell is made up of regions which control where UI modules are displayed. 
</li>
          <li>
Modules: Separate code modules that can be developed in isolation and then loaded
by Prism. Modules can talk to one another thru event aggregation (<em>I wonder if
MEF would be a better choice</em>)</li>
          <li>
Event Aggregation: An eventing model that allows for cross module communication.</li>
          <li>
            <strike>Commands:</strike> SilverLight 4 adds support for commands, so it is my understanding
you do not need to use Prism’s command support anymore.</li>
          <li>
Bootstrapper: Controls application startup and configuration. Configure your IoC here. 
</li>
          <li>
Delegate Command object for use with commands (very simple class to create if you
are not using Prism)</li>
        </ul>
        <p>
Commands:
</p>
        <ul>
          <li>
Invoke an event on your view and have your view model respond to it. 
</li>
          <li>
When you invoke a command, you expect a response. 
</li>
          <li>
Commands work out of the box well with buttons. However you need to create new command
objects that implement ICommand for use with other controls. John puts these objects
in his Infrastructure dll, and I think he may have provided some of this code on his
blog. 
</li>
          <li>
            <em>I still have a lot to learn on commanding</em>
          </li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=5910971b-e00d-46cb-b433-d1239489d651" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – CL22: Advanced Topics for Building Large-Scale Applications with Microsoft Silverlight</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,5910971b-e00d-46cb-b433-d1239489d651.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/29/PDC09CL22AdvancedTopicsForBuildingLargeScaleApplicationsWithMicrosoftSilverlight.aspx</link>
      <pubDate>Sun, 29 Nov 2009 03:45:42 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
PDC Link: &lt;a href="http://microsoftpdc.com/Sessions/CL22"&gt;Advanced Topics for Building
Large-Scale Applications with Microsoft Silverlight&lt;/a&gt;
&lt;br&gt;
Presenter: &lt;a href="http://www.johnpapa.net"&gt;John Papa&lt;/a&gt; (@john_papa)
&lt;/p&gt;
&lt;p&gt;
The title of this presentation is a little misleading. It could have just as easily
been titled, best practices for building line of business applications in SilverLight.
The concepts, if not most of the code can be applied to WPF as well. There was a lot
of talk about &lt;a href="http://www.codeplex.com/CompositeWPF"&gt;Prism&lt;/a&gt;, which I have
not looked at in great detail. However, as a result of this presentation, I will take
a closer look at it once I get around to working with SilverLight and WPF more. John
pointed out several times that you are able to pick and choose what parts of Prism
you want to use, which at least makes it sound a little less invasive then some of
the other things to come out of Patterns and Practice. 
&lt;/p&gt;
&lt;p&gt;
A similar framework which is not developed by Microsoft is &lt;a href="http://www.codeplex.com/caliburn"&gt;Caliburn&lt;/a&gt;.
Which one is better, is probably open to debate, and both are continued to be developed.
John did mention some gaps in Prism, which he developed some code for (posted via
his blog), but perhaps these are available in Caliburn. If you are just starting out
with SilverLight or WPF, I would suggest looking at both frameworks. If you are already
using one or the other, I don’t know how much sense it would make to switch, but I
always like to keep my options open. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;MVVM&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The first part of the presentation was focused on defining MVVM, or the Model, View,
View-Model pattern. The primary benefit of the MVVM pattern, is that is allows for
good separation of concerns, which leads to increased testability and maintainability.
As you can see below, a lot of time was spent on describing the View-Model and how
it fits in, while the View and Model are fairly straight forward.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
View: Responsible for rendering the UI only 
&lt;li&gt;
Model: Contains your domain entities (i.e. customer, order and order details) 
&lt;li&gt;
View-Model: 
&lt;ul&gt;
&lt;li&gt;
Handles the communication between your View and Model thru bindings, commands, events. 
&lt;li&gt;
Responsible for providing everything (data) a particular view requires. 
&lt;li&gt;
Sometimes your View-Model will look almost identical to your model. Other times, it
will contain a mash-up of various entities as required by the view. 
&lt;li&gt;
&lt;em&gt;Ensures that your view knows nothing about your model, and that your model doesn’t
known anything about the view (or require references to view related dependencies)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Three ways to implement MVVM were presented. I had never considered the first two,
while the 3rd one is where frameworks like Prism, Caliburn, Ninject (Inversion of
control) come into play.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
ViewFirst (Static Resource): View Model can be created as a static resource in the
view. This tightly couples the View Model to the view, but gives you the best experience
when using Blend (referred to as blenability) 
&lt;li&gt;
ViewFirst (Code Behind): The view is injected to the View Model constructor. Since
you loose the blendability, I’m not sure why you would pick this over option 3. 
&lt;li&gt;
View + View Model Marrige: Use a intermediary to marry the View and the View-Model
together. Again, you loose blendability, but this is the approach that everyone takes
when using Prism, Caliburn or a home grown framework. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
When creating a SilverLight application using MVVM, there are some common functionality
that you need to implement, which is where Prism and Caliburn come into play. Since
this session used Prism, I will list what was shown, which was limited to what Prism
can offer. I expect that Caliburn offers a similar set of functionality. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Shell: Container for all UI modules, such as menus, windows etc. 
&lt;/li&gt;
&lt;li&gt;
Regions: Shell is made up of regions which control where UI modules are displayed. 
&lt;/li&gt;
&lt;li&gt;
Modules: Separate code modules that can be developed in isolation and then loaded
by Prism. Modules can talk to one another thru event aggregation (&lt;em&gt;I wonder if
MEF would be a better choice&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;
Event Aggregation: An eventing model that allows for cross module communication.&lt;/li&gt;
&lt;li&gt;
&lt;strike&gt;Commands:&lt;/strike&gt; SilverLight 4 adds support for commands, so it is my understanding
you do not need to use Prism’s command support anymore.&lt;/li&gt;
&lt;li&gt;
Bootstrapper: Controls application startup and configuration. Configure your IoC here. 
&lt;/li&gt;
&lt;li&gt;
Delegate Command object for use with commands (very simple class to create if you
are not using Prism)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Commands:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Invoke an event on your view and have your view model respond to it. 
&lt;/li&gt;
&lt;li&gt;
When you invoke a command, you expect a response. 
&lt;/li&gt;
&lt;li&gt;
Commands work out of the box well with buttons. However you need to create new command
objects that implement ICommand for use with other controls. John puts these objects
in his Infrastructure dll, and I think he may have provided some of this code on his
blog. 
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;I still have a lot to learn on commanding&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=5910971b-e00d-46cb-b433-d1239489d651" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,5910971b-e00d-46cb-b433-d1239489d651.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Silverlight</category>
      <category>Technology/WPF</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=44fe6fd9-7fe2-42ad-9af1-b7932193e4a0</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,44fe6fd9-7fe2-42ad-9af1-b7932193e4a0.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,44fe6fd9-7fe2-42ad-9af1-b7932193e4a0.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=44fe6fd9-7fe2-42ad-9af1-b7932193e4a0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
This presentation was part 2 of 2 on SQL Server StreamInsight, and was intended as
an advanced look at StreamInsight. If I get around to watching part 1, I will update
this post.
</p>
        <blockquote>
          <p>
“Microsoft SQL Server StreamInsight is a powerful platform for developing and deploying
complex event processing (CEP) applications. Its high-throughput stream processing
architecture and familiar .NET-based development platform enable developers to quickly
implement robust and highly efficient event processing applications.
</p>
          <p>
Typical event stream sources include data from manufacturing applications, financial
trading applications, Web analytics or operational analytics. StreamInsight enables
you to develop CEP applications that derive immediate business value from this raw
data by lowering the cost to extract, analyze, and correlate the data and by allowing
you to monitor, manage, and mine the data for conditions, opportunities, and defects
in close to real time.” –<a href="http://technet.microsoft.com/en-us/sqlserver/ee476990.aspx">Microsoft
TechNet</a></p>
        </blockquote>
        <p>
StreamInsight was designed to handle input sources that operate in the milisecond
range, instead of the second, minute and hour+ range. One of the demo’s shown, demonstrated
capturing and processing 60 events per second. StreamInsight will be licensed and
released with SQL Server. 
</p>
        <p>
  
</p>
        <p>
There was mention of Windows CE and other platform support when they were talking
about how the Stream OS provides hardware abstraction for StreamInsight. It seems
kind of weird that they didn’t start with Windows CE as the most obvious use (to me)
is automation. However, some of the examples shown where at the enterprise server
level, which matches up with the definition I pulled from TechNet. 
</p>
        <p>
  
</p>
        <p>
StreamInsight makes use of Native memory to avoid garbage collection, and I would
assume there are other native code optimizations used for performance reasons. It
looks like they are trying to bridge the gap between native code performance and the
ease of .net development to support Complex event processing. 
</p>
        <p>
  
</p>
        <p>
The following challenges facing complex event processing scenarios necessitated a
platform: 
</p>
        <ul>
          <li>
Pattern Detection 
</li>
          <li>
Correlate Data 
</li>
          <li>
Aggregate 
</li>
          <li>
Hardware Abstraction</li>
        </ul>
        <p>
          <strong>Adapters</strong>
        </p>
        <ul>
          <li>
“Get” the data into the application 
</li>
          <li>
Built using the adapter framework 
</li>
          <li>
Default adapters wrap the framework in an Observable Patter and expose IEnumerble
collections 
</li>
          <li>
Adapters can be Push or Pull 
</li>
          <li>
Adapters can be In-Order or Out-Of Order 
</li>
          <li>
Work with Native Memory</li>
        </ul>
        <p>
          <strong>Query Expressions</strong>
        </p>
        <ul>
          <li>
Allows for data manipulation 
</li>
          <li>
Projection 
</li>
          <li>
Filtering 
</li>
          <li>
Correlation (joins) 
</li>
          <li>
Aggregate over Windows of time (Temporal semantics) 
<ul><li>
Time windows can be overlapping or non-overlapping</li></ul></li>
          <li>
Grouping and Aggregation 
</li>
          <li>
Implemented using Linq. Everything except the time aggregation is implemented using
out of the box Linq. Linq extensions were created for the time aggregation.</li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=44fe6fd9-7fe2-42ad-9af1-b7932193e4a0" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – SVR08: Advanced Microsoft SQL Server 2008 R2 StreamInsight</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,44fe6fd9-7fe2-42ad-9af1-b7932193e4a0.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/28/PDC09SVR08AdvancedMicrosoftSQLServer2008R2StreamInsight.aspx</link>
      <pubDate>Sat, 28 Nov 2009 23:19:40 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
This presentation was part 2 of 2 on SQL Server StreamInsight, and was intended as
an advanced look at StreamInsight. If I get around to watching part 1, I will update
this post.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“Microsoft SQL Server StreamInsight is a powerful platform for developing and deploying
complex event processing (CEP) applications. Its high-throughput stream processing
architecture and familiar .NET-based development platform enable developers to quickly
implement robust and highly efficient event processing applications.
&lt;/p&gt;
&lt;p&gt;
Typical event stream sources include data from manufacturing applications, financial
trading applications, Web analytics or operational analytics. StreamInsight enables
you to develop CEP applications that derive immediate business value from this raw
data by lowering the cost to extract, analyze, and correlate the data and by allowing
you to monitor, manage, and mine the data for conditions, opportunities, and defects
in close to real time.” –&lt;a href="http://technet.microsoft.com/en-us/sqlserver/ee476990.aspx"&gt;Microsoft
TechNet&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
StreamInsight was designed to handle input sources that operate in the milisecond
range, instead of the second, minute and hour+ range. One of the demo’s shown, demonstrated
capturing and processing 60 events per second. StreamInsight will be licensed and
released with SQL Server. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
There was mention of Windows CE and other platform support when they were talking
about how the Stream OS provides hardware abstraction for StreamInsight. It seems
kind of weird that they didn’t start with Windows CE as the most obvious use (to me)
is automation. However, some of the examples shown where at the enterprise server
level, which matches up with the definition I pulled from TechNet. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
StreamInsight makes use of Native memory to avoid garbage collection, and I would
assume there are other native code optimizations used for performance reasons. It
looks like they are trying to bridge the gap between native code performance and the
ease of .net development to support Complex event processing. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
The following challenges facing complex event processing scenarios necessitated a
platform: 
&lt;ul&gt;
&lt;li&gt;
Pattern Detection 
&lt;li&gt;
Correlate Data 
&lt;li&gt;
Aggregate 
&lt;li&gt;
Hardware Abstraction&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Adapters&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
“Get” the data into the application 
&lt;li&gt;
Built using the adapter framework 
&lt;li&gt;
Default adapters wrap the framework in an Observable Patter and expose IEnumerble
collections 
&lt;li&gt;
Adapters can be Push or Pull 
&lt;li&gt;
Adapters can be In-Order or Out-Of Order 
&lt;li&gt;
Work with Native Memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Query Expressions&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Allows for data manipulation 
&lt;li&gt;
Projection 
&lt;li&gt;
Filtering 
&lt;li&gt;
Correlation (joins) 
&lt;li&gt;
Aggregate over Windows of time (Temporal semantics) 
&lt;ul&gt;
&lt;li&gt;
Time windows can be overlapping or non-overlapping&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Grouping and Aggregation 
&lt;li&gt;
Implemented using Linq. Everything except the time aggregation is implemented using
out of the box Linq. Linq extensions were created for the time aggregation.&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=44fe6fd9-7fe2-42ad-9af1-b7932193e4a0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,44fe6fd9-7fe2-42ad-9af1-b7932193e4a0.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Sql</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=47c796be-3528-4c80-b8b8-8b1da09a5939</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=47c796be-3528-4c80-b8b8-8b1da09a5939</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <ul>
          <li>
4 Scenarios: 
<ul><li>
It Works on My Machine 
</li><li>
Choose the right tests 
</li><li>
Solve Complex Debugging Tasks 
</li><li>
Multi-Tier Performance Analysis</li></ul></li>
        </ul>
        <ul>
          <li>
Hard to Reproduce Bugs (It works on my machine/I can't reproduce it) 
<ul><li>
Solved by a new feature, IntelliTrace 
</li><li>
Used to be solved by adding Debug statements 
</li><li>
IntelliTrace adds Record, Playback and Rewind 
</li><li>
Demo shows a nightly build that failed 
<ul><li>
Click thru the build report to view the IntelliTrace log file 
</li><li>
Shows Threads, test data, system info, loaded modules 
</li><li>
Double click on call stack for the exception (test failure) line where error occurred
and takes you to the exact line in the source code. 
</li><li>
Step forwards and backwards in playback to view what was going on (variable state,
etc) 
</li><li>
Filter which events you want to see (Asp.Net, ADO.Net, Registy, etc)</li></ul></li></ul><ul><li>
You can now see the return value of methods! 
</li><li>
Records the exact execution path thru branches eliminating guess work. 
</li><li>
No need to add anything to your code 
</li><li>
Various levels of recording. The more you record, the higher the performance impact.
No mention was made of how much of a performance hit, although the default settings
are not supposed to impact it much. 
</li><li>
Works with Asp.Net as well. Tracks events like gets and posts, allows you to jump
into code at that point in time 
</li><li>
How does it Work? 
<ul><li>
IntelliTrace record starts, loads CollectionPlan.xml and starts recording 
</li><li>
IntelliTrace does not allow you to change what happens in your code since it's a recording.
You can't change a variable for example</li></ul></li></ul><ul><li>
Settings 
<ul><li>
IntelliTrace is set in Tools/Options/Intellitrace. 
</li><li>
Maximum amount of disk space for recording 
</li><li>
Where are they stored? C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging\</li></ul></li></ul><ul><li>
What do you need to get IntelliTrace on a PC? 
<ul><li>
Install visual studio 
</li><li>
Install Test and Lab Manager 
</li><li>
Install Test Agent</li></ul></li></ul></li>
        </ul>
        <p>
IntelliTrace Options Window<br /><a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace Options Window" border="0" alt="IntelliTrace Options Window" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_thumb.png" width="644" height="373" /></a></p>
        <ul>
          <li>
Test Impact Analysis (Choosing the right tests to run) 
<ul><li>
Automatically pinpoint which tests are impacted as a result of a code change, including
manual tests, although I'm not sure how it works 
</li><li>
TIA, as far as I can tell will only run with tests written in MS Test. 
</li><li>
If it can work with Manual tests, I see some advantage with that, but not running
all of your automated tests just seems bad. It seems like they may be fixing a symptom
(slow running tests) instead of the problem (poorly written tests) 
</li><li>
Working from the Nightly Build point of view 
<ul><li>
You can see impacted tests 
</li><li>
You can drill thru the impacted tests to see what changes caused the tests to be impacted.</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Multi-Tier Performance Analysis 
<ul><li>
Scenario: Client Side script in the browser, business logic, database calls 
</li><li>
To start, goto Debug and click Start Profile Analysis 
<ul><li>
Select Profile Type 
</li><li>
Select Project, Executable or Asp.net/java script application 
</li><li>
Enable Tier Interaction Profiling</li></ul></li></ul><ul><li>
My Demo (I tried this out locally while watching the video) 
<ul><li>
Ran a Asp.Net MVC project 
</li><li>
I run everything as a normal user, not an admin. However, you need to be an admin,
but VS prompts your for credentials and it just works. 
</li><li>
You start out in summary view, but there is a drop down at the top (Current View)
that gives you access to stuff like Tier Interactions. 
</li><li>
Tier Interactions showed my database calls, the sql executed and how long they took 
</li><li>
It takes a little longer for it to get started, so there is a still a place in my
book for using SQL query analyzer while developing, but for end to end debugging of
slow pages, this is awesome. 
</li></ul></li></ul><ul><li>
Report Shows 
<ul><li>
Most expensive code paths 
</li><li>
Lets you look at "all code" which will include the base class library and loaded modules 
</li><li>
Jump between various report views by right clicking 
</li><li>
Jump to code</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Collaborative Debugging (Solve Complex Problems) 
<ul><li>
While debugging, pin the value of a variable to the editor window (right click while
hovering) 
</li><li>
You can add comments to those pinned values 
</li><li>
You can export a break points and data tips as XML which you can then e-mail or what
ever 
</li><li>
After you import the break point and data tips, run the app in debug mode 
<ul><li>
Application will stop on the break point 
</li><li>
The value and comments will be displayed as exported/imported</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Debug a Crash in a Deployed Application using Dump Files 
<ul><li>
When application crashes, open up task manager, find the task, right click and chose
create dump file. 
</li><li>
No need to have anything installed to create the dump file 
</li><li>
Open dump file in visual studio, and you can debug it. 
<ul><li>
Shows stuff about the computer it was running on 
</li><li>
Modules Loaded 
</li><li>
OS</li></ul></li></ul><ul><li>
Press ctrl+alt+q to get to QuickWatch, and type in $expression, and you'll get info
on the exception that caused the crash. 
</li><li>
My Test/Demo 
<ul><li>
Create new Widnows forms app with a button. When clicking the button throw new exception. 
</li><li>
Close VS, and run compiled application. Click on the button. The unhandled exception
dialog will appear. At this point, go into task manager, find the process, right click
and choose create dump file. 
</li><li>
Dump file was created in: C:\Users\USERNAME\AppData\Local\Temp\APPLCIATIONNAME.DMP 
</li><li>
Quit the application and go find the dump file and double click on it, VS will launch. 
</li><li>
You get the basic information, native debugging (machine code), but no managed debugging. 
</li><li>
It looks like you have to download the symbols from Microsoft, and possible set a
path for the debug symbols for your application, but I wasn’t able to get it to work
when I tried it. I will re-post if I get it to work.</li></ul></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=47c796be-3528-4c80-b8b8-8b1da09a5939" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – FT16: Advanced Diagnostics, IntelliTrace and Test Automation</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC09FT16AdvancedDiagnosticsIntelliTraceAndTestAutomation.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:11:31 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
4 Scenarios: 
&lt;ul&gt;
&lt;li&gt;
It Works on My Machine 
&lt;li&gt;
Choose the right tests 
&lt;li&gt;
Solve Complex Debugging Tasks 
&lt;li&gt;
Multi-Tier Performance Analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Hard to Reproduce Bugs (It works on my machine/I can't reproduce it) 
&lt;ul&gt;
&lt;li&gt;
Solved by a new feature, IntelliTrace 
&lt;li&gt;
Used to be solved by adding Debug statements 
&lt;li&gt;
IntelliTrace adds Record, Playback and Rewind 
&lt;li&gt;
Demo shows a nightly build that failed 
&lt;ul&gt;
&lt;li&gt;
Click thru the build report to view the IntelliTrace log file 
&lt;li&gt;
Shows Threads, test data, system info, loaded modules 
&lt;li&gt;
Double click on call stack for the exception (test failure) line where error occurred
and takes you to the exact line in the source code. 
&lt;li&gt;
Step forwards and backwards in playback to view what was going on (variable state,
etc) 
&lt;li&gt;
Filter which events you want to see (Asp.Net, ADO.Net, Registy, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
You can now see the return value of methods! 
&lt;li&gt;
Records the exact execution path thru branches eliminating guess work. 
&lt;li&gt;
No need to add anything to your code 
&lt;li&gt;
Various levels of recording. The more you record, the higher the performance impact.
No mention was made of how much of a performance hit, although the default settings
are not supposed to impact it much. 
&lt;li&gt;
Works with Asp.Net as well. Tracks events like gets and posts, allows you to jump
into code at that point in time 
&lt;li&gt;
How does it Work? 
&lt;ul&gt;
&lt;li&gt;
IntelliTrace record starts, loads CollectionPlan.xml and starts recording 
&lt;li&gt;
IntelliTrace does not allow you to change what happens in your code since it's a recording.
You can't change a variable for example&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Settings 
&lt;ul&gt;
&lt;li&gt;
IntelliTrace is set in Tools/Options/Intellitrace. 
&lt;li&gt;
Maximum amount of disk space for recording 
&lt;li&gt;
Where are they stored? C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging\&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
What do you need to get IntelliTrace on a PC? 
&lt;ul&gt;
&lt;li&gt;
Install visual studio 
&lt;li&gt;
Install Test and Lab Manager 
&lt;li&gt;
Install Test Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
IntelliTrace Options Window&lt;br&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace Options Window" border="0" alt="IntelliTrace Options Window" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_thumb.png" width="644" height="373"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Test Impact Analysis (Choosing the right tests to run) 
&lt;ul&gt;
&lt;li&gt;
Automatically pinpoint which tests are impacted as a result of a code change, including
manual tests, although I'm not sure how it works 
&lt;li&gt;
TIA, as far as I can tell will only run with tests written in MS Test. 
&lt;li&gt;
If it can work with Manual tests, I see some advantage with that, but not running
all of your automated tests just seems bad. It seems like they may be fixing a symptom
(slow running tests) instead of the problem (poorly written tests) 
&lt;li&gt;
Working from the Nightly Build point of view 
&lt;ul&gt;
&lt;li&gt;
You can see impacted tests 
&lt;li&gt;
You can drill thru the impacted tests to see what changes caused the tests to be impacted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Multi-Tier Performance Analysis 
&lt;ul&gt;
&lt;li&gt;
Scenario: Client Side script in the browser, business logic, database calls 
&lt;li&gt;
To start, goto Debug and click Start Profile Analysis 
&lt;ul&gt;
&lt;li&gt;
Select Profile Type 
&lt;li&gt;
Select Project, Executable or Asp.net/java script application 
&lt;li&gt;
Enable Tier Interaction Profiling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
My Demo (I tried this out locally while watching the video) 
&lt;ul&gt;
&lt;li&gt;
Ran a Asp.Net MVC project 
&lt;li&gt;
I run everything as a normal user, not an admin. However, you need to be an admin,
but VS prompts your for credentials and it just works. 
&lt;li&gt;
You start out in summary view, but there is a drop down at the top (Current View)
that gives you access to stuff like Tier Interactions. 
&lt;li&gt;
Tier Interactions showed my database calls, the sql executed and how long they took 
&lt;li&gt;
It takes a little longer for it to get started, so there is a still a place in my
book for using SQL query analyzer while developing, but for end to end debugging of
slow pages, this is awesome. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Report Shows 
&lt;ul&gt;
&lt;li&gt;
Most expensive code paths 
&lt;li&gt;
Lets you look at "all code" which will include the base class library and loaded modules 
&lt;li&gt;
Jump between various report views by right clicking 
&lt;li&gt;
Jump to code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Collaborative Debugging (Solve Complex Problems) 
&lt;ul&gt;
&lt;li&gt;
While debugging, pin the value of a variable to the editor window (right click while
hovering) 
&lt;li&gt;
You can add comments to those pinned values 
&lt;li&gt;
You can export a break points and data tips as XML which you can then e-mail or what
ever 
&lt;li&gt;
After you import the break point and data tips, run the app in debug mode 
&lt;ul&gt;
&lt;li&gt;
Application will stop on the break point 
&lt;li&gt;
The value and comments will be displayed as exported/imported&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Debug a Crash in a Deployed Application using Dump Files 
&lt;ul&gt;
&lt;li&gt;
When application crashes, open up task manager, find the task, right click and chose
create dump file. 
&lt;li&gt;
No need to have anything installed to create the dump file 
&lt;li&gt;
Open dump file in visual studio, and you can debug it. 
&lt;ul&gt;
&lt;li&gt;
Shows stuff about the computer it was running on 
&lt;li&gt;
Modules Loaded 
&lt;li&gt;
OS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Press ctrl+alt+q to get to QuickWatch, and type in $expression, and you'll get info
on the exception that caused the crash. 
&lt;li&gt;
My Test/Demo 
&lt;ul&gt;
&lt;li&gt;
Create new Widnows forms app with a button. When clicking the button throw new exception. 
&lt;li&gt;
Close VS, and run compiled application. Click on the button. The unhandled exception
dialog will appear. At this point, go into task manager, find the process, right click
and choose create dump file. 
&lt;li&gt;
Dump file was created in: C:\Users\USERNAME\AppData\Local\Temp\APPLCIATIONNAME.DMP 
&lt;li&gt;
Quit the application and go find the dump file and double click on it, VS will launch. 
&lt;li&gt;
You get the basic information, native debugging (machine code), but no managed debugging. 
&lt;li&gt;
It looks like you have to download the symbols from Microsoft, and possible set a
path for the debug symbols for your application, but I wasn’t able to get it to work
when I tried it. I will re-post if I get it to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=47c796be-3528-4c80-b8b8-8b1da09a5939" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=50a9a42c-03e7-4439-a77d-29232db4d812</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=50a9a42c-03e7-4439-a77d-29232db4d812</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
          <strong>FT60 - A Lap around Visual Studio and TFS 2010</strong>
        </p>
        <ul>
          <li>
Planning 
<ul><li>
Excel workbook for planning Iteration (for a specific Area?) 
</li><li>
Calculates # of working days based on Start and End Date 
</li><li>
Supports holidays and other non-working days by using the Interruptions sheet 
</li><li>
Capacity Planning graphs 
</li><li>
Looks like working in Excel is a much better (almost preferred) experience in 2010. 
</li><li>
Reports (at least the capacity report) was updated right away, no waiting for warehouse
to refresh.</li></ul></li>
        </ul>
        <ul>
          <li>
Hierarchical Work Items 
<ul><li>
As the name implies, you can setup hierarchies with your work items (kick ass!) 
</li><li>
Query support for hierarchical work items, allows you to define a query for the top
level item, and a second query for the child work items (<em>I have to think that
this feature was added as a direct result of MS dog fooding TFS</em>). 
</li></ul></li>
        </ul>
        <ul>
          <li>
Develop in Parallel 
<ul><li>
Branch visualization 
<ul><li>
Branches now show up as a "special" folder in Source Control viewer 
</li><li>
View Hierarchy (Right click on branch) allows you to view the branches and their relationships
in a graphical view. You can add a description for the branch 
</li><li>
Drag and Drop merges</li></ul></li></ul><ul><li>
Change tracing 
<ul><li>
Combine branch visualization with change sets, you can see which branches were affected
by a given change set. Arrows show stuff like merge directions.</li></ul></li></ul><ul><li>
Actionable History</li></ul></li>
        </ul>
        <ul>
          <li>
Continuous Integration 
<ul><li>
Gated Check-in 
<ul><li>
Verify code via a shelved check in set before something gets actually checked in. 
</li><li>
Seems somewhat redundant with proper branches for development, but I guess it's another
way to solve the problem. Although I think that you should be running most of the
tests locally before even trying to check in. 
</li></ul></li></ul><ul><li>
Architecture Diagrams 
<ul><li>
Map actually code assemblies (projects) to a block diagram. 
</li><li>
Blocks are for things like Web Layer, Business Layer, Data Layer etc. 
</li><li>
You can setup dependencies between the blocks, like Web Layer depends on Business
Layer. 
</li><li>
You can verify that code does not break the dependencies you have outlined in the
block diagram (i.e. don't have a business component that references the web component). 
</li></ul></li></ul><ul><li>
Visual Work Flow (WF) designer for builds looks a lot better then editing XML, but
we all know that Microsoft rarely demos stuff that has been tested in the real world. 
</li><li>
Build Reports are improved, more information with direct links to the information
in TFS that you need to get more details. Hopefully less digging around the build
output folder. 
</li><li>
New SysTray app that notifies you about build events</li></ul></li>
        </ul>
        <ul>
          <li>
Project Visibility and Health 
<ul><li>
Nice graphs in MOSS. Do they work in WSS? 
<ul><li>
Burndown 
</li><li>
User Stories vs. Tasks</li></ul></li></ul><ul><li>
Graphs build on Web Parts so you can customize the page layout. Also change parameters
passed to reports.</li></ul></li>
        </ul>
        <ul>
          <li>
Manageability 
<ul><li>
TFS Basic Install 
</li><li>
New Admin Console written WPF. Looks like MMC. 
<ul><li>
Ports, URL's, etc 
</li><li>
One click change TFS account password 
</li><li>
View logs</li></ul></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50a9a42c-03e7-4439-a77d-29232db4d812" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – FT60: A Lap Around Visual Studio and TFS 2010</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC09FT60ALapAroundVisualStudioAndTFS2010.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:07:37 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;FT60 - A Lap around Visual Studio and TFS 2010&lt;/strong&gt; 
&lt;ul&gt;
&lt;li&gt;
Planning 
&lt;ul&gt;
&lt;li&gt;
Excel workbook for planning Iteration (for a specific Area?) 
&lt;li&gt;
Calculates # of working days based on Start and End Date 
&lt;li&gt;
Supports holidays and other non-working days by using the Interruptions sheet 
&lt;li&gt;
Capacity Planning graphs 
&lt;li&gt;
Looks like working in Excel is a much better (almost preferred) experience in 2010. 
&lt;li&gt;
Reports (at least the capacity report) was updated right away, no waiting for warehouse
to refresh.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Hierarchical Work Items 
&lt;ul&gt;
&lt;li&gt;
As the name implies, you can setup hierarchies with your work items (kick ass!) 
&lt;li&gt;
Query support for hierarchical work items, allows you to define a query for the top
level item, and a second query for the child work items (&lt;em&gt;I have to think that
this feature was added as a direct result of MS dog fooding TFS&lt;/em&gt;). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Develop in Parallel 
&lt;ul&gt;
&lt;li&gt;
Branch visualization 
&lt;ul&gt;
&lt;li&gt;
Branches now show up as a "special" folder in Source Control viewer 
&lt;li&gt;
View Hierarchy (Right click on branch) allows you to view the branches and their relationships
in a graphical view. You can add a description for the branch 
&lt;li&gt;
Drag and Drop merges&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Change tracing 
&lt;ul&gt;
&lt;li&gt;
Combine branch visualization with change sets, you can see which branches were affected
by a given change set. Arrows show stuff like merge directions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Actionable History&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Continuous Integration 
&lt;ul&gt;
&lt;li&gt;
Gated Check-in 
&lt;ul&gt;
&lt;li&gt;
Verify code via a shelved check in set before something gets actually checked in. 
&lt;li&gt;
Seems somewhat redundant with proper branches for development, but I guess it's another
way to solve the problem. Although I think that you should be running most of the
tests locally before even trying to check in. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Architecture Diagrams 
&lt;ul&gt;
&lt;li&gt;
Map actually code assemblies (projects) to a block diagram. 
&lt;li&gt;
Blocks are for things like Web Layer, Business Layer, Data Layer etc. 
&lt;li&gt;
You can setup dependencies between the blocks, like Web Layer depends on Business
Layer. 
&lt;li&gt;
You can verify that code does not break the dependencies you have outlined in the
block diagram (i.e. don't have a business component that references the web component). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Visual Work Flow (WF) designer for builds looks a lot better then editing XML, but
we all know that Microsoft rarely demos stuff that has been tested in the real world. 
&lt;li&gt;
Build Reports are improved, more information with direct links to the information
in TFS that you need to get more details. Hopefully less digging around the build
output folder. 
&lt;li&gt;
New SysTray app that notifies you about build events&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Project Visibility and Health 
&lt;ul&gt;
&lt;li&gt;
Nice graphs in MOSS. Do they work in WSS? 
&lt;ul&gt;
&lt;li&gt;
Burndown 
&lt;li&gt;
User Stories vs. Tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Graphs build on Web Parts so you can customize the page layout. Also change parameters
passed to reports.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Manageability 
&lt;ul&gt;
&lt;li&gt;
TFS Basic Install 
&lt;li&gt;
New Admin Console written WPF. Looks like MMC. 
&lt;ul&gt;
&lt;li&gt;
Ports, URL's, etc 
&lt;li&gt;
One click change TFS account password 
&lt;li&gt;
View logs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50a9a42c-03e7-4439-a77d-29232db4d812" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Team Foundation Server</category>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=1a882d9c-0365-429a-a896-635d4e3b65d0</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,1a882d9c-0365-429a-a896-635d4e3b65d0.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,1a882d9c-0365-429a-a896-635d4e3b65d0.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1a882d9c-0365-429a-a896-635d4e3b65d0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
          <strong>FT12 -WCF Data Services: What's new the RESTful data services framework (Pablo
Castro)</strong>
        </p>
        <ul>
          <li>
Name changed from ADO.Net Data Services to WCF Data Services 
</li>
          <li>
REST 
<ul><li>
REST is not a Protocol, standard, or Format 
</li><li>
REST is an architectural style 
<ul><li>
Decoupling 
</li><li>
Scalability 
</li><li>
Layering</li></ul></li></ul><ul><li><em>Interesting way of defining REST. I always thought of it as some type of standard
based on HTTP (verbs).</em></li></ul></li>
        </ul>
        <ul>
          <li>
Resources 
<ul><li>
Represents the state of each of the entities your are modeling 
</li><li>
These resources (state) are the only thing that is viewable from the outside. <u>There
is no behavior.</u></li><li>
Each resource has an address. In this case, it's the URL 
</li><li>
Uniform Interface: Removes ambiguity of calls by constrain a system to a know interface. 
<ul><li>
In REST, you have GET, PUT, DELETE and POST. You do not have ApproveOrder, VerifyCreditCard,
etc. 
</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Date Service is not a gateway to the database 
<ul><li>
There is almost always some type of business logic between the service and the data
store 
</li><li><em>I think that this business logic is a subset of what you might find in a Line
of Business app, with additional logic as required in order to properly expose via
a service. </em></li><li>
The business logic could be responsible for security, and performance considerations
(i.e. don't allow something that will do a SELECT * FROM Table, where table has millions
of rows).</li></ul></li>
        </ul>
        <ul>
          <li>
Open Data Protocol (Astoria =&gt; Ado.Net DS =&gt; WCF Data services) 
<ul><li>
RESTful over http 
</li><li>
Poke-able (just open a browser and type a URL and see what comes back) 
</li><li>
HTTP: Transport, interaction model, control information in headers 
</li><li>
AtomPub: Format, introduces things like collections and links. 
</li><li>
Team added extensions to AtomPub as needed 
</li><li>
Introduced a json serialization option, which is useful when consuming from javascript. 
</li></ul></li>
        </ul>
        <ul>
          <li>
URL 
<ul><li>
The URL is independent of the format of the data returned (json, atom, etc). So you
can pass the URL around and it will not impact the format. The format is defined in
the GET request (accept: applicat/json). 
</li><li>
Extra stuff goes in query string (?). Use &amp; to append, just like normal query
string. 
</li><li>
(#): Query by primary key. /Categories(6)/Products would return all products for Category
6 
</li><li>
Filter strings: ?#filter=Color eq 'Red' 
</li><li>
Return first x rows: $top=# 
</li><li>
Sorting: $orderby=ColumnName 
</li><li>
Eger Load: $expand=ChildCollectionName 
</li><li>
Only get certain columns: $select=Column1,Column2</li></ul></li>
        </ul>
        <ul>
          <li>
Where used 
<ul><li>
.Net 
</li><li>
Sharepoint 2010 (install/enable Astoria?, and then you can access all sharepoint data
from /vti_bin/listdata.svc/ListName). There is full business logic running, so it
will check for authentication, update everything as necessary when you update the
actual data. 
</li><li>
Reporting Services 
</li><li>
Azure Table Storage 
</li><li>
Codename "Dallas" 
</li><li>
Microsoft Media Room 
</li><li>
Open Government data initiative 
</li><li>
3rd Parties 
<ul><li>
IBM WebSpehere Extreme Scale 
</li><li>
Db4o 
</li><li>
Telerik Open Access 
</li><li>
LinqPad</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
VS Support 
<ul><li>
Add Service Reference now supports consuming data from the Open Data Protocol (needs
to expose meta data) 
</li><li>
You'll get a data context type after adding the service reference 
</li><li>
Do something like: MyDataContextType svc = new MyDataContextType(URL), and then you
can drill down into svc to access the various collections of entities that are exposed.
Has support for adding (method), and I'm assuming updating as well. 
</li><li>
Full support for linq. 
</li><li><em>It would be interesting to view the SQL being generated behind the scenes using
Query Analyzer</em></li><li>
You can view the service as a diagram and get a schema diagram. 
</li></ul></li>
        </ul>
        <ul>
          <li>
Excel 2010 with Power Pivot 
<ul><li>
Import a data feed using just the URL from WCF Data Services 
</li><li>
And then you can just work with it in Excel 
</li><li>
Works with the open data access for SharePoint as well. 
</li></ul></li>
        </ul>
        <ul>
          <li>
Latest version of SSRS (must be SQL 2008 R2) 
<ul><li>
Every report has it's data exposed via this open data protocol. 
</li><li>
Browse to the report, the new report viewer has a button that allows you to export
as feed.</li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=1a882d9c-0365-429a-a896-635d4e3b65d0" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – FT12: WCF Data Services</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,1a882d9c-0365-429a-a896-635d4e3b65d0.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC09FT12WCFDataServices.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:03:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;FT12 -WCF Data Services: What's new the RESTful data services framework (Pablo
Castro)&lt;/strong&gt; 
&lt;ul&gt;
&lt;li&gt;
Name changed from ADO.Net Data Services to WCF Data Services 
&lt;li&gt;
REST 
&lt;ul&gt;
&lt;li&gt;
REST is not a Protocol, standard, or Format 
&lt;li&gt;
REST is an architectural style 
&lt;ul&gt;
&lt;li&gt;
Decoupling 
&lt;li&gt;
Scalability 
&lt;li&gt;
Layering&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Interesting way of defining REST. I always thought of it as some type of standard
based on HTTP (verbs).&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Resources 
&lt;ul&gt;
&lt;li&gt;
Represents the state of each of the entities your are modeling 
&lt;li&gt;
These resources (state) are the only thing that is viewable from the outside. &lt;u&gt;There
is no behavior.&lt;/u&gt; 
&lt;li&gt;
Each resource has an address. In this case, it's the URL 
&lt;li&gt;
Uniform Interface: Removes ambiguity of calls by constrain a system to a know interface. 
&lt;ul&gt;
&lt;li&gt;
In REST, you have GET, PUT, DELETE and POST. You do not have ApproveOrder, VerifyCreditCard,
etc. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Date Service is not a gateway to the database 
&lt;ul&gt;
&lt;li&gt;
There is almost always some type of business logic between the service and the data
store 
&lt;li&gt;
&lt;em&gt;I think that this business logic is a subset of what you might find in a Line
of Business app, with additional logic as required in order to properly expose via
a service. &lt;/em&gt; 
&lt;li&gt;
The business logic could be responsible for security, and performance considerations
(i.e. don't allow something that will do a SELECT * FROM Table, where table has millions
of rows).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Open Data Protocol (Astoria =&amp;gt; Ado.Net DS =&amp;gt; WCF Data services) 
&lt;ul&gt;
&lt;li&gt;
RESTful over http 
&lt;li&gt;
Poke-able (just open a browser and type a URL and see what comes back) 
&lt;li&gt;
HTTP: Transport, interaction model, control information in headers 
&lt;li&gt;
AtomPub: Format, introduces things like collections and links. 
&lt;li&gt;
Team added extensions to AtomPub as needed 
&lt;li&gt;
Introduced a json serialization option, which is useful when consuming from javascript. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
URL 
&lt;ul&gt;
&lt;li&gt;
The URL is independent of the format of the data returned (json, atom, etc). So you
can pass the URL around and it will not impact the format. The format is defined in
the GET request (accept: applicat/json). 
&lt;li&gt;
Extra stuff goes in query string (?). Use &amp;amp; to append, just like normal query
string. 
&lt;li&gt;
(#): Query by primary key. /Categories(6)/Products would return all products for Category
6 
&lt;li&gt;
Filter strings: ?#filter=Color eq 'Red' 
&lt;li&gt;
Return first x rows: $top=# 
&lt;li&gt;
Sorting: $orderby=ColumnName 
&lt;li&gt;
Eger Load: $expand=ChildCollectionName 
&lt;li&gt;
Only get certain columns: $select=Column1,Column2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Where used 
&lt;ul&gt;
&lt;li&gt;
.Net 
&lt;li&gt;
Sharepoint 2010 (install/enable Astoria?, and then you can access all sharepoint data
from /vti_bin/listdata.svc/ListName). There is full business logic running, so it
will check for authentication, update everything as necessary when you update the
actual data. 
&lt;li&gt;
Reporting Services 
&lt;li&gt;
Azure Table Storage 
&lt;li&gt;
Codename "Dallas" 
&lt;li&gt;
Microsoft Media Room 
&lt;li&gt;
Open Government data initiative 
&lt;li&gt;
3rd Parties 
&lt;ul&gt;
&lt;li&gt;
IBM WebSpehere Extreme Scale 
&lt;li&gt;
Db4o 
&lt;li&gt;
Telerik Open Access 
&lt;li&gt;
LinqPad&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
VS Support 
&lt;ul&gt;
&lt;li&gt;
Add Service Reference now supports consuming data from the Open Data Protocol (needs
to expose meta data) 
&lt;li&gt;
You'll get a data context type after adding the service reference 
&lt;li&gt;
Do something like: MyDataContextType svc = new MyDataContextType(URL), and then you
can drill down into svc to access the various collections of entities that are exposed.
Has support for adding (method), and I'm assuming updating as well. 
&lt;li&gt;
Full support for linq. 
&lt;li&gt;
&lt;em&gt;It would be interesting to view the SQL being generated behind the scenes using
Query Analyzer&lt;/em&gt; 
&lt;li&gt;
You can view the service as a diagram and get a schema diagram. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Excel 2010 with Power Pivot 
&lt;ul&gt;
&lt;li&gt;
Import a data feed using just the URL from WCF Data Services 
&lt;li&gt;
And then you can just work with it in Excel 
&lt;li&gt;
Works with the open data access for SharePoint as well. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Latest version of SSRS (must be SQL 2008 R2) 
&lt;ul&gt;
&lt;li&gt;
Every report has it's data exposed via this open data protocol. 
&lt;li&gt;
Browse to the report, the new report viewer has a button that allows you to export
as feed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=1a882d9c-0365-429a-a896-635d4e3b65d0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,1a882d9c-0365-429a-a896-635d4e3b65d0.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Data Access</category>
      <category>Technology/Sql</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=40328011-8280-43e9-b5ba-aa338ee9028f</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,40328011-8280-43e9-b5ba-aa338ee9028f.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,40328011-8280-43e9-b5ba-aa338ee9028f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=40328011-8280-43e9-b5ba-aa338ee9028f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>PDC 2009 Notes</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,40328011-8280-43e9-b5ba-aa338ee9028f.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:02:12 GMT</pubDate>
      <description>&lt;p&gt;
Last year, I watched a fair number of videos from PDC 2008, took notes, and planned
on writing a series of well written blog posts. Who was I kidding, I don’t write well
written posts, and I never looked at the notes after the fact. 
&lt;/p&gt;
&lt;p&gt;
This year, I’m again watching videos and taking notes, but this time, I’m going to
post my raw notes. I do this for two reasons, like most posts on my blog, it serves
as a reference for myself that I can query from anywhere. The second reason, is that
maybe someone will find something of interest in my notes and can then go watch 1
or 2 session videos instead of wondering which ones they should watch. 
&lt;/p&gt;
&lt;p&gt;
I will try to stick to some conventions while note taking, so far I have:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
When possible, write down the Session Code and Title 
&lt;li&gt;
My comments based on opinion or random thoughts will be in &lt;em&gt;italics&lt;/em&gt; 
&lt;li&gt;
If I have time, I may look into certain things myself, like new features of Visual
Studio. These will be under a bullet point of something like My Test, or My Demo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The first three posts I did, the notes were originally in OneNote, but the formatting
didn’t come over as nicely as I had hoped. Subsequent posts I did entirely in Live
Writer so the formatting was a little better. 
&lt;/p&gt;
&lt;p&gt;
Post Index:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a title="FT 12: WCF Data Services" href="http://blog.salvoz.com/2009/11/25/PDC09FT12WCFDataServices.aspx"&gt;FT12:
WCF Data Services&lt;/a&gt; 
&lt;li&gt;
&lt;a title="PDC09 &amp;ndash; FT16- Advanced Diagnostics, IntelliTrace and Test Automation" href="http://blog.salvoz.com/2009/11/25/PDC09FT16AdvancedDiagnosticsIntelliTraceAndTestAutomation.aspx"&gt;FT16:
Advanced Diagnostics, IntelliTrace and Test Automation&lt;/a&gt; 
&lt;li&gt;
&lt;a title="PDC09 &amp;ndash; FT60- A Lap Around Visual Studio and TFS 2010" href="http://blog.salvoz.com/2009/11/25/PDC09FT60ALapAroundVisualStudioAndTFS2010.aspx"&gt;FT60:
A Lap Around Visual Studio and TFS 2010&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://blog.salvoz.com/2009/11/28/PDC09SVR08AdvancedMicrosoftSQLServer2008R2StreamInsight.aspx"&gt;SVR08:
Advanced Microsoft SQL Server 2008 R2 StreamInsight&lt;/a&gt; 
&lt;li&gt;
&lt;a title="PDC09 &amp;ndash; CL22- Advanced Topics for Building Large-Scale Applications with Microsoft Silverlight" href="http://blog.salvoz.com/2009/11/29/PDC09CL22AdvancedTopicsForBuildingLargeScaleApplicationsWithMicrosoftSilverlight.aspx"&gt;CL22:
Advanced Topics for Building Large-Scale Applications with Microsoft Silverlight&lt;/a&gt; 
&lt;li&gt;
&lt;a title="PDC09 &amp;ndash; CL11- Advanced WPF Application Performance Tuning and Analysis" href="http://blog.salvoz.com/2009/11/29/PDC09CL11AdvancedWPFApplicationPerformanceTuningAndAnalysis.aspx"&gt;CL11:
Advanced WPF Application Performance Tuning and Analysis&lt;/a&gt; 
&lt;li&gt;
&lt;a title="PDC09 &amp;ndash; CL06- Networking and Web Services in Silverlight" href="http://blog.salvoz.com/2010/01/16/PDC09CL06NetworkingAndWebServicesInSilverlight.aspx"&gt;CL06:
Networking and Web Services in Silverlight&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=40328011-8280-43e9-b5ba-aa338ee9028f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,40328011-8280-43e9-b5ba-aa338ee9028f.aspx</comments>
      <category>Technology/Conference Notes</category>
    </item>
  </channel>
</rss>