<?xml version="1.0" encoding="UTF-8"?>
<?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:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" version="2.0">
    <channel>
        <title>Bender's Blog</title>
        <link>http://jamescbender.com/bendersblog/Default.aspx</link>
        <description>... because jamesbender.com was already taken.</description>
        <language>en-US</language>
        <copyright>James Bender</copyright>
        <managingEditor>james.c.bender@live.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <image>
            <title>Bender's Blog</title>
            <url>http://jamescbender.com/bendersblog/images/RSS2Image.gif</url>
            <link>http://jamescbender.com/bendersblog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BendersBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Stone Soup</title>
            <category>Consulting</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/09/06/stone-soup.aspx</link>
            <description>&lt;p&gt;As a consultant, I work with a lot of clients of varying backgrounds, skill levels and willingness to explore new techniques and tools. In addition to my development/architecture duties, nowadays I’m often brought into a team to provide mentoring and perform assessments. This takes a variety of forms but there is almost always some effort needed to “evangelize” new ideas and approaches to clients. &lt;/p&gt;  &lt;p&gt;Some clients are very open to this. They recognize that I’m there for a reason and that my advice can help them get from where they are to where they need to be. Sometimes the ideas I provide and the steps needed to implement them are difficult and scary, but in the end they will be better off. &lt;/p&gt;  &lt;p&gt;Then, there are clients who are a little more resistant. This is almost always based on fear. Mostly fear of the unknown. They’ve been doing things they way they do them for years.  They feel pain but it’s the pain they know. They’ve noticed all the changes in development in the past several years, but haven’t been able to keep up on all of them. Usually they’re in a situation were an tool/technology/technique needs to be vetted before it is used. In the meantime they need to continue supporting their business users with what’s available to them. They find themselves behind the technology wave and getting back on top seems like an impossible task. &lt;/p&gt;  &lt;p&gt;Additionally, they know how to be “successful” with the tools and techniques they have now. It’s what they know. Introducing new tools and techniques increases the chance of failure. People tend to put too much emphasis on the negative side of failure without acknowledging the learning experience it provides.&lt;/p&gt;  &lt;p&gt;So, how do you win these people over?&lt;/p&gt;  &lt;h2&gt;The Wrong Approach&lt;/h2&gt;  &lt;p&gt;As a passionate technologist, sometimes my first inclination is to come in and try to get them to change everything. Right now. This takes fear and turns it into outright panic. From their point of view you’re asking them to throw out everything they know and start over. This isn’t like asking someone to move from Java to .NET or from Visual Basic to C#. The jumps we’re asking people to make are much more difficult. Introducing new developers to concepts and practices like TDD or Inversion of Control require them to make a significant leap in abstract thought. Making a change from Web Forms to MVC, or from Remoting to REST based services takes a major change in the way we think about designing and building applications.&lt;/p&gt;  &lt;p&gt;But that’s just what’s on the surface. When you walk into a situation were a team has already been working diligently on an application, which is usually the case, you’re in an indirect way leveling criticism against their development skills. And the more you insist the it must be thrown out and re-done your way and dig your heels in, the more biting that criticism is. No one likes to be told their baby is ugly.&lt;/p&gt;  &lt;h2&gt;What I’ve Learned&lt;/h2&gt;  &lt;p&gt;When I was in the third grade &lt;a href="http://www.jamescbender.com//BendersBlog/Images/Blog/StoneSoup_C527/stonesoup.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="stone-soup" border="0" alt="stone-soup" align="right" src="http://www.jamescbender.com//BendersBlog/Images/Blog/StoneSoup_C527/stonesoup_thumb.jpg" width="190" height="244" /&gt;&lt;/a&gt;I remember reading a book called “Stone Soup.” It was the story about three soldiers who were on their was somewhere and stopped in a small town. The soldiers were hungry, and proceeded to knock on every door in the town asking for food. The townspeople knowing that the soldiers would be very hungry and not wanting to share their food decided to tell the soldiers that they don’t even have enough food for themselves, let alone anyone else. The soldiers are able to see through the ruse however and come up with a plan. The tell the townspeople that they can teach them how to make soup using nothing but stones. The set a large cauldron of boiling water, containing one stone, in the center of town. The townspeople begin to gather, curious about how they are going to make soup out of a stone. &lt;/p&gt;  &lt;p&gt;The soldiers make a big show of tasting the soup and claiming it to be, almost, the best soup they’ve ever had, remarking that the only thing is needs to make it perfect is &lt;em&gt;a few&lt;/em&gt; carrots.Still curious, a farmer runs to his root seller and returns with some carrots which the soldiers add to the soup. The soldiers go through the same “tasting ritual” this time claiming that if they only had a few potatoes, &lt;em&gt;then&lt;/em&gt; the soup would be perfect. Next celery. After that cream. Then meat. You get the idea.&lt;/p&gt;  &lt;p&gt;I have found that this approach works well with developers too. We’ve all heard the phrase “Don’t boil the ocean” this is a great technique on how to avoid getting into that trap. Instead of asking a client to take on a dozen new tools, frameworks and techniques, introduce them one at a time. Let the client see the value and point out that by taking another step (when the clients team is ready) will yield even better results. Don’t get hung up on going back and re-doing their existing application. If it’s working now, it’s probably good enough. The benefits you gain by introducing these techniques for new development are not necessarily going to provide an equivalent when used to refactor an existing code base. If there is a benefit to be had, and you’ve used this technique correctly, the clients developers will be the ones who start to champion that cause.&lt;/p&gt;  &lt;p&gt;This technique is not an overnight solution, but it is a lasting one. Take your time. Convey your excitement, but also remember to be patient. Keep your changes small and manageable. And enjoy your soup.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/09/06/stone-soup.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/09/06/stone-soup.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/58.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=LsMVmBRZqmU:z0iyh_CIFaU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=LsMVmBRZqmU:z0iyh_CIFaU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=LsMVmBRZqmU:z0iyh_CIFaU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/09/06/stone-soup.aspx</guid>
            <pubDate>Sun, 06 Sep 2009 20:30:11 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/58.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/09/06/stone-soup.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/58.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Getting Started with WCF Slides and Code Sample from CINNUG</title>
            <category>.NET</category>
            <category>Events</category>
            <category>WCF</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/09/03/getting-started-with-wcf-slides-and-code-sample-from-cinnug.aspx</link>
            <description>&lt;p&gt;Better late than never…&lt;/p&gt;  &lt;p&gt;Seriously, sorry to everyone who’s been waiting for these.&lt;/p&gt;  &lt;p&gt;I had a great time speaking in Cincinnati last week and meet a lot of great people. I hope to see you all again soon.&lt;/p&gt; &lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 26px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-de4aebf19948423f.skydrive.live.com/embedrow.aspx/Public/CINNUG" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/09/03/getting-started-with-wcf-slides-and-code-sample-from-cinnug.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/09/03/getting-started-with-wcf-slides-and-code-sample-from-cinnug.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/57.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=4mWq-d1XqH4:DqM5JvDDgHU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=4mWq-d1XqH4:DqM5JvDDgHU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=4mWq-d1XqH4:DqM5JvDDgHU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/09/03/getting-started-with-wcf-slides-and-code-sample-from-cinnug.aspx</guid>
            <pubDate>Thu, 03 Sep 2009 12:17:50 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/57.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/09/03/getting-started-with-wcf-slides-and-code-sample-from-cinnug.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/57.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Burn Down Your House</title>
            <link>http://jamescbender.com/bendersblog/archive/2009/08/16/burn-down-your-house.aspx</link>
            <description>&lt;p&gt;I had the luck of being able to participate in a “Community Summit” the day before &lt;a href="http://devlink.net/" target="_blank"&gt;DevLink&lt;/a&gt; in Nashville. In addition to other activities, and some (GREAT BBQ!) there was an open space on how to be a better speaker. A couple people were surprised when I suggested a practice I employ. &lt;/p&gt;  &lt;p&gt;Occasionally I’ll take a presentation (slides, demo, etc.) that I’ve given several times and just “throw it out.” Even if it’s a popular talk. Even if I am comfortable giving it. Even if I think it’s perfect. Especially if I think it’s perfect! I throw it out and start over from scratch.&lt;/p&gt;  &lt;p&gt;Why?&lt;/p&gt;  &lt;p&gt;Probably the biggest reason I do this is that technology and attitudes change. They change very quickly. I’ve noticed a lot of speakers/presenters/whatever try to address these changes by adding “appendixes” to their talks. You’ve probably seen this; a well put together albeit dated talk suddenly veers off in an unexpected direction to accommodate a point release that came out a month ago. It’s jarring. It’s awkward. It feels “bolted on” (probably because it was) and I’m not a fan. I understand that sometimes, especially if you’re talking about “bleeding edge” technology or tools there are going to be last minute changes and patches that you might want to address. That’s fine. But if we’re talking about the delta between a “.0” and a “.5” release you should have (and take) the time to incorporate those changes in a way that keeps the flow of the talk smooth.&lt;/p&gt;  &lt;p&gt;But I’ll throw out presentations sometimes even if this isn’t the case. Especially if it’s one I’ve given several times. Re-building a presentation causes you (like it or not) to re-think your approach to the topic. You can’t escape it. If you’re re-building a one year old presentation you have another year of knowledge and experience to put into the presentation. Not just in the topic you’re speaking on but in speaking in general. I’ve been speaking for over two years. In that time I’ve only used one slide deck and demo that wasn’t mine and I wasn’t allowed to alter. I did that presentation under protest. In those two years I’ve put many slide decks and many demos together. I can tell you without a doubt in my mind the presentation I put together last week is more than 100 times better than the first presentation I created. &lt;/p&gt;  &lt;p&gt;The last reason is that when I give the same presentation again and again it can get boring. After awhile I start to feel like I’m going through the motions. When I feel like I could sleep walk through a presentation, I take that as a bad sign. Re-building is a way for me to re-capture that inspiration to speak on the topic in the first place. I’m a fan of the XBox game “&lt;a href="http://www.xbox.com/en-US/games/s/sidmeierscivilizationrevolution/" target="_blank"&gt;Civilization Revolution&lt;/a&gt;.” I like the whole game, but one of my favorite parts is the beginning where I create my cities and kind of “mark out” my territory. I think it’s exciting trying to beat my opponents and lock up key strategic positions and resources. Once my territory is established and my cities well defended, it’s still fun, but not as much fun. I think it’s a creative thing. Good developers are like this too; we get excited about creating new things. That’s why most of the developers I know will jump at the chance to do some “green field” development and would fake their own deaths if they though it would get them out of maintenance. Presentations are the same way.&lt;/p&gt;  &lt;p&gt;Again, this is what works for me.Your mileage may vary. But if the circumstance allow give it a try and let me know how it worked out.&lt;/p&gt;  &lt;p&gt;Later.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/08/16/burn-down-your-house.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/08/16/burn-down-your-house.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/56.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=fMt0V8-NK2o:6ou4m2Bt78s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=fMt0V8-NK2o:6ou4m2Bt78s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=fMt0V8-NK2o:6ou4m2Bt78s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/08/16/burn-down-your-house.aspx</guid>
            <pubDate>Sun, 16 Aug 2009 18:42:13 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/56.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/08/16/burn-down-your-house.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/56.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Exceptions Happen, Part 1</title>
            <category>.NET</category>
            <category>WCF</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/08/11/exceptions-happen-part-1.aspx</link>
            <description>&lt;p&gt;You might thing you’re special, but your not. And sooner or later it’s gonna happen to you too. Your WCF Service is going to encounter a *gasp* Exception. Do you know what to do when it does happen?&lt;/p&gt;  &lt;p&gt;Scott Hanselman wrote a terriffic &lt;a href="http://www.hanselman.com/blog/GoodExceptionManagementRulesOfThumb.aspx" target="_blank"&gt;blog post&lt;/a&gt; on exceptions. It’s a great place to start and if you haven’t read it you should. I wrote a post last year about working with the WCF Fault Contract. But there’s more than one way to skin this cat. What I’m going to be focusing on in this series of posts are the ways you can deal with exceptions in WCF and how to communicate what’s happened to your client. &lt;/p&gt;  &lt;p&gt;In the first installment we’re going to look at how exceptions get received by a WCF client and how the WCF channel reacts to exceptions. Let’s start with what happens if you just throw a normal .NET exception. For this example we’ll be looking at a mock up of a service to return prices for stocks based on a ticker symbol.&lt;/p&gt;  &lt;p&gt;The service contact:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    [ServiceContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IMyWcfService&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        [OperationContract]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;decimal&lt;/span&gt; GetStockPrice(&lt;span class="kwrd"&gt;string&lt;/span&gt; symbol);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;And the implementation:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MyWcfService : IMyWcfService&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;decimal&lt;/span&gt; GetStockPrice(&lt;span class="kwrd"&gt;string&lt;/span&gt; symbol)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;switch&lt;/span&gt; (symbol)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"MSFT"&lt;/span&gt;:&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;) 1.41;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"IBM"&lt;/span&gt;:&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;).89;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"JAVA"&lt;/span&gt;:&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;decimal&lt;/span&gt;).10;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="kwrd"&gt;default&lt;/span&gt;:&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentOutOfRangeException(&lt;span class="str"&gt;"symbol"&lt;/span&gt;, &lt;span class="str"&gt;"bad symbol"&lt;/span&gt;);                   &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Since this is a contrived demo, we only handle three symbols and return a static value. This does however provide us with an opportunity to see how .NET exceptions work in WCF. If we receive a symbol that is not in our list, we are throwing an ArgumentOtOfRangeException. If we were using this as just a .NET object we wouldn’t have a problem; either our code would catch the exception and do something with it, or it would bubble up to the user.&lt;/p&gt;

