<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Patrick Steele&amp;#39;s .NET Blog</title><link>http://weblogs.asp.net/psteele/default.aspx</link><description>Implements ICodeWithDotNet</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/dotnetmvp" type="application/rss+xml" /><item><title>One More Week Until Give Camp 2009</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/1Qbt2ENHyBg/one-more-week-until-give-camp-2009.aspx</link><pubDate>Fri, 10 Jul 2009 18:33:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7144968</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/07/10/one-more-week-until-give-camp-2009.aspx#comments</comments><description>&lt;p&gt;To-do lists are being checked off and the final bits of organizing are almost complete for this year's &lt;a href="http://michigangivecamp.org/cms/AnnArbor/" target="_blank"&gt;Ann Arbor Give Camp&lt;/a&gt;.&amp;#160; For those attending (&lt;a href="http://michigangivecamp.eventbrite.com/" target="_blank"&gt;you did register, didn't you&lt;/a&gt;?), we've got our &lt;a href="http://michigangivecamp.org/cms/annarbor/2009/schedule-for-2009-ann-arbor-give-camp/" target="_blank"&gt;schedule&lt;/a&gt; posted along with a nice &lt;a href="http://michigangivecamp.org/cms/annarbor/2009/ann-arbor-give-camp-details-and-answers/" target="_blank"&gt;Q&amp;amp;A section&lt;/a&gt; that should answer most of your questions on the logistics of the event.&amp;#160; If something isn't answered, &lt;a href="http://weblogs.asp.net/psteele/contact.aspx" target="_blank"&gt;let me know&lt;/a&gt; and I'll get you an answer.&lt;/p&gt;  &lt;p&gt;Last year's event was a great success and it was an honor to be one of the organizers.&amp;#160; In addition to being an organizer, I also put myself on one of the dev teams.&amp;#160; While doing development to help a charity was very enjoyable, I'm sticking to planning-only this year.&amp;#160; I want to concentrate my efforts in making sure we've got everything we need to make this weekend a success.&amp;#160; I know &lt;a href="http://www.davidgiard.com/" target="_blank"&gt;Dave Giard&lt;/a&gt; will be walking around with his Canon taking pics.&amp;#160; I'll also be floating around with my &lt;a href="http://www.dpreview.com/reviews/pentaxk10d/" target="_blank"&gt;Pentax K10D&lt;/a&gt; and a video camera.&lt;/p&gt;  &lt;p&gt;Don't miss this opportunity to work alongside some great developers, learn some new skills/hone your existing skills and help out a local charity.&amp;#160; You'll be glad you did!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3290934e-8ab6-4983-97f8-d45d9190b650" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/GiveCamp" rel="tag"&gt;GiveCamp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ann+Arbor" rel="tag"&gt;Ann Arbor&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7144968" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/1Qbt2ENHyBg" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/GiveCamp/default.aspx">GiveCamp</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/07/10/one-more-week-until-give-camp-2009.aspx</feedburner:origLink></item><item><title>Comparing Two Arrays</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/i8i79Lz_vko/comparing-two-arrays.aspx</link><pubDate>Fri, 10 Jul 2009 01:19:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7144203</guid><dc:creator>PSteele</dc:creator><slash:comments>3</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/07/09/comparing-two-arrays.aspx#comments</comments><description>&lt;p&gt;I was looking at some old code today that was checking if two byte arrays had the same data in them.&amp;#160; It was a simple loop that compared each element.&amp;#160; I recalled my blog post from November of last year about &lt;a href="http://weblogs.asp.net/psteele/archive/2008/11/24/verifying-collections-arrays-in-ms-unit-testing.aspx" target="_blank"&gt;comparing collections/arrays in MSTest&lt;/a&gt; and thought, &amp;quot;I wonder if LINQ has something similar&amp;quot;?&lt;/p&gt;  &lt;p&gt;As a matter of fact it does!&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/bb909252.aspx" target="_blank"&gt;IEnumerable&amp;lt;T&amp;gt;.SequenceEqual()&lt;/a&gt; does exactly what I was looking for.&amp;#160; By default, it uses the type's default comparer, or you can supply your own.&amp;#160; Very nice!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ba4de3da-d7e6-4d2c-8415-2d2c6f169221" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7144203" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/i8i79Lz_vko" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/LINQ/default.aspx">LINQ</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/07/09/comparing-two-arrays.aspx</feedburner:origLink></item><item><title>LINQ: Quickly Create Dictionaries with ToDictionary</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/lUJLn1BBI2E/linq-quickly-create-dictionaries-with-todictionary.aspx</link><pubDate>Tue, 30 Jun 2009 21:55:48 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7137451</guid><dc:creator>PSteele</dc:creator><slash:comments>1</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/06/30/linq-quickly-create-dictionaries-with-todictionary.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blog.donnfelker.com/" target="_blank"&gt;Donn Felker&lt;/a&gt; recently blogged about a neat little &lt;a href="http://blog.donnfelker.com/post/LINQ-Any()-vs-Count().aspx" target="_blank"&gt;extension method in LINQ called Any()&lt;/a&gt;.&amp;#160; If you simply want to know if a sequence contains any elements, many people use &amp;quot;.Count() &amp;gt; 0&amp;quot; which will walk the entire sequence to compute the count whereas .Any() will stop walking as soon as it finds a single element.&amp;#160; Easy and much more efficient.&lt;/p&gt;  &lt;p&gt;It reminded me about another LINQ method I've used from time to time: ToDictionary().&amp;#160; This method will allow you to quickly create a dictionary from any IEnumerable&amp;lt;T&amp;gt;.&amp;#160; Let's start with some sample data that is in a List&amp;lt;T&amp;gt;:&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;IList&amp;lt;Person&amp;gt; people = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;Person&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                       {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Person {FirstName = &lt;span style="color: #006080"&gt;&amp;quot;Bob&amp;quot;&lt;/span&gt;, LastName = &lt;span style="color: #006080"&gt;&amp;quot;Smith&amp;quot;&lt;/span&gt;, SSN = &lt;span style="color: #006080"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Person {FirstName = &lt;span style="color: #006080"&gt;&amp;quot;Jane&amp;quot;&lt;/span&gt;, LastName = &lt;span style="color: #006080"&gt;&amp;quot;Doe&amp;quot;&lt;/span&gt;, SSN = &lt;span style="color: #006080"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;},&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Person {FirstName = &lt;span style="color: #006080"&gt;&amp;quot;Mike&amp;quot;&lt;/span&gt;, LastName = &lt;span style="color: #006080"&gt;&amp;quot;Johnson&amp;quot;&lt;/span&gt;, SSN = &lt;span style="color: #006080"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                       };&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Converting this to a dictionary is pretty trivial without LINQ.&amp;#160; Suppose we want to index these by SSN:&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var d = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, Person&amp;gt;();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;(var p &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; people)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    d.Add(p.SSN, p);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;But why waste our time doing all that when we can simply use LINQ's ToDictionary()?&amp;#160; Just give it a lambda that selects the key and you're all set:&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var indexedBySSN = people.ToDictionary(k =&amp;gt; k.SSN);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Or perhaps you don't want the entire Person object.&amp;#160; Maybe you just want a collection of last names indexed by Social Security Number (SSN).&amp;#160; No problem --there's an overload that accepts two lambdas: one to select the key and one to select the value.&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var lastNamesIndexedBySSN = people.ToDictionary(k =&amp;gt; k.SSN, e =&amp;gt; e.LastName);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;There's also two more overloads that work the same as the two above, but allow you to also provide an IEqualityComparer&amp;lt;T&amp;gt; used to compare your keys.&lt;/p&gt;

