<?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>The Blomsma Code</title>
    <link>http://www.develop-one.net/blog/</link>
    <description>The mysteries of software development and networking...</description>
    <language>en-us</language>
    <copyright>Develop-One</copyright>
    <lastBuildDate>Sun, 03 Aug 2008 09:53:47 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>mark.blomsma@develop-one.com</managingEditor>
    <webMaster>mark.blomsma@develop-one.com</webMaster>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=00ec0050-2ec1-4a23-b73f-70eef0f19797</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,00ec0050-2ec1-4a23-b73f-70eef0f19797.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,00ec0050-2ec1-4a23-b73f-70eef0f19797.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=00ec0050-2ec1-4a23-b73f-70eef0f19797</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I use a VirtualPC environment for all my software development work, usually using
a unique environment for every customer. This eats up the drive space in my laptop
pretty darn quick. So after <a href="http://joeblog.homnick.com/Lists/Posts/Post.aspx?ID=38" target="_blank">reading
about running a VirtualPC image from a USB Flash Drive</a> I decided to give it a
try. I purchased a 32GB memory stick and plugged it in.
</p>
        <p>
After a little experimenting I can now confirm it runs the VirtualPC nice and fast.
But writing data to the disk and reading at the same time is horrendously slow. So
you need to do two things:
</p>
        <p>
a) Make sure the .vmc file is NOT located on the flash drive<br />
b) Enable UndoDisks
</p>
        <p>
These two steps will create a temporary file on your harddisk, in the folder where
the .vmc is located. This means that while using the drive you only read from the
flash drive, but never write.
</p>
        <p>
When you shut down the VPC you can choose to commit the changes to the flash drive,
this may take a little while, so only do it when you have time to wait for it to complete.<br />
I usually choose 'Save State' which allows me to restart the VPC where I left off.
</p>
      </body>
      <title>VirtualPC images on a USB Flash Drive</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,00ec0050-2ec1-4a23-b73f-70eef0f19797.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/08/03/VirtualPCImagesOnAUSBFlashDrive.aspx</link>
      <pubDate>Sun, 03 Aug 2008 09:53:47 GMT</pubDate>
      <description>&lt;p&gt;
I use a VirtualPC environment for all my software development work, usually using
a unique environment for every customer. This eats up the drive space in my laptop
pretty darn quick. So after &lt;a href="http://joeblog.homnick.com/Lists/Posts/Post.aspx?ID=38" target="_blank"&gt;reading
about running a VirtualPC image from a USB Flash Drive&lt;/a&gt; I decided to give it a
try. I purchased a 32GB memory stick and plugged it in.
&lt;/p&gt;
&lt;p&gt;
After a little experimenting I can now confirm it runs the VirtualPC nice and fast.
But writing data to the disk and reading at the same time is horrendously slow. So
you need to do two things:
&lt;/p&gt;
&lt;p&gt;
a) Make sure the .vmc file is NOT located on the flash drive&lt;br&gt;
b) Enable UndoDisks
&lt;/p&gt;
&lt;p&gt;
These two steps will create a temporary file on your harddisk, in the folder where
the .vmc is located. This means that while using the drive you only read from the
flash drive, but never write.
&lt;/p&gt;
&lt;p&gt;
When you shut down the VPC you can choose to commit the changes to the flash drive,
this may take a little while, so only do it when you have time to wait for it to complete.&lt;br&gt;
I usually choose 'Save State' which allows me to restart the VPC where I left off.
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,00ec0050-2ec1-4a23-b73f-70eef0f19797.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=7a723387-45ef-4ce4-af94-ec99105683db</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,7a723387-45ef-4ce4-af94-ec99105683db.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,7a723387-45ef-4ce4-af94-ec99105683db.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7a723387-45ef-4ce4-af94-ec99105683db</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you're using the xsd.exe tool to generate C# code from an XML Schema you'll find
that an attribute defined as an integer is generated into a string field.
</p>
        <p>
The reason is <a href="http://msdn.microsoft.com/en-us/library/ms950721.aspx" target="_blank">listed</a> on
MSDN:
</p>
        <p>
          <em>The <code>xs:integer</code> type is specified as a number with no upper or lower
bound on its size. For this reason, neither XML serialization nor validation map it
to the <b>System.Int32</b> type. Instead, XML serialization maps the <code>xs:integer</code> to
a string while validation maps it to the <b>Decimal</b> type that is much larger than
any of the integer types in the .NET Framework.</em>
        </p>
      </body>
      <title>XSD.exe turns integer into string</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,7a723387-45ef-4ce4-af94-ec99105683db.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/08/01/XSDexeTurnsIntegerIntoString.aspx</link>
      <pubDate>Fri, 01 Aug 2008 11:52:45 GMT</pubDate>
      <description>&lt;p&gt;
If you're using the xsd.exe tool to generate C# code from an XML Schema you'll find
that an attribute defined as an integer is generated into a string field.
&lt;/p&gt;
&lt;p&gt;
The reason is &lt;a href="http://msdn.microsoft.com/en-us/library/ms950721.aspx" target="_blank"&gt;listed&lt;/a&gt; on
MSDN:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;The &lt;code&gt;xs:integer&lt;/code&gt; type is specified as a number with no upper or lower
bound on its size. For this reason, neither XML serialization nor validation map it
to the &lt;b&gt;System.Int32&lt;/b&gt; type. Instead, XML serialization maps the &lt;code&gt;xs:integer&lt;/code&gt; to
a string while validation maps it to the &lt;b&gt;Decimal&lt;/b&gt; type that is much larger than
any of the integer types in the .NET Framework.&lt;/em&gt;
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,7a723387-45ef-4ce4-af94-ec99105683db.aspx</comments>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=85cea68f-c52c-4f12-9f86-03f409d7576a</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,85cea68f-c52c-4f12-9f86-03f409d7576a.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,85cea68f-c52c-4f12-9f86-03f409d7576a.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=85cea68f-c52c-4f12-9f86-03f409d7576a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.tedneward.com" target="_blank">Ted Neward</a> offers a <a href="http://blogs.tedneward.com/2008/07/29/More+Thoughts+On+Architects+And+Architecture.aspx" target="_blank">very
good description of what a Software Architect</a> is:
</p>
        <p>
          <em>"an architect is not like a construction architect, but more like the conductor
of a band or symphony. Yes, the band could play without him, but at the end of the
day, the band plays better with one guy coordinating the whole thing. The larger the
band, the more necessary a conductor becomes. Sometimes the conductor is the same
thing as the composer (and perhaps that's the most accurate analogous way to view
this), in which case it's his "vision" of how the music in his head should come out
in real life, and his job is to lead the performers into contributing towards that
vision. Each performer has their own skills, freedom to interpret, and so on, but
within the larger vision of the work."</em>
        </p>
      </body>
      <title>What is a Software Architect?</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,85cea68f-c52c-4f12-9f86-03f409d7576a.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/07/30/WhatIsASoftwareArchitect.aspx</link>
      <pubDate>Wed, 30 Jul 2008 05:27:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.tedneward.com" target="_blank"&gt;Ted Neward&lt;/a&gt; offers a &lt;a href="http://blogs.tedneward.com/2008/07/29/More+Thoughts+On+Architects+And+Architecture.aspx" target="_blank"&gt;very
good description of what a Software Architect&lt;/a&gt; is:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"an architect is not like a construction architect, but more like the conductor
of a band or symphony. Yes, the band could play without him, but at the end of the
day, the band plays better with one guy coordinating the whole thing. The larger the
band, the more necessary a conductor becomes. Sometimes the conductor is the same
thing as the composer (and perhaps that's the most accurate analogous way to view
this), in which case it's his "vision" of how the music in his head should come out
in real life, and his job is to lead the performers into contributing towards that
vision. Each performer has their own skills, freedom to interpret, and so on, but
within the larger vision of the work."&lt;/em&gt;
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,85cea68f-c52c-4f12-9f86-03f409d7576a.aspx</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=f93c6be1-8c3c-4a53-a83a-73d7ed525689</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,f93c6be1-8c3c-4a53-a83a-73d7ed525689.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,f93c6be1-8c3c-4a53-a83a-73d7ed525689.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f93c6be1-8c3c-4a53-a83a-73d7ed525689</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My <a href="http://dev.aol.com/article/2008/the-aim-map-phone" target="_blank">article</a> on
combining AIM Call Out with geocoding a phone number to display the location of the
person you're trying to call has gone live on the AOL Developer Network.
</p>
        <p>
I think it turned into a very cool sample application.
</p>
        <p>
          <img src="http://dev.aol.com/images/article_images/aimmap1.jpg" />
        </p>
        <p>
Dial a number and see the location of the person you're calling!
</p>
      </body>
      <title>AIM Map Phone</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,f93c6be1-8c3c-4a53-a83a-73d7ed525689.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/06/11/AIMMapPhone.aspx</link>
      <pubDate>Wed, 11 Jun 2008 15:56:10 GMT</pubDate>
      <description>&lt;p&gt;
