<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>peterkellner.net</title>
	<link>http://peterkellner.net</link>
	<description>Software Consultant Specializing in Community Based Applications</description>
	<pubDate>Mon, 28 Apr 2008 14:34:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Spreading the word with Technorati!</title>
		<link>http://peterkellner.net/2008/04/16/spreading-the-word-with-technorati/</link>
		<comments>http://peterkellner.net/2008/04/16/spreading-the-word-with-technorati/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 16:45:36 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/04/16/spreading-the-word-with-technorati/</guid>
		<description><![CDATA[<p>So, I'm at MVP Summit in Redmond and last night, while talking with Scott Guthrie, he was telling us about his Technorati rank, and how he had millions of references.   My understanding  is Technorati is basically a search engine for blogs.  So, I must join!.  they asked me to put a small piece of html in my post to claim my blog, so.. Here it is.</p>

<a href="http://technorati.com/claim/q5vea37g2q" rel="me">Technorati Profile</a>]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;m at MVP Summit in Redmond and last night, while talking with Scott Guthrie, he was telling us about his Technorati rank, and how he had millions of references.   My understanding  is Technorati is basically a search engine for blogs.  So, I must join!.  they asked me to put a small piece of html in my post to claim my blog, so.. Here it is.</p>

<a href="http://technorati.com/claim/q5vea37g2q" rel="me">Technorati Profile</a>
]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/04/16/spreading-the-word-with-technorati/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Just the Exe&#8217;s for the Tivo Summaries Executables!</title>
		<link>http://peterkellner.net/2008/04/07/tivosummariesexe/</link>
		<comments>http://peterkellner.net/2008/04/07/tivosummariesexe/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 03:49:56 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[TiVo]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/04/07/tivosummariesexe/</guid>
		<description><![CDATA[<p>The Exe files Tivo Summaries Graphs done in a previous article.  <br /><br /><a href="http://peterkellner.net/2008/01/18/tivospaceviewerwithlinq/" target="_blank">Article on Developing TiVo graphs</a></p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>Several people have asked for the executable files for the tivo summaries program I wrote a few months back.&#160; Here is a link to the original article and some gratuitous pictures of the results the program produces.</p>  <table cellspacing="0" cellpadding="2" width="400" border="0"><tbody>     <tr>       <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/04/tivopie.jpg"><img height="141" alt="tivopie" src="http://peterkellner.net/wp/wp-content/uploads/2008/04/tivopie-thumb.jpg" width="169" /></a> </td>        <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/04/tivohdsd.jpg"><img height="142" alt="tivohdsd" src="http://peterkellner.net/wp/wp-content/uploads/2008/04/tivohdsd-thumb.jpg" width="240" /></a> </td>     </tr>   </tbody></table>  <p>&#160;</p>  <p><a href="http://peterkellner.net/2008/01/18/tivospaceviewerwithlinq/" target="_blank">Article on Developing TiVo graphs</a></p>  <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:fdf4bb52-9107-40d3-9485-733650c84080" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><p>Here is the Download For the executable files.  Put in their own directory. <a href="http://peterkellner.net/wp/wp-content/uploads/2008/04/tivosummariesexe.zip" target="_blank">Tivo Executable Zip File</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/04/07/tivosummariesexe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Book Review of Manning&#8217;s Windows PowerShell In Action by Bruce Payette</title>
		<link>http://peterkellner.net/2008/04/07/windowspowershellbookreview/</link>
		<comments>http://peterkellner.net/2008/04/07/windowspowershellbookreview/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 18:24:32 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[.Net 2.0]]></category>

		<category><![CDATA[ASP.NET 3.5]]></category>

		<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/04/07/windowspowershellbookreview/</guid>
		<description><![CDATA[<p>A book review of Windows PowerShell in action by Bruce Payette</p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>Windows Powershell is something I&#8217;ve been meaning to learn for quite some time.&#160; It started out as the Monad Project at Microsoft and I remember seeing it discussed at Code Camps but never spending the time to go.&#160; I thought it was just another command.com with special commands.</p>  <p>Turns out, I was very wrong.&#160; As far as I&#8217;m concerned, it&#8217;s strength is that you can reference .net assemblies directly.&#160; That means, you can access everything in .Net just like a first class language.&#160; Be that C# or VB, you can get to all of it.&#160; You can write your own assemblies and reference them as well!&#160; It of course if fully object oriented, very rich, and full error handling.&#160; Very cool</p>  <p>So, back to the book.&#160; Bruce Payett does a great job of introducing Windows Power Shell (aka Monad) and taking you step by step through the process of using it.&#160; He has lots of great examples and the book, as you would expect from a Manning book, is well indexed and well illustrated.&#160; I highly recommend getting it if you have not used Power Shell before.</p>  <div class="wlWriterSmartContent" id="scid:7dc1bd33-94bd-46fd-a20b-0131235bcd47:4b453b0a-941b-4fa3-8b07-226f562bbcab" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"><table cellspacing="0" cellpadding="2" width="400" border="0" unselectable="on">
<tbody><tr>
<td valign="top" width="400">
<p><a title="Windows PowerShell in Action" href="http://www.amazon.com/exec/obidos/ASIN/1932394907/petkelsblo-20"><img src="http://images.amazon.com/images/P/1932394907.01.MZZZZZZZ.jpg" border="0" align="left" style="float:left"/>Windows PowerShell in Action</a><br /><br /></p>
</td></tr></tbody></table></div>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/04/07/windowspowershellbookreview/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Display Images with IIS7 in Vista or Windows 2008</title>
		<link>http://peterkellner.net/2008/04/01/iis7imageproblem/</link>
		<comments>http://peterkellner.net/2008/04/01/iis7imageproblem/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 12:38:59 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[ASP.NET 2.0]]></category>

		<category><![CDATA[Page Handlers]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/04/01/iis7imageproblem/</guid>
		<description><![CDATA[<p>How to solve problem off image not appearing in iis7.  css,gif's, etc.</p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>So, this may seem simple, but for an hour I wrestled with displaying images on IIS7 with vista.&#160; ASP.NET worked fine, but no static files, css, jpg&#8217;s, gif&#8217;s or anything.&#160; Just unformatted text.</p>  <p>Turns out when I added the web server in vista, I forgot to check the Static Content checkbox under World Wide Web Services / Common Http Features.</p>  <p>Hope this finds you if you are having the same problem.</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/04/webconfig.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="297" alt="webconfig" src="http://peterkellner.net/wp/wp-content/uploads/2008/04/webconfig-thumb.jpg" width="333" border="0" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/04/01/iis7imageproblem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Another ASP.NET Ask the Experts Session Coming May 1st, 2008</title>
		<link>http://peterkellner.net/2008/03/30/another-aspnet-ask-the-experts-session-coming-may-1st-2008/</link>
		<comments>http://peterkellner.net/2008/03/30/another-aspnet-ask-the-experts-session-coming-may-1st-2008/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 09:40:05 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/03/30/another-aspnet-ask-the-experts-session-coming-may-1st-2008/</guid>
		<description><![CDATA[<p>Come by and ask the ASP.NET experts!</p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>During the past couple years, I&#8217;ve participated as an expert in several ask the expert sessions.&#160; Typically what happens is a bunch of as MVP&#8217;s and Regional Directors for different Microsoft technologies get together at a certain time and date (on a phone call) and work together to answer people&#8217;s questions on asp.net topics.&#160; </p>  <p>Feel free to drop by and ask us something!&#160; Here is the link.</p>  <p><a href="http://community.strongcoders.com/blogs/ryan/archive/2008/03/28/may-1-2008-ask-an-expert-live-chat.aspx" target="_blank">Ask The ASP.NET Experts Link</a></p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/03/30/another-aspnet-ask-the-experts-session-coming-may-1st-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Microsoft CodeTrip Launches From Venetion Parking lot at MIX08!</title>
		<link>http://peterkellner.net/2008/03/06/thecodetriplaunch/</link>
		<comments>http://peterkellner.net/2008/03/06/thecodetriplaunch/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 03:33:29 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/03/06/thecodetriplaunch/</guid>
		<description><![CDATA[<p>The CodeTrip Launches From MIX08's Venetion Hotel on a 3 week journey.  Lots of fun pictures!</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="IMG_0451" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0451-thumb.jpg" width="164" border="0" /></p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>I have to admit, I actually wanted to get on the bus.&#160; About 40 people came to see the majestic <a href="http://thecodetrip.com/">CodeTrip</a> bus take off today (Thursday night) from the Venetian&#8217;s parking garage.&#160; As the <a href="http://www.siliconvalley-codecamp.com">Silicon Valley Code Camp guy</a>, I have to say, I get it.&#160; These guys and gals (OK, mostly guys) are going on a 6 week trip spreading code.&#160; Tonight they are just going to Salt Lake City, but what a way to go.&#160; John Stame from the San Francisco Office points to where he plans to meet the bus.&#160; What a schedule!</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0435.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="341" alt="IMG_0435" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0435-thumb.jpg" width="568" border="0" /></a> </p>  <p>John Stame from the Microsoft San Francisco Office points to where he plans to meet the bus.&#160; What a schedule!</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0450.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="IMG_0450" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0450-thumb.jpg" width="164" border="0" /></a> <a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0449.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="IMG_0449" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0449-thumb.jpg" width="164" border="0" /></a> <a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0451.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="IMG_0451" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0451-thumb.jpg" width="164" border="0" /></a> </p>  <p>Here we have more people giving the bus directions on where to go next.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0431.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0431" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0431-thumb.jpg" width="244" border="0" /></a> <a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0432.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0432" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0432-thumb.jpg" width="244" border="0" /></a> </p>  <p>And the interior is not to shabby!</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0443.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="378" alt="IMG_0443" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0443-thumb.jpg" width="502" border="0" /></a> </p>  <p>So, three of these guys are getting on the bus, and two are paying for it.&#160; Care to guess who is who?</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0457a-2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="IMG_0457a" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewritermicrosoftcodetriplaunchesfromvenetionpar-12f02img-0457a-thumb.jpg" width="151" border="0" /></a> </p>  <p>Here we have Tim with his &quot;A&quot; boarding pass.&#160; Let me see, Phoenix is about an hour from here?&#160; Or 3 weeks, depending on how you go.&#160; Sadly for me, I&#8217;ll be on a business trip in the Ukraine two weeks which overlaps with the bus passing through my neighborhood.</p>  <p>So, if you want to ride along, here is there URL:&#160; <a title="http://thecodetrip.com/" href="http://thecodetrip.com/">http://thecodetrip.com/</a></p>  <p>Enjoy the ride guys!  See you in six weeks when you arrive at the MVP Summit.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/03/06/thecodetriplaunch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s New in Visual Basic 9, Beth Massi at Bay.Net In San Francisco</title>
		<link>http://peterkellner.net/2008/03/05/banetvb9/</link>
		<comments>http://peterkellner.net/2008/03/05/banetvb9/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 12:04:39 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[LINQ]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/03/05/banetvb9/</guid>
		<description><![CDATA[<p>Beth did a great job of presenting new features in Visual Studio 2008 at the Bay.Net Meeting in San Francisco.</p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>Beth did a great job of presenting new features in Visual Studio 2008 at the Bay.Net Meeting in San Francisco.&#160; Her focus was Visual Basic.&#160; Most of the features she presented will work in both C# and VB.&#160; Lots of LINQ stuff.&#160; What really surprised me was the superior handling of LINQ to XML in VB9.&#160; I always thought C# (my language of choice) was better in all ways than VB but I was sadly surprised.&#160; I may have to learn VB now.</p>  <p>Here are some pictures of both the event, and the after dinner fun with the gang.</p>  <table cellspacing="0" cellpadding="10" width="400" border="0"><tbody>     <tr>       <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0412.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0412" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0412-thumb.jpg" width="244" border="0" /></a></td>        <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0409.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0409" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0409-thumb.jpg" width="244" border="0" /></a></td>     </tr>      <tr>       <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0411.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0411" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0411-thumb.jpg" width="244" border="0" /></a></td>        <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0413.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0413" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0413-thumb.jpg" width="244" border="0" /></a></td>     </tr>      <tr>       <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0410.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0410" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0410-thumb.jpg" width="244" border="0" /></a></td>        <td valign="top" width="200"><a href="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0408.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="IMG_0408" src="http://peterkellner.net/wp/wp-content/uploads/2008/03/windowslivewriterwhatsnewinvisualbasic9.netinsanfrancisco-12884img-0408-thumb.jpg" width="244" border="0" /></a></td>     </tr>   </tbody></table>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/03/05/banetvb9/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Join me today at the Microsoft Hero&#8217;s Virtual Launch event</title>
		<link>http://peterkellner.net/2008/02/28/mslaunchevent2008/</link>
		<comments>http://peterkellner.net/2008/02/28/mslaunchevent2008/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 11:54:05 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/02/28/mslaunchevent2008/</guid>
		<description><![CDATA[<p>Join me for the Microsoft 2008 Products Launch Event Chat</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be a host/moderator online between 6AM and 8AM today (thursday).&#160; I&#8217;ll be answering questions regarding visual studio 2008.&#160; Please feel free to join in on the chat!&#160; Here is the URL:</p>  <p><a href="http://www.microsoft.com/communities/chats/chatrooms/vep3.aspx">http://www.microsoft.com/communities/chats/chatrooms/vep3.aspx</a></p>  <p>&#160;</p>  <p>If you are interested in the other products that are part of the launch, here are the other chat rooms.</p>  <p>&#160;</p>  <p>There are three chat rooms within the Virtual Launch Experience:</p>  <p>&#183; Virtual Launch Experience: SQL Server 2008 for IT Professionals</p>  <p><a href="http://www.microsoft.com/communities/chats/chatrooms/vep1.aspx">http://www.microsoft.com/communities/chats/chatrooms/vep1.aspx</a></p>  <p>&#183; Virtual Launch Experience: Windows Server 2008 for IT Professionals</p>  <p><a href="http://www.microsoft.com/communities/chats/chatrooms/vep2.aspx">http://www.microsoft.com/communities/chats/chatrooms/vep2.aspx</a></p>  <p>&#183; Virtual Launch Experience: Developer Chat (Visual Studio 2008)</p>  <p><a href="http://www.microsoft.com/communities/chats/chatrooms/vep3.aspx">http://www.microsoft.com/communities/chats/chatrooms/vep3.aspx</a></p>  <p>To join any of the chat rooms:</p>  <p>1) Click on the link above for the appropriate chat room</p>  <p>2) Sign in using a LiveID (or create a new one)</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/02/28/mslaunchevent2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Best Practices for Configuring ASP.NET ConnectionStrings and AppSettings in Web.Config</title>
		<link>http://peterkellner.net/2008/02/23/webconfigbestpractice/</link>
		<comments>http://peterkellner.net/2008/02/23/webconfigbestpractice/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 21:25:22 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[ASP.NET 3.5]]></category>

		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/02/23/webconfigbestpractice/</guid>
		<description><![CDATA[<p>This article shows a good way to manage connection string and appsettings values in your web.config file.  It shows how to use include files and talks about how to set defaults so moving to production from testing or development can be less painful</p>]]></description>
			<content:encoded><![CDATA[
<h1>The Typical Way</h1>

<p>When you first create an asp.net project a file is usually created in your root web directory called web.config.&#160; By default there are two (usually empty) sections in the file.&#160; One for appSettings, and one for connectionStrings.&#160; Below is a default project created with visual studio 2008 and a sample web.config file.</p>

<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px"  alt="webconfig1" src="http://peterkellner.net/misc/webconfig1.jpg"  border="0" /> </p>

<p>The thing you would normally do is put stuff in those tags that your application would use.&#160; That is, you would would likely put in a sqlserver connection in the connection tag, then in your appsettings section, you might put something like your smtp mail server location.&#160; Here is what this might look like after you have configured your settings.</p>

<p>&#160;</p>

<pre class="csharpcode">  <span class="kwrd">&lt;</span><span class="html">appSettings</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">key</span><span class="kwrd">=&quot;UseCache&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;True&quot;</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">key</span><span class="kwrd">=&quot;MapsKey&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;1234567890-AA&quot;</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">key</span><span class="kwrd">=&quot;SMTPServer&quot;</span> <span class="attr">value</span><span class="kwrd">=&quot;smtp.peterkellner.net&quot;</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">appSettings</span><span class="kwrd">&gt;</span>

  <span class="kwrd">&lt;</span><span class="html">connectionStrings</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">clear</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;LocalSqlServer&quot;</span> 
          <span class="attr">connectionString</span><span class="kwrd">=&quot;Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True&quot;</span>
          <span class="attr">providerName</span><span class="kwrd">=&quot;System.Data.SqlClient&quot;</span> <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">connectionStrings</span><span class="kwrd">&gt;</span></pre>

<pre class="csharpcode"><span class="kwrd"></span>&#160;</pre>

<pre class="csharpcode"><span class="kwrd"></span>&#160;</pre>

<p>The problem with this approach is that when you deploy your application to a new server, you might want to change your SMTPServer in the AppSettings, and you might want to change your connection string in your ConnectionStrings section.&#160; Usually what happens is that you have to have a separate web.config that you use for production.&#160; The problem is, of course, that you have other things in your web.config that change as you build your application.&#160; You may for example add a new page handler and this means you have to maintain one web.config for production and one for development and you have to modify both of them each time you change something.</p>

<p>&#160;</p>

<h1>A Better Way</h1>

<p>A solution to this problem (though not the best so read on after this), is to extract appSettings and connectionStrings to a separate file on your server.&#160; Then, you can leave those files on the server and not worry about those changing.&#160; The way this looks is as follows.&#160; You will now have three files to worry about.&#160; web.config (which you had before), and two new files, webAppSettings.config and WebConnectionString.config.&#160; Here are what these three files now look like.</p>

<p>&#160;</p>

<h2>Web.Config:</h2>

<pre class="csharpcode">  &lt;appSettings file=<span class="str">&quot;webAppSettings.config&quot;</span>&gt;
  &lt;/appSettings&gt;

  &lt;connectionStrings configSource=<span class="str">&quot;WebConnectionString.config&quot;</span>&gt;
  &lt;/connectionStrings&gt;


  &lt;system.web&gt;
        &lt;!&#8211; </pre>

<pre class="csharpcode">&#160;</pre>

<h2>WebAppSettings.config</h2>

<pre class="csharpcode">&#160;</pre>

<pre class="csharpcode">&lt;appSettings&gt;
  &lt;add key=<span class="str">&quot;UseCache&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;True&quot;</span>/&gt;
  &lt;add key=<span class="str">&quot;MapsKey&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;1234567890-AA&quot;</span>/&gt;
  &lt;add key=<span class="str">&quot;SMTPServer&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;smtp.peterkellner.net&quot;</span>/&gt;
&lt;/appSettings&gt;</pre>

<p><style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style></p>

<h2>WebConnectionString.config</h2>

<pre class="csharpcode">&lt;connectionStrings&gt;
    &lt;clear/&gt;
    &lt;add name=<span class="str">&quot;LocalSqlServer&quot;</span>
        connectionString=<span class="str">&quot;Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True&quot;</span>
        providerName=<span class="str">&quot;System.Data.SqlClient&quot;</span> /&gt;
&lt;/connectionStrings&gt;</pre>
<style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>

<p>&#160;</p>

<p>This actually works, but there is even a best way.</p>

<p>&#160;</p>

<h1>The Best Way</h1>

<p>I didn&#8217;t realize it until Conrad Cady, a senior developer at our company pointed this out to me.&#160; Basically, it turns out that you can put default values in your web.config AND also have the file= tag in the appSettings tag.&#160; Unfortunately, this only works with AppSetting and the file tag.&#160;&#160; For the connectionStrings, you can not have values inside the connectionString tag if you use the configSource attribute.&#160; That is, you can create a web.config file that looks like the following:</p>

<pre class="csharpcode">&lt;appSettings file=<span class="str">&quot;webAppSettings.config&quot;</span>&gt;
    &lt;add key=<span class="str">&quot;UseCache&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;True&quot;</span>/&gt;
    &lt;add key=<span class="str">&quot;MapsKey&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;1234567890-AA&quot;</span>/&gt;
    &lt;add key=<span class="str">&quot;SMTPServer&quot;</span> <span class="kwrd">value</span>=<span class="str">&quot;smtp.peterkellner.net&quot;</span>/&gt;
  &lt;/appSettings&gt;

  &lt;connectionStrings configSource=<span class="str">&quot;WebConnectionString.config&quot;</span>&gt;
  &lt;/connectionStrings&gt;</pre>

<pre class="csharpcode">&#160;</pre>

<p>What happens is that if you have values in your webAppSettings.config file, they will override what is in your web.config appSettings section. If you have no webAppSettings.config file, then all the values in web.config webAppSettings section are used.&#160; </p>

<p>connectionStrings unfortunately does not work the same.&#160; You MUST have a WebConnectionString.config file for this setup and you MUST NOT have any values inside the connectionStrings tag in the web.config file.</p>

<p>&#160;</p>

<h2>How to Use the &quot;Best Way&quot; in Real Life </h2>

<p>So, the title of this article is &quot;Best Practices&quot;.&#160; So, what is the best practice.&#160; Well, IMHO the best practice is to have your production AppSettings in your web.config file and not have an external file checked into source control (that is, don&#8217;t check in webAppSettings.config).&#160; Only create that file for development servers where you want to override you default (web.config) appSettings keys and attributes.&#160; For connectionStrings, I recommend always using an external file but don&#8217;t actually check it into source control.&#160; Instead, check in a file named WebConnectionString.config.sample and on each environment where you are running a web server, rename that file to WebConnectionString.config so that it will actually be used.&#160; Again, the most important thing is NOT to check into source control a file called WebConnectionString.config or webAppSettings.config.&#160; Both should have sample versions checked in, but not actual ones.&#160; That way, you will avoid overwriting real ones when you check out your source control to a working directory.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/02/23/webconfigbestpractice/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Get the DataItem out of a ListView in Asp.Net 3.5 (compared to Repeater)</title>
		<link>http://peterkellner.net/2008/02/18/listviewrepeaternotes/</link>
		<comments>http://peterkellner.net/2008/02/18/listviewrepeaternotes/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 13:51:48 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
		
		<category><![CDATA[ASP.NET 3.5]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2008/02/18/listviewrepeaternotes/</guid>
		<description><![CDATA[<p>See how to get the DataItem out of a ListView Control which is part of asp.net 3.5.  Compare ListView to repeater in this regard.</p>]]></description>
			<content:encoded><![CDATA[<p>So, you are a Repeater wizard like me and now you want more.&nbsp; Remember that in Repeater, the templates you can use are as follows:</p> <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/02/listview1.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="145" alt="listview1" src="http://peterkellner.net/wp/wp-content/uploads/2008/02/listview1-thumb.jpg" width="244" border="0"/></a> </p> <p>With the new ListView, you have lots more choices as follows:</p> <p><a href="http://peterkellner.net/wp/wp-content/uploads/2008/02/listview2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="201" alt="listview2" src="http://peterkellner.net/wp/wp-content/uploads/2008/02/listview2-thumb.jpg" width="244" border="0"/></a> </p> <p>&nbsp;</p> <p>Lots of reasons to start using the ListView.&nbsp; Just having EditItemTemplate is enough for me.</p> <p>So, the first problem is you want to grab the DataItem equivalent from ListView.&nbsp; That is, in the DataBind event of the repeater, you get the DataItem as follows:</p> <p>&nbsp;</p><pre class="csharpcode"><span class="kwrd">protected</span> <span class="kwrd">void</span> RepeaterProjects_ItemDataBound(<span class="kwrd">object</span> sender, RepeaterItemEventArgs e)
    {
        RepeaterItem ri = e.Item;
        <span class="kwrd">if</span> (ri.DataItem != <span class="kwrd">null</span>)
        {
            DropDownList ddl = (DropDownList) ri.FindControl(<span class="str">&#8220;DropDownListVersions&#8221;</span>);
            Label labelVersion = (Label) ri.FindControl(<span class="str">&#8220;LabelCurrentVersionRunning&#8221;</span>);</pre>
<p>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
</p>
<p>Now, how to you do the same thing for the ListView?</p>
<p>&nbsp;</p><pre class="csharpcode">   <span class="kwrd">protected</span> <span class="kwrd">void</span> ListViewProjects_ItemDataBound(<span class="kwrd">object</span> sender, ListViewItemEventArgs e)
    {
        <span class="kwrd">using</span> (ListViewDataItem listViewDataItem = (ListViewDataItem) e.Item)
        {
            <span class="kwrd">if</span> (listViewDataItem != <span class="kwrd">null</span>)
            {
                DropDownList ddl = (DropDownList)listViewDataItem.FindControl(<span class="str">&#8220;DropDownListVersions&#8221;</span>);
                Label labelVersion = (Label)listViewDataItem.FindControl(<span class="str">&#8220;LabelCurrentVersionRunning&#8221;</span>);</pre><pre class="csharpcode">&nbsp;</pre><pre class="csharpcode">&nbsp;</pre><pre class="csharpcode">One thing I also noticed that for the ListViewProjects_ItemDataBound to be called, I must call DataBind() on ListViewProjects.  Seems Repeater calls it on every postback but I would not swear to that.</pre><pre class="csharpcode">One Final thing.  In this process, I realized I had to create a LayoutTemplate.  Very cool.  I wondered why Header and Footer templates were gone.</pre><pre class="csharpcode">   &lt;asp:ListView ID=<span class="str">&#8220;ListViewProjects&#8221;</span> runat=<span class="str">&#8220;server&#8221;</span> DataSourceID=<span class="str">&#8220;SqlDataSourceWebSites&#8221;</span>
                OnItemDataBound=<span class="str">&#8220;ListViewProjects_ItemDataBound&#8221;</span>&gt;
                &lt;EmptyDataTemplate&gt;
                    &lt;b&gt;Not Web Sites Defined&lt;/b&gt;
                &lt;/EmptyDataTemplate&gt;
                &lt;LayoutTemplate&gt;
                    &lt;ul&gt;
                        &lt;asp:PlaceHolder ID=<span class="str">&#8220;itemPlaceholder&#8221;</span> runat=<span class="str">&#8220;server&#8221;</span> /&gt;
                    &lt;/ul&gt;
                &lt;/LayoutTemplate&gt;</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<pre class="csharpcode">&nbsp;</pre><pre class="csharpcode">Hope this Helps you.</pre><pre class="csharpcode">&nbsp;</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2008/02/18/listviewrepeaternotes/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
