<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>There and Back Again</title><link>http://blogs.msdn.com/howard_dierking/default.aspx</link><description>A Publisher's Journey Into His Former Life</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>brownfield development – other ideas?</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/09/02/brownfield-development-other-ideas.aspx</link><pubDate>Thu, 03 Sep 2009 02:23:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9890638</guid><dc:creator>hdierking</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9890638.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9890638</wfw:commentRss><description>&lt;p&gt;If you haven’t been following it over the last couple of months, we’ve been running a series of articles about brownfield development – authored by &lt;a href="http://www.jameskovacs.com/blog/"&gt;James Kovacs&lt;/a&gt;, &lt;a href="http://codebetter.com/blogs/kyle.baley/default.aspx"&gt;Kyle Baley&lt;/a&gt;, and &lt;a href="http://www.igloocoder.com/"&gt;Donald Belcham&lt;/a&gt;.&amp;#160; The big idea here is that rather than have yet another article or set of articles about implementing some new technology from the ground up (and usually in some kind of contrived scenario), we wanted to show how you can drive incremental improvements into existing codebases (hence the term “brownfield” as opposed to “greenfield”).&amp;#160; &lt;/p&gt;  &lt;p&gt;For the first of these series’, we wanted to address Web development – traditional ASP.NET development to be more specific.&amp;#160; Therefore, we have taken an existing open source project, &lt;a href="http://www.screwturn.eu/"&gt;ScrewturnWiki&lt;/a&gt;, and have systematically refactored it along a bunch of different dimensions to produce the following.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="674"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/dd758790"&gt;Getting Your House in Order&lt;/a&gt;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is part one of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This first part helps to get your house in order with good development practices on an existing codebase, including version control, issue tracking, and automated self-contained build scripts. ASP / ASP.NET; Test / Debug; Web &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/dd744751"&gt;Testing&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is part two of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This second part focuses on automated testing. ASP / ASP.NET; Test / Debug &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/dd894045"&gt;XHTML and CSS Improvements&lt;/a&gt;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is Part 3 of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This third part focuses on XHTML and CSS. XML / XSL; Web; ASP / ASP.NET&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/dd896902"&gt;JavaScript improvements&lt;/a&gt;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;This article will focus on refactoring ScrewTurn Wiki’s JavaScript using jQuery, and testing it with QUnit. &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/dd898316"&gt;Improvements Using jQuery and jQuery UI&lt;/a&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is part 5 of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This fifth part focuses on jQuery and jQuery UI. ASP / ASP.NET; Web &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/ee210417"&gt;Separation of Concerns&lt;/a&gt;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is part 6 of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This installment focuses on improving separation of concerns in Web applications.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/ee343987"&gt;Death of a Singleton&lt;/a&gt;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;In part 6, we moved away from the UI a little and worked more in the code behind the pages. In this article, we’ll continue that work and focus on a specific pattern that is used through the codebase: the Singleton. ASP / ASP.NET &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="250"&gt;&lt;a href="http://msdn.microsoft.com/magazine/ee424155"&gt;Disentangling Our Tangled Web&lt;/a&gt;&amp;#160;&amp;#160; &lt;/td&gt;        &lt;td valign="top" width="422"&gt;This is part 8 of a multipart article series about improving an existing &amp;quot;classic&amp;quot; ASP.NET Web application. This installment focuses on better ways to wire together loosely-coupled applications using dependency injection and an inversion of control container.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;So as we bring this particular series to a close, I have 2 areas where I would love to get your feedback.&amp;#160; &lt;/p&gt;  &lt;p&gt;First, what about this particular series worked – what didn’t?&amp;#160; Did you like the intermingled videos – was it helpful that you could also read the articles on &lt;a href="http://channel9.msdn.com/posts/howarddierking/"&gt;Channel9&lt;/a&gt; – did you even notice?&lt;/p&gt;  &lt;p&gt;Second, I think that the whole “brownfield” series concept is a repeatable one.&amp;#160; What other series’ would you like to see?&amp;#160; Some things that come to mind include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Breaking a monolithic architecture in to something more service oriented &lt;/li&gt;    &lt;li&gt;WinForms refactoring – could go a bunch of different ways here &lt;/li&gt;    &lt;li&gt;Leveraging the cloud in existing apps &lt;/li&gt;    &lt;li&gt;Bring exposing workflows as first class citizens &lt;/li&gt;    &lt;li&gt;etc? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Thougts?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9890638" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Microsoft+.NET+Programming/default.aspx">Microsoft .NET Programming</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Brownfield+Development/default.aspx">Brownfield Development</category></item><item><title>2010 Column Planning</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/08/07/2010-column-planning.aspx</link><pubDate>Sat, 08 Aug 2009 02:55:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9860794</guid><dc:creator>hdierking</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9860794.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9860794</wfw:commentRss><description>&lt;p&gt;It’s that time of year once again where I go through my column lineup to see how individual columns are performing and then use that data, along with various other inputs (like what topics I think are emerging and want to get ahead of, etc.) to determine next year’s column lineup.&amp;#160; I want to extend my process to you and get your feedback on which columns are working well and which ones aren’t.&amp;#160; Additionally, just to give you a bit of additional insight, here is some of the data that I’m looking at as I go through the process.&amp;#160; Obviously, this is just one dimension of performance, but it’s also one that has a pretty large sample size so I generally trust it more than I do other measures, such as the “5-star” ratings.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/2010ColumnPlanning_EDCC/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/2010ColumnPlanning_EDCC/image_thumb.png" width="635" height="500" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So give me your thoughts.&amp;#160; If it were up to you, which columns would you run more frequently?&amp;#160; Which ones would you cancel?&amp;#160; Or more generally, is there anything on this chart that surprised you?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9860794" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Out On Paternity Leave..again</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/06/17/out-on-paternity-leave-again.aspx</link><pubDate>Thu, 18 Jun 2009 07:31:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9772702</guid><dc:creator>hdierking</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9772702.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9772702</wfw:commentRss><description>&lt;p&gt;You may remember the &lt;a href="http://blogs.msdn.com/howard_dierking/archive/2008/04/03/article-submissions-in-may.aspx"&gt;last time this happened&lt;/a&gt;.&amp;#160; Well, &lt;a href="http://blogs.msdn.com/howard_dierking/archive/2009/02/13/oh-yea-and-did-i-mention-we-had-a-baby.aspx"&gt;it’s here once again&lt;/a&gt;.&amp;#160; I’ll be away from the office, off of email – and more importantly, not processing your article submissions from 6/22 – 7/20.&amp;#160; Feel free to go ahead and submit them to &lt;a href="mailto:mmsubmit@microsoft.com"&gt;mmsubmit@microsoft.com&lt;/a&gt; – just don’t expect a response until after I get back and get through the mounds of email that I will inevitably have.&lt;/p&gt;  &lt;p&gt;We’ll be traveling all over this time, from St. Louis, MO to Houston, TX to Birmingham, AL – so if you’re in any of those cities, maybe I’ll see you around!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9772702" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Announcing a New Series: From Web Dev to RIA Dev</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/03/18/announcing-a-new-series-from-web-dev-to-ria-dev.aspx</link><pubDate>Thu, 19 Mar 2009 09:24:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9489199</guid><dc:creator>hdierking</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9489199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9489199</wfw:commentRss><description>&lt;p&gt;I’m sitting here in my hotel room at MIX 2009, where a ton of really huge announcements were made today.&amp;#160; In a much more scaled down attempt at continuing that tradition, I want to announce that starting in May, we are launching a 9 week series focused on introducing ASP.NET Web application developers to creating rich internet applications – and introduce a few other patterns along the way to help create better Web software.&lt;/p&gt;  &lt;p&gt;The approach will take an existing Web application that has been written in classic ASP.NET and refactor parts of it based on the goals of each installment.&amp;#160; Some of the specific details are still being worked out, but I wanted to take this opportunity to introduce you to &lt;a href="http://www.jameskovacs.com/blog/"&gt;James Kovacs&lt;/a&gt;, the guy who’s going to be working them out, hopefully with some help from you.&amp;#160; I’ll let James post separately on his thoughts and initial items that he would like feedback on, but wanted to at least be the first one to tell you all how excited I am about this upcoming series!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9489199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>I’m Moving…</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/03/04/i-m-moving.aspx</link><pubDate>Wed, 04 Mar 2009 20:47:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9458732</guid><dc:creator>hdierking</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9458732.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9458732</wfw:commentRss><description>&lt;p&gt;Well, kind of.&amp;#160; One of the things I’ve realized as I’ve watched the traffic patterns for this blog is that you good folks come here more out of interest for stuff related to &lt;em&gt;&lt;a href="http://msdn.microsoft.com/magazine"&gt;MSDN Magazine&lt;/a&gt;&lt;/em&gt; (or actually, thanks to the long tail, developer certifications).&amp;#160; That, combined with an invitation from a community of folks that I both highly respect and also consider to be friends outside of work, has prompted me to move my more technical-style posts over to the &lt;a href="http://codebetter.com/"&gt;CodeBetter&lt;/a&gt; community.&amp;#160; You can find me there at &lt;a title="http://codebetter.com/blogs/howard.dierking/" href="http://codebetter.com/blogs/howard.dierking/"&gt;http://codebetter.com/blogs/howard.dierking/&lt;/a&gt;.&amp;#160; I’ll continue to post magazine-related topics here and may actually expand that a bit (if you’re looking for certification topics, please check out &lt;a href="http://blogs.msdn.com/gerryo/"&gt;Gerry O’Brien’s blog&lt;/a&gt;) – but if you’re interested in what I have to say with respect to software design and coding, please update your links to &lt;a href="http://codebetter.com/blogs/howard.dierking/"&gt;my new home at CodeBetter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9458732" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Office Moves Can Be Frustrating…</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/02/17/office-moves-can-be-frustrating.aspx</link><pubDate>Tue, 17 Feb 2009 23:02:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9428394</guid><dc:creator>hdierking</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9428394.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9428394</wfw:commentRss><description>&lt;p&gt; Especially when you were unaware that apparently, you’re being moved to China.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/OfficeMovesCanBeFrustrating_A937/Untitled_2.jpg"&gt;&lt;img title="Untitled" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="383" alt="Untitled" src="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/OfficeMovesCanBeFrustrating_A937/Untitled_thumb.jpg" width="593" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9428394" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>Oh yea, and did I mention we had a baby?</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/02/13/oh-yea-and-did-i-mention-we-had-a-baby.aspx</link><pubDate>Sat, 14 Feb 2009 10:14:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9421078</guid><dc:creator>hdierking</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9421078.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9421078</wfw:commentRss><description>&lt;p&gt;In my last entry, I mentioned that I was back in the office because of the recent events in the economy.&amp;#160; Even with that, I realize that I’ve been pretty sluggish with respect to blogging – probably uncomfortably sluggish for those of you waiting on my to review your article submission.&lt;/p&gt;  &lt;p&gt;But really – I had good reason!&amp;#160; On January 24th, my wife and I welcomed Sarah Katherine into the world.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/OhyeaanddidImentionwehadababy_1469E/DSC03856.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC03856" border="0" alt="DSC03856" src="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/OhyeaanddidImentionwehadababy_1469E/DSC03856_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, I’ll get right on those article submissions…&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9421078" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Back on the Grid...</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/01/27/back-on-the-grid.aspx</link><pubDate>Wed, 28 Jan 2009 02:48:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9379049</guid><dc:creator>hdierking</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9379049.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9379049</wfw:commentRss><description>&lt;p&gt;Well, as it turns out based on recent economic events, it doesn't make as much sense for me to go off on parental leave in February.&amp;#160; Therefore, I will be back to reviewing articles shortly.&amp;#160; Perhaps I'll even find the time to do some technical blogging again...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9379049" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Off the Grid in February</title><link>http://blogs.msdn.com/howard_dierking/archive/2009/01/17/off-the-grid-in-february.aspx</link><pubDate>Sun, 18 Jan 2009 09:51:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9337367</guid><dc:creator>hdierking</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9337367.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9337367</wfw:commentRss><description>&lt;p&gt;I know it's been a while since I've blogged. It's not because I don't have a lot of stuff to say - I just haven't really had time to sit down and write it all out (I seem to remember &lt;a href="http://blogs.msdn.com/gblock/"&gt;Glenn&lt;/a&gt; actually &lt;a href="http://blogs.msdn.com/gblock/archive/2007/08/29/improving-blogging-efficiency.aspx"&gt;having this same problem&lt;/a&gt; - perhaps I'll have to try his approach for being a more effective blogger.)&amp;nbsp; At any rate, this post is more of a news bulletin to let you know that if you submit an article idea any time in February, it will likely go unanswered until March.&amp;nbsp; The reason is that I will be off on parental leave taking care of a new little girl (actually, I'll be the one taking care of her sister while mom takes care of the newborn).&lt;/p&gt; &lt;p&gt;At any rate, I wanted to make sure and let you know so that you wouldn't assume that a lack of response on our part indicated a lack of interest in your article idea.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9337367" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Does Anyone Else Find the Humor Here?</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/12/15/does-anyone-else-find-the-humor-here.aspx</link><pubDate>Mon, 15 Dec 2008 18:52:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9221113</guid><dc:creator>hdierking</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9221113.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9221113</wfw:commentRss><description>&lt;a href="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/DoesAnyoneElseFindtheHumorHere_6ECC/Untitled_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Untitled" src="http://blogs.msdn.com/blogfiles/howard_dierking/WindowsLiveWriter/DoesAnyoneElseFindtheHumorHere_6ECC/Untitled_thumb.jpg" width="390" height="297"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9221113" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>The Road To a New Web Site - Your Thoughts Please?</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/11/17/the-road-to-a-new-web-site-your-thoughts-please.aspx</link><pubDate>Mon, 17 Nov 2008 19:20:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9111071</guid><dc:creator>hdierking</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9111071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9111071</wfw:commentRss><description>&lt;p&gt;We're currently in the process of stepping back and taking a critical look at &lt;a href="http://msdn.microsoft.com/magazine/default.aspx"&gt;our Web site&lt;/a&gt; to see how you all are using it - and how we can redesign parts of it (big or small) to make that experience better.&amp;nbsp; We are continuously receiving your feedback on existing frustrations and we are working hard to remedy those (as a general fyi, most of the frustrations have to do with navigation).&amp;nbsp; However, in order to get a sense of whether we need to look at some of the more fundamental metaphors for the site experience, we have created a short survey which seeks to get an idea of the types of tools and degrees to which you interact with some of the modern social Web applications.&lt;/p&gt; &lt;p&gt;You can &lt;a href="https://www.surveymonkey.com/s.aspx?sm=PCpqICrWFh2o42y1pV_2fEhA_3d_3d"&gt;access the survey here&lt;/a&gt;.&amp;nbsp; It's only 8 questions, so it shouldn't take more than 10 minutes.&lt;/p&gt; &lt;p&gt;Thanks in advance for helping us to create a better online experience for you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9111071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>More Code?</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/11/06/more-code.aspx</link><pubDate>Fri, 07 Nov 2008 04:13:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9051129</guid><dc:creator>hdierking</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/9051129.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=9051129</wfw:commentRss><description>&lt;p&gt;I received my monthly progress report today on how good a job you all feel we're doing on the &lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx"&gt;&lt;em&gt;MSDN Magazine&lt;/em&gt; Web site&lt;/a&gt;.&amp;nbsp; In short, it seems like the numbers are down a bit from last month, and in culling through the verbatim responses, there was one theme that I was surprised about.&amp;nbsp; Many people that responded to our survey said that they wanted more code.&lt;/p&gt; &lt;p&gt;I have to confess that I need some help clarifying this one.&amp;nbsp; Nearly all of our articles have code in the body of the article - and at least 1/3 of them have a complete sample application that can be downloaded as reference.&lt;/p&gt; &lt;p&gt;So can you help me better understand the "more code" request here?&amp;nbsp; Are you guys wanting...&lt;/p&gt; &lt;ul&gt; &lt;li&gt;more articles with complete sample applications?&lt;/li&gt; &lt;li&gt;more code displayed in the body of the article?&lt;/li&gt; &lt;li&gt;better integration of our code explorer tool with the article?&lt;/li&gt; &lt;li&gt;something else entirely??&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9051129" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category></item><item><title>Call for Papers on Software Testing</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/09/21/call-for-papers-on-software-testing.aspx</link><pubDate>Sun, 21 Sep 2008 22:15:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8960647</guid><dc:creator>hdierking</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/8960647.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=8960647</wfw:commentRss><description>&lt;p&gt;One of the fun aspects of my job is that I get to work with some really brilliant folks - and every now and then they give me the opportunity to participate in some of the things that they are involved with.&amp;nbsp; One of those cases as of recent is the &lt;a href="http://www.itng.info/"&gt;6th International Conference on Information Technology&lt;/a&gt;.&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc501061.aspx"&gt;Test Run&lt;/a&gt; author, &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc301096.aspx"&gt;Dr. James McCaffrey&lt;/a&gt; is heading up the software testing track for the conference and invited me to also participate as a track chair.&lt;/p&gt; &lt;p&gt;Check out the &lt;a href="http://www.vteonline.com/ITNG2009/"&gt;software testing track description here&lt;/a&gt;, &lt;a href="http://www.vteonline.com/ITNG2009/ieeepaperinstruct.doc"&gt;download the template&lt;/a&gt; for submitting a paper, and &lt;a href="mailto:v-jammc@microsoft.com"&gt;send it to James here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8960647" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Events/default.aspx">Events</category></item><item><title>"Pimp Your IDE" Sweepstakes</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/08/22/pimp-your-ide-sweepstakes.aspx</link><pubDate>Sat, 23 Aug 2008 08:27:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8889812</guid><dc:creator>hdierking</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/8889812.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=8889812</wfw:commentRss><description>&lt;p&gt;So firstly, let me just answer the question that I'm sure you're asking: No.&amp;nbsp; We weren't able to get &lt;a href="http://www.mtv.com/ontv/dyn/pimp_my_ride/series.jhtml"&gt;Xzibit&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;(seriously though - X - If you want to break into the software game - email me...)&lt;/p&gt; &lt;p&gt;With that out of the way, I did want to let you know about a sweepstakes that &lt;a href="http://msdn.microsoft.com/magazine/"&gt;we&lt;/a&gt; are sponsoring in partnership with &lt;a href="http://www.techweb.com/"&gt;TechWeb&lt;/a&gt;.&amp;nbsp; As with any sweepstakes, the game is simple - &lt;a href="http://www.pimpyouridesweepstakes.com/"&gt;go to the website&lt;/a&gt; and register.&amp;nbsp; That's it.&amp;nbsp; At the end of the day, we're going to be giving away up to $10,000 in software from a variety of different companies.&amp;nbsp; Check out the &lt;a href="http://www.pimpyouridesweepstakes.com/"&gt;website&lt;/a&gt; for more information.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8889812" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/MSDN+Magazine/default.aspx">MSDN Magazine</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Contests/default.aspx">Contests</category></item><item><title>Managing Data Streams With C# Iterators</title><link>http://blogs.msdn.com/howard_dierking/archive/2008/07/01/managing-data-streams-with-c-iterators.aspx</link><pubDate>Wed, 02 Jul 2008 09:33:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8680327</guid><dc:creator>hdierking</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/howard_dierking/comments/8680327.aspx</comments><wfw:commentRss>http://blogs.msdn.com/howard_dierking/commentrss.aspx?PostID=8680327</wfw:commentRss><description>&lt;p&gt;Architecturally, I lean pretty heavily towards 2 philosophies - &lt;a href="http://www.domaindrivendesign.org/"&gt;Domain Driven Design&lt;/a&gt; and the &lt;a href="http://martinfowler.com/books.html#eaa"&gt;Rich Domain Model&lt;/a&gt; pattern.&amp;#160; And while neither requires the other for success (contrary to much of what you read out there), they seem to work well together for me, and hence, I have internalized them into a single approach for building solutions.&lt;/p&gt;  &lt;p&gt;As a result of my approach, I typically start with (and end up with) an assembly for my domain model (another assembly for my domain model's automated unit tests), an assembly for my presentation logic, and an assembly for my data access layer - or where to put it into DDD terms, the layer where my repository objects live.&amp;#160; There is an ongoing debate about how the assembly references should look - I'm not going to get into the nuances of the arguments, but these seem to be the 2 basic philosophies:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Have the data access assembly reference the domain model assembly with the UI layer referencing both (and calling the repository objects directly to get domain instances) &lt;/li&gt;    &lt;li&gt;Have the UI layer reference only the domain model assembly reference and have the domain model objects call their respective repository objects in the data access layer &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;There are a couple other more specific approaches, but I think that those give you an idea of the underlying philosophies.&amp;#160; I tend to gravitate towards philosophy #1, though I'm much more comfortable with #2 when done in conjunction with a DI container like &lt;a href="http://www.castleproject.org/"&gt;Windsor&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So there you have my general layering philosophy - UI talks to repository to get and work on domain objects.&amp;#160; Why is this important?&amp;#160; Because one of the cases that has always made me a little uncomfortable is the classic case where I need to generate a UI element like a grid and I don't need to bring back the entire domain object (or in DDD terms, the entire aggregate).&amp;#160; The 3 major approaches I have seen and used are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Return a IDbDataReader instance from the appropriate repository object in the data access layer &lt;/li&gt;    &lt;li&gt;Fetch all of the relevant results into an in-memory data structure in the data access layer and hand that back to the caller &lt;/li&gt;    &lt;li&gt;Use a SqlDataSource object at the UI layer and configure it with all of the proper query information &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I don't really like any of these solutions.&amp;#160; The problem with solution #1 is that once you pass the stream reader out of the scope where it was initiated, you are relying on the consumer code to close the reader.&amp;#160; The problem with solution #2 is that you're potentially buffering a lot of data that is going to be almost immediately discarded.&amp;#160; The problem with solution #3 (which is the one I have ended up using most frequently) is that it puts you in a situation where you are managing data access in multiple places.&lt;/p&gt;  &lt;p&gt;So I was thinking the other night that the ideal solution would be one where I could, in the same scope, manage the lifetime of my stream reader object, but still hand back some kind of safe reference to that stream to calling code - and then I remembered that &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163682.aspx"&gt;really cool C# iterators feature&lt;/a&gt; that I had thought was nifty but very rarely used.&amp;#160; I added the following method to my repository class (DB is standard AdventureWorks - ignore the horrible practice of not parameterizing my query).&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ProductsRepository
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;private const string &lt;/span&gt;COMMAND_TEXT =
        &lt;span style="color: #a31515"&gt;&amp;quot;select top {0} ProductID, [Name] from Production.vProductAndDescription where CultureID = 'en'&amp;quot;&lt;/span&gt;;

    &lt;span style="color: blue"&gt;public static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt; GetProducts(&lt;span style="color: blue"&gt;int &lt;/span&gt;numberRecords) {
        &lt;span style="color: green"&gt;/*
         * in this example, numberRecords is a very simple illustration 
         * of how you could expose more complex criteria parameters based
         * on the specific domain
         */
        &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;conn = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Settings&lt;/span&gt;.Default.AdWksCN))
        &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;cmd = conn.CreateCommand()) {
            cmd.CommandText = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(COMMAND_TEXT, numberRecords);
            conn.Open();
            &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;rdr = cmd.ExecuteReader()) {
                &lt;span style="color: blue"&gt;if &lt;/span&gt;(rdr != &lt;span style="color: blue"&gt;null&lt;/span&gt;) {
                    &lt;span style="color: blue"&gt;while &lt;/span&gt;(rdr.Read()) {
                        &lt;span style="color: blue"&gt;var &lt;/span&gt;productID = rdr.GetInt32(0);
                        &lt;span style="color: blue"&gt;var &lt;/span&gt;name = rdr.GetString(1);
                        &lt;strong&gt;&lt;span style="color: blue"&gt;yield return new &lt;/span&gt;{productID, name};&lt;/strong&gt;
                    }
                }
            }
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Note the yield return statement - when the compiler sees this, it generates a whole other class that implements IEnumerable&amp;lt;object&amp;gt; and contains the code in your method along with a whole bunch of other code to manage the enumeration activity.&amp;#160; For example, here's the code for the MoveNext method of my generated enumerable class (ala Reflector).&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private bool &lt;/span&gt;MoveNext()
{
    &lt;span style="color: blue"&gt;bool &lt;/span&gt;CS$1$0000;
    &lt;span style="color: blue"&gt;try
    &lt;/span&gt;{
        &lt;span style="color: blue"&gt;int &lt;/span&gt;CS$4$0001 = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state;
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(CS$4$0001 != 0)
        {
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(CS$4$0001 != 4)
            {
                &lt;span style="color: blue"&gt;goto &lt;/span&gt;Label_0127;
            }
            &lt;span style="color: blue"&gt;goto &lt;/span&gt;Label_00F7;
        }
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = -1;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;conn&amp;gt;5__1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;SqlConnection(Settings.Default.AdWksCN);
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = 1;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;cmd&amp;gt;5__2 = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;conn&amp;gt;5__1.CreateCommand();
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = 2;
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;cmd&amp;gt;5__2.CommandText = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(
            &lt;span style="color: #a31515"&gt;&amp;quot;select top {0} ProductID, [Name] from Production.vProductAndDescription &amp;quot; &lt;/span&gt;+ 
            &lt;span style="color: #a31515"&gt;&amp;quot;where CultureID = 'en'&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;.numberRecords);
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;conn&amp;gt;5__1.Open();
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;rdr&amp;gt;5__3 = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;cmd&amp;gt;5__2.ExecuteReader();
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = 3;
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;rdr&amp;gt;5__3 != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color: blue"&gt;while &lt;/span&gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;rdr&amp;gt;5__3.Read())
            {
                &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;productID&amp;gt;5__4 = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;rdr&amp;gt;5__3.GetInt32(0);
                &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;name&amp;gt;5__5 = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;rdr&amp;gt;5__3.GetString(1);
                &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;2__current = &lt;span style="color: blue"&gt;new &lt;/span&gt;{ productID = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;productID&amp;gt;5__4, name = &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;name&amp;gt;5__5 };
                &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = 4;
                &lt;span style="color: blue"&gt;return true&lt;/span&gt;;
            Label_00F7:
                &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;1__state = 3;
            }
        }
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;m__Finally8();
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;m__Finally7();
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.&amp;lt;&amp;gt;m__Finally6();
    Label_0127:
        CS$1$0000 = &lt;span style="color: blue"&gt;false&lt;/span&gt;;
    }
    fault
    {
        &lt;span style="color: blue"&gt;this&lt;/span&gt;.System.IDisposable.Dispose();
    }
    &lt;span style="color: blue"&gt;return &lt;/span&gt;CS$1$0000;
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;If you don't go cross-eyed from reading the compiler's choice of variable names, what you can see here is that the generated enumerator runs the query the first time MoveNext is called, then for subsequent calls, it simply calls the Read method on the data reader and returns the data elements extracted from the row.&amp;#160; When it is done enumerating, it cleans itself up, which includes calling the rest of the cleanup code you defined in the body of your method.&lt;/p&gt;

&lt;p&gt;So what's nice about this approach?&amp;#160; Well, first and foremost, I can keep all of my data access code, including projection style queries with potentially complex criteria, in the same place as my object persistence data access code.&amp;#160; At the same time, since I'm returning IEnumerable, I still retain all the benefits of a simple usage pattern (including data binding).&amp;#160; For me, this is a nice hybrid solution for many of those cases where you just need to get a little off the rails!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8680327" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Microsoft+.NET+Programming/default.aspx">Microsoft .NET Programming</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/howard_dierking/archive/tags/Domain+Driven+Design/default.aspx">Domain Driven Design</category></item></channel></rss>