My &lt;a href="http://dev.aol.com/article/2008/the-aim-map-phone" target="_blank"&gt;article&lt;/a&gt; on
combining AIM Call Out with geocoding a phone number to display the location of the
person you're trying to call has gone live on the AOL Developer Network.
&lt;/p&gt;
&lt;p&gt;
I think it turned into a very cool sample application.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://dev.aol.com/images/article_images/aimmap1.jpg"&gt; 
&lt;/p&gt;
&lt;p&gt;
Dial a number and see the location of the person you're calling!
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,f93c6be1-8c3c-4a53-a83a-73d7ed525689.aspx</comments>
      <category>.NET</category>
      <category>AOL</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=5f83131a-67f3-4ba9-86e5-4027fb927976</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,5f83131a-67f3-4ba9-86e5-4027fb927976.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,5f83131a-67f3-4ba9-86e5-4027fb927976.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5f83131a-67f3-4ba9-86e5-4027fb927976</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It seems there is some controversy (<a href="http://joelonsoftware.com/items/2008/05/01.html" target="_blank">1</a>)
(<a href="http://www.25hoursaday.com/weblog/2008/06/10/SomeThoughtsOnJoelSpolskysLiveMeshRant.aspx" target="_blank">2</a>)
around whether Live Mesh is good or bad. Here is my 2 cents: I've installed Live Mesh
Tech Preview about a month ago and am pretty impressed by it so far. It seems to me
Microsoft may have found the tool that will unify the desktop (where they make their
money) with the cloud (revenue?). Currently there are two features that I use and
like:
</p>
        <p>
a) Sync files automatically with all machines in my Live Mesh group of devices<br />
b) If my Live Mesh device is on, then I can use Remote Desktop Connection (or a Live
Mesh version thereof) to remotely connect to that device. Even if it is behind a firewall
and on a dynamic IP DSL connection. This is great because my machines at the office
are connected to the Internet via a dynamic IP connection and now I can just connect
to them, by clicking them via the Live Mesh icon in my icon tray.
</p>
        <p>
The sync files feature will be further improved in the future when Peer 2 Peer synchronization
will be supported. I <a href="https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=347287&amp;SiteID=425" target="_blank">suggested</a> this
feature on MS Connect, but it was already planned :-)<br />
Here is the response I got:
</p>
        <p>
          <em>We plan to include selectable direct Peer to Peer (P2P) as a sync scenario in
a later milestone, which is in effect what you have asked for here I believe.<br />
Thank you for this report!<br />
Tim</em>
        </p>
        <p>