&lt;p&gt;Everyday I find more and more stuff in LINQ that helps me eliminate the mundane code and make my source more readable.&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:92e29cd9-faad-4af7-af30-c8ccb1f3b459" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7137451" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/lUJLn1BBI2E" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/LINQ/default.aspx">LINQ</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/06/30/linq-quickly-create-dictionaries-with-todictionary.aspx</feedburner:origLink></item><item><title>SRT Presents Software Stimulus Lab to Support Economic, Business Growth</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/9eS_23Kgs_Q/srt-presents-software-stimulus-lab-to-support-economic-business-growth.aspx</link><pubDate>Thu, 11 Jun 2009 03:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7116968</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/06/10/srt-presents-software-stimulus-lab-to-support-economic-business-growth.aspx#comments</comments><description>&lt;p&gt;I've been so busy recently I totally forgot to blog about this.&amp;#160; We (SRT) are going to be hosting a Software Stimulus Lab at Automation Alley next Monday, June 15th.&amp;#160; We've got a &lt;a href="http://srtsolutions.com/blogs/pressreleases/archive/2009/05/18/srt-solutions-presents-software-stimulus-lab-to-support-economic-business-growth.aspx" target="_blank"&gt;press release&lt;/a&gt; that covers the details better than I can but the important things are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Seats are limited!&amp;#160; &lt;a href="http://srtstimulus.eventbrite.com" target="_blank"&gt;Register now&lt;/a&gt; – it's only $75.&lt;/li&gt;    &lt;li&gt;This is a hands-on workshop.&amp;#160; Bring your problems and we'll help you solve them in addition to teaching you how to solve them in the future.&lt;/li&gt;    &lt;li&gt;This is not about .NET.&amp;#160; Sure, we've got a great collection of C#, WPF and Silverlight folks, but we've also got some really talented Java, Scala and Python gurus.&amp;#160; And the tools aren't everything – learn techniques and methodologies to help drive your solutions to completion.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So &lt;a href="http://srtsolutions.com/blogs/pressreleases/archive/2009/05/18/srt-solutions-presents-software-stimulus-lab-to-support-economic-business-growth.aspx" target="_blank"&gt;check out the press release&lt;/a&gt; for all of the details and &lt;a href="http://srtstimulus.eventbrite.com" target="_blank"&gt;register here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:afe31034-d9f3-4cf7-800b-ac173e83a5c2" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SRT" rel="tag"&gt;SRT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Stimulus" rel="tag"&gt;Stimulus&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7116968" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/9eS_23Kgs_Q" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/SRT/default.aspx">SRT</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/06/10/srt-presents-software-stimulus-lab-to-support-economic-business-growth.aspx</feedburner:origLink></item><item><title>ActiveRecord: Loading Records by Primary Key</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/e0wsv8zxr_M/activerecord-loading-records-by-primary-key.aspx</link><pubDate>Tue, 02 Jun 2009 22:53:14 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7106512</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/06/02/activerecord-loading-records-by-primary-key.aspx#comments</comments><description>&lt;p&gt;I was reviewing some code today for a project that uses &lt;a href="http://www.castleproject.org/ActiveRecord/" target="_blank"&gt;ActiveRecord&lt;/a&gt;.&amp;#160; One of the things that stood out for me was the use of a query to find objects by their primary key.&amp;#160; There's two reasons this raised a red flag for me:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;ActiveRecord already contains a built-in method for locating objects by their primary key: Find().&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ayende.com/Blog/Default.aspx" target="_blank"&gt;Ayende&lt;/a&gt; just made a &lt;a href="http://ayende.com/Blog/archive/2009/04/30/nhibernate-ndash-the-difference-between-get-load-and-querying-by.aspx" target="_blank"&gt;post about a month ago&lt;/a&gt; about why you shouldn't use queries to find objects by their primary key in NHibernate (which ActiveRecord uses under the hood).&amp;#160; You loose some optimizations that are built-in to NHibernate.&amp;#160; Read Ayende's post for more details.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So if you're an ActiveRecord user, how can you control which Session method to use – Get() or Load()?&amp;#160; Easy:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ActiveRecordBase.Find() uses Session.Load to load objects by primary key.&lt;/li&gt;    &lt;li&gt;ActiveRecordBase.TryFind() uses Session.Get to load objects by primary key.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And if you're ever wondering how ActiveRecord works under the hood (or how some NHibernate concepts are used), &lt;a href="http://www.castleproject.org/subversion.html" target="_blank"&gt;grab the source&lt;/a&gt; and look around!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fb67a4c6-53a8-4119-a3a8-f261e0d072fc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ActiveRecord" rel="tag"&gt;ActiveRecord&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nhibernate" rel="tag"&gt;Nhibernate&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7106512" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/e0wsv8zxr_M" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/ActiveRecord/default.aspx">ActiveRecord</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/06/02/activerecord-loading-records-by-primary-key.aspx</feedburner:origLink></item><item><title>NHibernate Queries: HQL vs. Criteria API</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/Umjw1C7ituM/nhibernate-queries-hql-vs-criteria-api.aspx</link><pubDate>Mon, 01 Jun 2009 16:37:24 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7105158</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/06/01/nhibernate-queries-hql-vs-criteria-api.aspx#comments</comments><description>&lt;p&gt;As someone who did a lot of SQL a few years ago, I was immediately more comfortable using &lt;a href="https://www.hibernate.org/hib_docs/nhibernate/html/queryhql.html" target="_blank"&gt;HQL&lt;/a&gt; for my &lt;a href="http://www.castleproject.org/ActiveRecord/" target="_blank"&gt;ActiveRecord&lt;/a&gt; queries than the Criteria API.&amp;#160; But from a documentation/samples standpoint, I see a much higher percentage of the Criteria API being used vs. HQL.&amp;#160; I still use HQL most of the time.&lt;/p&gt;  &lt;p&gt;This morning, &lt;a href="http://ayende.com/Blog/Default.aspx" target="_blank"&gt;Ayende&lt;/a&gt; had a post that &lt;a href="http://ayende.com/Blog/archive/2009/06/01/nhibernate-queries-ndash-should-i-use-hql-or-criteria.aspx" target="_blank"&gt;answered the question&lt;/a&gt; I've always wondered: Which &lt;em&gt;should&lt;/em&gt; I use?&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:edb46457-9c1b-4124-9997-c007accc5fc3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ActiveRecord" rel="tag"&gt;ActiveRecord&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HQL" rel="tag"&gt;HQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/nHibernate" rel="tag"&gt;nHibernate&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7105158" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/Umjw1C7ituM" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/ActiveRecord/default.aspx">ActiveRecord</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/06/01/nhibernate-queries-hql-vs-criteria-api.aspx</feedburner:origLink></item><item><title>Ajax Survey</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/_AiBknmLsYk/ajax-survey.aspx</link><pubDate>Thu, 28 May 2009 11:33:04 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7100094</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/05/28/ajax-survey.aspx#comments</comments><description>&lt;p&gt;From &lt;a href="http://blogs.msdn.com/brada/archive/2009/05/27/survey-ajax-usage-among-net-developers-in-2009.aspx" target="_blank"&gt;BradA&lt;/a&gt;: &lt;a href="http://codeclimber.net.nz/" target="_blank"&gt;Simone Chiaretta&lt;/a&gt; is doing another Ajax survey to see how things have changed since his &lt;a href="http://codeclimber.net.nz/archive/2007/12/21/.NET-Ajax-Survey-results.aspx" target="_blank"&gt;last survey&lt;/a&gt; a couple of years ago.&amp;#160; I just filled it out (you should too!).&amp;#160; The survey can be found &lt;a href="http://www.zoomerang.com/Survey/?p=WEB22973CYKW2H" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Oh, and if the suspense is killing you, I'll give you my answers:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I'm using AJAX in a production application.&lt;/li&gt;    &lt;li&gt;It's part of a &lt;a href="http://www.castleproject.org/monorail" target="_blank"&gt;MonoRail&lt;/a&gt; application.&lt;/li&gt;    &lt;li&gt;I'm using the &lt;a href="http://www.prototypejs.org/" target="_blank"&gt;Prototype&lt;/a&gt; on the client.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:adf19cfd-c644-4f40-90c2-e2b68abe4205" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Ajax" rel="tag"&gt;Ajax&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Survey" rel="tag"&gt;Survey&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MonoRail" rel="tag"&gt;MonoRail&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7100094" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/_AiBknmLsYk" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/MonoRail/default.aspx">MonoRail</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/05/28/ajax-survey.aspx</feedburner:origLink></item><item><title>Fabulous Adventures In Coding</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/Z-KJ0rBqdAQ/fabulous-adventures-in-coding.aspx</link><pubDate>Tue, 26 May 2009 13:55:08 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7098053</guid><dc:creator>PSteele</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/05/26/fabulous-adventures-in-coding.aspx#comments</comments><description>&lt;p&gt;If you don't read &lt;a href="http://blogs.msdn.com/ericlippert/default.aspx" target="_blank"&gt;Eric Lippert's Fabulous Adventures In Coding&lt;/a&gt;, you're really missing out on some great stuff.&lt;/p&gt;  &lt;p&gt;I've been reading his blog for years and it's always an entertaining read.&amp;#160; I caught a presentation Eric gave at the MVP Summit in 2008 and also had an opportunity to speak with him one-on-one that year as he attended the C# dinner at &lt;a href="http://www.maggianos.com/default.asp" target="_blank"&gt;Maggianos&lt;/a&gt;.&amp;#160; He's a guy that has so much knowledge, you wonder why his head doesn't explode!&amp;#160; :)&lt;/p&gt;  &lt;p&gt;I decided to write about Eric's blog today because I only take time to read his posts if I'm sure I have time to let them soak in.&amp;#160; Some blogs I subscribe to just get a quick glance-over looking for good material.&amp;#160; But Eric's is always good so I've got a number of his posts from the past few weeks that I just caught up on this morning.&amp;#160; A few gems:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx" target="_blank"&gt;&amp;quot;foreach&amp;quot; vs. &amp;quot;ForEach&amp;quot;&lt;/a&gt;: I always wondered why .NET didn't provide a ForEach extension method.&amp;#160; Now I know.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2009/05/21/in-foof-we-trust-a-dialogue.aspx" target="_blank"&gt;In Foof We Trust: A Dialogue&lt;/a&gt;: A great Q&amp;amp;A style post where Eric answers a question on why implementing an obviously cool and useful feature can quickly become very complicated.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f21114d5-25c0-4f0f-be35-dc64870745fd" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Blogging" rel="tag"&gt;Blogging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Eric+Lippert" rel="tag"&gt;Eric Lippert&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7098053" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/Z-KJ0rBqdAQ" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/Blogging/default.aspx">Blogging</category><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/05/26/fabulous-adventures-in-coding.aspx</feedburner:origLink></item><item><title>XmlSerializer ignores Culture</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/LCehUW0pNic/xmlserializer-ignores-culture.aspx</link><pubDate>Fri, 08 May 2009 12:50:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7078264</guid><dc:creator>PSteele</dc:creator><slash:comments>1</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/05/08/xmlserializer-ignores-culture.aspx#comments</comments><description>&lt;p&gt;I'm working with an automotive client that has a couple of data formats for some of their files.&amp;#160; One is a simple CSV format and the other is XML using .NET's XML Serializer (nothing fancy).&amp;#160; The CSV format is handy as it's easy for the engineers to quickly load it into Excel and view in a columnar format.&amp;#160; The XML format was implemented as a much more &amp;quot;full featured&amp;quot; version of the data and contains additional metadata to describe the data.&amp;#160; All of the maintenance of these files is very easy as we have a library for dealing with them.&lt;/p&gt;  &lt;p&gt;One of the issues that was found early on in the development of the library was that, being a global automotive company, the CSV wasn't always &amp;quot;comma separated&amp;quot;.&amp;#160; Most european countries use the period (&amp;quot;.&amp;quot;) as a thousands separator and comma (&amp;quot;,&amp;quot;) as a decimal separator (i.e. three thousand dollars in this format would be &amp;quot;3.000,00&amp;quot;).&amp;#160; A lot of work was put into trying to infer the culture of the machine that created the file so it could be read by any other culture.&amp;#160; There were bugs from time to time and we found a few anomalies that made things more difficult.&amp;#160; But it worked okay for the most part.&lt;/p&gt;  &lt;p&gt;Recently, a decision was made (by people much higher than me) that going forward, the file formats (both CSV and XML) will always be in the English/US format (en-US).&amp;#160; This made exchange of these files easier all around as our library wasn't the only application that read these files and some other apps were having problems with the multi-culture issue.&amp;#160; Standardizing on the en-US format made things a lot simpler in the CSV read/write code as well as other applications.&lt;/p&gt;  &lt;p&gt;In the XML code, I wanted to write some unit tests to make sure it also would always read/write in en-US format.&amp;#160; To my surprise, no matter what I set my Thread's CurrentCulture to, the XML always came out in en-US format.&amp;#160; I did some digging and &lt;a href="http://forums.asp.net/t/1365779.aspx" target="_blank"&gt;found a thread&lt;/a&gt; about this on the ASP.NET forums.&amp;#160; One particular post cleared things up for me.&amp;#160; &lt;a href="http://msmvps.com/blogs/martin_honnen/" target="_blank"&gt;Martin Honnen&lt;/a&gt; (XML MVP) stated:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Well XML serialization uses a standardized number and date/dateTime format, the standard is the W3C schema datatype specification &lt;a href="http://www.w3.org/TR/xmlschema-2/"&gt;http://www.w3.org/TR/xmlschema-2/&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;So don't expect XmlSerializer to pay attention to the thread's CultureInfo, it intentionally uses a standardized format to ensure you can serialize/deserialize independent of the culture/locale.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Sweet!&amp;#160; Culture isn't an issue with the XML Serializer!&amp;#160; Thanks Martin.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fb927f53-57f1-4e05-88a4-d6b8343881fe" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Serialization" rel="tag"&gt;Serialization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Culture" rel="tag"&gt;Culture&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7078264" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/LCehUW0pNic" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/05/08/xmlserializer-ignores-culture.aspx</feedburner:origLink></item><item><title>OutputDebugStringAppender in a web app?</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/wLbvh6GFEMs/outputdebugstringappender-in-a-web-app.aspx</link><pubDate>Tue, 05 May 2009 12:19:16 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7073732</guid><dc:creator>PSteele</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/05/05/outputdebugstringappender-in-a-web-app.aspx#comments</comments><description>&lt;p&gt;I spent a couple of hours yesterday trying to get log4net to log to an OutputDebugStringAppender with no success.&amp;#160; At first, I thought I had a configuration error in log4net so I added a file appender and that works fine.&amp;#160; It's a &lt;a href="http://www.castleproject.org/monorail/index.html" target="_blank"&gt;Monorail&lt;/a&gt; application that uses &lt;a href="http://www.castleproject.org/activerecord/index.html" target="_blank"&gt;ActiveRecord&lt;/a&gt; for database access.&amp;#160; There's a couple of spots where I wanted to check out the SQL being generated by ActiveRecord (NHibernate).&amp;#160; I did all my set up for log4net and even got it logging to a FileAppender.&amp;#160; But I wanted to log the SQL to an OutputDebugStringAppender.&lt;/p&gt;  &lt;p&gt;Here's my logging set up:&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;     &lt;span style="color: #008000"&gt;&amp;lt;!-- Define some output appenders --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;logfile&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;log4net.Appender.FileAppender, log4net&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;file&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;log-file.txt&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appendToFile&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;log4net.Layout.PatternLayout&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conversionPattern&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;%d [%t] %-5p %c - %m%n&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ods&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;log4net.Appender.OutputDebugStringAppender, log4net&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;log4net.Layout.PatternLayout,log4net&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conversionPattern&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;%d [%t] %-5p %c - %m%n&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;NHibernate.SQL&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ALL&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender-ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;logfile&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender-ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ods&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;         &lt;span style="color: #008000"&gt;&amp;lt;!-- priority value can be set to ALL|INFO|WARN|ERROR --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;priority&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ALL&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender-ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ods&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The log-file.txt gets all the logging I want, but I really just wanted to be able to view these statements in &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx" target="_blank"&gt;DebugView&lt;/a&gt; (gives me a bit more control in clearing out past queries, setting filters/highlight colors, etc…)&lt;/p&gt;

