<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>nVentive Coach Factor</title>
  <link rel="alternate" type="text/html" href="http://www.nventive.net/Blog2/" />
  <link rel="self" href="http://www.nventive.net/Blog2/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-11-19T20:54:48.8771354-07:00</updated>
  <author>
    <name>nVentive</name>
  </author>
  <subtitle>nVentive</subtitle>
  <id>http://www.nventive.net/Blog2/</id>
  <generator uri="http://dasblog.info/" version="2.1.8102.813">DasBlog</generator>
  <entry>
    <title>Microsoft PnP Champion</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/11/20/MicrosoftPnPChampion.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,28c1b4b0-67fb-45b1-a043-c6656ef77124.aspx</id>
    <published>2008-11-19T20:54:48.877-07:00</published>
    <updated>2008-11-19T20:54:48.8771354-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <category term="Architecture" label="Architecture" scheme="http://www.nventive.net/Blog2/CategoryView,category,Architecture.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For some of the work that Erik has done with Microsoft Patterns and Practices group,
he has won a PnP Champion award. Find out more details at <a href="http://msdn.microsoft.com/en-us/practices/dd256984.aspx">msdn</a>.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=28c1b4b0-67fb-45b1-a043-c6656ef77124" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Top 10 Presentation Tips</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/11/07/Top10PresentationTips.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,f6eb6d11-075a-4e12-9304-1733ac62742a.aspx</id>
    <published>2008-11-07T14:02:52.6680626-07:00</published>
    <updated>2008-11-07T14:02:52.6680626-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've been on a Presentation spree lately with <a href="http://www.dotnetmontreal.com" target="_blank">.NET
Montreal User Group</a>, <a href="http://www.ottawacommunity.net/" target="_blank">Ottawa
.NET User Group</a>, <a href="http://www.techdays.ca" target="_blank">TechDays</a> and <a href="http://www.devteach.com" target="_blank">DevTeach</a> coming
soon.
</p>
        <p>
And while presenting on <a href="http://www.windowsclient.net" target="_blank">WPF</a> and <a href="http://www.codeplex.com/umbrella" target="_blank">Umbrella</a>,
we received great feedback that made us realize that there are always ways to improve
our presentations.
</p>
        <p>
Here`s a Top 10 countdown focused on the Development environment you`re presenting
to the attendees
</p>
        <ol>
          <li>
Use <a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx" target="_blank">ZoomIt</a> from
SysInternals to zoom and draw on the display</li>
          <li>
Instead of typing lengthy code or copying from a notepad, use <a href="http://www.studiosnippets.com/" target="_blank">Visual
Studio Code Snippets</a></li>
          <li>
When typing code, use Visual Studio Auto-Complete feature using <strong>Ctrl+.</strong> to
either resolve types, implement interfaces, ... It saves huge amount of time</li>
          <li>
Use <strong>Ctrl+E, D</strong> to reformat your documents correctly.</li>
          <li>
Try not to highlight too much code as it isn`t as readable with the default team</li>
          <li>
Close any unneeded window in Visual Studio (Properties Window, Ouput) or in the OS
(Gadget Window, Office Toolbar, ...)</li>
          <li>
Close any application that might generate unnecessary popups (i.e. Messenger, Outlook,
...)</li>
          <li>
Disable Windows Updates so you don`t end up with a laptop that reboots during your
talk</li>
          <li>
Use Mobility Center Presentation Mode (<strong>WindowsKey + X</strong>) to make you`re
environment as blend as possible (No family photo background, No screen saver, ...)</li>
          <li>
This is the freebie tip. Let us know about an additional tip and the best tip will
be both displayed on our blog and grant you a free access to our Launch Party!</li>
        </ol>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=f6eb6d11-075a-4e12-9304-1733ac62742a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>DevTeach in 3 Weeks</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/11/04/DevTeachIn3Weeks.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,19a6b6a4-f7c2-4e94-9b74-5f1e706356fe.aspx</id>
    <published>2008-11-04T06:52:42.825-07:00</published>
    <updated>2008-11-04T06:52:42.8252751-07:00</updated>
    <category term=".net - WPF" label=".net - WPF" scheme="http://www.nventive.net/Blog2/CategoryView,category,netWPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.devteach.com">DevTeach</a> is coming soon, in 3 weeks in fact,
and we wanted to mention it because of WPF. As you know, nVentive is strongly pushing
the WPF technology so that we can start businesses can start building LOB applications
with it. 
</p>
        <p>
I hadn't realized it before, but the first day (extra fee) has a <a href="http://www.devteach.com/PreConference.aspx#PreNET3">full
session with Kevin McNeish</a>, where he will spend the day with <a href="http://www.microsoft.com/expression">Expression
Blend</a>. As if that wasn't enough, there are over 6 other sessions during the
conference that will speak of WPF (or Silverlight).
</p>
        <p>
Once done, don't forget to come and talk to us about your experience. nVentive is
growing and will be on site to discover hidden talents.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=19a6b6a4-f7c2-4e94-9b74-5f1e706356fe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Enterprise Library 4.1 and Unity 1.2</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/10/28/EnterpriseLibrary41AndUnity12.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,ffde84cd-d9d8-4b3d-9642-7f02d4a0d65d.aspx</id>
    <published>2008-10-28T10:21:57.817-07:00</published>
    <updated>2008-10-28T10:22:40.2093335-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
We are happy to announce (or repeat) that Enterprise Library 4.1 and Unity 1.2 from
Microsoft PnP group is out. Why are we so happy, well nVentive collaborated with Microsoft
on this project.
</p>
        <p>
This service release is a minor one, but brings one major new functionality : Interception
from Unity. If you are using Unity as your IOC, i strongly urge you to upgrade to
this new version and find that:
</p>
        <ol>
          <li>
The container can resolve itself :) 
</li>
          <li>
AOP programming is one step closer. You can reuse the matching rules and call handlers
from PIAB, or invent your own.</li>
        </ol>
        <p>
We'll be blogging about this new release very soon, with code examples to get you
going.
</p>
        <p>
As always, you can find these on CodePlex (<a href="http://www.codeplex.com/unity">http://www.codeplex.com/unity</a> or <a href="http://www.codeplex.com/entlib">http://www.codeplex.com/entlib</a>)
or the msdn landing pages (<a href="http://msdn.microsoft.com/en-us/library/aa138002.aspx">http://msdn.microsoft.com/en-us/library/aa138002.aspx</a>).
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=ffde84cd-d9d8-4b3d-9642-7f02d4a0d65d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Microsoft TechDays</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/10/25/MicrosoftTechDays.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,cdb8c3bc-ebbe-4fc4-8c2a-8685d0d6dd4f.aspx</id>
    <published>2008-10-24T17:53:21.806-07:00</published>
    <updated>2008-10-21T17:53:21.8066528-07:00</updated>
    <category term=".net - WPF" label=".net - WPF" scheme="http://www.nventive.net/Blog2/CategoryView,category,netWPF.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As announced previously, nVentive will be presenting at the Montreal <a href="http://www.microsoft.com/canada/techdays/default.aspx">Tech
Days</a>, brought to you by Microsoft on November 6th and 7th. Make sure the register,
as this event is not a free one.
</p>
        <p>
Erik will be giving the "Blackbelt Data Binding in WPF" presentation (make sure your
to bring your karate skills) and François will be giving the "Building Differentiated
UI Applications Using Composite WPF" talk. As a sneak preview, you can also catch
François for the Tech Days in Toronto, as he will be doing his presentation there
also.
</p>
        <p>
These presentations should help your business intergrate the latest and greatest technologies
from Microsoft for presenting information to your users. While François` talk
will concentrate with some of the "best practices" given by Microsoft`s Patterns and
Practices group on how to build composite applications, Erik`s will dig deeper into
the misteries of data binding.
</p>
        <p>