I use a lot of Virtual PC images. I'm hoping I can use this P2P sync service to create
continuous backups (don't know if the bandwidth needed will prove to be a killer).
</p>
        <p>
What is interesting is that <a href="http://forums.community.microsoft.com/en-US/LiveMesh/thread/3ca20333-af9d-4068-81d6-3cc4415f8b0d" target="_blank">files
on Live Mesh will sync</a>, even if the user is not signed in. This means that on
the client Live Mesh is connected to the cloud without a user logging on. This offers
potential for an interesting feature like 'Live Mesh Lockdown'. Suppose my machine
is stolen. I could use some other device, go to the Live Mesh Desktop on the web and
mark the device as stolen. This could lead to the machine being locked for further
use. I have no idea what information is stored on the server with regards to the device.
Perhaps this feature could even become part of the next version of Windows. That way
if the thief re-installs the machine the server can still recognize the device (based
on MAC address?) and still lock the machine. 
</p>
        <p>
Anyway, can't wait to see what the developer API for Live Mesh looks like.
</p>
      </body>
      <title>Live Mesh - One month later</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,5f83131a-67f3-4ba9-86e5-4027fb927976.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/06/10/LiveMeshOneMonthLater.aspx</link>
      <pubDate>Tue, 10 Jun 2008 18:31:26 GMT</pubDate>
      <description>&lt;p&gt;
It seems there is some controversy (&lt;a href="http://joelonsoftware.com/items/2008/05/01.html" target="_blank"&gt;1&lt;/a&gt;)
(&lt;a href="http://www.25hoursaday.com/weblog/2008/06/10/SomeThoughtsOnJoelSpolskysLiveMeshRant.aspx" target="_blank"&gt;2&lt;/a&gt;)
around whether Live Mesh is good or bad. Here is my 2 cents: I've installed Live Mesh
Tech Preview about a month ago and am pretty impressed by it so far. It seems to me
Microsoft may have found the tool that will unify the desktop (where they make their
money) with the cloud (revenue?). Currently there are two features that I use and
like:
&lt;/p&gt;
&lt;p&gt;
a) Sync files automatically with all machines in my Live Mesh group of devices&lt;br&gt;
b) If my Live Mesh device is on, then I can use Remote Desktop Connection (or a Live
Mesh version thereof) to remotely connect to that device. Even if it is behind a firewall
and on a dynamic IP DSL connection. This is great because my machines at the office
are connected to the Internet via a dynamic IP connection and now I can just connect
to them, by clicking them via the Live Mesh icon in my icon tray.
&lt;/p&gt;
&lt;p&gt;
The sync files feature will be further improved in the future when Peer 2 Peer synchronization
will be supported. I &lt;a href="https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=347287&amp;amp;SiteID=425" target="_blank"&gt;suggested&lt;/a&gt; this
feature on MS Connect, but it was already planned :-)&lt;br&gt;
Here is the response I got:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;We plan to include selectable direct Peer to Peer (P2P) as a sync scenario in
a later milestone, which is in effect what you have asked for here I believe.&lt;br&gt;
Thank you for this report!&lt;br&gt;
Tim&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I use a lot of Virtual PC images. I'm hoping I can use this P2P sync service to create
continuous backups (don't know if the bandwidth needed will prove to be a killer).
&lt;/p&gt;
&lt;p&gt;
What is interesting is that &lt;a href="http://forums.community.microsoft.com/en-US/LiveMesh/thread/3ca20333-af9d-4068-81d6-3cc4415f8b0d" target="_blank"&gt;files
on Live Mesh will sync&lt;/a&gt;, even if the user is not signed in. This means that on
the client Live Mesh is connected to the cloud without a user logging on. This offers
potential for an interesting feature like 'Live Mesh Lockdown'. Suppose my machine
is stolen. I could use some other device, go to the Live Mesh Desktop on the web and
mark the device as stolen. This could lead to the machine being locked for further
use. I have no idea what information is stored on the server with regards to the device.
Perhaps this feature could even become part of the next version of Windows. That way
if the thief re-installs the machine the server can still recognize the device (based
on MAC address?) and still lock the machine. 
&lt;/p&gt;
&lt;p&gt;
Anyway, can't wait to see what the developer API for Live Mesh looks like.
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,5f83131a-67f3-4ba9-86e5-4027fb927976.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=bd3d9ced-f440-462f-bcc4-0cb4690de2f1</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,bd3d9ced-f440-462f-bcc4-0cb4690de2f1.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,bd3d9ced-f440-462f-bcc4-0cb4690de2f1.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bd3d9ced-f440-462f-bcc4-0cb4690de2f1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Software Developer Network user group will be hosting it's quarterly event on
Monday, June 23. The theme of the event will be Collaboration, but plenty of general
topic sessions will be held as well (a total of 30 sessions!).
</p>
        <p>
Go to <a href="http://www.sdn.nl/sde">www.sdn.nl/sde</a> to sign up.
</p>
        <p>
Here is an overview of the sessions:
</p>
        <table cellspacing="1" cellpadding="2" width="800" bgcolor="#000000" border="0">
          <tbody>
            <tr>
              <td valign="center" align="left" width="4%" bgcolor="#ffffff">
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#00ffff">
                <p align="center">
                  <strong>.Net C#</strong>
                </p>
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#0000ff">
                <div align="center">
                  <strong>
                    <font color="#ffffff">.Net VB</font>
                  </strong>
                </div>
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#9999ff">
                <div align="center">
                  <strong>
                    <font color="#ffffff">DotNetNuke</font>
                  </strong>
                </div>
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#99ffcc">
                <div align="center">
                  <strong>
                    <font color="#000000">Inform. Worker</font>
                  </strong>
                </div>
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#ff0000">
                <div align="center">
                  <strong>
                    <font color="#ffffff">Delphi</font>
                  </strong>
                </div>
              </td>
              <td valign="center" align="left" width="16%" bgcolor="#99ff99">
                <div align="center">
                  <strong>
                    <font color="#ffffff">User eXperience</font>
                  </strong>
                </div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>8:30 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Registratie / Ontvangst 
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>9:00 </strong>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <table cellspacing="0" cellpadding="0" width="100%" border="0">
                  <tbody>
                    <tr>
                      <td bgcolor="#ffff00">
                        <div align="center">
                          <strong>General session</strong>
                        </div>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <div align="center">
                          <strong>Softwarekwaliteit, wat is dat eigenlijk?<br /><br /></strong>Jaap van Ekris
</div>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Addressing non-functional requirements with aspects</strong>
                </p>
                <p align="center">
Gael Fraiteur
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>DotNetNuke Development: meer dan modules</strong>
                </p>
                <p align="center">
Stefan Kamphuis
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <p align="center">
                    <strong>SharePoint 2007 en WWF: Integratie van Divergerende Werelden</strong>
                  </p>
                  <p align="center">
Gustavo Velez
</p>
                </div>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>VCL for the Web</strong>
                </p>
                <p align="center">
Hadi Hariri
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <strong>User Experience op het web<br /><br /></strong>Robert Kuunders
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>10:15 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Pauze - 30 min. 
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>10:45</strong>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <table cellspacing="0" cellpadding="0" width="100%" border="0">
                  <tbody>
                    <tr>
                      <td bgcolor="#ffff00">
                        <div align="center">
                          <strong>General session</strong>
                        </div>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <div align="center">
                          <strong>Waarom agile wel werkt en waterval niet<br /><br /></strong>Sander Hoogendoorn
</div>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>SharePoint filter webparts - theorie en praktijk</strong>
                </p>
                <p align="center">
Ton Stegeman
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Dynamic Localization in DotNetNuke</strong>
                </p>
                <p align="center">
Peter Donker
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <p align="center">
                    <strong>Samenwerken, met Groove een fluitje van een cent!</strong>
                  </p>
                  <p align="center">
Dennis Vroegop
</p>
                </div>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Continuous Integration in .NET</strong>
                </p>
                <p align="center">
Hadi Hariri
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Adobe Flex en AIR : De kracht van Rich Internet Applications<br /><br /></strong>Christoph Rooms
</p>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>12:00 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Lunch - 60 min. 
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>13:00 </strong>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>.NET en hardware - video capture en servo's aansturen</strong>
                </p>
                <p align="center">
Jeroen W. Pluimers
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Towards more complex aspects using PostSharp</strong>
                </p>
                <p align="center">
Gael Fraiteur
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Synching your dev and live environments</strong>
                </p>
                <p align="center">
Erik van Ballegoij
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <p align="center">
                    <strong>Gepersonaliseerd nieuws op basis van MOSS 2007 Search</strong>
                  </p>
                  <p align="center">
Mike Fortgens &amp; Mirjam van Olst
</p>
                </div>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Unicode in Delphi for Win32</strong>
                </p>
                <p align="center">
Bob Swart
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Silverlight2<br /><br /></strong>Robertjan Tuit
</p>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>14:15 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Pauze - 15 min. 
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>14:30 </strong>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Microsoft Sync Framework in action</strong>
                </p>
                <p align="center">
Dennis van der Stelt
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Het gebruik van een Object Relational Mapper tool</strong>
                </p>
                <p align="center">
Diderick Oerlemans
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>DotNetNuke Schedular Interface</strong>
                </p>
                <p align="center">
Leigh Pointer
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <p align="center">
                    <strong>Bouw een Silverlight smoelenboek in SharePoint</strong>
                  </p>
                  <p align="center">
Donald Hessing &amp; Reinhard Brongers
</p>
                </div>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Practical Delphi WOA</strong>
                </p>
                <p align="center">
Paweł Głowacki
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Interaction Design: What the user really wants</strong>
                </p>
                <p align="center">
Stefan Bookholt
</p>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>15:45 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Pauze - 30 min. 
</div>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>16:15</strong>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Peer-to-peer en collaboration met .NET 3.5</strong>
                </p>
                <p align="center">
Alex Thissen
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Customize VSTS WorkItems within your application</strong>
                </p>
                <p align="center">
Mike Glaser
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Content Syndication met DotNetNuke</strong>
                </p>
                <p align="center">
Peter Donker
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <div align="center">
                  <p align="center">
                    <strong>Collaboration met Lotus Quickr en Microsoft SharePoint</strong>
                  </p>
                  <p align="center">
Arjan Uijl &amp;<br />
Ton Stegeman
</p>
                </div>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Delphi en het Clipboard - copy en paste meer dan tekst alleen</strong>
                </p>
                <p align="center">
Jeroen W. Pluimers
</p>
              </td>
              <td valign="top" align="middle" bgcolor="#ffffff">
                <p align="center">
                  <strong>Developers + Designers = User Experience</strong>
                </p>
                <p align="center">
Martion Tirion
</p>
              </td>
            </tr>
            <tr>
              <td valign="top" align="left" bgcolor="#ffffff">
                <strong>17:30 </strong>
              </td>
              <td align="middle" bgcolor="#cccccc" colspan="6">
                <div align="center">Einde 
</div>
              </td>
            </tr>
          </tbody>
        </table>
      </body>
      <title>SDN Event - Collaboration</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,bd3d9ced-f440-462f-bcc4-0cb4690de2f1.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/29/SDNEventCollaboration.aspx</link>
      <pubDate>Thu, 29 May 2008 17:01:04 GMT</pubDate>
      <description>&lt;p&gt;
The Software Developer Network user group will be hosting it's quarterly event on
Monday, June 23. The theme of the event will be Collaboration, but plenty of general
topic sessions will be held as well (a total of 30 sessions!).
&lt;/p&gt;
&lt;p&gt;
Go to &lt;a href="http://www.sdn.nl/sde"&gt;www.sdn.nl/sde&lt;/a&gt; to sign up.
&lt;/p&gt;
&lt;p&gt;
Here is an overview of the sessions:
&lt;/p&gt;
&lt;table cellspacing="1" cellpadding="2" width="800" bgcolor="#000000" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="center" align="left" width="4%" bgcolor="#ffffff"&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#00ffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;.Net C#&lt;/strong&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#0000ff"&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;.Net VB&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#9999ff"&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;DotNetNuke&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#99ffcc"&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Inform. Worker&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#ff0000"&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;Delphi&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="center" align="left" width="16%" bgcolor="#99ff99"&gt;
&lt;div align="center"&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;User eXperience&lt;/font&gt;&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;8:30 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Registratie / Ontvangst 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;9:00 &lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td bgcolor="#ffff00"&gt;
&lt;div align="center"&gt;&lt;strong&gt;General session&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div align="center"&gt;&lt;strong&gt;Softwarekwaliteit, wat is dat eigenlijk?&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Jaap van Ekris
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Addressing non-functional requirements with aspects&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Gael Fraiteur
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;DotNetNuke Development: meer dan modules&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Stefan Kamphuis
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;SharePoint 2007 en WWF: Integratie van Divergerende Werelden&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Gustavo Velez
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;VCL for the Web&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Hadi Hariri
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;&lt;strong&gt;User Experience op het web&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Robert Kuunders
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;10:15 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Pauze - 30 min. 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;10:45&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td bgcolor="#ffff00"&gt;
&lt;div align="center"&gt;&lt;strong&gt;General session&lt;/strong&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div align="center"&gt;&lt;strong&gt;Waarom agile wel werkt en waterval niet&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Sander Hoogendoorn
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;SharePoint filter webparts - theorie en praktijk&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Ton Stegeman
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Dynamic Localization in DotNetNuke&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Peter Donker
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Samenwerken, met Groove een fluitje van een cent!&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Dennis Vroegop
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Continuous Integration in .NET&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Hadi Hariri
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Adobe Flex en AIR : De kracht van Rich Internet Applications&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Christoph Rooms
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;12:00 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Lunch - 60 min. 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;13:00 &lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;.NET en hardware - video capture en servo's aansturen&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Jeroen W. Pluimers
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Towards more complex aspects using PostSharp&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Gael Fraiteur
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Synching your dev and live environments&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Erik van Ballegoij
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Gepersonaliseerd nieuws op basis van MOSS 2007 Search&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Mike Fortgens &amp;amp; Mirjam van Olst
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Unicode in Delphi for Win32&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Bob Swart
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Silverlight2&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;Robertjan Tuit
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;14:15 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Pauze - 15 min. 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;14:30 &lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Microsoft Sync Framework in action&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Dennis van der Stelt
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Het gebruik van een Object Relational Mapper tool&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Diderick Oerlemans
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;DotNetNuke Schedular Interface&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Leigh Pointer
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Bouw een Silverlight smoelenboek in SharePoint&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Donald Hessing &amp;amp; Reinhard Brongers
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Practical Delphi WOA&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Paweł Głowacki
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Interaction Design: What the user really wants&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Stefan Bookholt
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;15:45 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Pauze - 30 min. 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;16:15&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Peer-to-peer en collaboration met .NET 3.5&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Alex Thissen
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Customize VSTS WorkItems within your application&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Mike Glaser
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Content Syndication met DotNetNuke&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Peter Donker
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;div align="center"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Collaboration met Lotus Quickr en Microsoft SharePoint&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Arjan Uijl &amp;amp;&lt;br&gt;
Ton Stegeman
&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Delphi en het Clipboard - copy en paste meer dan tekst alleen&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Jeroen W. Pluimers
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" align="middle" bgcolor="#ffffff"&gt;
&lt;p align="center"&gt;
&lt;strong&gt;Developers + Designers = User Experience&lt;/strong&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
Martion Tirion
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" align="left" bgcolor="#ffffff"&gt;
&lt;strong&gt;17:30 &lt;/strong&gt;&lt;/td&gt;
&lt;td align="middle" bgcolor="#cccccc" colspan="6"&gt;
&lt;div align="center"&gt;Einde 
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,bd3d9ced-f440-462f-bcc4-0cb4690de2f1.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=b277c4e9-4360-4353-b758-accbbf29714c</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,b277c4e9-4360-4353-b758-accbbf29714c.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,b277c4e9-4360-4353-b758-accbbf29714c.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b277c4e9-4360-4353-b758-accbbf29714c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Anyone familiar with building applications using .NET Remoting (in .NET 2.0) knows
that the DataSet and DataTable classes have a property called RemotingFormat. This
could be set to either XML or Binary where Binary would give you a performance boost
since it is more compact.
</p>
        <p>
Windows Communication Foundation does not use this property at all. The service binding
dictates the serialization format, no matter what you set the RemotingFormat property
to be, even if your using a NetHttpBinding.
</p>
        <p>
The following configuration will setup a service to use .NET Binary formatting over
Http:
</p>
        <p>
          <font face="Courier New">&lt;system.serviceModel&gt;<br />
  &lt;bindings&gt;<br />
    &lt;customBinding&gt;<br />
      &lt;binding name="NetHttpBinding"&gt;<br />
        &lt;reliableSession /&gt;<br />
        &lt;compositeDuplex /&gt;<br />
        &lt;oneWay  /&gt;<br />
        &lt;binaryMessageEncoding  /&gt;<br />
        &lt;httpTransport /&gt;<br />
      &lt;/binding&gt;<br />
    &lt;/customBinding&gt;<br />
  &lt;/bindings&gt;<br />
  &lt;services&gt;<br />
    &lt;service behaviorConfiguration="ServiceBehavior" name="MyService"&gt;<br />
      &lt;endpoint address="" binding="customBinding"<br />
        bindingConfiguration="NetHttpBinding" name="HttpBinding"
contract="IService" /&gt;<br />
      &lt;endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" /&gt;<br />
    &lt;/service&gt;<br />
  &lt;/services&gt;<br />
  &lt;behaviors&gt;<br />
    &lt;serviceBehaviors&gt;<br />
      &lt;behavior name="ServiceBehavior"&gt;<br />
        &lt;!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment
--&gt;<br />
        &lt;serviceMetadata httpGetEnabled="true"/&gt;<br />
        &lt;!-- To receive exception details in
faults for debugging purposes, set the value below to true.  Set to false before
deployment to avoid disclosing exception information --&gt;<br />
        &lt;serviceDebug includeExceptionDetailInFaults="false"/&gt;<br />
      &lt;/behavior&gt;<br />
    &lt;/serviceBehaviors&gt;<br />
  &lt;/behaviors&gt;<br />
&lt;/system.serviceModel&gt;</font>
        </p>
        <p>
So even if your service looks something like this:
</p>
        <p>
          <font face="Courier New">public DataSet GetData()<br />
{<br />
    DataSet ds = BuildDataSet();   // retrieve some data
here<br />
    ds.RemotingFormat = SerializationFormat.Xml;<br />
    return ds;<br />
}</font>
        </p>
        <p>
The DataSet will still get serialized as a .NET binary as defined in the binding ('binaryMessageEncoding').
</p>
      </body>
      <title>WCF serialization and RemotingFormat</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,b277c4e9-4360-4353-b758-accbbf29714c.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/21/WCFSerializationAndRemotingFormat.aspx</link>
      <pubDate>Wed, 21 May 2008 21:04:18 GMT</pubDate>
      <description>&lt;p&gt;
Anyone familiar with building applications using .NET Remoting (in .NET 2.0) knows
that the DataSet and DataTable classes have a property called RemotingFormat. This
could be set to either XML or Binary where Binary would give you a performance boost
since it is more compact.
&lt;/p&gt;
&lt;p&gt;
Windows Communication Foundation does not use this property at all. The service binding
dictates the serialization format, no matter what you set the RemotingFormat property
to be, even if your using a NetHttpBinding.
&lt;/p&gt;
&lt;p&gt;
The following configuration will setup a service to use .NET Binary formatting over
Http:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;system.serviceModel&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;bindings&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;customBinding&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding name="NetHttpBinding"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;reliableSession /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;compositeDuplex /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;oneWay&amp;nbsp; /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binaryMessageEncoding&amp;nbsp; /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;httpTransport /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/customBinding&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/bindings&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;services&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service behaviorConfiguration="ServiceBehavior" name="MyService"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address="" binding="customBinding"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bindingConfiguration="NetHttpBinding" name="HttpBinding"
contract="IService" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/services&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;behaviors&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceBehaviors&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name="ServiceBehavior"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment
--&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceMetadata httpGetEnabled="true"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- To receive exception details in
faults for debugging purposes, set the value below to true.&amp;nbsp; Set to false before
deployment to avoid disclosing exception information --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceDebug includeExceptionDetailInFaults="false"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceBehaviors&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/behaviors&amp;gt;&lt;br&gt;
&amp;lt;/system.serviceModel&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
So even if your service looks something like this:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;public DataSet GetData()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DataSet ds = BuildDataSet();&amp;nbsp;&amp;nbsp; // retrieve some data
here&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ds.RemotingFormat = SerializationFormat.Xml;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return ds;&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
The DataSet will still get serialized as a .NET binary as defined in the binding ('binaryMessageEncoding').
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,b277c4e9-4360-4353-b758-accbbf29714c.aspx</comments>
      <category>C#</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=3ede1d1a-31aa-47ac-a22f-a6711a682085</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,3ede1d1a-31aa-47ac-a22f-a6711a682085.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,3ede1d1a-31aa-47ac-a22f-a6711a682085.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3ede1d1a-31aa-47ac-a22f-a6711a682085</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The article I wrote about building a Voice over IP .NET application using AIM Call
Out and the AOL Open Voice API has just gone live on the AOL Developer Network. Read
it <a href="http://dev.aol.com/article/2008/building-a-dotnet-voip-application-using-aim-call-out" target="_blank">here</a>.
</p>
      </body>
      <title>Building a .NET VoIP Application</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,3ede1d1a-31aa-47ac-a22f-a6711a682085.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/13/BuildingANETVoIPApplication.aspx</link>
      <pubDate>Tue, 13 May 2008 19:11:26 GMT</pubDate>
      <description>&lt;p&gt;
The article I wrote about building a Voice over IP .NET application using AIM Call
Out and the AOL Open Voice API has just gone live on the AOL Developer Network. Read
it &lt;a href="http://dev.aol.com/article/2008/building-a-dotnet-voip-application-using-aim-call-out" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,3ede1d1a-31aa-47ac-a22f-a6711a682085.aspx</comments>
      <category>.NET</category>
      <category>AOL</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=75305f85-8d53-494c-810c-7f896f382185</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,75305f85-8d53-494c-810c-7f896f382185.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,75305f85-8d53-494c-810c-7f896f382185.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=75305f85-8d53-494c-810c-7f896f382185</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A lot is being blogged about the availability of <a href="http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx" target="_blank">VS
2008 SP1</a> and <a href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx" target="_blank">TFS
SP1</a>. It contains fixes and many new features and sound almost too good to be true,
but I checked, it's not an April fool's joke :-)
</p>
        <p>
