<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>David Redding</title>
        <link>http://geekswithblogs.net/davenet/Default.aspx</link>
        <description>Blog? What blog? Theres no blog to see here.  Please move along</description>
        <language>en-US</language>
        <copyright>Dave Redding</copyright>
        <managingEditor>DavidARedding@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>David Redding</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/davenet/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/DavidRedding" type="application/rss+xml" /><item>
            <title>Hot Damn!!</title>
            <category>Personal</category>
            <category>XNA</category>
            <category>Speaking</category>
            <category>Misc Tech Stuff</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/288713535/122075.aspx</link>
            <description>&lt;p&gt;I know a WMDODN (West Michigan Day of .Net) Post is in order, but that can wait.  check this out!&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="http://blogs.msdn.com/xna/archive/2008/05/07/announcing-xna-game-studio-3-0-community-technical-preview-ctp.aspx"&gt;http://blogs.msdn.com/xna/archive/2008/05/07/announcing-xna-game-studio-3-0-community-technical-preview-ctp.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Finally, we can start building games for our zunes! WOOT!  I expect to create a talk on the topic very soon&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122075"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122075" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/122075.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/288713535" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/05/12/122075.aspx</guid>
            <pubDate>Mon, 12 May 2008 14:14:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/122075.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/05/12/122075.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/122075.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/122075.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F05%2F12%2F122075.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/05/12/122075.aspx</feedburner:origLink></item>
        <item>
            <title>My traveling talk begins with CODODN!</title>
            <category>Techie .Net Stuff</category>
            <category>Because Josh Holmes made me</category>
            <category>Speaking</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/275806608/121517.aspx</link>
            <description>&lt;p&gt;    The C# variety Show began on Thursday with my trip to &lt;a target="_blank" href="http://www.glugnet.org/"&gt;GLUG.net in Lansing&lt;/a&gt;, (&lt;em&gt;this is a great group of guys and gals, and if your free, I highly recommend you to attend, they even have a user group in Flint now!&lt;/em&gt;) and didn't stop until yesterday when I got home from CODODN.&lt;/p&gt;