&lt;p&gt;Our client is a winform application. The important part is the call to our service (via a proxy of course):&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Form1 : Form&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; MyWcfServiceClient _proxy;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Form1()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        InitializeComponent();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        btnCallService.Click += CallService;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        _proxy = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyWcfServiceClient();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CallService(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        lblResult.Text = _proxy.GetStockPrice(txtSymbol.Text).ToString();            &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;So all we’re doing is grabbing a value (the ticker symbol) from a text box and passing it as an argument to the service. The result is used to set the value of a label control. When we run this and feed one of the three symbols that our service uses, the expected happens: a value is returned and set to the text of the label. When we provide an unsupported symbol, we get an error:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_thumb.png" width="496" height="437" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The exception text should look familiar to anyone who has worked with ASP.NET…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font color="#0000a0"&gt;&lt;em&gt;System.ServiceModel.FaultException: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the &amp;lt;serviceDebug&amp;gt; configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Like ASP.NET, WCF will not return detailed exception information to clients as a security measure. Like ASP.NET we have the ability to change the configuration to return more detailed exception information. One line nine below, we have set the includeExceptionDetailInFaults value to “True”:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;...&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;behaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceBehaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;behavior&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Service1Behavior"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceMetadata&lt;/span&gt; &lt;span class="attr"&gt;httpGetEnabled&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceDebug&lt;/span&gt; &lt;span class="attr"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;strong&gt;True&lt;/strong&gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;         &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;behavior&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;serviceBehaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;behaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;This results in the details of the error message being passed back to us:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_thumb_3.png" width="496" height="371" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Like ASP.NET, this can be OK for development, but is not a good idea for production. &lt;/p&gt;

&lt;p&gt;Let’s make a few changes to our client application:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CallService(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        lblResult.Text = _proxy.GetStockPrice(txtSymbol.Text).ToString();            &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        MessageBox.Show(&lt;span class="str"&gt;"Service call failed"&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }            &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;By catching the exception we can let the user know that something happened and handle it gracefully. Running the application and use the symbol “ORCL” causes the exception, which is handled:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_thumb_4.png" width="244" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;So, we can just re-submit a supported symbol right…?&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://jamescbender.com/bendersblog/Images/Blog/CoolWCFClientTricks_D511/image_thumb_4.png" width="244" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Uh-oh. &lt;/p&gt;

&lt;p&gt;Turns out that when a WCF service throws a normal .NET exception, it faults the channel. Any subsequent calls to the channel results in a CommunicationObjectFaultedExcption being thrown immediately. The channel cannot be salvaged; your only option is to throw it out and recreate it. The proxy implements an interface called ICommunicatioObject that has a &lt;em&gt;Faulted&lt;/em&gt; event that we can subscribe to.A few more changes to our client…:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; MyWcfServiceClient _proxy;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Form1()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    InitializeComponent();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    btnCallService.Click += CallService;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    _proxy = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyWcfServiceClient();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    ((ICommunicationObject)_proxy).Faulted += RecreateProxy;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; RecreateProxy(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    _proxy = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyWcfServiceClient();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;… and now our client is able to recreate the proxy if a communication fault occurs.&lt;/p&gt;

&lt;p&gt;This way of dealing with exceptions in WCF works well if you are a client of a service that you may not control or have the metadata needed to create a fault contract for. Otherwise, using the FaultException class and/or WCF fault contracts are a better way to go. I’ll be covering them more in detail in the next couple posts.&lt;/p&gt;

&lt;p&gt;Code on!&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/08/11/exceptions-happen-part-1.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/08/11/exceptions-happen-part-1.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/55.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=04M3lXHCKvQ:Lpg_DIiPwPY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=04M3lXHCKvQ:Lpg_DIiPwPY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=04M3lXHCKvQ:Lpg_DIiPwPY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/08/11/exceptions-happen-part-1.aspx</guid>
            <pubDate>Tue, 11 Aug 2009 19:11:20 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/55.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/08/11/exceptions-happen-part-1.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/55.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Make your investment count</title>
            <category>Architecture</category>
            <category>Development</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/08/02/make-your-investment-count.aspx</link>
            <description>&lt;p&gt;I recently had a conversation with a friend and fellow developer who was very excited. His company recently welcomed a new CIO to the organization, who had some, comparatively, progressive idea. One of his first actions was to increase IT development spending by several million dollars to tackle some projects that had had to be put off over the past few years, including renovating several applications that we’re quite performing up to expectations.&lt;/p&gt;  &lt;p&gt;Unfortunately, while the CIO’s spirit was in the right place it became clear that his money was not.&lt;/p&gt;  &lt;p&gt;The various development groups began developing applications the way they had always done, but made no effort to update their tools, techniques or practices. Instead of spending part of their substantial investment to introduce things like Agile methodologies, Test Driven Development, Web Standards, Source Control policies or automated builds, they proceeded to develop a whole new collection of applications like they had been developing them for years. &lt;/p&gt;  &lt;p&gt;The group knew that these old practices had led them to a lot of pain in the past and needed to be revamped. But the organization placed value on raw lines of code and not the quality of what was being produced. As a result, those applications that needed “renovation” were simply ported from .NET 2.0 (and in some cases 1.1) to 3.5. Management was surprised when “upgrading” these applications did not result in large performance and stability increases.&lt;/p&gt;  &lt;p&gt;Making a lot of changes to the way we work as developers can be scary. There’s a lot to learn, it seems complicated at the start, and no one wants to risk looking stupid. But it’s also important for us as individuals and software development in general to be willing to examine and investigate new techniques and tools that will make it easier to develop higher-quality code more efficiently. Keeping an open mind will unlock a lot of doors to improvement.&lt;/p&gt;  &lt;p&gt;Companies need to understand that their code is an asset just like a building, vehicle fleet or piece of manufacturing equipment. You wouldn’t dream of letting those things fall into disrepair, so why are companies OK with their code base rot? When making an investment in IT, it’s important to understand where that money is going, and what it’s going to buy you in the long run. If you have a code base of dubious quality and pay for large teams to simply “plough ahead” you will just end up with a larger base of low quality code.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/08/02/make-your-investment-count.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/08/02/make-your-investment-count.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/54.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=u7BEfiEQomw:oA_UtJ-DIjg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=u7BEfiEQomw:oA_UtJ-DIjg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=u7BEfiEQomw:oA_UtJ-DIjg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/08/02/make-your-investment-count.aspx</guid>
            <pubDate>Sun, 02 Aug 2009 14:05:05 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/54.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/08/02/make-your-investment-count.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/54.aspx</wfw:commentRss>
        </item>
        <item>
            <title>2009 Columbus Give Camp is in the books&amp;hellip;</title>
            <category>Development</category>
            <category>Events</category>
            <category>Give Camp</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/07/21/2009-columbus-give-camp-is-in-the-bookshellip.aspx</link>
            <description>&lt;p&gt;… and it was a tremendous experience!&lt;/p&gt;  &lt;p&gt;The goal of a &lt;a href="http://www.columbusgivecamp.org/GiveCamp/" target="_blank"&gt;Give Camp&lt;/a&gt; is to unite non-profits that need technical assistance, be it a new web site, help with a CRM or making changes to an existing line of business application with passionate geeks in the area who are willing to give a weekend to help these non-profits accomplish their goals.&lt;/p&gt;  &lt;p&gt;This year, in Columbus, about 45 software professionals came together to help eight non-profits. The results were amazing. In about 48 hours, eight full scale applications were either completed, or nearly completed. Most starting from scratch. It was great to see the variety of technologies and talents in one place and one time. It was also great to see the results a small but committed team of developers could create in a short period of time. Truly amazing! I want to thank all the volunteers who came out to help. A weekend can be a big thing to give up, and the Give Camp organizers and non-profits are extremely thankful of your efforts. &lt;/p&gt;  &lt;p&gt;I would also like to thank all the non-profits that participated. We had a great time getting together and learning from each other while helping you.&lt;/p&gt;  &lt;p&gt;I would also like to thank our sponsors. &lt;a href="http://quicksolutions.com/" target="_blank"&gt;Quick Solutions&lt;/a&gt; for providing us with a great workspace, and soda and coffee through the weekend. &lt;a href="http://www.discountasp.net/" target="_blank"&gt;Discount ASP.NET&lt;/a&gt; for providing hosting for the non-profit applications. &lt;a href="http://www.techsmith.com/" target="_blank"&gt;Tech Smith&lt;/a&gt; for providing funds and licenses of their amazing products. &lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt; provided us with licenses for some of their products and swag. &lt;a href="http://www.microsoft.com/en/us/default.aspx" target="_blank"&gt;Microsoft&lt;/a&gt; for providing funds and swag. &lt;a href="http://erubycon.com/" target="_blank"&gt;eRubycon&lt;/a&gt; for providing a free pass to eRubycon 2009. And The &lt;a href="http://www.sophicgroup.net/Home/Home.aspx" target="_blank"&gt;Sophic Group&lt;/a&gt; for sponsoring dinner on Saturday night. Please remember the support these sponsors provided.&lt;/p&gt;  &lt;p&gt;I would like to single out two sponsors who went above and beyond for us: &lt;a href="http://www.potbelly.com/Home/Default.aspx" target="_blank"&gt;Potbelly&lt;/a&gt; and &lt;a href="http://www.peiwei.com/" target="_blank"&gt;Pei Wei&lt;/a&gt;. One of the most difficult things about organizing an event that lasts all day is feeding people. When that even spans multiple days AND encourages participants to stay over-night, that task is even harder. Potbelly and Pei Wei made some of those meals a whole lot easier for us! Please remember them if you’re in the Polaris area at lunch or dinner time (Potbelly is &lt;a href="http://www.bing.com/local/details.aspx?lid=YN671x11724340&amp;amp;what=potbelly&amp;amp;tid=6005431766d14f9f88a520f2a3c8b309&amp;amp;FORM=LLMP&amp;amp;tab=default&amp;amp;SearchID=564715107" target="_blank"&gt;here&lt;/a&gt;, Pei Wei is &lt;a href="http://www.bing.com/local/details.aspx?lid=YN671x143205149&amp;amp;what=pei%20wei&amp;amp;where=Columbus%2c%20OH&amp;amp;q=pei%20wei%20columbus%20oh&amp;amp;tid=db93c4149d074f6385239a344ba2c8ff&amp;amp;FORM=LLMP&amp;amp;tab=default&amp;amp;SearchID=633019231" target="_blank"&gt;here&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;See you all at Give Camp 2010!&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/07/21/2009-columbus-give-camp-is-in-the-bookshellip.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/07/21/2009-columbus-give-camp-is-in-the-bookshellip.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/53.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=v_rH88RXzIA:pZe0jdQ4LXs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=v_rH88RXzIA:pZe0jdQ4LXs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=v_rH88RXzIA:pZe0jdQ4LXs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/07/21/2009-columbus-give-camp-is-in-the-bookshellip.aspx</guid>
            <pubDate>Tue, 21 Jul 2009 18:50:54 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/53.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/07/21/2009-columbus-give-camp-is-in-the-bookshellip.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/53.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I&amp;rsquo;m Following Rod Paddock at Codestock?!</title>
            <category>Events</category>
            <category>Shameless self promotion</category>
            <category>WCF</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/06/24/irsquom-following-rod-paddock-at-codestock.aspx</link>
            <description>&lt;p&gt;&lt;a target="_blank" href="http://codestock.org/"&gt;Codestock&lt;/a&gt; is this weekend in Knoxville. You can check out the agenda page &lt;a target="_blank" href="http://codestock.org/Agenda.aspx"&gt;here&lt;/a&gt; and see that there are some great, very smart people speaking there. With seven tracks over two days, plus open spaces, there’s something for everyone at this great event. I was honored to speak at the first Codestock event last year, and I’m thrilled to be back!&lt;/p&gt;
&lt;p&gt;I’ll be presenting “&lt;strong&gt;How to make your application awesome with JSON, REST and WCF&lt;/strong&gt;” in which I’ll explain why REST is the “new” hotness (turns out it’s not that new) and how to take advantage of it with WCF. You’ll also get to see some cool &lt;a target="_blank" href="http://jquery.com/"&gt;JQuery&lt;/a&gt; and &lt;a target="_blank" href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt; stuff as part of the talk. It’s the first time I’ve given this talk, so I’m very excited!&lt;/p&gt;
&lt;p&gt;Turns out I’m following &lt;a target="_blank" href="http://blog.dashpoint.com/"&gt;Rod Paddock&lt;/a&gt;. Yeah, that Rod Paddock. Editor in Chief of &lt;a target="_blank" href="http://www.code-magazine.com/"&gt;CoDe Magazine&lt;/a&gt;, author of many books, international speaker and Microsoft MVP. By contrast, I was all excited this morning because I found a $5.00 bill in my pocket that I forgot I had. &lt;/p&gt;
&lt;p&gt;Ron Paddock followed by James Bender. Kinda like…&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="452"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="133" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/beer.jpg"&gt;&lt;img height="204" border="0" width="244" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/beer_thumb.jpg" alt="beer" title="beer" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td width="201" valign="top"&gt;&lt;strong&gt;&lt;font size="4"&gt;followed by&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="116" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/passedout.jpg"&gt;&lt;img height="184" border="0" width="244" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/passedout_thumb.jpg" alt="passed out" title="passed out" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="133" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/skiing.jpg"&gt;&lt;img height="164" border="0" width="244" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/skiing_thumb.jpg" alt="skiing" title="skiing" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;font size="4"&gt; &lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="201" valign="top"&gt;&lt;strong&gt;&lt;font size="4"&gt;followed by&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="116" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/cast.jpg"&gt;&lt;img height="187" border="0" width="126" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/cast_thumb.jpg" alt="cast" title="cast" style="border-width: 0px; margin: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="133" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/the_beatles3.jpg"&gt;&lt;img height="184" border="0" width="244" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/the_beatles3_thumb.jpg" alt="the_beatles3" title="the_beatles3" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td width="201" valign="top"&gt;&lt;strong&gt;&lt;font size="4"&gt;followed by&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="116" valign="top"&gt;&lt;a href="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/Vanilla_Ice_Cool_as_Ice.jpg"&gt;&lt;img height="197" border="0" width="198" src="http://jamescbender.com/bendersblog/Images/Blog/ImFollowingRodPaddockatCodestock_14A36/Vanilla_Ice_Cool_as_Ice_thumb.jpg" alt="Vanilla_Ice_Cool_as_Ice" title="Vanilla_Ice_Cool_as_Ice" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In all seriousness, I’m really looking forward and VERY happy to be speaking at Codestock. It’s a must-attend event and if you’re not going, well, you should go!&lt;/p&gt;
&lt;div style="margin: 0px; padding: 4px; text-align: left;" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/06/24/irsquom-following-rod-paddock-at-codestock.aspx"&gt;&lt;img border="0" alt="DotNetKicks Image" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/06/24/irsquom-following-rod-paddock-at-codestock.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;input type="hidden" id="gwProxy" /&gt;&lt;!--Session data--&gt;&lt;input type="hidden" id="jsProxy" onclick="jsCall();" /&gt;
&lt;div id="refHTML"&gt; &lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/52.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=iIDWrgkAPjs:rFrtVUKzUqo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=iIDWrgkAPjs:rFrtVUKzUqo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=iIDWrgkAPjs:rFrtVUKzUqo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/06/24/irsquom-following-rod-paddock-at-codestock.aspx</guid>
            <pubDate>Thu, 25 Jun 2009 03:46:07 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/52.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/06/24/irsquom-following-rod-paddock-at-codestock.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/52.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Camping without the insects!</title>
            <category>Events</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/06/15/camping-without-the-insects.aspx</link>
            <description>&lt;p&gt;Notice I didn’t say “bugs” though….&lt;/p&gt;  &lt;p&gt;The Columbus Give Camp is July 17-19 and will be held at the &lt;a href="http://www.bing.com/maps/default.aspx?where1=440+Polaris+Parkway+Westerville,+OH+43082&amp;amp;FORM=LMIEMN" target="_blank"&gt;Quick Solutions office&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;.What is a “Give Camp?”&lt;/p&gt;  &lt;p&gt;The goal of the Give Camp is to pair charities that have technology based needs with people from the development community who are willing to donate their time and help those charities out. We will start on Friday the 17th, and work STRAIGHT THROUGH (OK, you don’t &lt;em&gt;have&lt;/em&gt; to stay overnight if you can’t) until Sunday to do our best to provide the charity with what they need.&lt;/p&gt;  &lt;p&gt;We are looking for both volunteers and charities. If you are interested, or know someone (volunteer or charity) that might be interested, please visit the &lt;a href="http://www.columbusgivecamp.org/GiveCamp/" target="_blank"&gt;Give Camp website&lt;/a&gt; and register.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/06/15/camping-without-the-insects.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/06/15/camping-without-the-insects.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/51.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=5mTyiiEY6Jk:Q4idkHVB-iQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=5mTyiiEY6Jk:Q4idkHVB-iQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=5mTyiiEY6Jk:Q4idkHVB-iQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/06/15/camping-without-the-insects.aspx</guid>
            <pubDate>Mon, 15 Jun 2009 22:31:23 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/51.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/06/15/camping-without-the-insects.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/51.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Indy Code Camp Recap</title>
            <category>.NET</category>
            <category>Events</category>
            <category>WCF</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/05/16/indy-code-camp-recap.aspx</link>
            <description>&lt;p&gt;Thanks to everyone who attended my talk on custom WCF behaviors at the Indy Code Camp. I hope you all found the topic interesting and the content useful.&lt;/p&gt;
&lt;p&gt;You can get the slides and code samples here:&lt;/p&gt;
&lt;iframe style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 26px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" marginheight="0" src="http://cid-de4aebf19948423f.skydrive.live.com/embedrow.aspx/Public/Code%20Samples/IndyCodeCampCustomBehavior/CodeSamples.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;iframe style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 26px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" marginheight="0" src="http://cid-de4aebf19948423f.skydrive.live.com/embedrow.aspx/Public/Code%20Samples/IndyCodeCampCustomBehavior/WCF%20Behaviors.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;For those who might be interested, I’ll be presenting an Intro to WCF talk at &lt;a href="http://cinnug.org/"&gt;Cincinnati .NET Users Group&lt;/a&gt; in the future. More information will be posted here in the future.&lt;/p&gt;
&lt;div style="TEXT-ALIGN: left; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px" class="wlWriterHeaderFooter"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/05/16/indy-code-camp-recap.aspx"&gt;&lt;img border="0" alt="DotNetKicks Image" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/05/16/indy-code-camp-recap.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://jamescbender.com/bendersblog/aggbug/50.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=cLgckxW2rCE:cQNGT8Y3NmY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=cLgckxW2rCE:cQNGT8Y3NmY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=cLgckxW2rCE:cQNGT8Y3NmY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/05/16/indy-code-camp-recap.aspx</guid>
            <pubDate>Sun, 17 May 2009 02:57:59 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/50.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/05/16/indy-code-camp-recap.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/50.aspx</wfw:commentRss>
        </item>
        <item>
            <title>If I Do A Good Job, Can We Go To Dietsch Brothers for Ice Cream After The Meeting?</title>
            <category>.NET</category>
            <category>Architecture</category>
            <category>Development</category>
            <category>Events</category>
            <category>Shameless self promotion</category>
            <link>http://jamescbender.com/bendersblog/archive/2009/04/26/if-i-do-a-good-job-can-we-go-to.aspx</link>
            <description>&lt;p&gt;This Tuesday, April 28th, I’ll be speaking at the &lt;a href="http://fanug.org/default.aspx"&gt;Findlay Area .NET User Group&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ll be presenting “How I Learned To Love Dependency Injection,” which if my .NET Kicks stats are to be believed, is turning out to be quite the popular talk.  The meeting is at the Marathon Oil building in downtown Findlay. &lt;/p&gt;  &lt;p&gt;I spoke at this group a couple of years ago and had a GREAT time. I’m excited to be going back! &lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left; margin:0px; padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://jamescbender.com/bendersblog/archive/2009/04/26/if-i-do-a-good-job-can-we-go-to.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://jamescbender.com/bendersblog/archive/2009/04/26/if-i-do-a-good-job-can-we-go-to.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" alt="DotNetKicks Image" border="0/" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/49.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=IMNJF5SKPxY:yDuAv5kv0y4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?i=IMNJF5SKPxY:yDuAv5kv0y4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BendersBlog?a=IMNJF5SKPxY:yDuAv5kv0y4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BendersBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2009/04/26/if-i-do-a-good-job-can-we-go-to.aspx</guid>
            <pubDate>Sun, 26 Apr 2009 23:28:20 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/49.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2009/04/26/if-i-do-a-good-job-can-we-go-to.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/49.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