A little lost in the noise about new features is the fact that .NET Framework 3.5
SP1 will include <strong>.NET CLR 2.0 SP2</strong>. I've been unable to find anything
about this other than this <a href="http://blogs.msdn.com/ericeil/archive/2008/05/12/threadpool-changes-in-net-3-5-sp1-beta.aspx" target="_blank">one
post</a> by Eric Eilebrecht, but any CLR update is significant. 
</p>
      </body>
      <title>.NET CLR 2.0 SP2</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,75305f85-8d53-494c-810c-7f896f382185.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/13/NETCLR20SP2.aspx</link>
      <pubDate>Tue, 13 May 2008 13:07:59 GMT</pubDate>
      <description>&lt;p&gt;
A lot is being blogged about the availability of &lt;a href="http://blogs.msdn.com/brada/archive/2008/05/05/visual-studio-2008-and-net-framework-3-5-sp1-beta.aspx" target="_blank"&gt;VS
2008 SP1&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx" target="_blank"&gt;TFS
SP1&lt;/a&gt;. It contains fixes and many new features and sound almost too good to be true,
but I checked, it's not an April fool's joke :-)
&lt;/p&gt;
&lt;p&gt;
A little lost in the noise about new features is the fact that .NET Framework 3.5
SP1 will include &lt;strong&gt;.NET CLR 2.0 SP2&lt;/strong&gt;. I've been unable to find anything
about this other than this &lt;a href="http://blogs.msdn.com/ericeil/archive/2008/05/12/threadpool-changes-in-net-3-5-sp1-beta.aspx" target="_blank"&gt;one
post&lt;/a&gt; by Eric Eilebrecht, but any CLR update is significant. 
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,75305f85-8d53-494c-810c-7f896f382185.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=6934e0a0-b341-4df6-bbc5-2658771144eb</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,6934e0a0-b341-4df6-bbc5-2658771144eb.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,6934e0a0-b341-4df6-bbc5-2658771144eb.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6934e0a0-b341-4df6-bbc5-2658771144eb</wfw:commentRss>
      <title>VB9 does not have Collection Initializers</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,6934e0a0-b341-4df6-bbc5-2658771144eb.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/10/VB9DoesNotHaveCollectionInitializers.aspx</link>
      <pubDate>Sat, 10 May 2008 14:22:46 GMT</pubDate>
      <description>&lt;p&gt;