We hope to see you there, and as always, will be available to answer any questions
that you might have on these new technologies.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=cdb8c3bc-ebbe-4fc4-8c2a-8685d0d6dd4f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>New Offices</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/10/23/NewOffices.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,6a587f2f-1009-4627-98bc-194d6c2a7727.aspx</id>
    <published>2008-10-22T18:07:22.76-07:00</published>
    <updated>2008-10-21T18:10:03.8727671-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive is happy to annouce that it will be moving to new offices starting November
1st. This move will allow us to better serve our clients by offering space to offer
training on our own premise, develop our own software and promote our new Center of
Excellence. Stay tuned for more information.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=6a587f2f-1009-4627-98bc-194d6c2a7727" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WPF Themes and how to Skin a ScrollBar</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/10/22/WPFThemesAndHowToSkinAScrollBar.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,6192b462-d384-4b9d-822d-1b5189f99661.aspx</id>
    <published>2008-10-21T18:20:53.851-07:00</published>
    <updated>2008-10-19T18:20:53.8513709-07:00</updated>
    <category term=".net - WPF" label=".net - WPF" scheme="http://www.nventive.net/Blog2/CategoryView,category,netWPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When we were in Quebec city last week training a group of people on WPF, one of the
trainees asked a question :
</p>
        <p>
   How would I go and change the "presentation" of the scroll bar.
</p>
        <p>
This questioned was asked during one of the labs and so we had time (10 minutes) to
come up with a quick answer, here is the walkthrough that we presented:
</p>
        <ol>
          <li>