&lt;p&gt;I'm positive I had something like this working before but I get NOTHING in DebugView.&amp;#160; Anyone have any ideas as to what I'm doing wrong?&amp;#160; Is there a permission issue that makes this not possible?&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:688443c0-0557-41d3-a363-24d89c7edbd3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Log4Net" rel="tag"&gt;Log4Net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MonoRail" rel="tag"&gt;MonoRail&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ActiveRecord" rel="tag"&gt;ActiveRecord&lt;/a&gt;,&lt;a href="http://technorati.com/tags/NHibernate" rel="tag"&gt;NHibernate&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7073732" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/wLbvh6GFEMs" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/MonoRail/default.aspx">MonoRail</category><category domain="http://weblogs.asp.net/psteele/archive/tags/ActiveRecord/default.aspx">ActiveRecord</category><category domain="http://weblogs.asp.net/psteele/archive/tags/Log4Net/default.aspx">Log4Net</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/05/05/outputdebugstringappender-in-a-web-app.aspx</feedburner:origLink></item><item><title>New CodeMash Website</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/b199YJzqRR8/new-codemash-website.aspx</link><pubDate>Mon, 04 May 2009 18:11:10 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7071985</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/05/04/new-codemash-website.aspx#comments</comments><description>&lt;p&gt;As you've probably heard (&lt;a href="http://twitter.com/brianhprince/statuses/1696330177" target="_blank"&gt;via&lt;/a&gt; &lt;a href="http://twitter.com/JimHolmes/statuses/1696878505" target="_blank"&gt;Twitter&lt;/a&gt;), there's a new look to the CodeMash website.&amp;#160; &lt;a href="http://www.srtsolutions.com" target="_blank"&gt;SRT Solutions&lt;/a&gt; and &lt;a href="http://innercirclemedia.com" target="_blank"&gt;inner circle media&lt;/a&gt; have been working on the website for a while now getting things organized.&amp;#160; Much of the praise for the new look goes to inner circle media – &lt;a href="http://www.innercirclemedia.com/team/catherine/" target="_blank"&gt;Catherine Hayes&lt;/a&gt; and &lt;a href="http://www.innercirclemedia.com/team/alaine/" target="_blank"&gt;Alaine Karoleff&lt;/a&gt; have put a lot of thought and design into the new site and it shows!&lt;/p&gt;  &lt;p&gt;As Brian pointed out in his &lt;a href="http://twitter.com/brianhprince/statuses/1696330177" target="_blank"&gt;tweet&lt;/a&gt;, this is just the beginning – there's more to come as CodeMash get closer and closer.&amp;#160; And check out the news – CodeMash 2011 already has a date!&amp;#160; Start your planning now!&amp;#160; I'm thinking that an 18-month notice is more than enough time for your employer to give you the time off.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:984c2668-4873-436f-ab4c-d3ef239e3fc8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SRT" rel="tag"&gt;SRT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodeMash" rel="tag"&gt;CodeMash&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7071985" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/b199YJzqRR8" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/CodeMash/default.aspx">CodeMash</category><category domain="http://weblogs.asp.net/psteele/archive/tags/SRT/default.aspx">SRT</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/05/04/new-codemash-website.aspx</feedburner:origLink></item><item><title>Be careful where you place your images on your website</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/NEQrB4NtIP8/be-careful-where-you-place-your-images-on-your-website.aspx</link><pubDate>Thu, 30 Apr 2009 15:45:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7068922</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/04/30/be-careful-where-you-place-your-images-on-your-website.aspx#comments</comments><description>&lt;p&gt;Just found something interesting while researching a problem &lt;a href="http://srtsolutions.com/blogs/diannemarsh/default.aspx" target="_blank"&gt;Dianne&lt;/a&gt; was having with a website SRT was working on.&amp;#160; In checking various browsers throughout the office (FireFox, IE, Opera), a page looked ok on most of the browsers, but not all.&amp;#160; In fact, there were just a couple of machines running Firefox that had problems (others, running the same version of Firefox had no problem viewing the page correctly).&lt;/p&gt;  &lt;p&gt;Then Dianne asked me if I was running &lt;a href="http://adblockplus.org/en/" target="_blank"&gt;Adblock Plus&lt;/a&gt; (which, of course, I was).&amp;#160; This was the key.&amp;#160; Once we realized some of our images were being blocked by Adblock Plus, I checked the image as well as Adblock's filter rules.&amp;#160; It turns out the images were placed in a folder on the website called &amp;quot;ads&amp;quot;.&amp;#160; Adblock Plus, by default, has a rule to block images found in a folder called &amp;quot;ads&amp;quot; (with some exceptions):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/psteele/clip_image002_6E2BF74E.jpg"&gt;&lt;img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="445" alt="clip_image002" src="http://weblogs.asp.net/blogs/psteele/clip_image002_thumb_5457C11F.jpg" width="856" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I disabled the rule to verify my hunch.&amp;#160; Once disabled, the page displayed correctly.&amp;#160; So, be careful where you place your images on your website!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7068922" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/NEQrB4NtIP8" height="1" width="1"/&gt;</description><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/04/30/be-careful-where-you-place-your-images-on-your-website.aspx</feedburner:origLink></item><item><title>Lansing GiveCamp a great success!</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/94s-8M46UKk/lansing-givecamp-a-great-success.aspx</link><pubDate>Mon, 27 Apr 2009 14:25:03 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7060644</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/04/27/lansing-givecamp-a-great-success.aspx#comments</comments><description>&lt;p&gt;Congratulations to &lt;a href="http://www.cptloadtest.com/" target="_blank"&gt;Jay Harris&lt;/a&gt;, Jeff McWherter and all those involved in making &lt;a href="http://www.lansinggivecamp.org/" target="_blank"&gt;Lansing GiveCamp&lt;/a&gt; a great success!&amp;#160; GiveCamps are a lot of work to organize but they are so fun and rewarding.&amp;#160; The press is picking up on their hard work too:&lt;/p&gt;  &lt;p&gt;&lt;font class="Box_40389282_Headline"&gt;&lt;a href="http://www.wwj.com/Lansing-GiveCamp-Develops-Free-Software-For-Nonpro/4273994" target="_blank"&gt;Lansing GiveCamp Develops Free Software For Nonprofits&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://amlansing.com/amLansing/Harris_4.27.html" target="_blank"&gt;Interview with Jay Harris on AM Lansing&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And don't forget, Ann Arbor is planning it's second &lt;a href="http://michigangivecamp.org/cms/AnnArbor/" target="_blank"&gt;GiveCamp for July 17, 18 and 19&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:88824a3f-2cd5-425d-be40-1014de4b06ce" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Lansing" rel="tag"&gt;Lansing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/GiveCamp" rel="tag"&gt;GiveCamp&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7060644" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/94s-8M46UKk" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/GiveCamp/default.aspx">GiveCamp</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/04/27/lansing-givecamp-a-great-success.aspx</feedburner:origLink></item><item><title>Customizing Send To in Vista</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/6onpPS3xbM0/customizing-send-to-in-vista.aspx</link><pubDate>Wed, 22 Apr 2009 14:39:49 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7056414</guid><dc:creator>PSteele</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/04/22/customizing-send-to-in-vista.aspx#comments</comments><description>&lt;p&gt;Ok, I admit it, I'm coming late to the game in terms of Vista.&amp;#160; I never played with any of the betas when they first came out.&amp;#160; And when it was finally released to some rather unflattering press, I smiled in content as I continued to move forward with Windows XP.&amp;#160; I finally moved to Vista back in November of last year when I got a new laptop.&amp;#160; With a core 2 duo CPU and 4gb of RAM, Vista has been running pretty good for me.&amp;#160; There's still the occasional hiccup that frustrates me and I'm really looking forward to Windows 7 – but for now, Vista works fine.&lt;/p&gt;  &lt;p&gt;Today I needed to tweak my &amp;quot;Send To&amp;quot; menu in Vista and realized it's location has moved from XP.&amp;#160; I was really surprised that I hadn't fiddled with my Send To menu until now (5 months after getting the new laptop!).&amp;#160; A quick google search told me where to go to customize my Send To menu in Vista:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.howtogeek.com/howto/windows-vista/customize-the-windows-vista-send-to-menu/" target="_blank"&gt;Customize the Windows Vista Send To Menu&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c2b21557-6466-4deb-8c1f-1cd2c1613bdc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Vista" rel="tag"&gt;Vista&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SendTo" rel="tag"&gt;SendTo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Customize" rel="tag"&gt;Customize&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7056414" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/6onpPS3xbM0" height="1" width="1"/&gt;</description><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/04/22/customizing-send-to-in-vista.aspx</feedburner:origLink></item><item><title>ASP.NET MVC and Resolving Controllers with Windsor</title><link>http://feedproxy.google.com/~r/dotnetmvp/~3/Iye8cEK_ZzY/asp-net-mvc-and-resolving-controllers-with-windsor.aspx</link><pubDate>Tue, 07 Apr 2009 15:07:38 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7033369</guid><dc:creator>PSteele</dc:creator><slash:comments>1</slash:comments><comments>http://weblogs.asp.net/psteele/archive/2009/04/07/asp-net-mvc-and-resolving-controllers-with-windsor.aspx#comments</comments><description>&lt;p&gt;Last week, while working on an ASP.NET MVC app, I wanted to plug in &lt;a href="http://www.castleproject.org/container/index.html" target="_blank"&gt;Windsor&lt;/a&gt; and use IoC to resolve my controllers.&amp;#160; A couple of Google searches and I came across &lt;a href="http://blog.andreloker.de/default.aspx" target="_blank"&gt;Andre Loker's blog&lt;/a&gt; where he &lt;a href="http://blog.andreloker.de/post/2009/03/28/ASPNET-MVC-with-Windsor-programmatic-controller-registration.aspx" target="_blank"&gt;describes step-by-step&lt;/a&gt; how to achieve this – and it was just about a week ago!&amp;#160; What timing!&lt;/p&gt;  &lt;p&gt;If you read the full article, you'll see at the end he has a &amp;quot;More Simplifications&amp;quot; section which I recommend you implement.&amp;#160; It makes things even, uh, simpler!&amp;#160; Thanks Andre.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e36fbdf-c3b1-4bc0-9d82-ea2451cea739" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET+MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windsor" rel="tag"&gt;Windsor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IoC" rel="tag"&gt;IoC&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7033369" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/dotnetmvp/~4/Iye8cEK_ZzY" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/psteele/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/psteele/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><feedburner:origLink>http://weblogs.asp.net/psteele/archive/2009/04/07/asp-net-mvc-and-resolving-controllers-with-windsor.aspx</feedburner:origLink></item></channel></rss>