I just wasted some of my time figuring out how to do collection initialization in
VB9. 
&lt;/p&gt;
&lt;p&gt;
C#3.0 has a new feature called collection initializer and according to a (somewhat
older) &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx" target="_blank"&gt;post&lt;/a&gt; by
Scott Guthrie, VB9 was slated to have it too. I guess it got cut &lt;a href="http://oakleafblog.blogspot.com/2007/06/will-visual-basic-90-have-collection.html" target="_blank"&gt;somewhere&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Anyway this is what collection initializers look like in C#3.0:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; color: #2b91af; font-family: 'Courier New'"&gt;List&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
{ 1, 2, 3, 4, 5 };&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
The closest thing in VB9 would be to use array initializers:
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-pagination: none; mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'"&gt;Dim&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; numbers &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;New&lt;/span&gt; List(&lt;span style="color: blue"&gt;Of&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt;&lt;?xml:namespace prefix = o /&gt;)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-pagination: none; mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'"&gt;Dim&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; temp() &lt;span style="color: blue"&gt;As&lt;/span&gt; &lt;span style="color: blue"&gt;Integer&lt;/span&gt; =
{1, 2, 3, 4, 5}&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-pagination: none; mso-layout-grid-align: none"&gt;
&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;numbers.AddRange(temp)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,6934e0a0-b341-4df6-bbc5-2658771144eb.aspx</comments>
      <category>C#</category>
      <category>VB.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=340f6530-80db-453a-bb45-57826dc8ce07</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,340f6530-80db-453a-bb45-57826dc8ce07.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,340f6530-80db-453a-bb45-57826dc8ce07.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=340f6530-80db-453a-bb45-57826dc8ce07</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Okay, so you read the title of this post. Perhaps you're expecting huge amounts of
code, but guess what. As it turns out, this is so ridiculously easy. This will be
a very short post.
</p>
        <p>
Step one is to have a method that loads an RSS feed. WCF offers a new class called
SyndicationFeed.
</p>
        <p>
          <font face="Courier New" size="2">private SyndicationFeed Load( string url )</font>
        </p>
        <p>
          <font face="Courier New" size="2">{</font>
        </p>
        <p>
          <font face="Courier New" size="2">  XmlReader reader = XmlReader.Create( url
);</font>
        </p>
        <p>
          <font face="Courier New" size="2">  SyndicationFeed feed = SyndicationFeed.Load(
reader );</font>
        </p>
        <p>
          <font face="Courier New" size="2">  return feed;</font>
        </p>
        <p>
          <font face="Courier New" size="2">}</font>
        </p>
        <p>
          <font face="Courier New">
          </font>  
</p>
        <p>
The above method will take a url and use to load a feed. Now suppose I have a list
of urls and I want to take all the items in all the feeds, sort them and use them
to generate a new, aggregated feed. Sounds like a fair amount of work, right. 
</p>
        <p>
Here is the code: 
</p>
        <p>
  
</p>
        <p>
          <font face="Courier New" size="2">private SyndicationFeed Aggregate( List&lt;string&gt;
urls )</font>
        </p>
        <p>
          <font face="Courier New" size="2">{</font>
        </p>
        <p>
          <font face="Courier New" size="2">  var items = from url in urls</font>
        </p>
        <p>
          <font face="Courier New" size="2">             
from item in Load( url ).Items</font>
        </p>
        <p>
          <font face="Courier New" size="2">             
orderby item.PublishDate descending</font>
        </p>
        <p>
          <font face="Courier New" size="2">             
select item;</font>
        </p>
        <p>
          <font face="Courier New" size="2">
          </font>  
</p>
        <p>
          <font face="Courier New" size="2">  SyndicationFeed feed = new SyndicationFeed(
items );</font>
        </p>
        <p>
          <font face="Courier New" size="2">  return feed;</font>
        </p>
        <p>
          <font face="Courier New" size="2">}</font>
        </p>
        <p>
 
</p>
        <p>
Cool!
</p>
      </body>
      <title>Building a RSS aggregator using LINQ to Objects and WCF 3.5</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,340f6530-80db-453a-bb45-57826dc8ce07.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/09/BuildingARSSAggregatorUsingLINQToObjectsAndWCF35.aspx</link>
      <pubDate>Fri, 09 May 2008 16:10:19 GMT</pubDate>
      <description>&lt;p&gt;