Subclass the ScrollBar control by deriving a new class from it, don't forget
to add this code in the static constructor so that styles gets hooked up correctly
:<br /><div style="FONT-FAMILY: Courier New; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt"><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   18</span>        
    DefaultStyleKeyProperty.OverrideMetadata(<span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">MyScrollBar</span>),
</p><p style="MARGIN: 0px"><span style="COLOR: #2b91af">   19</span>        
        <span style="COLOR: blue">new</span><span style="COLOR: #2b91af">FrameworkPropertyMetadata</span>(<span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">MyScrollBar</span>)));
</p></div><!--EndFragment--></li>
          <li>
Load up <a href="http://www.red-gate.com/products/reflector/">Reflector</a> and locate
the the PresentationFramwork.Aero.dll assembly in the GAC. This assembly contains
WPF resource dictionaries that WPF merges into the application scope when a WPF application
starts. WPF loads the correct dll "theme" file according to the OS that is running.</li>
          <li>
Install the <a href="http://www.codeplex.com/reflectoraddins/Wiki/View.aspx?title=BamlViewer">BamlViewer</a> addin
for Reflector because the DLL doesn't contain readable XAML. It is stored by the compiler
in a binary format in order to optimize loading and storage of these massive XML files.</li>
          <li>
Locate the section in the converted XAML that pertains to the ScrollBar control, copy
that into your own resource section, rename a few things to "MyScrollBar" and voilà,
a custom scrollbar.</li>
        </ol>
        <p>
This is the 1000 feet view on how to do skinning, and will require a lot more work
when creating a custom style that works correctly (handling commands, events, triggers...).
</p>
        <p>
It was a mere introduction to demonstrate the simplicity of the model that WPF uses
to "present" controls.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=6192b462-d384-4b9d-822d-1b5189f99661" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WPF in Quebec City</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/10/20/WPFInQuebecCity.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,45c86910-ba79-49a5-8a5e-5c665deec972.aspx</id>
    <published>2008-10-19T17:59:11.154-07:00</published>
    <updated>2008-10-19T17:59:11.1544846-07:00</updated>
    <category term=".net - WPF" label=".net - WPF" scheme="http://www.nventive.net/Blog2/CategoryView,category,netWPF.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, Erik gave a 2 day training in Quebec city on the topic of WPF. He was amazed
to see just how much interest there currently is for this new technology, especially
now that SilverLight 2 got released.
</p>
        <p>
These are some of the questions that were asked, as well as pointers to the answers:
</p>
        <p>
1 - What do you recommend, a XBAP application or a SiliverLight one ?
</p>
        <p>
   This is a hard one because it involves so many upfront decisions.
If you do not control the computers that will run the application, a SiliverLight
application is the easiest to deploy. At the same time, SilverLight applications have
severe constraints (partial trust, doesn't benefit from the full .net framework, stripped
down WPF, limited network access...) but benefits from advances like <a href="http://blogs.msdn.com/jaimer/archive/2008/03/31/a-deepzoom-primer-explained-and-coded.aspx">DeepZoom</a> (checkout
the <a href="http://www.codeplex.com/deepearth">DeepEarth</a> project). XBAP applications
are normal .net applications that are hosted in the browser (Internet Explorer) and
are usually partial trust (as the assemblies are downloaded at run-time from a webserver).
</p>
        <p>
2 - Should we write new controls ?
</p>
        <p>
   WPF comes with so many extension points (skins, themes, control
templates, data templates...) that should all be evaluated before actually writing
a new control. In a upcoming post, we will explain the "on the fly walkthough" we
used to change how scroll bars were displayed for a "trendy application". Writing
new controls is still a possibility, allthough we think you will find that there are
better ways to extend WPF.
</p>
        <p>
3 - Isn't SilverLight just for making cheesy animations on the web ?
</p>
        <p>
   SilverLight 1.0 was only able to work with WPF (through XAML) and
was mostly used to display media. SilverLight 2.0 comes with an implementation of
the .net framework which allows you to develop a lot of the same kinds of applications
you do with the .net framework; think of it in the same way as you would the
Compact Framework. One major difference with the Compact Framework (the one that runs
on a Windows Mobile phone) is that there is no binary compatibility for assemblies
and so code has to be physically recompiled. Microsoft believes so much in the SilverLight
plateform for business applications that they are porting prism and unity to it (see <a href="http://blogs.msdn.com/dphill/archive/2008/08/31/hello-prism-2-0.aspx">here</a> and <a href="http://blogs.msdn.com/dphill/archive/2008/09/19/prism-2-0-first-drop.aspx">here</a>).
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=45c86910-ba79-49a5-8a5e-5c665deec972" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Top 10 Umbrellas at the Ottawa.NET Community Group</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/25/Top10UmbrellasAtTheOttawaNETCommunityGroup.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,d2d020a2-b2fc-4df5-b9b4-4956dcf3b68e.aspx</id>
    <published>2008-09-25T10:02:22.801-07:00</published>
    <updated>2008-09-24T18:49:46.6816227-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive will be presenting it's "Top 10 Umbrellas" talk at the <a href="http://www.ottawacommunity.net/">Ottawa.NET
Community</a> on Thursday, November 5th. Come and hear us talk about Umbrella and
how the ideas within can save you development time.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=d2d020a2-b2fc-4df5-b9b4-4956dcf3b68e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>ObservableCollection</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/22/ObservableCollection.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,49bae854-ef28-4c3a-b847-719339110c98.aspx</id>
    <published>2008-09-22T15:48:40.629-07:00</published>
    <updated>2008-09-19T15:48:40.629091-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the nice things of the latest versions of .net, is the <a href="http://msdn.microsoft.com/en-us/library/ms668604.aspx">ObservableCollection&lt;T&gt;</a>.
This class implements the new <a href="http://msdn.microsoft.com/en-us/library/system.collections.specialized.inotifycollectionchanged.aspx">INotifyCollectionChanged</a> interface
(similar to <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx">INotifyPropertyChanged</a> that
we all know). Here is a small code example:
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;\red0\green0\blue255;\red0\green128\blue0;\red163\green21\blue21;}??\fs20         [\cf3 TestMethod\cf0 ]\par ??        \cf4 public\cf0  \cf4 void\cf0  ObservingAReadOnlyObservableCollectionSucceeds()\par ??        \{\par ??            \cf5 //setup original collection with some initial content;\par ??\cf0             \cf3 ObservableCollection\cf0 &lt;\cf4 string\cf0 &gt; strings = \cf4 new\cf0  \cf3 ObservableCollection\cf0 &lt;\cf4 string\cf0 &gt;();\par ??            strings.Add(\cf6 "string1"\cf0 );\par ??            strings.Add(\cf6 "string2"\cf0 );\par ??\par ??            \cf5 //setup readonly collection\par ??\cf0             \cf3 ReadOnlyObservableCollection\cf0 &lt;\cf4 string\cf0 &gt; readOnlyStrings = \cf4 new\cf0  \cf3 ReadOnlyObservableCollection\cf0 &lt;\cf4 string\cf0 &gt;(strings);\par ??            \cf4 int\cf0  addedElementsWhileObservingReadOnlyCollection = 0;\par ??\par ??            \cf5 //setup observer\par ??\cf0             (readOnlyStrings \cf4 as\cf0  \cf3 INotifyCollectionChanged\cf0 ).CollectionChanged += \cf4 delegate\cf0 (\cf4 object\cf0  sender, \cf3 NotifyCollectionChangedEventArgs\cf0  e)\par ??                    \{\par ??                        \cf4 if\cf0  (e.Action == \cf3 NotifyCollectionChangedAction\cf0 .Add)\par ??                        \{\par ??                            addedElementsWhileObservingReadOnlyCollection += e.NewItems.Count;\par ??                        \}\par ??                    \};\par ??\par ??            \cf5 //add one item, addign should be observed\par ??\cf0             strings.Add(\cf6 "addedString"\cf0 );\par ??\par ??            \cf5 //assert\par ??\cf0             \cf3 Assert\cf0 .AreEqual(3, readOnlyStrings.Count);\par ??            \cf3 Assert\cf0 .AreEqual(1, addedElementsWhileObservingReadOnlyCollection);\par ??        \}}
-->
        <div style="FONT-FAMILY: Courier New; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    1</span>    
    [<span style="COLOR: #2b91af">TestMethod</span>]
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    2</span>    
    <span style="COLOR: blue">public</span><span style="COLOR: blue">void</span> ObservingAReadOnlyObservableCollectionSucceeds()
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    3</span>    
    {
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    4</span>    
        <span style="COLOR: green">//setup original
collection with some initial content;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    5</span>    
        <span style="COLOR: #2b91af">ObservableCollection</span>&lt;<span style="COLOR: blue">string</span>&gt;
strings = <span style="COLOR: blue">new</span><span style="COLOR: #2b91af">ObservableCollection</span>&lt;<span style="COLOR: blue">string</span>&gt;();
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    6</span>    
        strings.Add(<span style="COLOR: #a31515">"string1"</span>);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    7</span>    
        strings.Add(<span style="COLOR: #a31515">"string2"</span>);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    8</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">    9</span>    
        <span style="COLOR: green">//setup readonly
collection</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   10</span>        
    <span style="COLOR: #2b91af">ReadOnlyObservableCollection</span>&lt;<span style="COLOR: blue">string</span>&gt;
readOnlyStrings = <span style="COLOR: blue">new</span><span style="COLOR: #2b91af">ReadOnlyObservableCollection</span>&lt;<span style="COLOR: blue">string</span>&gt;(strings);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   11</span>        
    <span style="COLOR: blue">int</span> addedElementsWhileObservingReadOnlyCollection
= 0;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   12</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   13</span>        
    <span style="COLOR: green">//setup observer</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   14</span>        
    (readOnlyStrings <span style="COLOR: blue">as</span><span style="COLOR: #2b91af">INotifyCollectionChanged</span>).CollectionChanged
+= <span style="COLOR: blue">delegate</span>(<span style="COLOR: blue">object</span> sender, <span style="COLOR: #2b91af">NotifyCollectionChangedEventArgs</span> e)
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   15</span>        
            {
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   16</span>        
                <span style="COLOR: blue">if</span> (e.Action
== <span style="COLOR: #2b91af">NotifyCollectionChangedAction</span>.Add)
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   17</span>        
                {
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   18</span>        
                   
addedElementsWhileObservingReadOnlyCollection += e.NewItems.Count;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   19</span>        
                }
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   20</span>        
            };
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   21</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   22</span>        
    <span style="COLOR: green">//add one item, addign should be observed</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   23</span>        
    strings.Add(<span style="COLOR: #a31515">"addedString"</span>);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   24</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   25</span>        
    <span style="COLOR: green">//assert</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   26</span>        
    <span style="COLOR: #2b91af">Assert</span>.AreEqual(3, readOnlyStrings.Count);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   27</span>        
    <span style="COLOR: #2b91af">Assert</span>.AreEqual(1, addedElementsWhileObservingReadOnlyCollection);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #2b91af">   28</span>        
}
</p>
        </div>
        <p>
Notice the usage of <a href="http://msdn.microsoft.com/en-us/library/ms668620.aspx">ReadOnlyObservableCollection&lt;T&gt;,</a> which
can be used when you don't want someone to alter the contents of a collection.
</p>
        <p>
These are the problems we see with all this new goodness:
</p>
        <ol>
          <li>
These types reside in the WindowsBase.DLL assembly with weird innapropriate namespaces.</li>
          <li>
ReadOnlyObservableCollection&lt;T&gt; and ObservableCollection&lt;T&gt; implement
INotifyPropertyChanged explicitly, meaning you have to cast to INotifyPropertyChanged
to be able to use notifications.</li>
        </ol>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=49bae854-ef28-4c3a-b847-719339110c98" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive Sponsors the Montreal .NET Community</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/19/nVentiveSponsorsTheMontrealNETCommunity.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,883525f9-a223-407f-88c5-d594b6806f7b.aspx</id>
    <published>2008-09-19T11:22:06.736-07:00</published>
    <updated>2008-09-16T11:22:06.736502-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive will be sponsoring the <a href="http://www.dotnetmontreal.com">Montreal .NET
community</a>, it's our way of promoting this great group. They offer many meetings
per month where great subjects are featured. It's one of our ways of offering coaching
and guidance to the Montreal community.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=883525f9-a223-407f-88c5-d594b6806f7b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive and DevTeach Montreal 2008</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/11/nVentiveAndDevTeachMontreal2008.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,a56a2582-ee9f-47ea-844d-7e1d48dc6d19.aspx</id>
    <published>2008-09-11T00:05:35.051-07:00</published>
    <updated>2008-08-26T00:05:35.0511613-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For the second time this year, nVentive will be presenting at <a href="http://www.devteach.com/"><font color="#003366">DevTeach</font></a>,
happening in our home town of Montreal from December 1st to the 5th. Come and catch
us talk about agility in our "Done Done" conversation, or about hard core programming
in our "Top 10 Umbrellas" talk.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=a56a2582-ee9f-47ea-844d-7e1d48dc6d19" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive at Microsoft TechDays</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/09/nVentiveAtMicrosoftTechDays.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,342cf8bf-bd24-44a2-9aac-3db63105dbb3.aspx</id>
    <published>2008-09-09T13:51:52.4383001-07:00</published>
    <updated>2008-09-09T13:51:52.4383001-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive will be presenting some cool material at the new Microsoft <a href="http://www.techdays.ca">TechDays</a> conference
in Montreal on November 6th and 7th. Be sure to be there as the subjects are the latest
and will surely help you increae your team's software developement velocity.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=342cf8bf-bd24-44a2-9aac-3db63105dbb3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Reflector's new Owner</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/09/03/ReflectorsNewOwner.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,c61f5906-5deb-44b9-9fda-f800a8935d25.aspx</id>
    <published>2008-09-03T00:27:09.122-07:00</published>
    <updated>2008-08-26T00:27:09.122882-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well, such a nice tool was bound to be aquired by a company. Reflector has been acquired
by Red-Gate software. You can find Reflector at <a href="http://reflector.red-gate.com">http://reflector.red-gate.com</a>.
</p>
        <p>
Speaking of Reflector though, did you know there were over 30 plugins <a href="http://www.codeplex.com/reflectoraddins">available</a> ?
</p>
        <p>
On the subject of plugins, the excellent <a href="http://www.testdriven.net/">TestDriven.net</a> addin
for Visual Studio will add a few context menu item for running your tests, but will
also add one that allows you to jump back to Reflector. Isn't it nice when all
these tools play nice together ?
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=c61f5906-5deb-44b9-9fda-f800a8935d25" />
      </div>
    </content>
  </entry>
  <entry>
    <title>NDepend and Continuous Integration</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/29/NDependAndContinuousIntegration.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,cbc9dd7b-74a1-4ebf-836d-e63e72a7e51a.aspx</id>
    <published>2008-08-28T21:50:42.362-07:00</published>
    <updated>2008-08-29T10:50:35.8750929-07:00</updated>
    <category term="Architecture" label="Architecture" scheme="http://www.nventive.net/Blog2/CategoryView,category,Architecture.aspx" />
    <category term="Process" label="Process" scheme="http://www.nventive.net/Blog2/CategoryView,category,Process.aspx" />
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've been looking at tools lately that could an agile team get a better view of the
quality of the software they are writing. On of those is <a href="http://www.ndepend.com/">NDepend</a>,
a tool that will inspect your assemblies, determine your code's dependencies and then
calculate some metrics for you to analyze. The output will typically be a report,
in HTML format. Since this step can be automated, We strongly suggest that you put
this into your continuous integration process because from that point, you'll be able
see the metrics for your software change with time.
</p>
        <p>
On a previous project, we had integrated NDepend on the daily build and at the of
each iteration, we would take a few minutes to look at the reports and note a few
actions to be taken during the next one. It was a great way to maintain quality and
I strongly recommend you integrate it on your next project.
</p>
        <p>
Now where this tool really shines, is with the VisualNDepend application. This one
allows you to visualize the metrics of your software, query your software's compiled
code through a SQL like language, and perform comparisons between 2 different reports.
</p>
        <p>
Here are a few examples of the queries you can do in CQL:
</p>
        <blockquote>
          <p>
SELECT TOP <b>10</b> METHODS WHERE CouldBePrivate
</p>
          <p>
SELECT TOP <b>10</b> FIELDS WHERE CouldBePrivate
</p>
          <p>
SELECT TOP <b>10</b> TYPES WHERE IsClass AND NbChildren ==<b>0</b> AND !IsSealed AND
!IsStatic ORDER BY NbLinesOfCode
</p>
        </blockquote>
        <p>
Here are a few snapshots of the tool when run on our own Umbrella library.
</p>
        <p>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/NDependandContinuousIntegration_1330D/Picture%201_2.jpg">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" border="0" alt="Picture 1" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/NDependandContinuousIntegration_1330D/Picture%201_thumb.jpg" width="487" height="293" />
          </a>
        </p>
        <p>
This image shows Umbrella being analyzed, with the mouse pointer on one method called
"Truncate". NDepend shows metrics and information all on one easy screen.
</p>
        <p>
          <a href="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/NDependandContinuousIntegration_1330D/Picture%202_2.jpg">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" border="0" alt="Picture 2" src="http://www.nventive.net/Blog2/content/binary/WindowsLiveWriter/NDependandContinuousIntegration_1330D/Picture%202_thumb.jpg" width="488" height="295" />
          </a>
        </p>
        <p>
This image shows the result of the execution of 1 CQL query and where in the assembly
(in blue) are located the results. Once again, bravo for NDepend: quick, concise
and visual.
</p>
        <p>
The author of the product Patrick Smacchia gave an interview to the <a href="http://www.visualstudiotalkshow.com/Archives/072-16avril2008-PatrickSm.html">Visual
Studio Talk Show</a>, a french PodCast from Montreal; if you can, we strongly suggest
you listen to it and hear what the author himself has to say about this great
product.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=cbc9dd7b-74a1-4ebf-836d-e63e72a7e51a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Enterprise Library 4.1</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/27/EnterpriseLibrary41.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,4d7f502d-890b-4309-b991-138ce5293770.aspx</id>
    <published>2008-08-26T23:39:53.615-07:00</published>
    <updated>2008-08-25T23:39:53.6153163-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Grigori, from Microsoft's PnP <a href="http://blogs.msdn.com/agile/archive/2008/08/03/entlib4-1-kickoff.aspx">announced</a> last
week that there will be a new version of Enterprise Library coming out. It's a smaller
version, when you look at the features coming out, but it's a welcome one as a few
bugs will be fixed.
</p>
        <p>
The first intermediate drop (before the final release) of the source code is already
there, so feel free to grab it and see how the new features can help you right now
at <a href="http://www.codeplex.com/entlib">http://www.codeplex.com/entlib</a>.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=4d7f502d-890b-4309-b991-138ce5293770" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2008 SP1</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/26/VisualStudio2008SP1.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,e97c8bac-42aa-4bb2-a350-216753706cac.aspx</id>
    <published>2008-08-25T23:33:22.076-07:00</published>
    <updated>2008-08-25T23:33:22.0765489-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx">Visual Studio
2008 SP1</a> has been out now for a few days, and we must say we like it. It
brings a ton of enhancements to the IDE and to the .NET framework; and these are the
things that hit us the most:
</p>
        <ul>
          <li>
Better WPF Designers - there were a few bugs in the original ones and I'm glad
to say they are fixed.</li>
          <li>
Entity Framework - well we were waiting for this one for a long time. We can
now start to build OR architectures with design tools provided by Microsoft. You might
hear in the community that version 1 is not perfect, and they are right. Version 2
is coming out eventually and they are already discussing ideas for people to judge,
see <a href="http://blogs.msdn.com/efdesign/rss.xml">this rss</a> feed. The team also
has a <a href="http://entities.pbwiki.com/">wiki</a> to gather community ideas.</li>
          <li>
ADO.NET Data Services - AKA Astoria, this project exposes a Data Service in a RESTful
way. It can basically expose anything that is IQueryable and offers hooks to manage
security, transactions, updates, etc... There is a small tool that will allow you
to recreate the object model on the client side and get away from using the URL mecanism
to query the service. This new service will yield a few new nice architectures we
am certain.</li>
          <li>
ASP.NET Dynamic Data - This technology will allow you to rapidly generate an interface
from metadata attached to a business object. It's basically a scaffolding technique
in order to rapidly generate data driven applications.</li>
        </ul>
        <p>
We suggest you install this service pack as soon as possible and use it
with your forth coming developments. It is rare that a service pack brings so much
new technology to the table and they are all welcome.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=e97c8bac-42aa-4bb2-a350-216753706cac" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Montreal .NET Community, @Lunch and Umbrella</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/25/MontrealNETCommunityLunchAndUmbrella.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,69a1e5fb-3391-4485-9506-a9963d3b3e47.aspx</id>
    <published>2008-08-25T00:01:02.53-07:00</published>
    <updated>2008-08-26T00:01:02.530304-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The <a href="http://www.dotnetmontreal.com">Montreal .NET Community</a> (formelly
the GUVSM) has redone itself.
</p>
        <p>
There is a new name and a new website in order to reflect the common interests that
the community has in .net related technologies. There will be special interests groups
for <a href="http://www.dotnetmontreal.com/dnn/Groupes/Net/tabid/56/language/en-CA/Default.aspx">.Net</a>, <a href="http://www.dotnetmontreal.com/dnn/Groupes/TeamSystem/tabid/59/language/en-CA/Default.aspx">Team
System</a>, <a href="http://www.dotnetmontreal.com/dnn/Groupes/SQL/tabid/57/language/en-CA/Default.aspx">Sql</a> and <a href="http://www.dotnetmontreal.com/dnn/Groupes/Architecture/tabid/58/language/en-CA/Default.aspx">architecture</a>.
What's new though is that Francois and I will be pushing a new concept in the .net
group called @Lunch.
</p>
        <p>
@Lunch is basically an open session, once a month, where a subject will examined in
a more informal way. It is modeled on the way Alt.NET and opens spaces work and will
surely provoke a few interesting discussions. One of the things we will promote is
to determine the subject of the next meeting, during the last few minutes of the meeting
occuring. What an "Agile" way of learning what's most important. The first @Lunch
is scheduled for <a href="http://www.dotnetmontreal.com/dnn/Activit%c3%a9s/Calendrier/tabid/61/ModuleID/379/ItemID/4/mctl/EventDetails/language/en-CA/Default.aspx?selecteddate=24/09/2008">September
24th</a> and will be moderated by Francois, speaking on extension methods.
</p>
        <p>
I suggest you visit the <a href="http://www.dotnetmontreal.com/dnn/Groupes/TeamSystem/tabid/59/language/en-CA/Default.aspx">calendar</a>,
and find which sessions interest you the most. You can even subscribe to the calendar
through a <a href="http://www.dotnetmontreal.com/dnn/Activités/Calendrier/tabid/61/moduleid/379/language/en-CA/RSS.aspx">RSS</a> feed;
what a nice touch !
</p>
        <p>
The last thing for this post is an upcoming Umbrella talk; we will be presenting our
session called "Top 10 Umbrellas" at the .Net group of the Montreal .Net Community
on <a href="http://www.dotnetmontreal.com/dnn/Activit%c3%a9s/Calendrier/tabid/61/ModuleID/379/ItemID/9/mctl/EventDetails/language/en-CA/Default.aspx?selecteddate=20/10/2008">October
20th</a>. If you're interested in what it is, or how it can help you, we suggest you
come by and listen what we have to say.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=69a1e5fb-3391-4485-9506-a9963d3b3e47" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive helps Canada DND</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/07/nVentiveHelpsCanadaDND.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,0f47a619-590b-44da-a651-dd564cbe9365.aspx</id>
    <published>2008-08-07T12:33:19.6003839-07:00</published>
    <updated>2008-08-07T12:33:19.6003839-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000">
            <span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: FR-CA; mso-fareast-language: EN-CA; mso-bidi-language: AR-SA" lang="FR-CA">nVentive
helped a group at the Canada DND (Department of National Defense) by producing an
audit for a internal project that related to the techniques, methodologies and technologies
use by that team.</span>
          </font>
        </p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=0f47a619-590b-44da-a651-dd564cbe9365" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive and PnP</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/06/nVentiveAndPnP.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,9101a8b1-d668-41e2-a598-d23c28adabdd.aspx</id>
    <published>2008-08-06T12:13:58.781-07:00</published>
    <updated>2008-08-07T12:34:06.5231598-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive will be working on a small mandate with Microsoft's PnP (Patterns &amp; Practices).
</p>
        <p>
Microsoft's Patterns and Practices group is a natural fit with nVentive's Coaching
and Guidance approach. In future conferences and talks, we will be able to demonstrate
the newest ideas we are developing together.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=9101a8b1-d668-41e2-a598-d23c28adabdd" />
      </div>
    </content>
  </entry>
  <entry>
    <title>nVentive selected as a Microsoft Vendor</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/08/04/nVentiveSelectedAsAMicrosoftVendor.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,3b95103f-be36-4977-a971-9e351ae47c96.aspx</id>
    <published>2008-08-04T12:15:32.72-07:00</published>
    <updated>2008-08-07T12:33:46.9602842-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive was selected as a Microsoft Vendor this week. This will allow us to work
with Microsoft on a variety of projects in the future in order to help bridge the
gap between the developers and the technology makers.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=3b95103f-be36-4977-a971-9e351ae47c96" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Erik Renaud on the Visual Studio Talk Show</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/31/ErikRenaudOnTheVisualStudioTalkShow.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,3b8581c6-642f-468a-8cd7-62a1d61964ef.aspx</id>
    <published>2008-05-31T00:00:39.532-07:00</published>
    <updated>2008-08-27T00:00:39.5329694-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On Monday, Erik recorded his third <a href="http://www.visualstudiotalkshow.com">Visual
Studio Talk Show</a>, the french podcast with Mario Cardinal and Guy Barrette. The
subject was suppose to the Entity Framework, but after having attended the PnP Summit,
the subject was changed to "Being Done".
</p>
        <p>
The podcast is great, and shows a great discussion between the agile camp, and the
more traditional waterfall processes. 
</p>
        <p>
You can download the podcast at <a title="http://www.visualstudiotalkshow.com/Archives/075-26mai2008-ErikRenaud.html" href="http://www.visualstudiotalkshow.com/Archives/075-26mai2008-ErikRenaud.html">http://www.visualstudiotalkshow.com/Archives/075-26mai2008-ErikRenaud.html</a> and
while your there, you should check out the other, past podcasts, we are sure you will
like them.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=3b8581c6-642f-468a-8cd7-62a1d61964ef" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Usage Coverage</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/22/UsageCoverage.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,ac8023ba-e1f3-4696-9424-be2aca3b11ed.aspx</id>
    <published>2008-05-22T00:00:05.985-07:00</published>
    <updated>2008-08-27T00:00:05.9854503-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
At DevTeach and the PnP Summit, there were talks on how to use instrumentation within
your applications and use it to monitor the health of it throughout it's lifecycle.
</p>
        <p>
At one of our past contracts, we had a problem where our users were not taking the
time to test the system correctly. We then resorted to reuse the instrumentation module
to track how often the individual functions of the application were used.
</p>
        <p>
At first, it was only about helping them focus on the tests, or rather where they
had not tested. But after a few months, it all changed; it actually became a measure
of how useful the software was and what parts were being adopted.
</p>
        <p>
It's motivated two things :
</p>
        <ol>
          <li>
When comes a time to prioritize backlog items, we can use these metrics to make sure
we do things that are of the highest value for the customer, in parts of the system
that we know have high traffic.</li>
          <li>
Every time we add something to the system, we have metrics that can help us remove
something else from the system. This allows the system to constantly stay the same
relative size and not carry any "dead weight" into the future.</li>
        </ol>
        <p>
I'm not sure if Usage Coverage is a good term for these ideas, but for sure, I will
be using them in future projects also.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=ac8023ba-e1f3-4696-9424-be2aca3b11ed" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Scott Hanselman on Umbrella</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/21/ScottHanselmanOnUmbrella.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,da4b92d9-dfa4-474c-ba81-55cab39baea5.aspx</id>
    <published>2008-05-20T18:26:13.022-07:00</published>
    <updated>2008-08-07T18:26:13.0225308-07:00</updated>
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Amazing how he got it <a href="http://www.hanselman.com/blog/TheWeeklySourceCode27SuckLessLibraries.aspx">right</a>. 
</p>
        <p>
This guy is busy like 10 of us and still, he's able to appreciate a piece of code
I wouldn't dare taking less than 2 hours explaining the value of.
</p>
        <p>
Here's what he had to say about <a href="http://www.codeplex.com/umbrella">Umbrella</a>:
</p>
        <blockquote>
          <p>
            <em>It is exceedingly broad and includes literally hundreds of new methods and helpers.
However, I don't think you're expected to "learn" Umbrella as they hope you'll stumble
into it...in a good way. It's like the concept of </em>
            <a href="http://blogs.msdn.com/brada/archive/2003/10/02/50420.aspx">
              <em>The
Pit of Success</em>
            </a>
            <em>. There's little easier than just falling, and the idea
is that if you've designed an API correctly folks will just fall into success. </em>
          </p>
        </blockquote>
        <p>
This should probably go on our home page as the project description.
</p>
        <p>
Thanks Scott!
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=da4b92d9-dfa4-474c-ba81-55cab39baea5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Patterns and Practices Summit</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/20/PatternsAndPracticesSummit.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,c2de5a48-b869-48a7-9020-04c9eafd7a48.aspx</id>
    <published>2008-05-20T00:03:57.302-07:00</published>
    <updated>2008-08-27T00:03:57.3023915-07:00</updated>
    <category term="Architecture" label="Architecture" scheme="http://www.nventive.net/Blog2/CategoryView,category,Architecture.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
2 weeks ago, Francois and I were attending the Patterns and Practices Summit conference
that was held in Quebec City.
</p>
        <p>
Let me say that the presentations were really nice, and I would not hesitate to go
again. This was a unique chance to have go out and meet some great minds in our industry
and challenge some of nVentive's ideas with them.
</p>
        <p>
This is the list of all of the <a href="http://www.pnpsummit.com/queb2008sessions.aspx">sessions</a> and
the ones that particularly struck us (in no particular order) :
</p>
        <ul>
          <li>
Decrease Coupling and Raise Cohesion <em>- Mario Cardinal</em></li>
          <li>
Designing for Operations<em> - David Aiken</em></li>
          <li>
Empirical Evidence of Agile Methods<em> - </em><em>Grigori Melnik</em></li>
          <li>
Evolving Client Architecture<em> - Billy Hollis</em></li>
          <li>
Future of patterns &amp; practices - <em>Don Smith</em></li>
          <li>
KeyNote<em> (Internals of the VS.NET team) - Brian Harry</em></li>
        </ul>
        <p>
We'll be integrating a few of the ideas we learned in these sessions into our teams,
and we'll let blog on them as we see success out of them.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=c2de5a48-b869-48a7-9020-04c9eafd7a48" />
      </div>
    </content>
  </entry>
  <entry>
    <title>DevTeach Toronto 2008 - Material Uploaded</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/20/DevTeachToronto2008MaterialUploaded.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,9bccfae2-29a2-4470-8419-44e3cfd98e43.aspx</id>
    <published>2008-05-20T00:02:40.175-07:00</published>
    <updated>2008-08-27T00:02:40.1759107-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For all those of you who asked about our session material, it is now available for <a href="http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,20,1,002961\ARC491\BlogEngine+DevTeach2008%2Ezip">download</a>.
</p>
        <p>
You'll have to login to your devteach account in order to be able to download the
material. If the link doesn't work, go directly to the <a href="http://www.devteach.com/Schedule.aspx">Schedule</a> page,
find our AOP + Unity session and you should be able to click on the Material link.
</p>
        <p>
The .zip file contains both the material for the Validation + Security session and
the AOP + Unity session.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=9bccfae2-29a2-4470-8419-44e3cfd98e43" />
      </div>
    </content>
  </entry>
  <entry>
    <title>DevTeach 2008 in Toronto</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/20/DevTeach2008InToronto.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,0d811802-ddbc-4ccd-b4f6-4a3b3154e57f.aspx</id>
    <published>2008-05-20T00:01:57.643-07:00</published>
    <updated>2008-08-27T00:01:57.6438441-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A couple of days ago, Francois and I came back from Toronto after the DevTeach 2008
conference in Toronto. Wow was it nice, we met a lot of nice people and had the chance
to debate a few of nVentive's ideas. The sessions where we spoke came out very good,
and we hope that everybody was able to take something home, that they can use at their
workplaces.
</p>
        <p>
DevTeach will occur again in Montreal before the end of the year, although I can't
confirm any of the details just yet and we hope that we will be speaking again, giving
us a chance to share ideas with the great Montreal developer community.
</p>
        <p>
The list of <a href="http://www.devteach.com/Schedule.aspx">sessions</a> was very
exhaustive and here are some that marked us:
</p>
        <ul>
          <li>
Home-grown Production System Monitoring and Report - Owen Rogers</li>
          <li>
Behavior-Driven Development Installed - David Laribee</li>
          <li>
How to Make Scrum Really Work - Joel Semeniuk</li>
          <li>
The Next Leap: Software Factories and DSL - Kevin McNeish</li>
          <li>
Planned Agility?! - David Laribee</li>
          <li>
Why the Next Five Years Will Be About Languages - Ted Neward</li>
          <li>
Busy .NET Developer's Guide to F# - Ted Neward</li>
          <li>
Writing Domain Specific Languages in Boo - Oren Eini</li>
          <li>
Understanding Efficient User Interface Design - Markus Egger</li>
          <li>
Strategic Domain-Driven Design - David Laribee</li>
          <li>
DDDD, Unshackle Your Domain - Greg Young 
</li>
        </ul>
        <p>
Now although we did meet a lot of people, these are the ones with whom we had the
biggest discussions on agile and architecture :
</p>
        <ul>
          <li>
Mario Cardinal</li>
          <li>
Oren Eini</li>
          <li>
Justin Lee</li>
          <li>
Ted Neward</li>
          <li>
Scott Bellware</li>
          <li>
David Laribee</li>
          <li>
Greg Young</li>
          <li>
James Kovacs</li>
        </ul>
        <p>
In the coming weeks, we'll probably blog on a few of the ideas we learned and transmit
that knowledge to you.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=0d811802-ddbc-4ccd-b4f6-4a3b3154e57f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Enterprise Library 4.0 is out!</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/17/EnterpriseLibrary40IsOut.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,b9860538-d3d7-40d9-ae07-b78b77fe8e0f.aspx</id>
    <published>2008-05-17T00:03:14.614-07:00</published>
    <updated>2008-08-27T00:03:14.6140719-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For those of you who were at <a href="http://www.devteach.com">DevTeach Toronto</a> and
listened us talk about Enterprise Library 4.0 new features, we promised 4.0 was on
the way. Well, it's officially released! You can get more information on <a href="http://blogs.msdn.com/agile/archive/2008/05/16/enterprise-library-4-0-for-visual-studio-2008-released.aspx">Grigori's
blog</a></p>
        <p>
Make sure to also look at <a href="http://blogs.msdn.com/agile/archive/2008/05/16/unity-refresh-v1-1.aspx">what's
new</a> in the Unity 1.1 refresh.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=b9860538-d3d7-40d9-ae07-b78b77fe8e0f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Umbrella Released on CodePlex</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/14/UmbrellaReleasedOnCodePlex.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,9495c46d-4608-4e80-aa0f-479e7d1c4991.aspx</id>
    <published>2008-05-13T18:28:02.743-07:00</published>
    <updated>2008-08-07T18:28:02.7433874-07:00</updated>
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <category term="Umbrella" label="Umbrella" scheme="http://www.nventive.net/Blog2/CategoryView,category,Umbrella.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Umbrella is nVentive's attempt at filling the gaps in the existing .net framework
and related technologies; hence reducing friction and increasing the predictability
of the api. 
<br /><br />
It consists of a set of helpers and additional abstractions that will likely augment
one's vocabulary and level of abstraction. This is the first drop of the framework,
and we look forward to adding new modules, that will complement Unity, Enterprise
Library, Entity Framework and more.
</p>
        <p>
Go check it out on CodePlex (<a href="http://www.codeplex.com/Umbrella"><font color="#003366">www.codeplex.com/Umbrella</font></a>)
and see how you can diminish your software's complexity by using new patterns.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=9495c46d-4608-4e80-aa0f-479e7d1c4991" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Extension Methods Part 6 - Be Generic Friendly</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/05/12/ExtensionMethodsPart6BeGenericFriendly.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,6395623c-d0ce-4183-a466-d4c567f5dc52.aspx</id>
    <published>2008-05-12T00:04:40.896-07:00</published>
    <updated>2008-09-19T11:37:11.2612557-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term=".net - Extension Methods" label=".net - Extension Methods" scheme="http://www.nventive.net/Blog2/CategoryView,category,netExtensionMethods.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hopefully, after reading <a target="_blank" href="http://www.nventive.net/Blog2/2008/03/12/ExtensionMethodsPart1Recap.aspx">Part
1</a>, <a target="_blank" href="http://www.nventive.net/Blog2/2008/03/12/ExtensionMethodsPart2Design.aspx">Part
2</a>, <a target="_blank" href="http://www.nventive.net/Blog2/2008/03/28/ExtensionMethodsPart3Overloads.aspx">Part
3</a>, <a target="_blank" href="http://www.nventive.net/Blog2/2008/03/28/ExtensionMethodsPart4StaticMethodsAreEvil.aspx">Part
4</a> and <a target="_blank" href="http://www.nventive.net/Blog2/2008/03/29/ExtensionMethodsPart5GenericMethodsAndTypeInference.aspx">Part
5</a>, you should've become an Extension Method Master.
</p>
        <p>
But there's more. There are other elements that can be simplified by using extension
methods and that is, limiting usage of reflection.
</p>
        <p>
Given something like:
</p>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
            <p style="MARGIN: 0px">
              <span style="COLOR: blue">public</span>
              <span style="COLOR: blue">interface</span>
              <span style="COLOR: #2b91af">IServiceLocator</span>
            </p>
            <p style="MARGIN: 0px">
{
</p>
            <p style="MARGIN: 0px">
  T Resolve<T></T>
();
</p>
            <p style="MARGIN: 0px">
}
</p>
          </div>
        </div>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt"> 
</div>
        <p>
It is important to notice that the generic method Resolve has a 
<T></T>
type parameter for the sole purpose of providing the type to resolve. There are NO
constraints.
</p>
        <p>
One might use the service locator as follows:
</p>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">public</span>
            <span style="COLOR: #2b91af">ILogger</span> GetLogger()
</p>
          <p style="MARGIN: 0px">
{
</p>
          <p style="MARGIN: 0px">
  <span style="COLOR: #2b91af">ILogger</span> logger = serviceLocator.Resolve&lt;<span style="COLOR: #2b91af">ILogger</span>&gt;();
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
  <span style="COLOR: blue">return</span> logger;
</p>
          <p style="MARGIN: 0px">
}
</p>
        </div>
        <p>
But what if the type to resolve is only known at runtime? You'll have to fallback
on reflection:
</p>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">public</span>
            <span style="COLOR: blue">static</span>
            <span style="COLOR: blue">class</span>
            <span style="COLOR: #2b91af">ServiceLocatorExtensions</span>
          </p>
          <p style="MARGIN: 0px">
{
</p>
          <p style="MARGIN: 0px">
  <span style="COLOR: blue">public</span><span style="COLOR: blue">static</span><span style="COLOR: blue">object</span> Resolve(<span style="COLOR: blue">this</span><span style="COLOR: #2b91af">IServiceLocator</span> locator, <span style="COLOR: #2b91af">Type</span> type)
</p>
          <p style="MARGIN: 0px">
  {
</p>
          <p style="MARGIN: 0px">
    <span style="COLOR: #2b91af">MethodInfo</span> resolveMethodInfo
= <span style="COLOR: blue">typeof</span>(<span style="COLOR: #2b91af">IServiceLocator</span>).GetMethod(<span style="COLOR: #a31515">"Resolve"</span>);
</p>
          <p style="MARGIN: 0px">
    resolveMethodInfo = resolveMethodInfo.MakeGenericMethod(type);
</p>
          <p style="MARGIN: 0px">
 
</p>
          <p style="MARGIN: 0px">
    <span style="COLOR: blue">return</span> resolveMethodInfo.Invoke(serviceLocator, <span style="COLOR: blue">null</span>);
</p>
          <p style="MARGIN: 0px">
  }
</p>
          <p style="MARGIN: 0px">
}
</p>
        </div>
        <p>
This approach can have terrible performance, especially since there is no reflection
cache.
</p>
        <p>
A far better approach is to define your IServiceLocator interface as a non-generic
interface and provide strongly-typed extension methods:
</p>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">public</span>
            <span style="COLOR: blue">interface</span>
            <span style="COLOR: #2b91af">IServiceLocator</span>
          </p>
          <p style="MARGIN: 0px">
{
</p>
          <p style="MARGIN: 0px">
  <span style="COLOR: blue">object</span> Resolve(<span style="COLOR: #2b91af">Type</span> type);
</p>
          <p style="MARGIN: 0px">
}
</p>
        </div>
        <p>
and
</p>
        <div style="FONT-FAMILY: courier new; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt">
          <p style="MARGIN: 0px">
            <span style="COLOR: blue">public</span>
            <span style="COLOR: blue">static</span>
            <span style="COLOR: blue">class</span>
            <span style="COLOR: #2b91af">ServiceLocatorExtensions</span>
          </p>
          <p style="MARGIN: 0px">
{
</p>
          <p style="MARGIN: 0px">
  <span style="COLOR: blue">public</span><span style="COLOR: blue">static</span> T
Resolve<T></T>
(<span style="COLOR: blue">this</span><span style="COLOR: #2b91af">IServiceLocator</span> locator)
</p>
          <p style="MARGIN: 0px">
  {
</p>
          <p style="MARGIN: 0px">
    <span style="COLOR: blue">return</span> (T)locator.Resolve(<span style="COLOR: blue">typeof</span>(T));
</p>
          <p style="MARGIN: 0px">
  }
</p>
          <p style="MARGIN: 0px">
}
</p>
          <p style="MARGIN: 0px">
 
</p>
        </div>
        <p>
Thoughts?
</p>
        <p>
          <a style="FLOAT: right" id="a_itc" href="http://www.itcrossing.com/">
            <img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none" alt="powered by metaPost" src="http://dnn.itcrossing.com/m.gif" />
          </a>
        </p>
        <script type="text/javascript" src="/dnn/DesktopModules/itcMetaPost/js/m.js">
        </script>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=6395623c-d0ce-4183-a466-d4c567f5dc52" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS in the SCRUM</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/04/30/TFSInTheSCRUM.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,1aa954eb-8cf3-44a1-bb3a-d153ffcf6c98.aspx</id>
    <published>2008-04-30T00:06:04.898-07:00</published>
    <updated>2008-08-27T00:06:04.8985913-07:00</updated>
    <category term="Process" label="Process" scheme="http://www.nventive.net/Blog2/CategoryView,category,Process.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Finding tools that can help you through your daily <a href="http://www.controlchaos.com/about/index.php">SCRUM</a> meeting
can be a hard task. Other than the usual rubber football that allows a person to speak,
nothing else seemed interesting, that is until last week. 
</p>
        <p>
I was aimlessly surfing on <a href="http://www.codeplex.com">CodePlex</a> when I found <a href="http://www.codeplex.com/TFSStickyBuddy">TFS
Sticky Buddy</a>. It's a great way for your team to "see" the iteration. It's a small
WPF program that visualizes the work items contained in a TFS Team Project. 
</p>
        <p>
          <a href="http://nventive.net/dnn/Portals/0/images/blogs/coach/WindowsLiveWriter/TFSintheSCRUM_7DD7/TFS%20Sticky%20Buddy_2.jpg">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" border="0" alt="TFS Sticky Buddy" src="http://nventive.net/dnn/Portals/0/images/blogs/coach/WindowsLiveWriter/TFSintheSCRUM_7DD7/TFS%20Sticky%20Buddy_thumb.jpg" width="572" height="484" />
          </a>
        </p>
        <p>
As soon as I have time, I will try to implement this tool within my teams, because
I believe that it is a nice way to focus the team, during the SCRUM meeting, on the
iteration.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=1aa954eb-8cf3-44a1-bb3a-d153ffcf6c98" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WCF Visualizers</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/04/30/WCFVisualizers.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,add3ef7c-41ba-4fc3-8bb4-eedffb6bb265.aspx</id>
    <published>2008-04-30T00:05:22.538-07:00</published>
    <updated>2008-08-27T00:05:22.538403-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday I was helping somebody with a small WCF application and one of the tools
I proposed was a plugin visualizer for Visual Studio called <a href="http://www.codeplex.com/WCFVisualizer">WCF
Visualizers</a>. It's available freely on <a href="http://www.codeplex.com">CodePlex</a> and
will allow you to see different parts of WCF (messages, endpoints, channels...) while
you are debugging. Go and check it out, as there are some great images on the project
page. The next time I give a WCF presentation with Francois at different user groups,
I will also take the time demo this tool.
</p>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=add3ef7c-41ba-4fc3-8bb4-eedffb6bb265" />
      </div>
    </content>
  </entry>
  <entry>
    <title>HEROES happen {here} in Quebec</title>
    <link rel="alternate" type="text/html" href="http://www.nVentive.net/Blog2/2008/04/22/HEROESHappenHereInQuebec.aspx" />
    <id>http://www.nventive.net/Blog2/PermaLink,guid,6342ae5e-5d81-40de-855a-1cef5b2e9aee.aspx</id>
    <published>2008-04-21T18:33:18.89-07:00</published>
    <updated>2008-08-21T20:44:09.4531697-07:00</updated>
    <category term=".net" label=".net" scheme="http://www.nventive.net/Blog2/CategoryView,category,net.aspx" />
    <category term="Announcement" label="Announcement" scheme="http://www.nventive.net/Blog2/CategoryView,category,Announcement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
nVentive was present in Quebec city at <a href="http://www.microsoft.com/canada/heroeshappenhere/events/default.mspx">HEROES
happen {here}</a>, Microsoft's launch for Visual Studio.Net 2008, SQL Server 2008
and Windows Server 2008.
</p>
        <p>
François and I were experts there on the developer side of things, and the one thing
we got asked the most, were questions on LINQ.
</p>
        <p>
Everybody knows that LINQ is the hot new way to query objects in C# using a syntax
similar to SQL. It depends on 2 tricks, <a href="http://www.nventive.net/dnn/Blog/tabid/54/EntryID/23/Default.aspx">Extension
Methods</a> and <a href="http://msdn2.microsoft.com/en-us/library/bb397687.aspx">Lanbda
Expressions</a>.
</p>
        <p>
This is a small sample.
</p>
        <pre class="code">
          <span style="COLOR: blue">
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">
                <p>
public
</p>
              </font>
            </font>
            <font color="#000000" size="2">
            </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">class</font>
            </font>
            <font color="#000000" size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog
</font>
            </font>
            <font size="2">
              <p>
{
</p>
              <p>
              </p>
            </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">   public</font>
            </font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">string</font>
            </font>
            <font size="2"> Title
{ </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">get</font>
            </font>
            <font size="2">; </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">set</font>
            </font>
            <font size="2">;
}
<p>
}
</p><p></p></font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">class</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Program
</font>
            </font>
            <font size="2">
              <p>
{
</p>
              <p>
              </p>
            </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">   static</font>
            </font>
            <font size="2">
            </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">void</font>
            </font>
            <font size="2"> Main(</font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">string</font>
            </font>
            <font size="2">[]
args)
<p>
   {
</p><p></p></font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">      IList</font>
            </font>
            <font size="2">&lt;</font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2">&gt;
blogs = </font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">new</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">List</font>
            </font>
            <font size="2">&lt;</font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2">&gt;();
<p>
      blogs.Add(
</p></font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">new</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2"> {
Title = </font>
            <font color="#a31515" size="2">
              <font color="#a31515" size="2">"3 cheese
lasagna"</font>
            </font>
            <font size="2"> });
<p>
      blogs.Add(
</p></font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">new</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2"> {
Title = </font>
            <font color="#a31515" size="2">
              <font color="#a31515" size="2">"Blue
cheese alfredo sauce"</font>
            </font>
            <font size="2"> });
<p>
      blogs.Add(
</p></font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">new</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2"> {
Title = </font>
            <font color="#a31515" size="2">
              <font color="#a31515" size="2">"Macaroni
and cheese"</font>
            </font>
            <font size="2"> });
<p>
      blogs.Add(
</p></font>
            <font color="#0000ff" size="2">
              <font color="#0000ff" size="2">new</font>
            </font>
            <font size="2">
            </font>
            <font color="#2b91af" size="2">
              <font color="#2b91af" size="2">Blog</font>
            </font>
            <font size="2"> {
Title = </font>
            <font color="#a31515" size="2">
              <font color="#a31515" size="2">"Angel
cake"</font>
            </font>
            <font size="2"> }); </font>
            <p>
              <font size="2"> 
</font>
            </p>
            <p>
              <font color="#0000ff" size="2">
                <font color="#0000ff" size="2">      var</font>
              </font>
              <font size="2"> blogsWithCheese
= </font>
              <font color="#0000ff" size="2">
                <font color="#0000ff" size="2">from</font>
              </font>
              <font size="2"> blog </font>
              <font color="#0000ff" size="2">
                <font color="#0000ff" size="2">in</font>
              </font>
              <font size="2"> blogs
</font>
            </p>
            <p>
              <font color="#0000ff" size="2">
                <font color="#0000ff" size="2">            where</font>
              </font>
              <font size="2"> blog.Title.ToLower().Contains(</font>
              <font color="#a31515" size="2">
                <font color="#a31515" size="2">"cheese"</font>
              </font>
              <font size="2">)
</font>
            </p>
            <p>
              <font color="#0000ff" size="2">
                <font color="#0000ff" size="2">            select</font>
              </font>
              <font size="2"> blog; 
</font>
            </p>
            <p>
              <font color="#008000" size="2">
                <font color="#008000" size="2">      //blogsWithCheese
contains 3 elements.
</font>
              </font>
            </p>
            <font size="2">
              <p>
   }
</p>
              <p>
}
</p>
            </font>
          </span>
        </pre>
        <p>
You can query something that is IEnumerable<T></T>
with LINQ to Objects, or a database itself using LINQ to SQL. If XML is your thing,
there is a LINQ to XML variant and let's not forget that there is adapter to query
Ado.Net DataSets. If you've heard of Entity Framework, LINQ will also work there to
abstract it's object SQL language.
</p>
        <p>
Now there's still more, if you have a source that you'd like to query with LINQ, it's
just a matter of implementing <a href="http://msdn2.microsoft.com/en-us/library/system.linq.iqueryprovider.aspx">IQueryProvider</a> and <a href="http://msdn2.microsoft.com/en-us/library/bb351562.aspx">IQueryable<T></T></a>.
</p>
        <p>
There are 2 tools I recommend you use in your adventures with LINQ:
</p>
        <ol>
          <li>
            <a href="http://msdn2.microsoft.com/en-us/library/bb351562.aspx">LINQPad</a> is a
interactive LINQ learning tool. Check it out, you'll never go back into Query Analyzer
after that. 
</li>
          <li>
            <a href="http://code.msdn.microsoft.com/vlinq">Visual LINQ Query Builder</a> is a
plugin for Visual Studio 2008 that will help you develop your queries with a designer,
now that's practical. 
</li>
        </ol>
        <p>
          <a style="FLOAT: right; DISPLAY: none" id="a_itc" href="http://www.itcrossing.com/">
            <img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" alt="powered by metaPost" src="http://dnn.itcrossing.com/m.gif" />
          </a>
        </p>
        <script type="text/javascript" src="/dnn/DesktopModules/itcMetaPost/js/m.js">
        </script>
        <img width="0" height="0" src="http://www.nventive.net/Blog2/aggbug.ashx?id=6342ae5e-5d81-40de-855a-1cef5b2e9aee" />
      </div>
    </content>
  </entry>
</feed>