<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Scott Seely's Blog</title>
    <description>Scott is a developer and an architect. This blog chronicles the shiny baubles in the development world that have his attention right now.</description>
    <link>http://www.scottseely.com/Blog.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <geo:lat>42.410687</geo:lat><geo:long>-88.054626</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nd/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ScottSeelysBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Speaking at Chicago Alt.Net Meeting</title>
      <description>&lt;p&gt;This month, I'll be speaking at the Chicago Alt.Net user group meeting. Please check out the details &lt;a href="http://chicagoalt.net/event/November2009Meeting-BuildingOpenSocialApplications" target="_blank"&gt;here&lt;/a&gt; and register &lt;a href="http://altnetchicago-groupsite.eventbrite.com/" target="_blank"&gt;here&lt;/a&gt;. And, here is the blurb on the talk:&lt;/p&gt;  &lt;h4&gt;November 2009 Meeting&lt;/h4&gt;  &lt;h5&gt;Building OpenSocial Applications&lt;/h5&gt;  &lt;p&gt;6:00 pm   &lt;br /&gt;Pizza and networking time &lt;/p&gt;  &lt;p&gt;6:30 pm&lt;/p&gt;  &lt;p&gt;From its &lt;a href="http://www.opensocial.org/"&gt;official web site&lt;/a&gt;: &lt;/p&gt;  &lt;blockquote&gt;&lt;i&gt;Friends are fun, but they're only on some websites. &lt;b&gt;OpenSocial&lt;/b&gt; helps these sites share their social data with the web. Applications that use the OpenSocial APIs can be embedded within a social network itself, or access a site's social data from anywhere on the web.&lt;/i&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;img align="right" src="http://chicagoalt.net/content/images/events/opensocial.png" /&gt; &lt;a href="http://www.opensocial.org/"&gt;OpenSocial&lt;/a&gt; is the platform that &lt;a href="http://myspace.com/"&gt;MySpace&lt;/a&gt;, &lt;a href="http://orkut.com/"&gt;Orkut&lt;/a&gt;, &lt;a href="http://ning.com/"&gt;Ning&lt;/a&gt;, &lt;a href="http://LinkedIn.com/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://Hi5.com/"&gt;Hi5&lt;/a&gt;, and pretty much every social network but Facebook supports for creating games and other applications that run on these social network sites. &lt;/p&gt;  &lt;p&gt;In this talk, we focus on the MySpace platform and how one builds a MySpace application. This involves interacting with the OpenSocial JavaScript as well as receiving and sending OpenSocial requests on your own servers. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OhqaLLFd70874uxfD8NH6gmMEQY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OhqaLLFd70874uxfD8NH6gmMEQY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OhqaLLFd70874uxfD8NH6gmMEQY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OhqaLLFd70874uxfD8NH6gmMEQY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=l0AV2dOki0c:DowtNEbCAdQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=l0AV2dOki0c:DowtNEbCAdQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=l0AV2dOki0c:DowtNEbCAdQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=l0AV2dOki0c:DowtNEbCAdQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/l0AV2dOki0c" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/l0AV2dOki0c/Speaking_at_Chicago_Alt_Net_Meeting.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-11-09/Speaking_at_Chicago_Alt_Net_Meeting.aspx</comments>
      <guid isPermaLink="false">5ab3c6a2-e4ed-41b9-b310-2ceb1b5ffeb7</guid>
      <pubDate>Mon, 09 Nov 2009 21:25:41 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-11-09/Speaking_at_Chicago_Alt_Net_Meeting.aspx</feedburner:origLink></item>
    <item>
      <title>Iowa Code Camp November 2009 Slides Up</title>
      <description>&lt;p&gt;I want to send out a big thank you to the team who put together the &lt;a href="http://iowacodecamp.com/" target="_blank"&gt;Iowa Code Camp&lt;/a&gt;. You people did an awesome job!!! I had a great time giving my talks and really enjoyed hanging out with the crowd in Iowa.&lt;/p&gt;  &lt;p&gt;For those of you who attended my talks, or just want to see the materials, I've posted things.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.scottseely.com/downloads/IowaCC.WCF.zip" target="_blank"&gt;WCF Diagnostics Talk and Materials&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.scottseely.com/downloads/IowaCC.WinDBG.zip" target="_blank"&gt;WinDBG Talk and Materials&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you next year.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O8Yc9p3LDkGd1z4cx2NV1SHY7kI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O8Yc9p3LDkGd1z4cx2NV1SHY7kI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O8Yc9p3LDkGd1z4cx2NV1SHY7kI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O8Yc9p3LDkGd1z4cx2NV1SHY7kI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Ul99FOIlrHI:RODuwkK11zM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Ul99FOIlrHI:RODuwkK11zM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Ul99FOIlrHI:RODuwkK11zM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Ul99FOIlrHI:RODuwkK11zM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/Ul99FOIlrHI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/Ul99FOIlrHI/Iowa_Code_Camp_November_2009_Slides_Up.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-11-07/Iowa_Code_Camp_November_2009_Slides_Up.aspx</comments>
      <guid isPermaLink="false">2a8f7341-4c25-4236-8abc-6545136870e1</guid>
      <pubDate>Sat, 07 Nov 2009 19:43:09 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-11-07/Iowa_Code_Camp_November_2009_Slides_Up.aspx</feedburner:origLink></item>
    <item>
      <title>Speaking at nPlus1 ArcSummit- Chicago</title>
      <description>&lt;p&gt;On December 7, I'll be speaking at the nPlus1 ArcSummit for the optional morning session. I'd love to see the place packed! Here are the details:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=142763"&gt;https://www.clicktoattend.com/invitation.aspx?code=142763&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;About nPlus1.org&lt;/h3&gt;  &lt;p&gt;nPlus1.org is a site dedicated to helping Architects, aspiring Architects and Lead Developers learn, connect and contribute. On this site you'll have access to great first party content written by some of the most skilled and experienced Architects working today. You'll also have access to, and be able to contribute to a nexus of content from around the Internet aimed at keeping Architects up to date on all the new developments in their fields of interest.&lt;/p&gt;  &lt;h4&gt;When&lt;/h4&gt;  &lt;p&gt;Monday December 7, 2009 - 10:00PM to 5:00PM&lt;/p&gt;  &lt;h4&gt;Where&lt;/h4&gt;  &lt;p&gt;Microsoft MTC - Aon Center&lt;/p&gt;  &lt;p&gt;200 E. Randolph&lt;/p&gt;  &lt;p&gt;Suite 200&lt;/p&gt;  &lt;p&gt;Chicago, IL 60601&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.clicktoattend.com/directions.aspx?code=142763"&gt;driving directions&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Free Lunch Provided&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;Agenda&lt;/h4&gt;  &lt;h5&gt;Morning Session (Optional): An Introduction to Object Oriented Programming &lt;/h5&gt;  &lt;p&gt;10:00 AM - 12:00 PM&lt;/p&gt;  &lt;p&gt;Are you new to OOP? Do you want a refresher on the benefits of Interfaces and the differences between implements and extends? The morning session is a two hour introductory course of Object Oriented Programming. If you are new to OOP the lessons in this session will prepare you for the more advanced topics in the afternoon.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;If you are already well versed in OOP then feel free to come have a refresher, or simply join us for lunch and the advanced sessions in the afternoon. The morning session is completely optional.&lt;/i&gt;&lt;/p&gt;  &lt;h5&gt;Afternoon sessions:&lt;/h5&gt;  &lt;h5&gt;Session One: Software Patterns&lt;/h5&gt;  &lt;p&gt;Patterns are an important tool to use as architects and developers. They provide a common vocabulary for us to design with, as well as a common approach to a common problem. Come learn about useful patterns, and how to use them in your everyday code.&lt;/p&gt;  &lt;h5&gt;Session Two: How I Learned To Love Dependency Injection &lt;/h5&gt;  &lt;p&gt;Dependency Injection is one of those scary topics that most developers avoid. It sounds all 'high-falootin' and complex. It's not. Really. We wouldn't lie. It's a great way to manage complexity in your system, and a great way to make your system so much more testable. And isn't that what we all want? &lt;/p&gt;  &lt;p&gt;Each session will be followed by open discussions periods.&lt;/p&gt;  &lt;p&gt;A catered lunch will be provided starting at noon. This will divide the morning introductory sessions from the advanced sessions. Register once for all session and choose to attend the morning, the afternoon or both! Lunch is provided for attendees for any of the sessions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5CBStpFSm8Ah_n6c1Vj3kAlmThM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5CBStpFSm8Ah_n6c1Vj3kAlmThM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5CBStpFSm8Ah_n6c1Vj3kAlmThM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5CBStpFSm8Ah_n6c1Vj3kAlmThM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ehn9fhe49Cc:oLY9HFN36o8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ehn9fhe49Cc:oLY9HFN36o8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ehn9fhe49Cc:oLY9HFN36o8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ehn9fhe49Cc:oLY9HFN36o8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/ehn9fhe49Cc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/ehn9fhe49Cc/Speaking_at_nPlus1_ArcSummit-_Chicago.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-11-02/Speaking_at_nPlus1_ArcSummit-_Chicago.aspx</comments>
      <guid isPermaLink="false">91ca742d-da8d-4880-9bfc-dcd033ecefc3</guid>
      <pubDate>Mon, 02 Nov 2009 08:17:29 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-11-02/Speaking_at_nPlus1_ArcSummit-_Chicago.aspx</feedburner:origLink></item>
    <item>
      <title>Lambdas aren&amp;rsquo;t just for managed code</title>
      <description>&lt;p&gt;A long time ago, I was a C++ developer. I actually thought of myself as a pretty darn good C++ developer and got way too excited when I finally got to meet folks like Scott Meyers and actually landed a job working with Bobby Schmidt-same team on MSDN. (If you know Bobby's name, well, you were pretty deep into C++ circa 1999.) Then, like many C++ devs, I moved over to a garbage collected language. I've done more than my fair share of professional .NET and Java development. C++ has been left by the wayside. Today, I finally downloaded and installed Visual Studio 2010 Beta 2. I dug into the "What's New" and, out of curiosity, decided to look at C++ first (I already know about many of the C# and VB changes). I saw two cool things:&lt;/p&gt;  &lt;p&gt;1. C++ now has an auto keyword. For you C# devs, it is pretty much the same as the C# var keyword. &lt;/p&gt;  &lt;p&gt;2. C++ has lambdas. &lt;/p&gt;  &lt;p&gt;Now, I'm only a little ways into understanding C++ lambdas, so some of my information here may be suspect. The C++ lambda is just an anonymous function. You can pass variables into the function so that the variable is visible within the function. The syntax is:&lt;/p&gt;  &lt;p&gt;[ &lt;em&gt;list of variables from current scope to pass into lambda scope&lt;/em&gt; ] &lt;em&gt;return-type&lt;/em&gt;( &lt;em&gt;function signature&lt;/em&gt; ) { &lt;em&gt;code&lt;/em&gt; }&lt;/p&gt;  &lt;p&gt;The canonical example appears to be std::for_each from &amp;lt;algorithm&amp;gt;. &lt;/p&gt; &lt;code&gt;   &lt;p&gt;#include &amp;quot;stdafx.h&amp;quot;      &lt;br /&gt;#include &amp;lt;iostream&amp;gt;       &lt;br /&gt;#include &amp;lt;algorithm&amp;gt;       &lt;br /&gt;#include &amp;lt;vector&amp;gt;       &lt;br /&gt;using namespace std; &lt;/p&gt;    &lt;p&gt;int _tmain(int argc, _TCHAR* argv[])      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; vector&amp;lt;int&amp;gt; myints;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; for (auto i = 0; i &amp;lt; 10; ++i){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myints.push_back(i);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; auto number = 0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; auto numSquared = 0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; for_each(myints.begin(), myints.end(), [&amp;amp;number, &amp;amp;numSquared](int n) {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; endl;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; number += n;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; numSquared += n * n;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cout &amp;lt;&amp;lt; &amp;quot;The sum is &amp;quot; &amp;lt;&amp;lt; number &amp;lt;&amp;lt; endl;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cout &amp;lt;&amp;lt; &amp;quot;The sum of the squares is &amp;quot; &amp;lt;&amp;lt; numSquared &amp;lt;&amp;lt; endl;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return 0;       &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;In this example, I have two values: number and numSquared. I make references of the value visible to the lambda, which prints out each value as it comes through and then sums the numbers and their squares. Once the function completes, the code emits the values to the console window. If you don't want to pass anything to the lambda, you still need to state this. If I didn't want number or numSquared visible, the lambda signature would be:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;[](int n){}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;At some point, I'll dig in and see what else this is good for, including how to build my own Functor signatures. Anyhow, just thought I'd share this little nugget with you.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XqGT3YJFDhWi_ZJXqjaGLdon4Ao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XqGT3YJFDhWi_ZJXqjaGLdon4Ao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XqGT3YJFDhWi_ZJXqjaGLdon4Ao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XqGT3YJFDhWi_ZJXqjaGLdon4Ao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=gxvRKdl0Dv0:WhurbXrDPgo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=gxvRKdl0Dv0:WhurbXrDPgo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=gxvRKdl0Dv0:WhurbXrDPgo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=gxvRKdl0Dv0:WhurbXrDPgo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/gxvRKdl0Dv0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/gxvRKdl0Dv0/Lambdas_aren_rsquo_t_just_for_managed_code.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-10-21/Lambdas_aren_rsquo_t_just_for_managed_code.aspx</comments>
      <guid isPermaLink="false">54882595-4c81-4d55-b8a7-a2189fea04b7</guid>
      <pubDate>Wed, 21 Oct 2009 19:52:09 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-10-21/Lambdas_aren_rsquo_t_just_for_managed_code.aspx</feedburner:origLink></item>
    <item>
      <title>New F#/WCF Article up at InformIT</title>
      <description>&lt;p&gt;My article on programming REST services with F# and WCF went up at InformIT. Please go read it! &lt;a title="http://www.informit.com/articles/article.aspx?p=1394625" href="http://www.informit.com/articles/article.aspx?p=1394625"&gt;http://www.informit.com/articles/article.aspx?p=1394625&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z2LEKk5Yj0XX1XdN1cgWW-SNjW8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z2LEKk5Yj0XX1XdN1cgWW-SNjW8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z2LEKk5Yj0XX1XdN1cgWW-SNjW8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z2LEKk5Yj0XX1XdN1cgWW-SNjW8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=OjeeZfUZ0pk:BEjLlYAgfDo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=OjeeZfUZ0pk:BEjLlYAgfDo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=OjeeZfUZ0pk:BEjLlYAgfDo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=OjeeZfUZ0pk:BEjLlYAgfDo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/OjeeZfUZ0pk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/OjeeZfUZ0pk/New_F_WCF_Article_up_at_InformIT.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-09-30/New_F_WCF_Article_up_at_InformIT.aspx</comments>
      <guid isPermaLink="false">ff572058-489a-4cea-b421-2047ecec8f06</guid>
      <pubDate>Wed, 30 Sep 2009 15:09:47 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-09-30/New_F_WCF_Article_up_at_InformIT.aspx</feedburner:origLink></item>
    <item>
      <title>Quiet lately</title>
      <description>&lt;p&gt;Things have been quiet around here lately because of a large volume of stuff I've been handling elsewhere. I recently was forwarded a &lt;a href="http://geekswithblogs.net/dnoderer/archive/2009/09/21/book-review---effective-rest-services-via-.net.aspx" target="_blank"&gt;nice review of the REST book&lt;/a&gt;. Feel free to take a gander and see if this pushes you to buy the book!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SGZ8BZZUOhBY0J2sYF8ldafwBVE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SGZ8BZZUOhBY0J2sYF8ldafwBVE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SGZ8BZZUOhBY0J2sYF8ldafwBVE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SGZ8BZZUOhBY0J2sYF8ldafwBVE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=aXypc_I9_ho:e4bEA1GbRPY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=aXypc_I9_ho:e4bEA1GbRPY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=aXypc_I9_ho:e4bEA1GbRPY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=aXypc_I9_ho:e4bEA1GbRPY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/aXypc_I9_ho" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/aXypc_I9_ho/Quiet_lately.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-09-21/Quiet_lately.aspx</comments>
      <guid isPermaLink="false">095335a6-8035-4af0-b299-2366f46e3f5e</guid>
      <pubDate>Mon, 21 Sep 2009 13:53:26 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-09-21/Quiet_lately.aspx</feedburner:origLink></item>
    <item>
      <title>Tethering Samsung BlackJack II (SGH-i617) on Windows 7, x64</title>
      <description>&lt;p&gt;I recently upgraded my laptop to Windows 7 x64 RTM bits. I also tether my BlackJack II (aka Samsung SGH-i617) to the laptop so I can get work done pretty much anywhere. To help others who will be going through the same thing, here is how to make this work until AT&amp;amp;T or Samsung come out with a proper setup for Windows 7. I suspect that these instructions also work for x86 (32-bit) Windows 7, but I haven't tried it out and no one has confirmed yet. &lt;/p&gt;  &lt;p&gt;Step 1: Download and install the &lt;a href="http://www.wireless.att.com/businesscenter/solutions/wireless-laptop/software.jsp" target="_blank"&gt;Communicaton Manager Software for XP/Vista&lt;/a&gt;. They only have a 32-bit version.&lt;/p&gt;  &lt;p&gt;Step 2: The newly created desktop icon for the at&amp;amp;t Communincation Manager has now appeared. Right click on the icon and select &lt;em&gt;Properties&lt;/em&gt;. Select the &lt;em&gt;Compatibility&lt;/em&gt; tab and, under &lt;em&gt;Compatibility Mode&lt;/em&gt;, check &lt;em&gt;Run this program in compatibility mode for:&lt;/em&gt; and select &lt;em&gt;Windows XP (Service Pack 3)&lt;/em&gt;. Click OK.&lt;/p&gt;  &lt;p&gt;Step 3: &lt;a href="http://www.samsung.com/us/support/download/supportDown.do?group=&amp;amp;type=mobilephones&amp;amp;subtype=attphones&amp;amp;model_nm=SGH-I617&amp;amp;language=&amp;amp;cate_type=all&amp;amp;dType=D&amp;amp;mType=SW&amp;amp;vType=&amp;amp;prd_ia_cd=01010100&amp;amp;disp_nm=BlackJack II (SGH-i617)&amp;amp;model_cd=&amp;amp;menu=download" target="_blank"&gt;Download&lt;/a&gt; the Win 98/ME/2K/XP drivers for the BlackJack II. This downloads a self-extracting zip file. When the EXE displays &lt;em&gt;Unzip to folder:&lt;/em&gt;, change the folder to &lt;em&gt;c:\samsung&lt;/em&gt;. The folder name just makes it easier to remember where the drivers were placed.&lt;/p&gt;  &lt;p&gt;Step 4: On your phone, go to Start-&amp;gt;Settings-&amp;gt;G More -&amp;gt; A Connections-&amp;gt;D USB. Under &lt;em&gt;USB Connection Setting&lt;/em&gt;, change this to &lt;em&gt;Modem&lt;/em&gt;. Then, click &lt;em&gt;Done, Done, Done. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Step 5: Connect the phone to the computer using the USB cable. Wait 30 seconds for the computer to fail to find the drivers.&lt;/p&gt;  &lt;p&gt;Step 6: On your computer, click on the Windows button (left most button on the taskbar) and then right click on &lt;em&gt;Computer&lt;/em&gt;. Click on &lt;em&gt;Properties&lt;/em&gt;. In the window that popped up, click on &lt;em&gt;Device Manager&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Step 7: Within Device Manager, look at the &lt;em&gt;Other devices&lt;/em&gt; node. One item should have an exclamation point icon next to it. Right click on that item and select &lt;em&gt;Update Driver Software&lt;/em&gt;. Then, click on &lt;em&gt;Browse my computer for driver software&lt;/em&gt;. In the &lt;em&gt;Search for driver software in this location&lt;/em&gt; combo box, type in c:\samsung. Then, click on Next. The driver should install.&lt;/p&gt;  &lt;p&gt;Step 8: Still inside of Device Manger, new devices should have appeared that didn't exist before for the device. Repeat step 7 twice more.&lt;/p&gt;  &lt;p&gt;Step 9: Verify that you did everything correctly: Start up at&amp;amp;t Connection Manager from the desktop and make sure that you can connect to the network.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I'm putting these steps up here mostly so that I can remember what to do if (and when!) I repave my laptop. If you find any issues, please report them to me in the comments below. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lIkcEQVQPUTRTtzfC83KkqIou7k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lIkcEQVQPUTRTtzfC83KkqIou7k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lIkcEQVQPUTRTtzfC83KkqIou7k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lIkcEQVQPUTRTtzfC83KkqIou7k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=V4J9uPbLMoA:-2CwuV9jleM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=V4J9uPbLMoA:-2CwuV9jleM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=V4J9uPbLMoA:-2CwuV9jleM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=V4J9uPbLMoA:-2CwuV9jleM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/V4J9uPbLMoA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/V4J9uPbLMoA/Tethering_Samsung_BlackJack_II_SGH-i617_on_Windows_7_x64.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-08-09/Tethering_Samsung_BlackJack_II_SGH-i617_on_Windows_7_x64.aspx</comments>
      <guid isPermaLink="false">290ae529-b7b7-41bc-9767-faa20c2da85d</guid>
      <pubDate>Sun, 09 Aug 2009 16:53:33 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-08-09/Tethering_Samsung_BlackJack_II_SGH-i617_on_Windows_7_x64.aspx</feedburner:origLink></item>
    <item>
      <title>Solution for Daily WTF Praxis on 8-5-2009</title>
      <description>&lt;p&gt;Over at &lt;a href="http://thedailywtf.com/" target="_blank"&gt;The Daily WTF&lt;/a&gt;, they've started posting programming puzzles. The &lt;a href="http://thedailywtf.com/Comments/Nerds,-Jocks,-and-Lockers.aspx" target="_blank"&gt;latest one&lt;/a&gt; is a puzzle where a set of locker doors are toggled, starting from the closed state, to the open state. Starting at a step size of 1 and stopping at a step size equal to the number of lockers, one toggles each door. At a step size of 1, all doors are opened, step size of 2, all the even doors are closed. At a step size of 3, door 3 is closed, door 6 opened, and so on.&lt;/p&gt;  &lt;p&gt;Many of the solutions observe that only perfect squares remain opened when the algorithm is complete. That option is easy, but I wanted to do one that mimics the jocks effort of brute force solving the problem. &lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;// Init the lockers to the initial state&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;// and mark all doors as closed (false)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; sw = System.Diagnostics.Stopwatch.StartNew()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; totalLockers = 100&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; lockers = &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [1..totalLockers] &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; Seq.map( &lt;span style="color: blue"&gt;fun&lt;/span&gt; e &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; (e, &lt;span style="color: blue"&gt;false&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;// Recursive function to set each door.&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; &lt;span style="color: blue"&gt;rec&lt;/span&gt; openLockers l skip = &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;let&lt;/span&gt; listLength = Seq.length(l)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (totalLockers &amp;lt; skip) &lt;span style="color: blue"&gt;then&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// We've done our last toggle on the previous iteration. &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; l&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Do the toggling and try again.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;let&lt;/span&gt; newList = &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; l |&amp;gt; Seq.map( &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;fun&lt;/span&gt; (e, f : System.Boolean) &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;let&lt;/span&gt; modValue = (e % skip)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;match&lt;/span&gt; modValue &lt;span style="color: blue"&gt;with&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 0 &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; (e, not(f))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | _ &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; (e, f)) &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; openLockers newList (skip + 1)&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;let&lt;/span&gt; remainingOpen = &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; (openLockers lockers 1) |&amp;gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Seq.filter(&lt;span style="color: blue"&gt;fun&lt;/span&gt; (e, f:System.Boolean) &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; f) |&amp;gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Seq.map(&lt;span style="color: blue"&gt;fun&lt;/span&gt; (e, f:System.Boolean) &lt;span style="color: blue"&gt;-&amp;gt;&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;sw.Stop()&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;Seq.iter (printf &lt;span style="color: maroon"&gt;&amp;quot;%d\n&amp;quot;&lt;/span&gt;) remainingOpen&lt;/p&gt;    &lt;p style="margin: 0px"&gt;printf (&lt;span style="color: maroon"&gt;&amp;quot;%s\n&amp;quot;&lt;/span&gt;) (sw.Elapsed.ToString())&lt;/p&gt; &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VEtic49-Rcl0NISVWvBZhmpATXA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VEtic49-Rcl0NISVWvBZhmpATXA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VEtic49-Rcl0NISVWvBZhmpATXA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VEtic49-Rcl0NISVWvBZhmpATXA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=DTXPUCmeEB0:9v5fLa_A8AM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=DTXPUCmeEB0:9v5fLa_A8AM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=DTXPUCmeEB0:9v5fLa_A8AM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=DTXPUCmeEB0:9v5fLa_A8AM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/DTXPUCmeEB0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/DTXPUCmeEB0/Solution_for_Daily_WTF_Praxis_on_8-5-2009.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-08-05/Solution_for_Daily_WTF_Praxis_on_8-5-2009.aspx</comments>
      <guid isPermaLink="false">ac717b1f-df06-42a9-b6e9-1df9e4fd2f16</guid>
      <pubDate>Wed, 05 Aug 2009 15:08:05 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-08-05/Solution_for_Daily_WTF_Praxis_on_8-5-2009.aspx</feedburner:origLink></item>
    <item>
      <title>Calling an STA COM Object from a WCF Operation</title>
      <description>&lt;p&gt;One of the things that many people are still doing is making use of old COM objects that run in STA (single threaded apartment) threads. Back in October, 2006, &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163544.aspx" target="_blank"&gt;Jeff Prosise wrote how to do this from ASMX&lt;/a&gt;. Not too long after that, I had a chance to teach for Wintellect and Jeff asked me to show him how to do the same in WCF. That information went up on a post for a consulting company that didn't make it through the latest recession. For better or worse, that post was referenced a fair number of times and now, folks are writing to me, asking for the code again. &lt;/p&gt;  &lt;p&gt;In general, any time you receive a message via WCF, the message itself will be processed on a MTA (multi-threaded apartment) thread. Normally, this is just fine. Sometimes, you might be calling out to a COM object. COM objects will not run if the threading model the COM object needs differs from the threading model of the calling thread. MTA COM objects work just fine. But, if you have a bunch of STA COM objects (typically produced by Visual Basic but sometimes coming from C++ applications or other utilities) that you use in your WCF service, you have a problem. To allow things to work, the method needs to be invoked on an STA thread.&lt;/p&gt;  &lt;p&gt;In .NET, one creates an STA thread by setting the apartment state of the thread prior to Start()-ing the thread. &lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;thread.SetApartmentState(&lt;span style="color: #2b91af"&gt;ApartmentState&lt;/span&gt;.STA);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;thread.Start();&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now, how do we make this happen in WCF? We need to wrap the invocation of the actual method! For this, we resort to an IOperationBehavior. One typically applies a behavior (IServiceBehavior, IContractBehavior, IOperationBehavior) via an attribute. The only exception to this is an IEndpointBehavior, which is applied via manipulation of the EndpointDescription or in the app|web.config file. The IOperationBehavior exposes four methods:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;AddBindingParameters(OperationDescription, BindingParameterCollection): In our case, we will just do nothing with this info. &lt;/li&gt;    &lt;li&gt;ApplyClientBehavior(OperationDescription, ClientOperation): Only called when the contract is used on a client. We will&amp;#160; do nothing here since we only care about the service implementation. &lt;/li&gt;    &lt;li&gt;ApplyDispatchBehavior(OperationDescription, DispatchOperation): Only called when the contract is used on the server. We will do our work here and override the IOperationInvoker on the DispatchOperation so that our operation is invoked on an STA thread. &lt;/li&gt;    &lt;li&gt;Validate(OperationDescription): Used to make sure that everything is OK before applying the behavior. Normally, one throws an exception from this method if the environment isn't right in some way. Our implementation will throw if the method we are calling is being executed asynchronously. If you need an async version of the attribute, that work is left as an exercise for you, dear reader. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Our IOperationBehavior then looks like this:&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;STAOperationBehaviorAttribute&lt;/span&gt;: &lt;span style="color: #2b91af"&gt;Attribute&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;IOperationBehavior&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; AddBindingParameters(&lt;span style="color: #2b91af"&gt;OperationDescription&lt;/span&gt; operationDescription,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.ServiceModel.Channels.&lt;span style="color: #2b91af"&gt;BindingParameterCollection&lt;/span&gt; bindingParameters)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ApplyClientBehavior(&lt;span style="color: #2b91af"&gt;OperationDescription&lt;/span&gt; operationDescription,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.ServiceModel.Dispatcher.&lt;span style="color: #2b91af"&gt;ClientOperation&lt;/span&gt; clientOperation)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// If this is applied on the client, well, it just doesn't make sense.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Don't throw in case this attribute was applied on the contract&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// instead of the implementation. &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ApplyDispatchBehavior(&lt;span style="color: #2b91af"&gt;OperationDescription&lt;/span&gt; operationDescription,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.ServiceModel.Dispatcher.&lt;span style="color: #2b91af"&gt;DispatchOperation&lt;/span&gt; dispatchOperation)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Change the IOperationInvoker for this operation.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dispatchOperation.Invoker = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;STAOperationInvoker&lt;/span&gt;(dispatchOperation.Invoker);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Validate(&lt;span style="color: #2b91af"&gt;OperationDescription&lt;/span&gt; operationDescription)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (operationDescription.SyncMethod == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;The STAOperationBehaviorAttribute &amp;quot;&lt;/span&gt; +&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #a31515"&gt;&amp;quot;only works for synchronous method invocations.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;So far, so good. Now, we need to write that IOperationInvoker. You'll note from the ApplyDispatchBehavior above that our STAOperationInvoker takes an IOperationInvoker in the constructor. This is done because, in general, the IOperationInvoker WCF gives us does everything right. It just needs to do its thing on an STA thread. Our implementation will delegate as much work as possible to the provided IOperationInvoker. This is a pattern you will follow in most WCF extensions as most extensions require a slight tweak to existing behavior. We do just that, except for our implementation of Invoke. In that, we will setup an STA thread and then call the contained IOperationInvoker's Invoke method from the STA thread.&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;STAOperationInvoker&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IOperationInvoker&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IOperationInvoker&lt;/span&gt; _innerInvoker;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; STAOperationInvoker(&lt;span style="color: #2b91af"&gt;IOperationInvoker&lt;/span&gt; invoker){&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _innerInvoker = invoker;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] AllocateInputs()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; _innerInvoker.AllocateInputs();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; Invoke(&lt;span style="color: blue"&gt;object&lt;/span&gt; instance, &lt;span style="color: blue"&gt;object&lt;/span&gt;[] inputs, &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] outputs)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Create a new, STA thread&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] staOutputs = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; retval = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt; thread = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;delegate&lt;/span&gt;(){&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; retval = _innerInvoker.Invoke(instance, inputs, &lt;span style="color: blue"&gt;out&lt;/span&gt; staOutputs);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; thread.SetApartmentState(&lt;span style="color: #2b91af"&gt;ApartmentState&lt;/span&gt;.STA);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; thread.Start();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; thread.Join();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; outputs = staOutputs;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; retval;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IAsyncResult&lt;/span&gt; InvokeBegin(&lt;span style="color: blue"&gt;object&lt;/span&gt; instance, &lt;span style="color: blue"&gt;object&lt;/span&gt;[] inputs, &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;AsyncCallback&lt;/span&gt; callback, &lt;span style="color: blue"&gt;object&lt;/span&gt; state)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// We don't handle async...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NotImplementedException&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; InvokeEnd(&lt;span style="color: blue"&gt;object&lt;/span&gt; instance, &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] outputs, &lt;span style="color: #2b91af"&gt;IAsyncResult&lt;/span&gt; result)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// We don't handle async...&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NotImplementedException&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsSynchronous&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;true&lt;/span&gt;; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;To test, I wrote the following Service Contract:&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;ServiceContract&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ITestService&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetApartmentTypeMTA();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetApartmentTypeSTA();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;and applied the attribute to this implementation:&lt;/p&gt;  &lt;div style="font-family: lucida console; background: white; color: black; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TestService&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;ITestService&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetApartmentTypeMTA()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.CurrentThread.GetApartmentState().ToString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;STAOperationBehavior&lt;/span&gt;]&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetApartmentTypeSTA()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.CurrentThread.GetApartmentState().ToString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;When calling the service, GetApartmentTypeMTA always returns MTA and GetApartmentTypeSTA always returns STA. &lt;/p&gt;  &lt;p&gt;If you want to save some typing time or see the sample application, go &lt;a href="http://www.scottseely.com/Downloads/WCFSTAOperation.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YAK-w4trkKIKCS1l00uHLnZXEVA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YAK-w4trkKIKCS1l00uHLnZXEVA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YAK-w4trkKIKCS1l00uHLnZXEVA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YAK-w4trkKIKCS1l00uHLnZXEVA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=AwiaNjqOL8w:pC0JYBuBIhU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=AwiaNjqOL8w:pC0JYBuBIhU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=AwiaNjqOL8w:pC0JYBuBIhU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=AwiaNjqOL8w:pC0JYBuBIhU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/AwiaNjqOL8w" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/AwiaNjqOL8w/Calling_an_STA_COM_Object_from_a_WCF_Operation.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-07-17/Calling_an_STA_COM_Object_from_a_WCF_Operation.aspx</comments>
      <guid isPermaLink="false">61d0b293-d692-46a3-a51b-cdc063d17e92</guid>
      <pubDate>Fri, 17 Jul 2009 05:00:00 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-07-17/Calling_an_STA_COM_Object_from_a_WCF_Operation.aspx</feedburner:origLink></item>
    <item>
      <title>Slides and Presentation from CNUG, July 15 meeting</title>
      <description>&lt;p&gt;The slides and code have been posted for both the back to basics and the REST Server side talk. Click &lt;a href="http://www.scottseely.com/downloads/cnugrest.zip" target="_blank"&gt;here&lt;/a&gt; to get them. I'd like to thank everyone for showing up. I'll be presenting the same talk again for the &lt;a href="http://rockforddotnet.net/UserGroup/" target="_blank"&gt;Rockford .NET Users Group&lt;/a&gt;. You can register for the talk &lt;a href="http://www.communitymegaphone.com/ShowEvent.aspx?EventID=1669" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JJShvNs9skr45qnMymmzHNvlLN4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JJShvNs9skr45qnMymmzHNvlLN4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JJShvNs9skr45qnMymmzHNvlLN4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JJShvNs9skr45qnMymmzHNvlLN4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=jSJWCMN-T4Q:1Em6oCWbo7Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=jSJWCMN-T4Q:1Em6oCWbo7Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=jSJWCMN-T4Q:1Em6oCWbo7Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=jSJWCMN-T4Q:1Em6oCWbo7Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/jSJWCMN-T4Q" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/jSJWCMN-T4Q/Slides_and_Presentation_from_CNUG_July_15_meeting.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-07-16/Slides_and_Presentation_from_CNUG_July_15_meeting.aspx</comments>
      <guid isPermaLink="false">f2ab087b-25ea-4c7e-8200-f0691c2ee67b</guid>
      <pubDate>Thu, 16 Jul 2009 11:43:21 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-07-16/Slides_and_Presentation_from_CNUG_July_15_meeting.aspx</feedburner:origLink></item>
    <item>
      <title>Article on using Google AppEngine + Silverlight</title>
      <description>&lt;p&gt;I wrote an article on how to integrate Google AppEngine with Silverlight. If you understand how to use REST, this integration is really easy. &lt;a title="http://www.informit.com/articles/article.aspx?p=1354698" href="http://www.informit.com/articles/article.aspx?p=1354698"&gt;http://www.informit.com/articles/article.aspx?p=1354698&lt;/a&gt; has the full article!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vdLmhggtmPu30QljpLmc1ozQW-o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdLmhggtmPu30QljpLmc1ozQW-o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vdLmhggtmPu30QljpLmc1ozQW-o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdLmhggtmPu30QljpLmc1ozQW-o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=oP1UCt78rOs:bhCbTF-ABT0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=oP1UCt78rOs:bhCbTF-ABT0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=oP1UCt78rOs:bhCbTF-ABT0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=oP1UCt78rOs:bhCbTF-ABT0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/oP1UCt78rOs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/oP1UCt78rOs/Article_on_using_Google_AppEngine_Silverlight.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-07-06/Article_on_using_Google_AppEngine_Silverlight.aspx</comments>
      <guid isPermaLink="false">36dd6553-a293-46b1-94ba-a3f0c8f39623</guid>
      <pubDate>Mon, 06 Jul 2009 16:14:20 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-07-06/Article_on_using_Google_AppEngine_Silverlight.aspx</feedburner:origLink></item>
    <item>
      <title>Speaking at the Madison .NET User Group</title>
      <description>&lt;p&gt;The &lt;a href="http://www.maddotnet.com/" target="_blank"&gt;Madison, WI .NET User group&lt;/a&gt; has asked me to speak at their July 8 meeting. I'll be talking about the technologies that .NET makes available for writing RESTful .NET Services:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET/IIS&lt;/li&gt;    &lt;li&gt;MVC&lt;/li&gt;    &lt;li&gt;WCF&lt;/li&gt;    &lt;li&gt;ADO.NET Data Services&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I'll be skipping the Azure/Cloud specific choices since I only have an hour to cover things. My feeling is that the audience will be hosting all of their own services for the time being, so the above 4 items will be the most interesting to them. If you are interested in seeing the talk, please sign up &lt;a href="http://www.maddotnet.com/NewsBlogsJobs/tabid/150/EntryId/155/-July-8th-Meeting-Scott-Seely-REST-Programming-on-the-NET-Platform-Server-Side.aspx" target="_blank"&gt;here&lt;/a&gt;. I hope to see a few of you out there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9yJoDgG4O3lUxFqP5xXztwYDZKg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9yJoDgG4O3lUxFqP5xXztwYDZKg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9yJoDgG4O3lUxFqP5xXztwYDZKg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9yJoDgG4O3lUxFqP5xXztwYDZKg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=6dL8c-Go37I:_M2TJBjmq4I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=6dL8c-Go37I:_M2TJBjmq4I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=6dL8c-Go37I:_M2TJBjmq4I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=6dL8c-Go37I:_M2TJBjmq4I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/6dL8c-Go37I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/6dL8c-Go37I/Speaking_at_the_Madison_NET_User_Group.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-07-02/Speaking_at_the_Madison_NET_User_Group.aspx</comments>
      <guid isPermaLink="false">ea99bdf2-a325-4eed-9640-20da0198fd89</guid>
      <pubDate>Thu, 02 Jul 2009 18:05:37 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-07-02/Speaking_at_the_Madison_NET_User_Group.aspx</feedburner:origLink></item>
    <item>
      <title>On Vacation. Back to posting on 6-23</title>
      <description>&lt;p&gt;I'm on vacation this week. I'll be back to posting on June 23, 2009.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UZrqlOHO1AwwDEbfRLwJsvDFkaA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UZrqlOHO1AwwDEbfRLwJsvDFkaA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UZrqlOHO1AwwDEbfRLwJsvDFkaA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UZrqlOHO1AwwDEbfRLwJsvDFkaA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Q8Nw1rfmz9w:3KZZnkP6eUg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Q8Nw1rfmz9w:3KZZnkP6eUg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=Q8Nw1rfmz9w:3KZZnkP6eUg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=Q8Nw1rfmz9w:3KZZnkP6eUg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/Q8Nw1rfmz9w" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/Q8Nw1rfmz9w/On_Vacation_Back_to_posting_on_6-23.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-06-14/On_Vacation_Back_to_posting_on_6-23.aspx</comments>
      <guid isPermaLink="false">442f86c2-c795-4057-b322-078c039d2cac</guid>
      <pubDate>Sun, 14 Jun 2009 10:28:45 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-06-14/On_Vacation_Back_to_posting_on_6-23.aspx</feedburner:origLink></item>
    <item>
      <title>Oslo in Chicago? Yes.</title>
      <description>&lt;p&gt;I recently had an email conversation with a former colleague. He works at an organization that uses some pretty cutting edge technology. My feeling is that the organization firmly understands the value of moving to the latest and greatest is fraught with peril but rewards the early pioneers if these moves happen &lt;em&gt;appropriately&lt;/em&gt;. In particular, they are already evaluating &lt;a href="http://www.microsoft.com/soa/products/oslo.aspx" target="_blank"&gt;Oslo&lt;/a&gt;. I'm a big fan of proactive thinking. I have long heard rumors that the Chicago market is too backward or old fashioned, and I just don't see that. Instead, I hear that a Chicago business is actively hiring and is using the latest and greatest technology to make their business more competitive. &lt;/p&gt;  &lt;p&gt;We also have a very active Ruby and Python community which, from what I can tell, is growing every month. I think that the city has already turned itself into a tech hub. We just need that first billion dollar company and the world will know too. I know this will take 7-10 years for the seeds to start bearing fruit, but the process is in motion.&lt;/p&gt;  &lt;p&gt;I love this!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y835Oo_A13xTwjFTfUmbCYfB1y8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y835Oo_A13xTwjFTfUmbCYfB1y8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y835Oo_A13xTwjFTfUmbCYfB1y8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y835Oo_A13xTwjFTfUmbCYfB1y8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=xYpEwUEFkWk:XGNX3mbdw3A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=xYpEwUEFkWk:XGNX3mbdw3A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=xYpEwUEFkWk:XGNX3mbdw3A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=xYpEwUEFkWk:XGNX3mbdw3A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/xYpEwUEFkWk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/xYpEwUEFkWk/Oslo_in_Chicago_Yes.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-06-10/Oslo_in_Chicago_Yes.aspx</comments>
      <guid isPermaLink="false">33577c9c-1fa9-4099-8a93-25782a459dd8</guid>
      <pubDate>Wed, 10 Jun 2009 12:26:48 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-06-10/Oslo_in_Chicago_Yes.aspx</feedburner:origLink></item>
    <item>
      <title>Assembly of the day #3: IEExecRemote</title>
      <description>&lt;p&gt;&lt;em&gt;This is day #3 of my journey through the .NET 4.0 assemblies. I'm planning to split up large assemblies over several days so that I give bigger assemblies proper treatment. Today, that won't be happening! By the way, this is actually turning out to be pretty neat. .NET ships with a lot of interesting pieces, and the assemblies that sort early in the alphabet (because they don't start with &lt;/em&gt;&lt;strong&gt;System&lt;/strong&gt;&lt;em&gt;) are pretty interesting glimpses into how .NET does things. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Today, we look at IEExecRemote. This assembly contains a single type:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;IEExecRemote, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a     &lt;br /&gt;FullTrust: True      &lt;br /&gt;In GAC: True      &lt;br /&gt;Number of types: 1      &lt;br /&gt;Number of namespaces: 1      &lt;br /&gt;Types:      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Class IEHost.Execute.IEExecuteRemote&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So, what does this &lt;a href="http://msdn.microsoft.com/en-us/library/iehost.execute.ieexecuteremote.aspx" target="_blank"&gt;IEExecuteRemote&lt;/a&gt; do? Reading the docs, we see that this is another class that "&lt;em&gt;supports the .NET Framework infrastructure and is not intended to be used directly from your code.&lt;/em&gt;" So what? What does it do? It runs a managed application over the Internet. OK, that's kind of generic and not very helpful. What is really going on? When you start a .NET application via a URL, Windows fires up an application called IEExec.exe. &lt;a href="http://support.microsoft.com/kb/822485" target="_blank"&gt;This KB article&lt;/a&gt; describes the process. This part of the discussion is pertinent:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The IEExec.exe application is an undocumented Microsoft .NET Framework application that is included with the .NET Framework. You can use the IEExec.exe application as a host to run other managed applications that you start by using a URL. &lt;/p&gt;    &lt;p&gt;For example, when you start a smart client by using a URL, no processes run with the smart client name. Instead, each application that you start by using a URL receives its own copy of the IEExec.exe application. The IEEXEC.exe application sets up the appropriate environment for the application to run in.&lt;/p&gt;    &lt;p&gt;Typically, the IEExec.exe application works closely with Microsoft Internet Explorer to help you start the .NET Framework applications. The IEExec.exe application hooks to Internet Explorer version 5.01 and later to listen for assemblies that are requested. During a request, the executable is downloaded to the assembly download cache. Internet Explorer spawns a process for the IEExec.exe application and then passes the raw evidence information of the executable to the IEExec.exe application. The IEExec.exe application then uses the raw evidence information to set up an environment that has constrained-security settings for the executable.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;IEExecuteRemote and IEExec work together to host and run assemblies that are stored at URLs (instead of the local file system). IEExec loads the IEExecuteRemote instance in a separate AppDomain and then runs the remote assembly in that domain. The only method that IEExec excecutes on IEExecuteRemote is the &lt;a href="http://msdn.microsoft.com/en-us/library/ms123493.aspx" target="_blank"&gt;ExecuteAsAssembly&lt;/a&gt; method. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Oedqh_S-mxUsdRPOKA9B_CaoN6E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oedqh_S-mxUsdRPOKA9B_CaoN6E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Oedqh_S-mxUsdRPOKA9B_CaoN6E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oedqh_S-mxUsdRPOKA9B_CaoN6E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ql64EpPmNrc:WHacLt69Feo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ql64EpPmNrc:WHacLt69Feo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottSeelysBlog?a=ql64EpPmNrc:WHacLt69Feo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottSeelysBlog?i=ql64EpPmNrc:WHacLt69Feo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottSeelysBlog/~4/ql64EpPmNrc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ScottSeelysBlog/~3/ql64EpPmNrc/Assembly_of_the_day_3_IEExecRemote.aspx</link>
      <author>Scott Seely</author>
      <comments>http://www.scottseely.com/Blog/09-06-08/Assembly_of_the_day_3_IEExecRemote.aspx</comments>
      <guid isPermaLink="false">9f18ad72-a11d-4a0a-9500-fd6aa3d453a7</guid>
      <pubDate>Mon, 08 Jun 2009 10:34:28 GMT</pubDate>
    <feedburner:origLink>http://www.scottseely.com/Blog/09-06-08/Assembly_of_the_day_3_IEExecRemote.aspx</feedburner:origLink></item>
  </channel>
</rss>