Okay, so you read the title of this post. Perhaps you're expecting huge amounts of
code, but guess what. As it turns out, this is so ridiculously easy. This will be
a very short post.
&lt;/p&gt;
&lt;p&gt;
Step one is to have a method that loads an RSS feed. WCF offers a new class called
SyndicationFeed.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;private SyndicationFeed Load( string url )&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;{&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; XmlReader reader = XmlReader.Create( url
);&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; SyndicationFeed feed = SyndicationFeed.Load(
reader );&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; return feed;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;}&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p&gt;
The above method will take a url and use to load a feed. Now suppose I have a list
of urls and I want to take all the items in all the feeds, sort them and use them
to generate a new, aggregated feed. Sounds like a fair amount of work, right. 
&lt;p&gt;
Here is the code: 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;private SyndicationFeed Aggregate( List&amp;lt;string&amp;gt;
urls )&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;{&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; var items = from url in urls&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
from item in Load( url ).Items&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
orderby item.PublishDate descending&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
select item;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; SyndicationFeed feed = new SyndicationFeed(
items );&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;&amp;nbsp; return feed;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New" size="2"&gt;}&lt;/font&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Cool!
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,340f6530-80db-453a-bb45-57826dc8ce07.aspx</comments>
      <category>C#</category>
      <category>LINQ</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=c3d06634-93f8-43cc-8ba9-97c44f783139</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,c3d06634-93f8-43cc-8ba9-97c44f783139.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,c3d06634-93f8-43cc-8ba9-97c44f783139.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c3d06634-93f8-43cc-8ba9-97c44f783139</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Heroes Happen in Bangor! The BAND is proud to announce we will be putting on a mini-launch
event for Microsoft's <a href="http://www.microsoft.com/heroeshappenhere/default.mspx">Heroes
Happen Here launch</a> of the 2008 products.  Come to the event at Kominsky Hall
at Husson College in Bangor on Tuesday, May 27 at 6:00 pm.
</p>
        <p>
Greg Howe and Jeff Hall, BAND co-leaders, will be talking about Visual Studio 2008
and how it will impact your development efforts.  There will be two 45-minute
talks, one focusing on the web world, and one focusing on the IDE.  You will
leave this event knowing how you can benefit from the new products, including Windows
Sever 2008 and SQL Server 2008. 
</p>
        <p>
More info <a href="http://www.bangordevelopers.com/" target="_blank">here</a>.
</p>
      </body>
      <title>Next BAND meeting May 27th in Bangor, ME.</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,c3d06634-93f8-43cc-8ba9-97c44f783139.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/09/NextBANDMeetingMay27thInBangorME.aspx</link>
      <pubDate>Fri, 09 May 2008 15:42:09 GMT</pubDate>
      <description>&lt;p&gt;
Heroes Happen in Bangor! The BAND is proud to announce we will be putting on a mini-launch
event for Microsoft's &lt;a href="http://www.microsoft.com/heroeshappenhere/default.mspx"&gt;Heroes
Happen Here launch&lt;/a&gt; of the 2008 products.&amp;nbsp; Come to the event at Kominsky Hall
at Husson College in Bangor on Tuesday, May 27 at 6:00 pm.
&lt;/p&gt;
&lt;p&gt;
Greg Howe and Jeff Hall, BAND co-leaders, will be talking about Visual Studio 2008
and how it will impact your development efforts.&amp;nbsp; There will be two 45-minute
talks, one focusing on the web world, and one focusing on the IDE.&amp;nbsp; You will
leave this event knowing how you can benefit from the new products, including Windows
Sever 2008 and SQL Server 2008. 
&lt;/p&gt;
&lt;p&gt;
More info &lt;a href="http://www.bangordevelopers.com/" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,c3d06634-93f8-43cc-8ba9-97c44f783139.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=84cf78fc-8c85-46c3-bf13-d33374d7f5e2</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,84cf78fc-8c85-46c3-bf13-d33374d7f5e2.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,84cf78fc-8c85-46c3-bf13-d33374d7f5e2.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=84cf78fc-8c85-46c3-bf13-d33374d7f5e2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My blog runs on dasBlog version 2.x and when I started blogging I did all my typing
online. Then Office 2007 came along and Word offered the feature of creating a blog
entry offline and then upload it to dasBlog using the MovableType API.
</p>
        <p>
This wasn't too great though, since Word markup would end up in the HTML and sometimes
the publish process just froze or refused to logon to my web site. Also, uploading
pictures was kind of a hack.
</p>
        <p>
Last week I installed <a href="http://get.live.com/" target="_blank">Windows Live
Writer</a> and this runs as a charm. Definitely a recommendation! 
</p>
      </body>
      <title>Windows Live Writer &amp;amp; dasBlog</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,84cf78fc-8c85-46c3-bf13-d33374d7f5e2.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/06/WindowsLiveWriterAmpDasBlog.aspx</link>
      <pubDate>Tue, 06 May 2008 17:23:49 GMT</pubDate>
      <description>&lt;p&gt;
My blog runs on dasBlog version 2.x and when I started blogging I did all my typing
online. Then Office 2007 came along and Word offered the feature of creating a blog
entry offline and then upload it to dasBlog using the MovableType API.
&lt;/p&gt;
&lt;p&gt;
This wasn't too great though, since Word markup would end up in the HTML and sometimes
the publish process just froze or refused to logon to my web site. Also, uploading
pictures was kind of a hack.
&lt;/p&gt;
&lt;p&gt;
Last week I installed &lt;a href="http://get.live.com/" target="_blank"&gt;Windows Live
Writer&lt;/a&gt; and this runs as a charm. Definitely a recommendation! 
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,84cf78fc-8c85-46c3-bf13-d33374d7f5e2.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=6d76e890-dc70-41a4-9f7b-1eb14af614dd</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,6d76e890-dc70-41a4-9f7b-1eb14af614dd.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,6d76e890-dc70-41a4-9f7b-1eb14af614dd.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6d76e890-dc70-41a4-9f7b-1eb14af614dd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A new quiz on <a href="http://www.justsayhi.com">www.justsayhi.com</a> says I'm:
</p>
        <a style="display: block; background: url(http://assets.justsayhi.com/badges/618/503/geek_badge1_green.hebjmgan7r.jpg) no-repeat; width: 268px; height: 82px; text-decoration: none" href="http://www.justsayhi.com/bb/geek">
          <span style="display: block; padding-left: 125px; font-size: 22px; color: #000; padding-top: 28px; font-family: arial">69%
Geek</span>
        </a>
      </body>
      <title>69%</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,6d76e890-dc70-41a4-9f7b-1eb14af614dd.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/06/69.aspx</link>
      <pubDate>Tue, 06 May 2008 17:16:27 GMT</pubDate>
      <description>&lt;p&gt;
A new quiz on &lt;a href="http://www.justsayhi.com"&gt;www.justsayhi.com&lt;/a&gt; says I'm:
&lt;/p&gt;
&lt;a style="display: block; background: url(http://assets.justsayhi.com/badges/618/503/geek_badge1_green.hebjmgan7r.jpg) no-repeat; width: 268px; height: 82px; text-decoration: none" href="http://www.justsayhi.com/bb/geek"&gt;&lt;span style="display: block; padding-left: 125px; font-size: 22px; color: #000; padding-top: 28px; font-family: arial"&gt;69%
Geek&lt;/span&gt;&lt;/a&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,6d76e890-dc70-41a4-9f7b-1eb14af614dd.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=af649d30-7325-4cac-98e4-e138d46618ba</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,af649d30-7325-4cac-98e4-e138d46618ba.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,af649d30-7325-4cac-98e4-e138d46618ba.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=af649d30-7325-4cac-98e4-e138d46618ba</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I heard about Live Mesh last week and decided to check it out. So I’ve signed up for
Live Mesh beta program and it is pretty neat, but still fairly simple. I’ve not (yet)
been accepted into the Mesh Developer beta, which is a separate program. As I understand
it Live Mesh will allow you to not just share files, but Silverlight applications
as well. 
</p>
        <p>
  
</p>
        <p>
          <strong>Current state of Live Mesh</strong>
        </p>
        <p>
Live Mesh allows you to turn a folder on your machine into a Mesh Folder. This in
turn allows you to automatically share the folder across multiple devices. Every account
has one default device: the Mesh Live Desktop, an online desktop which acts like a
Windows desktop. 
</p>
        <p>
Mesh Folders can be shared with any Live Messenger contact. Each Mesh folder will
track all changes and allows collaboration my attaching messages to the folder. 
</p>
        <p>
  
</p>
        <p>
Picture of Live Mesh Desktop, I've shared the Develop-One folder which sits on my
laptop. It shows up as a folder on my Live Mesh desktop. 
</p>
        <p>
  
</p>
        <p>
          <a href="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image002_2.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="512" alt="clip_image002" src="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image002_thumb.jpg" width="546" border="0" />
          </a>
        </p>
        <p>
  
</p>
        <p>
Device support will include Windows Mobile and Mac! 
</p>
        <p>
  
</p>
        <p>
          <a href="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image004_2.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="510" alt="clip_image004" src="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image004_thumb.jpg" width="544" border="0" />
          </a>
        </p>
        <p>
  
</p>
        <p>
For anyone that knows Office Groove, it'll be interesting to see how the final version
of Live Mesh and Groove compare. 
</p>
      </body>
      <title>Live Mesh beta program</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,af649d30-7325-4cac-98e4-e138d46618ba.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/06/LiveMeshBetaProgram.aspx</link>
      <pubDate>Tue, 06 May 2008 17:14:11 GMT</pubDate>
      <description>&lt;p&gt;
I heard about Live Mesh last week and decided to check it out. So I’ve signed up for
Live Mesh beta program and it is pretty neat, but still fairly simple. I’ve not (yet)
been accepted into the Mesh Developer beta, which is a separate program. As I understand
it Live Mesh will allow you to not just share files, but Silverlight applications
as well. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;Current state of Live Mesh&lt;/strong&gt; 
&lt;p&gt;
Live Mesh allows you to turn a folder on your machine into a Mesh Folder. This in
turn allows you to automatically share the folder across multiple devices. Every account
has one default device: the Mesh Live Desktop, an online desktop which acts like a
Windows desktop. 
&lt;p&gt;
Mesh Folders can be shared with any Live Messenger contact. Each Mesh folder will
track all changes and allows collaboration my attaching messages to the folder. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Picture of Live Mesh Desktop, I've shared the Develop-One folder which sits on my
laptop. It shows up as a folder on my Live Mesh desktop. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="512" alt="clip_image002" src="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image002_thumb.jpg" width="546" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Device support will include Windows Mobile and Mac! 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image004_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="510" alt="clip_image004" src="http://www.develop-one.net/blog/content/binary/WindowsLiveWriter/LiveMeshbetaprogram_B9F1/clip_image004_thumb.jpg" width="544" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;For anyone that knows Office Groove, it'll be interesting to see how the final version of Live Mesh and Groove compare. </description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,af649d30-7325-4cac-98e4-e138d46618ba.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <span>An important part of LINQ and C# 3.0 is the concept of deferred execution. What
does this mean? </span>
        </p>
        <p>
          <span>Let's have a look at the following code: </span>
        </p>
        <p>
          <span style="font-size: 10pt; font-family: courier new">
            <span style="color: blue">static</span>
            <span style="color: blue">void</span> Main( <span style="color: blue">string</span>[]
args ) 
<br />
{<br /><span style="color: #2b91af">   List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
<br /><span style="color: blue">   var</span> evenNumbers = numbers.Select( x
=&gt; ( x % 2 == 0 ) ); </span>  
</p>
        <p>
          <span style="font-size: 10pt; font-family: courier new">
            <span style="color: blue">  
foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br />
   {<br /><span style="color: blue">     if</span> ( i == 6 )<br />
         numbers.Add( 12 ); <span style="color: green">//
add a number to the list of numbers<br /></span><span style="color: #2b91af">     Console</span>.WriteLine(
i ); 
<br />
   } 
<br /><span style="color: #2b91af">   Console</span>.ReadLine(); 
<br />
} </span>
        </p>
        <p>
          <span style="font-size: 10pt; font-family: courier new">
            <span style="color: blue">public</span>
            <span style="color: blue">static</span>
            <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
Select( <span style="color: blue">this</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers, <span style="color: #2b91af">Filter</span> filter ) 
<br />
{ 
<br /><span style="color: #2b91af">   List</span>&lt;<span style="color: blue">int</span>&gt;
result = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;(); 
<br /><span style="color: blue">   foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> numbers
) 
<br />
   { 
<br /><span style="color: green">      // call the filter method/delegate
to see if this 
<br />
      // number needs to be in the result 
<br /></span><span style="color: blue">      if</span> ( filter(
i ) == <span style="color: blue">true</span> ) 
<br />
      {<br /><span style="color: green">         // if
i matches the filter then add it to the result 
<br /></span>         result.Add( i ); 
<br />
      }<br /></span>
          <span style="font-size: 10pt; font-family: courier new">   } 
<br /><span style="color: blue">   return</span> result; 
<br />
} </span>
        </p>
        <p>
          <span>In the code above the extension method 'Select' will apply a filter and return
a subset of the original collection of numbers. When the numbers are printed we add
the number '12' to the original collection. Since the Select method created a new
collection with the subset we will not see the number 12 being printed to the console.
If we want a more dynamic interaction we can rewrite the Select method to return an
enumerator rather than a List. </span>
        </p>
        <p>
          <span style="font-size: 10pt; font-family: courier new">
            <span style="color: blue">public</span>
            <span style="color: blue">static</span>
            <span style="color: #2b91af">IEnumerable</span>&lt;<span style="color: blue">int</span>&gt;