&lt;p&gt;     At about 6:30 on Friday, &lt;a target="_blank" href="http://www.mcwherter.net/blog/"&gt;Mr. McWherter&lt;/a&gt; shows up at my house and the road trip begins.  After about 4.5 hours, stopping only for necessities we arrive in Wilmington Ohio around.  After checking in at the hotel adjoined to the conference center we started twittering to find out if anyone else had made it down yet, and got no love.  Now...for those of you who have never visited Wilmington, this picture should illustrate what it's like...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/wilmington_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border="0" alt="wilmington" align="left" width="244" height="244" src="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/wilmington_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;    Right...almost the middle of nowhere...However the &lt;a target="_blank" href="http://www.robertscentre.com/"&gt;Roberts Conference Center&lt;/a&gt; is conveniently located between the 3 major user groups in the area: &lt;a target="_blank" href="http://cinnug.org/"&gt;Cincinnati&lt;/a&gt;, &lt;a target="_blank" href="http://daytondevgroup.net/"&gt;Dayton&lt;/a&gt; and &lt;a target="_blank" href="http://condg.org/"&gt;Columbus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;    Unfortunately, I didn't get the opportunity to visit any of the sessions because I had to polish up the demos for my presentation.  I did however get to hang with some of the best speakers around in the speakers lounge.  It was great to be surrounded by folk who knew what they were doing and were able to throw this newbie speaker some great hints (&lt;em&gt;Like, write your demos before you show up to the conference&lt;/em&gt;).  Also, with three user groups involved I was able to meet A lot of great folks.  All in all, the venue was a perfect fit for the conference. &lt;/p&gt;
&lt;p&gt;    I had just finished up my Demos when it was my turn to present.  At first, there were only a handful of people in the room, but within a span of just a few minutes, there were people standing in the back.  I was nervous as hell, but managed to get through the presentation, even with my funky new presentation mouse constantly wanting to zoom in on everything (&lt;em&gt;Kudos to Mr. Prince for the presenter mouse&lt;/em&gt;).  I had a lot of good questions throughout the presentation and most of the folk seemed to respond well to the "bite-sized-pieces-of-information" format.  I even managed to get a few laughs out of my crude since of humor. One of the best pieces of feedback I received was that my talk was "..Like the man show meets the Nerd show"...so maybe "Girls on trampolines" isn't to racy for my talk after all :)&lt;/p&gt;
&lt;p&gt;   &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0077.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border="0" alt="100_0077" align="right" width="244" height="184" src="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0077_thumb.jpg" /&gt;&lt;/a&gt; After my presentation, I had the chance to hang out with &lt;a target="_blank" href="http://www.joshholmes.com/"&gt;Josh Holmes&lt;/a&gt; and &lt;a target="_blank" href="http://objo.com/"&gt;Joe O'Brian&lt;/a&gt; where we talked about presentation styles and they regaled presenting war stories (&lt;em&gt;I especially like how Joe was trying to make a point and almost fell of the stage...priceless!&lt;/em&gt;).  After the final presentations let out, we all ventured into the main ballroom for the swag give away.  Some folks walked away with great gear, including licenses to Infragistics controls, Refactor and a host of other fantastic developer tools.  &lt;/p&gt;
&lt;p&gt;    Once the conference was declared closed, most of us headed over to Max and Erma's, which was attached to the hotel/conference center.  Due to a mis-communication, the restaurant had no idea that we were coming.  Eventually we wound up with a party of 30, which the Hostess' and wait staff handled very elegantly.  The service was top notch, however, most of us never received our appetizers (&lt;em&gt;those of us back in the restaurant..there were quite a few of us still in the bar&lt;/em&gt;).  So dinner went GREAT and the food was fantastic (&lt;em&gt;Loved my heartattack-on-a-bun-pulling-over-in-Toledo-on-the-way- back-to-blow-up-a-restroom burger...thanks Mr. Hawley and Mr. Prince&lt;/em&gt;).  &lt;/p&gt;
&lt;p&gt;    After things quieted down at the dinner table, about half (&lt;em&gt;if not more&lt;/em&gt;) of us ventured up the Mr. &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0118.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border="0" alt="100_0118" align="left" width="333" height="251" src="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0118_thumb.jpg" /&gt;&lt;/a&gt;Blankenburgs room for a little poker party.  things got off to a great start, at my table was Dave Smith, &lt;a target="_blank" href="http://www.codinggeekette.com/"&gt;Sarah Dutkiewicz&lt;/a&gt;, &lt;a target="_blank" href="http://programwith.net/"&gt;Matt Casto&lt;/a&gt;, &lt;a target="_blank" href="http://jamescbender.com/bendersblog/Default.aspx"&gt;James Bender&lt;/a&gt;, Monish (Mo) Nagisetty, Phil (&lt;em&gt;Can't remember your last name chief&lt;/em&gt;) and &lt;a target="_blank" href="http://www.danrigsby.com/blog/"&gt;Dan Rigsby&lt;/a&gt;.  I had never had a chance to sit and hang out with most of these guys so it was great, drinking &lt;strong&gt;Sam Adams&lt;/strong&gt; (&lt;em&gt;even though Blankenburg got Miller and Coors just to f with me&lt;/em&gt;) and talking a combination of smack and tech.&lt;/p&gt;
&lt;p&gt;    A couple of hours later, we combined tables where it was Me (&lt;em&gt;I made it woot!&lt;/em&gt;), Dave, Phil, &lt;a target="_blank" href="http://www.jeffblankenburg.com/index.html"&gt;Jeff Blankenburg&lt;/a&gt;, &lt;a target="_blank" href="http://www.mcwherter.net/blog/"&gt;Jeff McWherter&lt;/a&gt; Kevin (&lt;em&gt;blanking on your last name to bud&lt;/em&gt;) &lt;a target="_blank" href="http://www.coreyhaines.com/coreysramblings/"&gt;Cory Haines&lt;/a&gt;, and I think &lt;a target="_blank" href="http://www.darrellhawley.com/"&gt;Darrell Hawley&lt;/a&gt; (&lt;em&gt;I had a bit of whisky in me by this point so I'm a little fuzzy on the details&lt;/em&gt;).  I ended up going out on the second hand where I called Kevin, thought he was bluffing...but he ended up having a flush and taking me out.  Was a great game and I walked away with "Extreme programming adventures in c#" as a consolation prize.  I do remember that at one point, Amanda Laucher Took all my chips while I was ordering Pizza and made them all pink...I immediately grabbed one of Dave Smiths chip racks and exchanged it for the pink one.  The night continued on in due form with lots of great tech talk and a whole lot of drunk humor.  Mad props go out to Blankenburg and the rest of the MS guys that made this happen.  It was a great way to end a fantastic conference.  &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0151.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" border="0" alt="100_0151" align="right" width="373" height="281" src="http://geekswithblogs.net/images/geekswithblogs_net/davenet/WindowsLiveWriter/Mytravelingtalkbegins_BB8/100_0151_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;    The Next morning,  those of us who had survived the night of poker ventured down to Max and Ermas once again for a fantastic breakfast.  Shortly thereafter, we all headed back home.&lt;/p&gt;
&lt;p&gt;    This was my first overnight stay for a conference and I enjoyed every last minute of it.  A perfect way to bring many people who are passionate about what they do together.  I had the opportunity to meet and talk with a fantastic group of professionals who are dedicated to the community.  I can't wait till the &lt;a target="_blank" href="http://www.wmdotnet.org/dodn08/"&gt;Western Michigan day of .net&lt;/a&gt; where we can all meet up again.  After that, who knows, maybe the &lt;a target="_blank" href="http://www.clevelanddodn.org/"&gt;Cleveland Day of .net&lt;/a&gt;? or even the upcoming &lt;a target="_blank" href="http://portal.artemis-solutions.com/glugnet/"&gt;Lansing Day of .net&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121517"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121517" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/121517.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/275806608" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/04/22/121517.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 01:23:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/121517.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/04/22/121517.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/121517.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/121517.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F04%2F22%2F121517.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/04/22/121517.aspx</feedburner:origLink></item>
        <item>
            <title>Lets start this show!</title>
            <category>Speaking</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/272968232/121353.aspx</link>
            <description>&lt;p&gt;    So last night kicked off my tour with the &lt;strong&gt;C# Variety show&lt;/strong&gt; talk that i'll be giving in about 5 other places &lt;em&gt;(as of this writing&lt;/em&gt;)&lt;em&gt;.&lt;/em&gt;  I had the opprtunity to present before a fairly large group of folk at &lt;a href="http://www.glugnet.org/"&gt;GLUG .net&lt;/a&gt;.  And I have to say that they were fantastic hosts.  I got alot of great feedback on the talk and we had a great time at the bar afterwards (&lt;em&gt;As is tradition for all user groups&lt;/em&gt;). &lt;/p&gt;
&lt;p&gt;    I'll  be on the road tonight carpoolin' with &lt;a href="http://www.mcwherter.net/wordpress/?p=150"&gt;Jeff McWherter&lt;/a&gt; starting tonight.  I've got two seats left in the BaddAss-Mobile if your interested in riding,drop me a line.  We'll both be speaking at the &lt;a href="http://cinnug.org/cododn/default.aspx"&gt;CODODN &lt;/a&gt;Tomorrow, and I encourage you all to just show up.  I'll be presenting around 2:50 in the afternoon. &lt;/p&gt;
&lt;div style="FLOAT: left"&gt;&lt;a href="http://www.cinnug.org/cododn/"&gt;&lt;img alt="Central Ohio Day of .NET" border="0" src="http://www.cinnug.org/images/CentralOhioDoDNBadge.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;strong&gt;Where:&lt;/strong&gt;&lt;br /&gt;
Roberts Centre‎&lt;br /&gt;
123 Gano Rd&lt;br /&gt;
Wilmington, OH&lt;br /&gt;
45177 &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    I look forward to meeting you all there.  I look even more forward to sharing my bottle of makers mark after the conference with you.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121353"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121353" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/121353.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/272968232" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/04/18/121353.aspx</guid>
            <pubDate>Fri, 18 Apr 2008 15:47:17 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/121353.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/04/18/121353.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/121353.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/121353.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F04%2F18%2F121353.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/04/18/121353.aspx</feedburner:origLink></item>
        <item>
            <title>Watashi no "IL Code" seksu desu</title>
            <category>Techie .Net Stuff</category>
            <category>Other</category>
            <category>Misc Tech Stuff</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/262034996/120885.aspx</link>
            <description>&lt;p&gt;    So, I may not be entirely up on my un-couth Japanese sayings, but one thing is for sure, IL code, to the average developer (&lt;em&gt;Read: Me&lt;/em&gt;) might as well be written in the same Romaji thats in the title.  That is, it's hard to make heads or tails of, and since you most likely never, or only rarely look at it, you get very little opportunity to actually study it.  I've been the same way for the past few years, acknowledging that IL exists, and just like that ugly friend, I don't actually acknowledge there being a relationship between "It" and I in public.&lt;/p&gt;
&lt;p&gt;    That all changed for me last Friday when my buddy Joshua Haynes dropped me a note abut my "&lt;a href="http://blog.mrdaveredding.net/archive/2008/03/11/120462.aspx"&gt;Unloved Operators&lt;/a&gt;" Tech in 5 minutes post .  He was interested enough in how the ?? operator stacks up against the if(x==null) else structure that, he compiled an example and then sent me the IL code, looking for my opinion.  &lt;/p&gt;
&lt;p&gt;    So I was stuck.  I could not admit defeat because of my ignorance of IL.  So I leapt into action, quickly throwing out all the &lt;a href="http://www.urbandictionary.com/define.php?term=TLA"&gt;TLA&lt;/a&gt;'s I could in an attempt to undermine my friends intelligence.  He quickly blocked, pivoted and swatted away my attack.  Before he could completely recover I attempted the Clinton-Dodge-the-issue move I had learned from CNN, but Joshuah quickly saw through funny analogy's and interesting tangents and held his ground firmly, so....I gave in and made a trip to the &lt;strike&gt;oracle &lt;/strike&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=IL+Code+%2B+Monkeys+are+Sexy"&gt;Google&lt;/a&gt;.  Come to find out, it can be difficult to research an answer, as compared to just pulling out of god knows where.  But I think that I figured out how do answer Josh's imposing "&lt;em&gt;What do you think?&lt;/em&gt;" question.  below is the code and the IL that he sent me.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Person myself = null;&lt;br /&gt;
Person myFriend = new Person("Johhny", "Cash");&lt;br /&gt;
Person newFriend = myself ?? myFriend;&lt;br /&gt;
Console.WriteLine("The new Friend likes: {0}", newFriend.FullName());&lt;br /&gt;
&lt;br /&gt;
if (myself != null)&lt;br /&gt;
   newFriend = myself;&lt;br /&gt;
else&lt;br /&gt;
   newFriend = myFriend;&lt;br /&gt;
Console.WriteLine("The new Friend likes: {0}", newFriend.FullName());&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;IL_0012:  stloc.1&lt;br /&gt;
  IL_0013:  ldloc.0&lt;br /&gt;
  IL_0014:  dup&lt;br /&gt;
  IL_0015:  brtrue.s   IL_0019&lt;br /&gt;
  IL_0017:  pop&lt;br /&gt;
  IL_0018:  ldloc.1&lt;br /&gt;
  IL_0019:  stloc.2&lt;br /&gt;
  IL_001a:  ldstr      "The new Friend likes: {0}"&lt;br /&gt;
  IL_001f:  ldloc.2&lt;br /&gt;
  IL_0020:  callvirt   instance string Test.Person::FullName()&lt;br /&gt;
  IL_0025:  call       void [mscorlib]System.Console::WriteLine(string,&lt;br /&gt;
                                                                object)&lt;br /&gt;
  IL_002a:  nop&lt;br /&gt;
  IL_002b:  ldloc.0&lt;br /&gt;
  IL_002c:  ldnull&lt;br /&gt;
  IL_002d:  ceq&lt;br /&gt;
  IL_002f:  stloc.3&lt;br /&gt;
  IL_0030:  ldloc.3&lt;br /&gt;
  IL_0031:  brtrue.s   IL_0037&lt;br /&gt;
  IL_0033:  ldloc.0&lt;br /&gt;
  IL_0034:  stloc.2&lt;br /&gt;
  IL_0035:  br.s       IL_0039&lt;br /&gt;
  IL_0037:  ldloc.1&lt;br /&gt;
  IL_0038:  stloc.2&lt;br /&gt;
  IL_0039:  ldstr      "The new Friend likes: {0}"&lt;br /&gt;
  IL_003e:  ldloc.2&lt;br /&gt;
  IL_003f:  callvirt   instance string Test.Person::FullName()&lt;br /&gt;
  IL_0044:  call       void [mscorlib]System.Console::WriteLine(string,&lt;br /&gt;
                                                                object)&lt;br /&gt;
The top is the ?? test and below is if statements. What do you think?&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;   So, starting from the top, I began to investigate what each call was.&lt;/p&gt;
&lt;p&gt;    The first thing i needed to figure out was, what was the "IL_xxx" marker? simple, line numbers, easy enough.  Next up, what does this mean:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;brtrue.s   IL_0037&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;a little googling and i found that "&lt;em&gt;br&lt;/em&gt;" means "&lt;em&gt;Branch&lt;/em&gt;" so "&lt;em&gt;brtrue"&lt;/em&gt; must mean "&lt;em&gt;True branch from a decision&lt;/em&gt;" (&lt;em&gt;the .s seems to indicate Short form, or something of that nature&lt;/em&gt;).  So combine that with a line number and we have a basic go-to statement of&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;IF True GoTo: IL_0037&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Ok, so that tackles the low hanging fruit.  The next thing on the list was these&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;stloc.x&lt;br /&gt;
ldloc.x&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;To google for these, i had to rack my brain for a bit.  I discovered that there is an &lt;a href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.opcodes_fields.aspx"&gt;OpCodes &lt;/a&gt;object that lives in the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.aspx"&gt;system.refelction.emit namespace&lt;/a&gt;.  And surprisingly enough, it has codes that match what I'm seeing the the IL.  So I quickly discovered the following entries.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;table id="memberList" frame="lhs" class="members"&gt;
    &lt;tbody&gt;
        &lt;tr data="public;static;declared;"&gt;
            &lt;td&gt;&lt;a id="ctl00_rs1_mainContentContainer_ctl481" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe170774_c|ctl00_rs1_mainContentContainer_ctl481',this);" href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.opcodes.stloc_0.aspx"&gt;Stloc_0&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;Pops the current value from the top of the evaluation stack and stores it in a the local variable list at index 0.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;table id="memberList" frame="lhs" class="members"&gt;
    &lt;tbody&gt;
        &lt;tr data="public;static;declared;"&gt;
            &lt;td&gt;&lt;a id="ctl00_rs1_mainContentContainer_ctl413" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe170774_c|ctl00_rs1_mainContentContainer_ctl413',this);" href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.opcodes.ldloc_0.aspx"&gt;Ldloc_0&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;Loads the local variable at index 0 onto the evaluation stack.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Alright, so basically, both of these commands manipulate the Stack (&lt;em&gt;more on "The stack vs The Heap" in another post&lt;/em&gt;).  &lt;img style="FLOAT: right" height="140" alt="Stack, from wikipedia" width="164" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Data_stack.svg/391px-Data_stack.svg.png" /&gt; For now, lets just call the Stack = Fast memory but limited The Heap =Slow Memory, but massive.  Think of the stack as a tower of single bricks.  Each brick represents a single amount of data.  When you "Pop" an item of the stack you grab the top most item and remove it (&lt;em&gt;in our case, we also "Pop" from an indexed item&lt;/em&gt;), when you Push (&lt;em&gt;again, in our situation "Load into"CEQ Compares&lt;/em&gt;) your putting something. &lt;/p&gt;
&lt;p dir="ltr"&gt;There were a few other things to check out before I could move on.  For instance, what does ldnull and ceq do?&lt;/p&gt;
&lt;blockquote dir="ltr"&gt;
&lt;table id="memberList" frame="lhs" class="members"&gt;
    &lt;tbody&gt;
        &lt;tr data="public;static;declared;"&gt;
            &lt;td&gt;&lt;a id="ctl00_rs1_mainContentContainer_ctl420" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe170774_c|ctl00_rs1_mainContentContainer_ctl420',this);" href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.opcodes.ldnull.aspx"&gt;Ldnull&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;Pushes a null reference (type &lt;span class="keyword"&gt;O&lt;/span&gt;) onto the evaluation stack.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;table id="memberList" frame="lhs" class="members"&gt;
    &lt;tbody&gt;
        &lt;tr data="public;static;declared;"&gt;
            &lt;td&gt;&lt;a id="ctl00_rs1_mainContentContainer_ctl289" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe170774_c|ctl00_rs1_mainContentContainer_ctl289',this);" href="http://msdn2.microsoft.com/en-us/library/system.reflection.emit.opcodes.ceq.aspx"&gt;Ceq&lt;/a&gt;&lt;/td&gt;
            &lt;td&gt;Compares two values. If they are equal, the integer value 1 &lt;span class="keyword"&gt;(int32&lt;/span&gt;) is pushed onto the evaluation stack; otherwise 0 (&lt;span class="keyword"&gt;int32&lt;/span&gt;) is pushed onto the evaluation stack.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    Ok, simple enough. LdNull puts a &lt;strong&gt;Null Reference Type&lt;/strong&gt; onto my stack, and Ceq checks for equality.  This will become important later on.&lt;/p&gt;
&lt;p dir="ltr"&gt;    Ok, so I'm armed with some basic implements of the trade, time to start interpreting.  The second section seems a bit more straight forward, so lets start there.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;  &lt;strong&gt;IL_002a:  nop&lt;/strong&gt; &lt;br /&gt;
                    means no-operation, do nothing, waste time, etc...&lt;br /&gt;
  &lt;strong&gt;IL_002b:  ldloc.0&lt;br /&gt;
&lt;/strong&gt;                    Load into a local var whatever is in location 0 on the stack (&lt;em&gt;object "MySelf"&lt;/em&gt;)&lt;br /&gt;
  &lt;strong&gt;IL_002c:  ldnull&lt;/strong&gt;&lt;br /&gt;
                    Load a reference to a value on the heap, into my stack...&lt;br /&gt;
 &lt;strong&gt; IL_002d:  ceq&lt;br /&gt;
&lt;/strong&gt;                    Compare the last two values to each other and stuff them into the stack (&lt;em&gt;if x == null&lt;/em&gt;)&lt;br /&gt;
  &lt;strong&gt;IL_002f:  stloc.3&lt;br /&gt;
&lt;/strong&gt;                     Pop item at index 3 of the stack and into the local variable&lt;br /&gt;
  &lt;strong&gt;IL_0030:  ldloc.3&lt;/strong&gt;&lt;br /&gt;
                    Load the value stored in index 3 of the stack to the local variable stack (&lt;em&gt;the result of ceq&lt;/em&gt;)&lt;br /&gt;
  &lt;strong&gt;IL_0031:  brtrue.s   IL_0037&lt;br /&gt;
&lt;/strong&gt;                    if that value is 1, skip to line 37&lt;br /&gt;
  &lt;strong&gt;IL_0033:  ldloc.0&lt;br /&gt;
&lt;/strong&gt;                    Load the value stored at index 0 of variables into the stack (remember, the person "&lt;em&gt;MySelf&lt;/em&gt;")&lt;br /&gt;
 &lt;strong&gt; IL_0034:  stloc.2&lt;br /&gt;
&lt;/strong&gt;                    Pop the item at index 0 of the stack into the local variables (&lt;em&gt;what we just loaded);&lt;/em&gt;&lt;br /&gt;
  &lt;strong&gt;IL_0035:  br.s       IL_0039&lt;br /&gt;
&lt;/strong&gt;                    Branches us directly to line 39. do not pass go, do not collect $200&lt;br /&gt;
 &lt;strong&gt; IL_0037:  ldloc.1&lt;br /&gt;
&lt;/strong&gt;                    in our else statement, Load item at index 1 into the stack (&lt;em&gt;remember, make x = y if null , essentially)&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;  IL_0038:  stloc.2&lt;br /&gt;
                    &lt;/strong&gt;pop off item 2 from the stack into the local variable (&lt;em&gt;the actual variable getting assigned)&lt;/em&gt;&lt;br /&gt;
 &lt;strong&gt; IL_0039:  ldstr      "The new Friend likes: {0}"&lt;br /&gt;
                     &lt;/strong&gt;load  this string into the stack&lt;br /&gt;
  &lt;strong&gt;IL_003e:  ldloc.2&lt;br /&gt;
                    &lt;/strong&gt; load variable 2 into the stack (&lt;em&gt;the "NewFriend" object&lt;/em&gt;)&lt;br /&gt;
  &lt;strong&gt;IL_003f:  callvirt   instance string Test.Person::FullName()&lt;br /&gt;
                     &lt;/strong&gt;call the following method and load it's value&lt;br /&gt;
 &lt;strong&gt; IL_0044:  call       void [mscorlib]System.Console::WriteLine(string,&lt;br /&gt;
                                                                object)&lt;br /&gt;
                      &lt;/strong&gt;call this method, which has full access to the stack, so were passing it, in this order, the string "&lt;em&gt;The New Friend Likes:{0}&lt;/em&gt;" and then stack item[1] which = the return of Test.Person.FullName property.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    Well, that was quite a bit.  So the simple rundown is....it does exactly what our code tells it to.  Interesting to note though, is were newing up an object of type "Null" and doing an object comparison between it and "Myself".  This isn't bad, but it's a tad slow.  You also have to load up every property and variable to see if they do actually equate.  Find in most situations, but like in the previous post, if you make a comparison of Type B to Null from Type A, when Type B Has references Type A doesn't, your going to error out...because your loading values in Type B, that Type A is ignorant of....GetItGotItGood.&lt;/p&gt;
&lt;p dir="ltr"&gt;     Ok, so we've seen what the commands do, lets take the short route examining how the ?? works in IL.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial"&gt;  &lt;strong&gt;IL_0012:  stloc.1&lt;br /&gt;
  IL_0013:  ldloc.0&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;  IL_0014:  dup&lt;br /&gt;
                    &lt;/strong&gt;Duplicate the item on top of the stack and pushes the duplicate into the stack&lt;br /&gt;
&lt;strong&gt;  IL_0015:  brtrue.s   IL_0019&lt;br /&gt;
&lt;/strong&gt;                    If the values are the same (if the value of the object is empty like the first register) jump to 19&lt;br /&gt;
&lt;strong&gt;  IL_0017:  pop&lt;br /&gt;
&lt;/strong&gt;                    Else pop the first item off the stack and get rid of it&lt;br /&gt;
&lt;strong&gt;  IL_0018:  ldloc.1&lt;br /&gt;
  IL_0019:  stloc.2&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;  IL_001a:  ldstr      "The new Friend likes: {0}"&lt;br /&gt;
  IL_001f:  ldloc.2&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;  IL_0020:  callvirt   instance string Test.Person::FullName()&lt;br /&gt;
  IL_0025:  call       void [mscorlib]System.Console::WriteLine(string,&lt;br /&gt;
                                                                object)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial"&gt;    First off, we have obviously fewer instructions. Secondly, and most important, notice that were not doing any object comparisons or loading any objects from the heap.  so the breakdown after examining the two IL statements is this&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial"&gt;If(x == Null) is like saying (If object x is the same as object Null)&lt;br /&gt;
and&lt;br /&gt;
x??y is like saying (If object x is as empty as Brittney Spears head)&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial"&gt;    So in short, ?? is faster, and easier to evaluate because were only comparing it to an empty value in the stack, not a reference type.  Obviously the speed gain is minuscule, but it's still there.&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;font face="Arial"&gt;    Ok, so IL probably will only help you gain geek cred and debug issues that you'd rather not be debugging.  But understanding IL code is worth serious geek cred, and helps you prove (or dis-prove) your theories on how your .net code works.   And hey, chicks dig the serious geek ;)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120885"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120885" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/120885.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/262034996" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/03/31/120885.aspx</guid>
            <pubDate>Mon, 31 Mar 2008 14:52:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/120885.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/03/31/120885.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/120885.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/120885.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F03%2F31%2F120885.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/03/31/120885.aspx</feedburner:origLink></item>
        <item>
            <title>Tech in 5 Minutes: Nifty C# operators that don't get much love</title>
            <category>Five Min Tech</category>
            <category>Handy Tools</category>
            <category>Techie .Net Stuff</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/257828143/120462.aspx</link>
            <description>&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    In my travels around  .Net land, I've come to know, love and exploit several denizens of the tribe of C#.  Some of these have already been written about, such as Yield return and the =&amp;gt; operator.  But more recently, I've had the opportunity to educate some fellow travelers on two of the most useful, but least used operator.  Those being the Comparison Operator (&lt;strong&gt;?:&lt;/strong&gt;) and the Null Coalescing Operator (&lt;strong&gt;??&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;    Lets start our adventure by watching the Comparison Operator in it's natural environment.  If you watch closely, it'll show you it's syntax...&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;bool statement &lt;strong&gt;? &lt;/strong&gt;true &lt;strong&gt;:&lt;/strong&gt; false &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    Due to it's nature, this operator is sometimes called the Ternary operator. The reason being is that it takes 3 operands.  In normal use, here is what it looks like:&lt;img style="FLOAT: right; WIDTH: 129px; HEIGHT: 179px" height="358" width="247" alt="" src="http://www.zillowblog.com/wp-content/uploads/2007/07/beer.jpg" /&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;CurrentBeer.Empty==True &lt;strong&gt;?&lt;/strong&gt; CurrentBeer = Wife.GetMebeer() &lt;strong&gt;: &lt;/strong&gt;Me.TakeDrink(CurrentBeer);&lt;br /&gt;
(&lt;em&gt;this can be shortened further by taking out the ==True, since .Empty is most likely a bool property&lt;/em&gt;)&lt;br /&gt;
CurrentBeer.Empty&lt;strong&gt;?&lt;/strong&gt;CurrentBeer=Wife.GetMeBeer()&lt;strong&gt;:&lt;/strong&gt;Me.TakeDrink(CurrentBeer);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    You can see how this replaces the overly verbose syntax of :&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;If(CurrentBeer.Empty)&lt;br /&gt;
    CurrentBeer = Wife.GetMeBeer();&lt;br /&gt;
else&lt;br /&gt;
     Me.TakeDrink(CurrentBeer);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    Syntax sugar? Maybe.  But it's definitely useful as a quick way to get things done. Elegant, Efficient and Desirable, three features my first girlfriend was lacking in.&lt;/p&gt;
&lt;p dir="ltr"&gt;    But wait! Theres more!  Just send me three easy payments of $29.95!&lt;/p&gt;
&lt;p dir="ltr"&gt;  So now, lets check out the &lt;strong&gt;?? &lt;/strong&gt;operator.&lt;/p&gt;
&lt;p dir="ltr"&gt;    The ?? operator has saved me boat loads of finger_impact_on_keyboard stress ever since the advent of C# 2.0.  It's easiest to think of this operator working similar to the comparison operator above.  Lets lift it's skirt real quick and have a peek at how it functions&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;x = ValueThatMightBeNull ?? DifferentValue;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    Ok, much like the first time you played doctor, things might be confusing, but it's really simple.  Basically the &lt;strong&gt;??&lt;/strong&gt; will evaluate whether or not the thing to the left of it is null, if it is, it will evaluate and return the thing on the right.  Lets just see it in action, it's easier that way...&lt;em&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;Dear "Usually offended by my posts": &lt;strong&gt;Please&lt;/strong&gt; &lt;strong&gt;Insert vulgar joke of your choice here&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;&lt;em&gt; //This is how my wife found me&lt;br /&gt;
&lt;/em&gt;Mate SuitableMate = Mate.Get(GoodLooking)??&lt;br /&gt;
                                      Mate.Get(AverageLooking)??&lt;br /&gt;
                                      Mate.Get(DoesntHaveAnAssForAFace)??&lt;br /&gt;
                                      Mate.Get(AtleastHeHasAJob)??&lt;br /&gt;
                                      Mate.Get(Dave)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    If your confused, let me lighten things up for you hear.  Each A = B??C statement is the equivalent of saying&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;If(B != null)&lt;br /&gt;
    A = B;&lt;br /&gt;
else&lt;br /&gt;
    A = C;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    So when we string them together like that, it's just like saying &lt;em&gt;If = null else if = null else if = null&lt;/em&gt;  etc etc etc...  So, obviously, based on our previous statement, everything up to &lt;em&gt;Mate.Get(Dave)&lt;/em&gt; must have returned null if my wife wound up with me.  I do have a job now though....so I wonder if i still would have made the cut.&lt;/p&gt;
&lt;p dir="ltr"&gt;    There is one more benefit of using the ?? operator that I actually stumbled across.  Take this code as an example:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;public class DataObject&lt;br /&gt;
{&lt;br /&gt;
    public NullableObject a = 1... etc&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class BO&lt;br /&gt;
{&lt;br /&gt;
 public NullableObject  Stinks= 0;&lt;br /&gt;
&lt;br /&gt;
  public static implicit operator BO(DataObject e)&lt;br /&gt;
  {&lt;br /&gt;
      return new DataObject{Stinks= e.a};&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;now...later on in the UI of the app &lt;em&gt;(which should NOT have ANY reference to the DataObject class)&lt;/em&gt; if we write this code:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;If(MyBo==null){Console.WriteLine("WOO HOO, You have no BO!!");}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;..were going to get a compiler error.  The reason being, as far as I understand (&lt;em&gt;hopefully commenter's can expand on this&lt;/em&gt;) is that when you compile that statement, the compiler is doing type checking against the objects used in the class your checking for null in.  In other words it checks to see if anything is returning null from within the class.  Now, since the operator takes a type of DataObject, the complier expect you to have a reference to that class...if you don't, then *Poof* no compile.&lt;/p&gt;
&lt;p dir="ltr"&gt;    Now, to get around this, we can write...&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;SomeoneElsesBo = MyBo??(MyBo = new BO());&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;   ....And the compiler is happy.&lt;/p&gt;
&lt;p dir="ltr"&gt;Hell, we can even put these two operators together, check this out:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;Mate SuitableMate;&lt;br /&gt;
Step Next_Step_In_Life = ((SuitableMate = Mate.Get(GoodLooking)??&lt;br /&gt;
                                                                                Mate.Get(AverageLooking)??&lt;br /&gt;
                                                                                Mate.Get(DoesntHaveAnAssForAFace)??&lt;br /&gt;
                                                                                Mate.Get(AtleastHeHasAJob)??&lt;br /&gt;
                                                                                Mate.Get(Dave)) == Dave?SobQuietly():null)??(Step)PartyItUpWOOT();&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;  I'll leave you with this.  The best places I've found to use the ?? operator is in returning data base fields where the value might be null, here is a quick example and the best way I've found to implement the ?? solution&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;//&lt;em&gt;First i check to see if the value from the db is DBNull.value&lt;br /&gt;
//Dr = DataReader&lt;br /&gt;
//Do = Data Object with nullable Types&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
DO.ValX == DBNull.Value?null:(Int32?)dr[0]&lt;br /&gt;
//&lt;em&gt;If you don't get the ? reference after the Int32, no worries, It's a nullable type, and I'll post about it soon.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    The reason I do this, is so I can keep the actual DB value in my DataObject, which is supposed to be a true reflection of my data.  Later on, in the actual business object, where I don't accept Nullable types I can say this.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;BO.ActualValX = DO.ValX??-1;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;      And Bada-Bing, I'm good to go.  Later on, i can pass either -1 or even null back into the DB and repeat this cycle when retrieving my data, it works, and i don't have any logic, other than conversions from DBNull, in my Data Object class.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120462"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120462" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/120462.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/257828143" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/03/11/120462.aspx</guid>
            <pubDate>Tue, 11 Mar 2008 15:31:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/120462.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/03/11/120462.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/120462.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/120462.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F03%2F11%2F120462.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/03/11/120462.aspx</feedburner:origLink></item>
        <item>
            <title>Tech in 5 Min: TDD: Code, Your Way</title>
            <category>Five Min Tech</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/249568813/120461.aspx</link>
            <description>&lt;p&gt;    We've all heard the buzz acronym TDD.   But has anyone actually put these things to use in a practical way?  I know of a couple of guys who have, but for the most part, a majority of developers tend to shy away from this new fangled gadgetry.  The main reason, I believe, is that it can be difficult to justify a learning curve when:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
    &lt;li&gt; A solution in a current ver. of code exists &lt;/li&gt;
    &lt;li&gt;Management is on your ass to just "&lt;em&gt;&lt;u&gt;Get it done&lt;/u&gt;&lt;/em&gt;" &lt;/li&gt;
    &lt;li&gt;Open source projects are a natural contraceptive &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;    Now that I've stated the obvious, lets get on with it.&lt;/p&gt;
&lt;p&gt;    Requirements, everyone gets them, no one knows how to write them and they are usually so vague that you can tell someone has a huge ass their trying to cover.  The biggest pains when it comes to requirements are, the acceptance of a "Moving Target" as part of business, and flaky UI designs in the document.  Honestly, does Barbara, the manager of the mail room, &lt;em&gt;really&lt;/em&gt; know what the hell a number spinner is or is she just a control freak who needs a coke and a bottle of horse ex-lax to work that stick out?&lt;/p&gt;
&lt;p&gt;    To put it bluntly, Requirements define the business logic that needs to go into the app.  They are not justification for the app, that should have been done long ago.  Neither are they "Screens" or "Mockups".  Those get done by someone who actually (&lt;em&gt;&lt;font face="Arial"&gt;supposedly&lt;/font&gt;&lt;/em&gt;) knows what their doing.  That may be you, it may not, depends on your shop.  Either way, they don't belong in the document.&lt;/p&gt;
&lt;p&gt;    So, what do these obvious statements have to do with TDD? &lt;/p&gt;
&lt;p&gt;    Lets start at the top.  Typically, in non-TDD terms, when you get the requirements, you start coding.  Sure, you look at whats needed, pick out the sticky algorithms and look for logical objects, but ultimately, the first thing you write is:&lt;/p&gt;
&lt;blockqoute&gt;&lt;/blockqoute&gt;&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;Namespace Giveme&lt;br /&gt;
{&lt;br /&gt;
    public class Beer&lt;br /&gt;
    {&lt;br /&gt;
        public int AndWomen()&lt;br /&gt;
         {&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;    Your mileage may vary, but typically you start writing code intended for production right away.  And when the boss man speaks, you refactor refactor refactor.  What happens after several refactors?  Well, for one you've lost an easy way to CYA because none of your code matches the original requirements, it all matches what Boss man said.  So now your left, holding the bag while Barbara and the Boss man say "&lt;em&gt;We did our part, the developer is taking to long&lt;/em&gt;".  At this point you get the "&lt;em&gt;Talk&lt;/em&gt;" from someone who has no clue what it is you do, but by god, they know how to manage!&lt;/p&gt;
&lt;p&gt;    Enter TDD.  It may not cover your ass completely, but it &lt;img style="FLOAT: left; WIDTH: 207px; HEIGHT: 142px" height="137" alt="" width="200" src="http://images.foodnetwork.com/webfood/images/cooking/fruitandveggieguide/big_pineapple.jpg" /&gt;may slightly, depends on how big an ass you are.  Plus, you'll get your work done a whole lot faster.  I know what your thinking...that writing unit tests is as painful as sitting the wrong way on a pineapple (&lt;em&gt;is there a right way?)&lt;/em&gt;,  and it can be.  Typically we've been introduced to unit tests by means of testing after development, which goes something like this&lt;br /&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Manager&lt;/strong&gt;:  TDD is shiny. Bob, go write unit tests for all our legacy code&lt;br /&gt;
&lt;strong&gt;Bob&lt;/strong&gt;:  OK, but that will take me several months to complete&lt;br /&gt;
&lt;strong&gt;Manager&lt;/strong&gt;: Nonsense, your just making sure working code works, Now, Kiss the ring and get me a pineapple.  Then I expect 150% code coverage by tonight!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;    So Bob goes off and attempts to generate unit tests around the existing code.  The existing code has some pretty complex methods which must be refactored out in order to test, so more tests are written.  Come to find out the refactored methods need to be refactored again, and again and again....and new objects must be created.  This cycle can (&lt;em&gt;and in most cases does&lt;/em&gt;) create unstable code. This is what makes developers climb the bell tower, or have the sudden urge to become postmen (&lt;em&gt;if you didn't get that last joke, just move along&lt;/em&gt;). &lt;/p&gt;
&lt;p&gt;    OK, so say your starting a new project.  You've learned that unit testing after the fact leads to A LOT of re-factoring, and is a code destroying monster. So you want to avoid that at all costs.  The solution?  Write your tests first, get them out of the way.  The simplest form of TDD is:&lt;a target="_blank" href="http://www.agileprogrammer.com/dotnetguy/archive/2006/08/01/17795.aspx"&gt;&lt;img style="FLOAT: right" height="444" alt="An excellent diagram from Brad Wilson, click the image to see his blog" width="295" src="http://www.agileprogrammer.com/uploads/bradwils/red_2Dgreen_2Drefactor.png" /&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
    &lt;li&gt;Write Test &lt;/li&gt;
    &lt;li&gt;Fail Test &lt;/li&gt;
    &lt;li&gt;Write Code to pass test &lt;/li&gt;
    &lt;li&gt;Pass test &lt;/li&gt;
    &lt;li&gt;Refactor to nice code &lt;/li&gt;
    &lt;li&gt;Go To : 1 &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Otherwise known as&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p dir="ltr"&gt;1.) Red &lt;br /&gt;
2.) Green &lt;br /&gt;
3.) Refactor &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So here is how it helps you. (&lt;em&gt;I'm diggin' the numbered lists today&lt;/em&gt;)&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;1.) Unit Tests are tied to the requirements &lt;br /&gt;
2.) Writing tests first ensure you write &lt;strong&gt;&lt;u&gt;&lt;em&gt;ONLY&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt; the functionality you need &lt;br /&gt;
3.) 1 + 2 = quickly written solid code . &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;  Here's how it works.  First off, before writing any code for production at all, you break down your requirements into subsections, and then break those down. so on and so forth.  Once your at the smallest bit of requirement (&lt;em&gt;determining how much beer it would take for individual A to take individual B home in this instance&lt;/em&gt;), then you write a unit test that specifies how your method will act and look from the outside:&lt;/p&gt;
&lt;blockquote&gt;&lt;img style="FLOAT: right" alt="" src="http://bp3.blogger.com/_XZ-NrM6Icko/RZ1c6JTgYYI/AAAAAAAAAFs/11OMaFebUWs/s200/mattandrea.jpg" /&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;public void BeerGogglesTest()&lt;br /&gt;
{&lt;br /&gt;
       //We really should atleast have a container class&lt;br /&gt;
       BarFlys bf = new BarFlys();&lt;br /&gt;
&lt;br /&gt;
        //What we expect the method to return given the inputs&lt;br /&gt;
       double expectedValue = 20;&lt;br /&gt;
&lt;br /&gt;
       //Test constants&lt;br /&gt;
       //We'll talk about the whole "Mock" thing in a second.&lt;br /&gt;
&lt;br /&gt;
       int Dave= new MockPersonDave();&lt;br /&gt;
       int DavesWife=new MockPersonDavesWife();&lt;br /&gt;
&lt;br /&gt;
       double BeersAlacContent = 7.5;&lt;br /&gt;
       &lt;br /&gt;
        //Here we check&lt;br /&gt;
&lt;font face="Arial"&gt;        double HowManyBeers  = bf.NumberOfBeers(BeersAlacContent, DavesWifes,Dave)&lt;br /&gt;
&lt;br /&gt;
        //Here we assert the value we received was the value we expected&lt;br /&gt;
        Assert.IsEqual(expectedValue,HowManyBeers);&lt;br /&gt;
&lt;/font&gt;}    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So...now you compile that.  Yes, before writing any more code.  Of course the test fails with a few exceptions.  Your first task, get rid of those exceptions.  With TDD, your essentially coding to your implementation, or API.  Similar to coding to an interface.  So every bit of your application comes down to ,&lt;strong&gt;"Write enough code, &lt;u&gt;just barley enough&lt;/u&gt;, to legitimately pass the test&lt;/strong&gt;"(&lt;em&gt;notice i said Legitimately, so all you smart asses who would return 20 every time need a lesson pineapple-fu&lt;/em&gt;).  In our scenario above, we would need to implement a public BarFlys class with one and only one method.  That method would only take the 3 parameters listed.  Don't worry about extensibility or any fancy OOP crap yet.  That will come in time....maybe. &lt;br /&gt;
&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;public class BarFlys&lt;/p&gt;
&lt;p&gt;{&lt;br /&gt;
    public double NumberOfBeers(double AlacConsistancy, IPerson p1, IPerson p2)&lt;br /&gt;
    {&lt;br /&gt;
           double p1DesireToLeave = CalculateDesire(p1.InitialInhibition,p1.alacholConsumed,p1.tolorance);&lt;br /&gt;
           double p2DesireToLeave = CalculateDesire(p2.InitialInhibition,p2.alacholConsumed,p2.tolorance);&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;           return Math.Sqrt((p2.CalculateDesireAbility(p1) + p2.DesireToLeave)/p2.tolorance)*p2.CommonSense&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;    As an important aside, we must have already written tests for CalculateDesire in order for this to be a valid test run.  We'd want to test it in the same manner we are testing "NumberOfBeers."  If we didn't test  those method first, then we may end up skewing our test results if there is a failure in one or both of them.  Meaning NumberOfBeers would fail, but only because a Dependant method failed.&lt;/p&gt;
&lt;p&gt;      Once you pass that test, you move onto the next test. And continue on until you have a nice little set of tight, solid code.  After wards, you begin to refactor.  But, at this point, refactoring isn't about design changes.  Your design has already been defined by your tests.  Instead, you can focus on the real things, like optimizations and readability.&lt;/p&gt;
&lt;p&gt;       So, what are these "&lt;em&gt;Mock Objects" &lt;/em&gt;I was going on about earlier?  Well, Mocks can warrant their own blog post &lt;img style="FLOAT: left" alt="" src="http://www.fakecrap.com/images/jokes/fake_beer.jpg" /&gt; in- and-of themselves.  But here are the essentials.  A mock object works just like a bottle of O'Dules or Coors Light, it's a fake implementation of a real solid object.  Take this for example: You need to develop the front end to a website that runs exclusively off of web services.  However, like most developers, the guy working on the services was hit by a bus or married a super model (&lt;em&gt;your choice, i for one vote bus, that still leaves me the opportunity to meet this super model turned on by developers&lt;/em&gt;).  &lt;/p&gt;
&lt;p&gt;    Management has threatened to stop paying you if you don't get off your ass and start writing that front end.  The Solution? "Mock" the web services.  Essentially, your going to write an object that mimics the behavior and implements the interface of what the web services are supposed to look like.  Your also going to have those mock objects return data in the same format that the web services would.&lt;/p&gt;
&lt;p&gt;  Now, granted, it didn't take &lt;em&gt;that&lt;/em&gt; many beers when I  first met my wife. However, I think her common sense had some environmental issues to contend with, like she just saw dirty dancing or some other chick flick.  Either way, I beat the odds :)  &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120461"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120461" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/120461.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/249568813" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/03/11/120461.aspx</guid>
            <pubDate>Tue, 11 Mar 2008 15:29:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/120461.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/03/11/120461.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/120461.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/120461.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F03%2F11%2F120461.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/03/11/120461.aspx</feedburner:origLink></item>
        <item>
            <title>Central Ohio Day Of .Net</title>
            <category>Speaking</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/248953987/120423.aspx</link>
            <description>&lt;p&gt;It's that time of year again.  Where the snow hasn't quite gone away, and it's still cold as Steve Job's gaze.  Which means it must be time for a Day of .Net event! WOOT!&lt;/p&gt;
&lt;p&gt;&lt;a style="FLOAT: left" href="http://www.cinnug.org/cododn/"&gt;&lt;img alt="Central Ohio Day of .NET" border="0" src="http://www.cinnug.org/images/CentralOhioDoDNBadge.png" /&gt;&lt;/a&gt;     I'll be presenting a new talk I've derived.  Some of you may remember the XNA presentation I gave for the last DODN in Ann Arbor.  Don't worry; my ADD has kicked into overdrive and now i'm off to other sparkly things that are not XNA.&lt;/p&gt;
&lt;p&gt;    For this go-around i'll be giving a new talk that I've wrangled up from the inner most reaches of Reddingdom.  Here is the abstract in it's original and uncut format.&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Abstract&lt;/strong&gt;: The C# Variety Show! Lvl: 200-300&lt;br /&gt;
 &lt;br /&gt;
    Let's face it, Technology is boring to the non-technologist.  How many of you run home to your significant other and say "Ooh OOH Guess what I learned today…"  I'm guessing at this point you get "That's nice dear, what's for dinner?".  Well, let's change that.  If you really want something to talk about, come listen to Dave Redding explain how his wife's only job is to fetch beer from the fridge using Yield Return, or about how Mom and Dad give Kid a personally disorder since he's a Singleton.  This talk will cover a wide variety C# and Software development topics, ranging from Design patterns to C# specific implementations.   I guarantee you'll see more references to Beer, Women and small furry rodents than you ever had in any other technology talk.&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;    I'll be updating this in the weeks to come based on some excellent feedback that i've received.  But the spirit of the talk will be the same.  Roughly, this talk will cover a few key Tech in 5 min articles I've written over the past year.  Maybe I should change the title to "&lt;em&gt;Tech in 5 min Live!&lt;/em&gt;" or "&lt;em&gt;How to offend your neighbors with C#&lt;/em&gt;", either way, it's going to be a great time....assuming Ohio Isn't still buried under 123' of snow.&lt;/p&gt;
&lt;p dir="ltr"&gt;    Come on down and I might ... just might, get you to buy me a beer.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120423"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120423" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/120423.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/248953987" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/03/10/120423.aspx</guid>
            <pubDate>Mon, 10 Mar 2008 16:12:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/120423.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/03/10/120423.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/120423.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/120423.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F03%2F10%2F120423.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/03/10/120423.aspx</feedburner:origLink></item>
        <item>
            <title>Microsoft announces Open Protocol Specfication</title>
            <category>Techie .Net Stuff</category>
            <category>Other</category>
            <category>Personal</category>
            <category>Misc Tech Stuff</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/238947032/119858.aspx</link>
            <description>&lt;p&gt;The link explains it all&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/cc203350.aspx"&gt;http://msdn2.microsoft.com/en-us/library/cc203350.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;As a developer, you now have full access to the information about Open Application Programming Interfaces (APIs) and Open Protocols. All Windows client operating system API documentation is now available on this MSDN website.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Wow!!!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119858"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119858" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/119858.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/238947032" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/02/21/119858.aspx</guid>
            <pubDate>Thu, 21 Feb 2008 18:15:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/119858.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/02/21/119858.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/119858.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/119858.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F02%2F21%2F119858.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/02/21/119858.aspx</feedburner:origLink></item>
        <item>
            <title>What I've learned from bloggin'</title>
            <category>Other</category>
            <category>Personal</category>
            <category>Misc Tech Stuff</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/238827272/119845.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;    I know, 2 whole blog posts in 1 week, i'm going nuts!  Actually i'm trying to ramp up my blogging frequency, so keep an eye out for a few more tech in 5 min and other sheeeet.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;    If you would have asked me a little more than a year ago if i'd have a (psudo) active blogging habit, I would have laughed it off as something I "Should" do and dropped it.  So I still find it a little hard to believe that i've been at this for as long as I have.  &lt;/p&gt;
&lt;p&gt;    Now, while most bloggers seem to make a post in this vein targeted at non-bloggers. I'm not going to.  if you don't want to blog, don't.  Honestally, I'm not trying to convince anyone of anything and i'm narciscistic enough that I can truly say, I could give a shit less.  It's your decision to make and I fully support anyone taking on the daunting task of blogging, I also support everyone else who doesn't.&lt;/p&gt;
&lt;p&gt;    When considering starting a blog, I had the same excuses as everyone else:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
    &lt;div&gt;I failed English in H.S., there is no way I could carry on with some kind of constant writing that was open to public scrutiny. &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;I don't have time. &lt;/li&gt;
    &lt;li&gt;Does the saying "&lt;em&gt;It's better to be thought  a fool than open your mouth and remove all doubt&lt;/em&gt;" mean anything to you? &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;    And the most pervasive argument people make to get out of blogging&lt;/p&gt;
&lt;p&gt;      4.    What do I have to say that has'nt already been said before? most likely in a better way than I could ever pen!&lt;/p&gt;
&lt;p&gt;        Bearing all that in mind, I finally succumbed to my buddy &lt;a title="Josh Holmes Blog" target="_blank" href="http://www.joshholmes.com"&gt;Josh Holmes&lt;/a&gt; pressure to start a blog.  It's been an interesting trip,  and I'd like to take a moment to share with you all what i've learned along the way.&lt;/p&gt;
&lt;p&gt;      1.) &lt;strong&gt;Whatever you write on your blog is inxoriabally tied to you and your name on the internet AND the real world.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;        Boy, was this a hard lesson learned.  Like many other people, I've grown accustomed to the annomity provided by the internet.  Like schisophrinic wearing a straight jacket looking for a bathroom, I've bumbled across the web acting and speaking in ways that just are not appropriate in polite company.  Which is fine, if your assuming annoyminity. But with a blog, especially a trade blog, you are not anyonomous, not even if you use a pen name.  Someone will know who you are and let others know and then BAM, your Real Life name is tied to your writings.  Point in case: the lambda expressions tech in 5 min offended a buddy of mine.  This buddy exists in Real Life.  We drink beers together, talk shit and hangout.  So to find out that he was pissed at my real life persona because of something that my internet one did...that was quite a shock.&lt;/p&gt;
&lt;p&gt;    2.) &lt;strong&gt;People are interested in what I have to say, even if they've read about the topic 20 times already.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;         The one thing I've found through blogging is that, people like options.  Like, what kind of car to drive, where to buy their hamburger, or where they go to drink.  That urge to have "Options" tend's people to look around.  Just because Jay says Vista Sucks for this reason and that, someone else may say it sucks for other reasons.  Every blog post (&lt;em&gt;except the ripped off from the authors site&lt;/em&gt;) is a unique perspective on the world around the author.  So, yeah, someone out there is going to talk about WPF, but is it you?&lt;/p&gt;
&lt;p&gt;    3.) &lt;strong&gt;I've never learned so much about technology so fast.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;         &lt;/strong&gt;There has never been a truer statement.  When writing my blog, especially the tech in 5 min, i'm forced to double check my assumptions and do a little research before I post to my blog.  You don't want to post mis-information, and you don't want to appear a hack, so you have to study.  Also, you have to stay on top of technology if thats your blogs focus, you don't want to become stale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;    &lt;/strong&gt;4.) &lt;strong&gt;Having a blog gives you geek cred.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;        Having a blog is a highly interactive deal.  It may not seem like it, but the next time your at a launch or usergroup and you mention your blog, bam, someone's going to check it out, and possibally comment.  And, since your in print (&lt;em&gt;sorta&lt;/em&gt;) you gain crediability.  Not only for the content of your blog, but for having the huavos to put your name out there and voice your opinion.&lt;/p&gt;
&lt;p&gt;    So, i'm not going to say, "Get out there and blog" or something crazy like that, but what I will say is that if your making excuses to not blog, then your only letting yourself down.  Blogging is strangly addicitve, a great way to network with people, a fantastic way to show people what you have to offer, an excellent opprtunity to enhance your communication skills and overall, gives you a voice on the internet.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119845"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119845" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/119845.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/238827272" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/02/21/119845.aspx</guid>
            <pubDate>Thu, 21 Feb 2008 14:33:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/119845.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/02/21/119845.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/119845.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/119845.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F02%2F21%2F119845.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/02/21/119845.aspx</feedburner:origLink></item>
        <item>
            <title>Board Games and the Software Developer</title>
            <category>Game Dev</category>
            <category>Other</category>
            <category>Personal</category>
            <category>Handy Tools</category>
            <link>http://feeds.feedburner.com/~r/DavidRedding/~3/238291384/119801.aspx</link>
            <description>&lt;p&gt;     For a developer, the worst thing that can happen is to have the mind dulled.   This dulling can occur from a number of places.   Like too much heroin or watching reality TV.   So how would a developer keep his mind sharp and be entertained at the same time?   Flashy lights and bright colors only go so far.&lt;/p&gt;
&lt;p&gt;    The way I’ve discovered is some good ol' challenging board games.   Makes sense, most developers are gamers at heart.   And I’m not talking about just your standard fair of Stratego and Monopoly, but European games as well like Settlers of Catan and Power Grid.   While these games may not have the most complex rule set (&lt;em&gt;besides, after a hard day of thought, do you really want to spend the evening or weekend having to analyze rules to entertain yourself?&lt;/em&gt;) but they have a high fun factor and do lend themselves to analytical thought with strategy.  &lt;/p&gt;
&lt;p&gt;    I've compiled a list here of the board games I play at home, and what my thoughts are on them.   typically I play  with the Wife, and when time permits, the whole family.   &lt;/p&gt;
&lt;h3&gt;    1.) &lt;a href="http://www.boardgamegeek.com/game/18"&gt;Robo Rally&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: right" alt="" src="http://images.boardgamegeek.com/images/pic249264_t.jpg" /&gt;
&lt;p&gt;    Robo Rally IS the programmers game.  It takes about 35min - 2 hours to play depending.  The principal of the game is to race your robot through the flags in ascending order.  the first one to touch the last flag, Wins!  what makes this game great is the amount of cunning and analysis involved.  Each turn your dealt a number of cards.  Each card has some kind of movement associated with it.  For instance Move Forward 2 or Turn Right.  You take these cards and "Program" your robot, that is, place them, face down on 5 separate Registers (&lt;em&gt;see...programmers game&lt;/em&gt;).  Once everyone has programmed their bot, you all flip the card in the first register and your robot executes that movement.  It may mean:&lt;br /&gt;
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Falling off the edge of the board &lt;/li&gt;
    &lt;li&gt;Pushing or being pushed &lt;/li&gt;
    &lt;li&gt;Or, just doing what you planned. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;    But, unlike in real world development, there   is no debugging.   My 7 y/o Step son loves this game.  He'll take cards and turn them in his hands to figure out which way to go and how he wants to move.  &lt;/p&gt;
&lt;p&gt;    The real gotcha is that your playing on a factory floor with all kinds of other crazy stuff.  Like conveyer belts that move you and gears that will spin you.  All in all, it's a good time and I’ll keep those analytical skills sharp&lt;/p&gt;
&lt;h3 dir="ltr"&gt;    2.) &lt;a href="http://www.boardgamegeek.com/game/13"&gt;Settlers of Catan&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: right" alt="" src="http://images.boardgamegeek.com/images/pic11394_t.jpg" /&gt;
&lt;p dir="ltr"&gt;    Settlers of Catan (SoC) is a classic European game that was made around '95.  Since then it's had an explosion in its follwing.  It has spawned many other games based on the same premise.  The games will last anywhere between 45 min and 2 hours, with the typical being an hour and half.   &lt;/p&gt;
&lt;p dir="ltr"&gt;    At first I was leery to pick this one up. I thought that the rules were going to be to complex so that it couldn’t really be enjoyed by someone (&lt;em&gt;me&lt;/em&gt;) who was just wanting to get in and play.   I was wrong, very very wrong.&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    SoC is almost non-confrontational (&lt;em&gt;I say almost because you can be passive aggressive&lt;/em&gt;)  The goal is to get to 10 victory points.  You get those points by playing cards that give them to you, building small villages or upgrading the same to cities and gaining a couple of unique achievements during gameplay.  The focus of the game is a small hex board that can be re-arranged to change the game each time.   &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    During the course of the game, you build roads and cities, collect resources and buy things like knights or libraries to increase your points.  The game is simple to learn, the rules are VERY straight forward.  The strategy comes in the form of where to build to maximize your resource input.  Trading with other players is also heavily encouraged.   I would say this game is great at rewarding the successful marketer.   It'll definitely keep those relationship skills sharp.&lt;/p&gt;
&lt;h3&gt;    3.) &lt;a href="http://www.boardgamegeek.com/game/2651"&gt;Power Grid&lt;/a&gt;&lt;/h3&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    The wife and I just played this game last night.  It was some kind of fun.  I would compare it to monopoly, but that would be a gross undestatement.  It took us about 5 min to set the game up, and about 2.5 hours to play all the way through for the first time.  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    This is another &lt;img style="FLOAT: left" alt="" margin="2" src="http://images.boardgamegeek.com/images/pic173153_t.jpg" /&gt;European game made in Germany.  The premise is simple, buy power plants, buy access to cities, buy resources for the power plants, power the cities.  In our game, the first person to power 21 cities wins.  The game is engineered so that no one player can completely run away with the game.  Basically, whoever's in the lead is at a disadvantage when it comes to buying up resources and power plants.  this keeps the games very tight and makes for some interesting outcomes.  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    The rules are very simple and straight forward, but again, the strategy comes from off the board.  Will you pay more than anyone else for a power plant?  It follows auction house rules so you could end up paying much more than it's value.  Or will you try to snag up all the resources to cut the other players off?  All in all, it's a great financial and resource management game, with a built in player driven economy and balancing system.&lt;/p&gt;
&lt;h3&gt;    4.) &lt;a href="http://www.boardgamegeek.com/game/3699"&gt;Killer Bunnies, Quest for the magic Carrot&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: left" alt="" src="http://images.boardgamegeek.com/images/pic96982_t.jpg" /&gt;
&lt;p&gt;With a name like that, who can resist the temptation to play.  &lt;/p&gt;
&lt;p&gt;The excerpt from the back of the box explains it best&lt;/p&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;blockquote&gt;    Killer Bunnies is a fast paced, action filled card game, in which you must try to keep as many Bunnies alive as possible, while eliminating your opponents' Bunnies. The problem: Your opponents are armed with weapons and will stop at nothing to keep you from winning the game, which can get dreadfully vengeful, horribly nasty, hilariously messy, and just plain fun! Can you keep from being attacked by the whimsical Whisk or the torching Flame Thrower? Defend your Bunnies with the Magic Spatula, or use a Feed The Bunny card to starve out an opponent! It's off-the-wall strategic fun, where the goal is to survive and claim the Magic Carrot to win the game! &lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;Yes, your goal is to achieve the magic carrot.  The wife really likes this one, and we typically play it as a pickup game.  It takes about 30 min to work through an entire match.  This is in the same vein as Munchkins.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;    5.) &lt;a href="http://www.boardgamegeek.com/game/15363"&gt;Nexus Ops&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: right" alt="" src="http://images.boardgamegeek.com/images/pic192998_t.jpg" /&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    Nexus Ops is a fantastic tactical game, without all the overhead and rules of games like Axis and Allies or some of the more in-depth war games.  The scenario is that you have brought a squad of units (&lt;em&gt;including aliens&lt;/em&gt;) to a distant planet to find resources and stake claim to them in the name of your corporation.   But your not alone (&lt;em&gt;wouldn’t be much of a challenge that way&lt;/em&gt;).  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    This is another game where you win by accumulation of victory points.  You can duke it out or achieve objectives to get your points, and most likely you'll have to do both.  The most stunning thing about this game is the pieces, they are fantastically sculpted and look great under a black light.  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    The rules for the game are fairly simple and straight forward.  Once you've played a game or two, you'll have em' down.  this game plays in about 45 min or so for a 2 player game.  figure about an hour and half for a 3 or 4 player game.  Tactical strategy keeps you sharp on your decision making skills.  Now Get out there and kill something marines!!!!&lt;/p&gt;
&lt;h3&gt;    6.) &lt;a href="http://www.boardgamegeek.com/game/11170"&gt;Heroscape&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: right" alt="" src="http://images.boardgamegeek.com/images/pic230591_t.jpg" /&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    Honestly, Heroscape rates on my "Ok" list.  If the boys really want to play it, we will.  But the setup time is a test in patients and endurance.  Once your up and running it can be fun, especially with several people playing.  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    My favorite is to create a FPS variant and start doing things like capture the flag and double domination.  This game doesn’t get as much play as it did around Christmas, but it's still a hoot when the mood strikes us.&lt;/p&gt;
&lt;h3&gt;    7.) &lt;a href="http://www.boardgamegeek.com/game/31358"&gt;Triple Triumph&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: left" alt="" src="http://images.boardgamegeek.com/images/pic290989_t.jpg" /&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    Crainium typically makes educational games, and this one is no exception.   Visualization, Analysis and Strategy all come together when your trying to out build your opponent.  With a limited number of spots on the board, you have to try and match your pyramids colors with those around it.  You can also build Up, and get extra rewards for doing so.  &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    This is a fast game, about 15 min or so, and is really fun.  My wife and I play this a lot, as do our boys.  A great multiplayer puzzle game.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;8.) &lt;a href="http://www.boardgamegeek.com/wiki/page/Ameritrash#toc9"&gt;Monopoly, Risk, Uno, Trouble and the rest of the standard fair&lt;/a&gt;&lt;/h3&gt;
&lt;img style="FLOAT: right" height="102" alt="" width="150" src="http://www.pennsylvaniaskihouse.com/photos/Articles/1/Boardgames.jpg" /&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    With the games listed above, the standard fair doesn’t get much play.  We'll occasionally break out Risk or Monopoly on a rainy or dreary day.  But with games like Catan and Robo Rally, we really don't have much use for those "Other" kind of games.   &lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;    Uno, trouble and sorry however...those can be pretty fun and fast paced in the electronic versions.   We'll typically break those out with the kids when were a little short on time, but want to get some quality family time in.  Definitely worth checking out just for their togetherness factor.&lt;/p&gt;
&lt;p dir="ltr"&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p dir="ltr"&gt;    Well, that’s not exactly a comprehensive list.  There are a number of other games that we play.  And at this moment i'm waiting for &lt;a href="http://www.boardgamegeek.com/game/9209"&gt;Ticket to Ride&lt;/a&gt; to come in.  Looks like it'll be a good one for the wife, myself and the kids to play.  At any rate, these games provide the kind of thought processes that will keep us up on our toes as developers.  But the best part is the time you get to spend with friends and family while playing.  Nothing is able to simulate that.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119801"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119801" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davenet/aggbug/119801.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DavidRedding/~4/238291384" height="1" width="1"/&gt;</description>
            <dc:creator>Dave Redding</dc:creator>
            <guid isPermaLink="false">http://geekswithblogs.net/davenet/archive/2008/02/20/119801.aspx</guid>
            <pubDate>Wed, 20 Feb 2008 17:22:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/davenet/comments/119801.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/davenet/archive/2008/02/20/119801.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/davenet/comments/commentRss/119801.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/davenet/services/trackbacks/119801.aspx</trackback:ping>
        <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=DavidRedding&amp;itemurl=http%3A%2F%2Fgeekswithblogs.net%2Fdavenet%2Farchive%2F2008%2F02%2F20%2F119801.aspx</feedburner:awareness><feedburner:origLink>http://geekswithblogs.net/davenet/archive/2008/02/20/119801.aspx</feedburner:origLink></item>
    <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=DavidRedding</feedburner:awareness></channel>
</rss>