Select( <span style="color: blue">this</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers, <span style="color: #2b91af">Filter</span> filter ) 
<br />
{ 
<br /><span style="color: blue">    for</span> ( <span style="color: blue">int</span> n
= 0; n &lt; numbers.Count; n++ ) 
<br />
    { 
<br /><span style="color: blue">        if</span> ( filter(
numbers[n] ) == <span style="color: blue">true</span> ) 
<br />
        { 
<br /><span style="color: green">           
// if numbers[n] matches the filter then yield the value 
<br /></span><span style="color: blue">           
yield</span><span style="color: blue">return</span> numbers[n]; 
<br />
        } 
<br />
    } 
<br />
} </span>
        </p>
        <p>
          <span>The code above shows that instead of returning a List of numbers we now yield
the value of each number as it passes through the filter. Now when we run the same
Main we will see that the value '12' is included in our output. </span> <span>If
we put a breakpoint inside the application we can inspect the type of 'evenNumbers'. </span></p>
        <p>
          <img src="http://www.develop-one.net/blogpictures/050208_1535_C30deferred1.png" />
        </p>
        <p>
          <span>As you can see it point to the Select methods and the Lambda has been compiled
into an anonymous delegate. Rather than having a fixed result the Select method keeps
being called until there are no more numbers being 'yielded'. You can preview the
results by opening the 'Results View', but that will only provide a view of the iterator
at that specific point in time. </span>
        </p>
      </body>
      <title>C# 3.0 deferred execution</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/02/C30DeferredExecution.aspx</link>
      <pubDate>Fri, 02 May 2008 18:33:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span&gt;An important part of LINQ and C# 3.0 is the concept of deferred execution. What
does this mean? &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Let's have a look at the following code: &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; font-family: courier new"&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main( &lt;span style="color: blue"&gt;string&lt;/span&gt;[]
args ) 
&lt;br&gt;
{&lt;br&gt;
&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp; List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp; var&lt;/span&gt; evenNumbers = numbers.Select( x
=&amp;gt; ( x % 2 == 0 ) ); &lt;/span&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; font-family: courier new"&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;
foreach&lt;/span&gt; ( &lt;span style="color: blue"&gt;int&lt;/span&gt; i &lt;span style="color: blue"&gt;in&lt;/span&gt; evenNumbers
)&lt;br&gt;
&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt; ( i == 6 )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers.Add( 12 ); &lt;span style="color: green"&gt;//
add a number to the list of numbers&lt;br&gt;
&lt;/span&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;/span&gt;.WriteLine(
i ); 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; } 
&lt;br&gt;
&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp; Console&lt;/span&gt;.ReadLine(); 
&lt;br&gt;
} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; font-family: courier new"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
Select( &lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers, &lt;span style="color: #2b91af"&gt;Filter&lt;/span&gt; filter ) 
&lt;br&gt;
{ 
&lt;br&gt;
&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp; List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
result = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;(); 
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp; foreach&lt;/span&gt; ( &lt;span style="color: blue"&gt;int&lt;/span&gt; i &lt;span style="color: blue"&gt;in&lt;/span&gt; numbers
) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp; { 
&lt;br&gt;
&lt;span style="color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // call the filter method/delegate
to see if this 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // number needs to be in the result 
&lt;br&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt; ( filter(
i ) == &lt;span style="color: blue"&gt;true&lt;/span&gt; ) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&lt;span style="color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if
i matches the filter then add it to the result 
&lt;br&gt;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result.Add( i ); 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: courier new"&gt;&amp;nbsp;&amp;nbsp; } 
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp; return&lt;/span&gt; result; 
&lt;br&gt;
} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;In the code above the extension method 'Select' will apply a filter and return
a subset of the original collection of numbers. When the numbers are printed we add
the number '12' to the original collection. Since the Select method created a new
collection with the subset we will not see the number 12 being printed to the console.
If we want a more dynamic interaction we can rewrite the Select method to return an
enumerator rather than a List. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; font-family: courier new"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
Select( &lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers, &lt;span style="color: #2b91af"&gt;Filter&lt;/span&gt; filter ) 
&lt;br&gt;
{ 
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for&lt;/span&gt; ( &lt;span style="color: blue"&gt;int&lt;/span&gt; n
= 0; n &amp;lt; numbers.Count; n++ ) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;br&gt;
&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/span&gt; ( filter(
numbers[n] ) == &lt;span style="color: blue"&gt;true&lt;/span&gt; ) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&lt;br&gt;
&lt;span style="color: green"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
// if numbers[n] matches the filter then yield the value 
&lt;br&gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
yield&lt;/span&gt; &lt;span style="color: blue"&gt;return&lt;/span&gt; numbers[n]; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;br&gt;
} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;The code above shows that instead of returning a List of numbers we now yield
the value of each number as it passes through the filter. Now when we run the same
Main we will see that the value '12' is included in our output. &lt;/span&gt;&amp;nbsp;&lt;span&gt;If
we put a breakpoint inside the application we can inspect the type of 'evenNumbers'. &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.develop-one.net/blogpictures/050208_1535_C30deferred1.png"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;As you can see it point to the Select methods and the Lambda has been compiled
into an anonymous delegate. Rather than having a fixed result the Select method keeps
being called until there are no more numbers being 'yielded'. You can preview the
results by opening the 'Results View', but that will only provide a view of the iterator
at that specific point in time. &lt;/span&gt;
&lt;/p&gt;</description>
      <comments>http://www.develop-one.net/blog/CommentView,guid,e77f2e0e-d2d1-4bdd-ac16-470a8eae1b96.aspx</comments>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.develop-one.net/blog/Trackback.aspx?guid=97fd6ff1-0f68-4e0e-955e-ee25ffefac6f</trackback:ping>
      <pingback:server>http://www.develop-one.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.develop-one.net/blog/PermaLink,guid,97fd6ff1-0f68-4e0e-955e-ee25ffefac6f.aspx</pingback:target>
      <dc:creator>Mark Blomsma</dc:creator>
      <wfw:comment>http://www.develop-one.net/blog/CommentView,guid,97fd6ff1-0f68-4e0e-955e-ee25ffefac6f.aspx</wfw:comment>
      <wfw:commentRss>http://www.develop-one.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=97fd6ff1-0f68-4e0e-955e-ee25ffefac6f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
            <span>There are three key things that you need to understand in order to understand
Lambda expressions in C#3.0.</span>
          </p>
          <p>
            <span>1. Delegates,<br /></span>
            <span>2. Delegates,<br /></span>
            <span>3. ... delegates.</span>
          </p>
          <p>
            <span>Since Lambda has come to town (or C#) I've discovered that a lot of people use
delegates, but quite a few developers don't really know what a delegate is. 
<br /></span>
            <span>Understanding delegates is key to understanding what Lambdas are.</span>
          </p>
          <p>
            <span>Wikipedia has the following definition:<br /></span>
            <span>A delegate is a form of type-safe function pointer used by the .NET Framework. 
Delegates specify a method to call and optionally an object to call the method on.
They are used, among other things, to implement callbacks and event listeners.</span>
          </p>
          <p>
            <span>Here is my rule of thumb definition:<br /></span>
            <span>A delegate definition is a signature description for a method.  </span>
          </p>
          <p>
            <span>It helps me to think of it as an interface definition for methods. An interface
defines a number of methods, properties and/or events that need to be implemented
by a class. You can use an interface definition as a type for a parameter in a method.
Similarly a delegate definition defines the return type and parameters that a method
needs to 'implement' (match is a better word). And a delegate can also be used as
a type for a parameter in a method.</span>
          </p>
          <p>
            <span>Still a lot of mumbo jumbo?<br /></span>
            <span>Okay, let’s take the journey from ‘traditional’ programming to C#3.0
syntax.</span>
          </p>
          <p>
            <span>Consider the following program. Traditionally if you wanted to select a subset
from a collection you would iterate over the collection and copy the items you're
interested in into a new collection.</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">void</span> Main(<span style="color: blue">string</span>[]
args)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
evenNumbers = GetEvenNumbers( numbers );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: #2b91af">Console</span>.WriteLine(
i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">Console</span>.ReadLine();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
GetEvenNumbers( <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
result = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> numbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: blue">if</span> (
i % 2 == 0 )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">       
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">            <span style="color: green">//
if i matches the filter then add it to the result<br /></span></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">           
result.Add( i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">       
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">return</span> result;<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>The above code will select all the even numbers and print them to the console.
Just a </span>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">foreach</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
            </span>
            <span>and
no delegates yet.</span>
          </p>
          <p>
            <span>Instead of implementing a 'GetEvenNumbers' method, lets create a generic Select
method. The method will be generic and will loop over the numbers and select only
those which are selected by a filter. But how to define the filter? Lets first look
at what we want our Select method to look like:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
Select( <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers, <span style="color: #2b91af">Filter</span> filter )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
result = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <br />
            </span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> numbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: green">//
call the filter method/delegate to see if this 
<br /></span></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: green">//
number needs to be in the result<br /></span></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: blue">if</span> (
filter( i ) == <span style="color: blue">true</span> )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">       
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">            <span style="color: green">//
if i matches the filter then add it to the result<br /></span></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">           
result.Add( i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">       
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">return</span> result;<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>We want to create a method which takes a reference to another method as a parameter.
This is what is known as a delegate. In our case the delegate needs to be a method
which takes an Int32 as a parameter and returns a Boolean. In C# the delegate is defined
using the 'delegate' keyword:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">delegate</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">bool</span>
              <span style="color: #2b91af">Filter</span>( <span style="color: blue">int</span> x
);</span>
          </p>
          <p>
            <span>Now, any method that takes an Integer as a parameter and returns a Boolean matches
this delegate. So both methods shown below match the delegate:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">public
bool</span> IsEvenNumber( <span style="color: blue">int</span> number )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">return</span> (
number % 2 == 0 );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span style="font-size: 10pt; font-family: 'Courier New'">
            </span> <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">private</span><span style="font-size: 10pt; font-family: 'Courier New'"><span style="color: blue">bool</span> IsOddNumber( <span style="color: blue">int</span> z
)<br /></span><span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span><span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">return</span> (
z % 2 == 0 );<br /></span><span style="font-size: 10pt; font-family: 'Courier New'">}</span></p>
          <p>
            <span>Notice that the name of the method does not matter, nor does the name of the
parameter, nor does the accessibility of the method. Types of the parameter(s) and
the return type is all that matters when it comes to matching with the delegate.</span>
          </p>
          <p>
            <span>We can now rewrite Main to use the Select method:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">void</span> Main( <span style="color: blue">string</span>[]
args )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };<br /></span>  <span style="font-size: 10pt; font-family: 'Courier New'">   <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
evenNumbers = Select( numbers, IsEvenNumber );</span> 
</p>
          <p>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: #2b91af">Console</span>.WriteLine(
i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">Console</span>.ReadLine();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>In C# 3.0 it has become easier to create a delegate, all you need to do is provide
the name of the method, the compiler infers that you wish to create a delegate.</span>
          </p>
          <p>
            <span>The old syntax was:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">void</span> Main( <span style="color: blue">string</span>[]
args )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <br />
    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
evenNumbers = Select( numbers, <span style="color: blue">new</span><span style="color: #2b91af">Filter</span>(
IsEvenNumber ) );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <br />
    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: #2b91af">Console</span>.WriteLine(
i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">Console</span>.ReadLine();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>The syntax is shorter, and arguably more readable, but hides the fact that a
delegate is in fact an object and not just a reference as the new syntax seems to
suggest.</span>
          </p>
          <p>
            <span>Ok, now our IsEvenNumber method is quite simple, right? So to create a whole
method for that method, which will likely never be reused is a little much. This is
where anonymous delegates come in. Rather than specify a method which matches the
delegate we can create an anonymous delegate which also matches with the Filter delegate.</span>
          </p>
          <p>
            <span>Consider the following code:</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">void</span> Main( <span style="color: blue">string</span>[]
args )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };<br /><br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
evenNumbers = Select( numbers, <span style="color: blue">delegate</span>( <span style="color: blue">int</span> x
) { <span style="color: blue">return</span> ( x % 2 == 0 ); } );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <br />
    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: #2b91af">Console</span>.WriteLine(
i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">Console</span>.ReadLine();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>The reference to IsEvenNumber has now been replaced by the creation of an anonymous
delegate. The creation and implementation of the delegate is all done in a single
line.</span>
          </p>
          <p>
            <span>You'll probably agree that this does not do much for readability.</span>
          </p>
          <p>
            <span>Remember how I started this blog post? Lambdas are delegates. So let’s replace
the delegate with a lambda.</span>
          </p>
          <p>
            <span style="font-size: 10pt; color: blue; font-family: 'Courier New'">static</span>
            <span style="font-size: 10pt; font-family: 'Courier New'">
              <span style="color: blue">void</span> Main( <span style="color: blue">string</span>[]
args )<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
numbers = <span style="color: blue">new</span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };<br /></span>
            <br />
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">List</span>&lt;<span style="color: blue">int</span>&gt;
evenNumbers = Select( numbers, ( x =&gt; ( x % 2 == 0 ) ) );<br /></span>
            <br />
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: blue">foreach</span> ( <span style="color: blue">int</span> i <span style="color: blue">in</span> evenNumbers
)<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
{<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">        <span style="color: #2b91af">Console</span>.WriteLine(
i );<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">   
}<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">    <span style="color: #2b91af">Console</span>.ReadLine();<br /></span>
            <span style="font-size: 10pt; font-family: 'Courier New'">}</span>
          </p>
          <p>
            <span>So what is happening here? Let’s look at the Lambda:</span>
          </p>
          <p>
            <span style="font-size: 10pt; font-family: 'Courier New'">x =&gt; ( x % 2 == 0 )</span>
          </p>
          <p>
            <span>We are expressing that there is an input 'x' which we want to mod by two. Since
this Lambda expression is only a single line the return statement is implied and automatically
applied to the last statement, most Lambda expressions contain only one line of code,
but any number is possible. If you want more that one line you need to use the { }
to denote the scope of the block and use the return statement (if your delegate return
anything other than void). 
<br />
If we were to change the expression to:</span>
          </p>
          <p>
            <span style="font-size: 10pt; font-family: 'Courier New'">x =&gt; ( x % 2 )</span>
          </p>
          <p>
            <span>Then the result of the Lambda would be a integer and the code would not compile
since the return type Int32 does not match with the Filter delegate.<br /></span>
            <span>There is quite a bit of 'magic' going on for the compiler to decide which
delegate the Lambda maps onto, the intellisense will help you, because (in this sample)
it will know that 'x' is of type Int32.</span>
          </p>
          <p>
            <span>So to summarize:<br /></span>
            <span>Lambdas are a concise notation for defining delegates.</span>
          </p>
          <p>
            <span>
            </span> 
</p>
          <p>
            <span>
            </span> 
</p>
          <p>
            <span>
            </span> 
</p>
          <p>
 
</p>
        </div>
      </body>
      <title>Three steps to understanding Lambda expressions in C#</title>
      <guid isPermaLink="false">http://www.develop-one.net/blog/PermaLink,guid,97fd6ff1-0f68-4e0e-955e-ee25ffefac6f.aspx</guid>
      <link>http://www.develop-one.net/blog/2008/05/02/ThreeStepsToUnderstandingLambdaExpressionsInC.aspx</link>
      <pubDate>Fri, 02 May 2008 14:55:30 GMT</pubDate>
      <description>&lt;div class="Section1"&gt;
&lt;p&gt;
&lt;span&gt;There are three key things that you need to understand in order to understand
Lambda expressions in C#3.0.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;1. Delegates,&lt;br&gt;
&lt;/span&gt;&lt;span&gt;2. Delegates,&lt;br&gt;
&lt;/span&gt;&lt;span&gt;3. ... delegates.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Since Lambda has come to town (or C#) I've discovered that a lot of people use
delegates, but quite a few developers don't really know what a delegate is. 
&lt;br&gt;
&lt;/span&gt;&lt;span&gt;Understanding delegates is key to understanding what Lambdas are.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Wikipedia has the following definition:&lt;br&gt;
&lt;/span&gt;&lt;span&gt;A delegate is a form of type-safe function pointer used by the .NET Framework.&amp;nbsp;
Delegates specify a method to call and optionally an object to call the method on.
They are used, among other things, to implement callbacks and event listeners.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Here is my rule of thumb definition:&lt;br&gt;
&lt;/span&gt;&lt;span&gt;A delegate definition is a signature description for a method.&amp;nbsp; &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;It helps me to think of it as an interface definition for methods. An interface
defines a number of methods, properties and/or events that need to be implemented
by a class. You can use an interface definition as a type for a parameter in a method.
Similarly a delegate definition defines the return type and parameters that a method
needs to 'implement' (match is a better word). And a delegate can also be used as
a type for a parameter in a method.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Still a lot of mumbo jumbo?&lt;br&gt;
&lt;/span&gt;&lt;span&gt;Okay, let’s take the journey from ‘traditional’ programming to C#3.0
syntax.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;Consider the following program. Traditionally if you wanted to select a subset
from a collection you would iterate over the collection and copy the items you're
interested in into a new collection.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'"&gt;static&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[]
args)&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
evenNumbers = GetEvenNumbers( numbers );&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; ( &lt;span style="color: blue"&gt;int&lt;/span&gt; i &lt;span style="color: blue"&gt;in&lt;/span&gt; evenNumbers
)&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(
i );&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 10pt; color: blue; font-family: 'Courier New'"&gt;static&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
GetEvenNumbers( &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
numbers )&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;
result = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;int&lt;/span&gt;&amp;gt;();&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; ( &lt;span style="color: blue"&gt;int&lt;/span&gt; i &lt;span style="color: blue"&gt;in&lt;/span&gt; numbers
)&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt; (
i % 2 == 0 )&lt;br&gt;
&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&lt;/span&gt;&lt;span s