<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://chriskirby.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chris Kirby&amp;#39;s Inner Monolog : OpenSource</title><link>http://chriskirby.net/archive/tags/OpenSource/default.aspx</link><description>Tags: OpenSource</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Asp.net AJAX Beta 1 a showstopper</title><link>http://chriskirby.net/archive/2006/10/31/Asp.net-AJAX-Beta-1-a-showstopper_5F00_190.aspx</link><pubDate>Mon, 30 Oct 2006 23:08:31 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:216</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=216</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=216</wfw:comment><comments>http://chriskirby.net/archive/2006/10/31/Asp.net-AJAX-Beta-1-a-showstopper_5F00_190.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.7.0.0 on 2006-10-30T16:43:29 --&gt;&lt;p&gt;I, like &lt;a href="http://forums.asp.net/thread/1441672.aspx" target="wookie_new"&gt;many others&lt;/a&gt;, have just put in the time to migrate my atlas ctp site over to ajax beta 1 only to find out that ajax extender controls no longer work with templated controls!! You've got to be kidding me! I just don't know how this could have slipped past testing, being that its such a major issue. I hate to rag on the dev team being that this is still a beta product, but this bug wasn't present in the last 2 ctp's and now is a major showstopper for me and many others...and unfortunately, the &lt;a href="http://forums.asp.net/thread/1441672.aspx" target="wookie_new"&gt;workaround&lt;/a&gt; that was posted by the team just won't do the trick for the majority of my controls. I'm now left with the lose lose decision of trying to stick it out and hack it together or going back to the July CTP :(&lt;/p&gt;&lt;p&gt;Please guys, get us an update soon!&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=216" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Rants/default.aspx">Rants</category><category domain="http://chriskirby.net/archive/tags/Reviews/default.aspx">Reviews</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>Insert source code plugin for Windows Live Writer</title><link>http://chriskirby.net/archive/2006/08/22/Insert-source-code-plugin-for-Windows-Live-Writer_5F00_184.aspx</link><pubDate>Tue, 22 Aug 2006 18:13:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:210</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=210</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=210</wfw:comment><comments>http://chriskirby.net/archive/2006/08/22/Insert-source-code-plugin-for-Windows-Live-Writer_5F00_184.aspx#comments</comments><description>&lt;p&gt;Last night, I finally got a chance to finish a workable version of my source code formatting plugin for &lt;a href="http://windowslivewriter.spaces.live.com/" title="windows live writer" target="_blank"&gt;Live Writer&lt;/a&gt;. The plugin isn&amp;#39;t quite done yet, but as of now, will let you insert and format C#, VB, Javascript, Html, Xml, and T-Sql, very similar to the functionality available in the Wookie Blog Extension v2 which is also based on the original source code from Jean-Claude Manoli&amp;#39;s &lt;a href="http://www.manoli.net/csharpformat/" title="CSharpFormat Project" target="_blank"&gt;CSharpFormat project&lt;/a&gt;. As for the cross posting support, the api just isn&amp;#39;t there yet...so far, there is only support for content based plugins, but I&amp;#39;m assuming they will add support for more integrated plugins in future releases. You can grab the code plugin using the link below...and, to install, just drop it in your Live Writer plugins directory.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://chrisjkirby.com/files/folders/live_writer_plugins/entry1194.aspx" target="_blank"&gt;Insert Source Code Plugin Beta 1&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=210" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://chriskirby.net/archive/tags/Internet/default.aspx">Internet</category><category domain="http://chriskirby.net/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/Windows/default.aspx">Windows</category></item><item><title>dotNetWookie now running CS 2.1</title><link>http://chriskirby.net/archive/2006/08/21/dotNetWookie-now-running-CS-2.1_5F00_183.aspx</link><pubDate>Mon, 21 Aug 2006 19:26:31 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:209</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=209</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=209</wfw:comment><comments>http://chriskirby.net/archive/2006/08/21/dotNetWookie-now-running-CS-2.1_5F00_183.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.7.0.0 on 2006-08-21T12:48:45 --&gt;&lt;p&gt;dotNetWookie.com is now up and running with Community Server 2.1!&lt;/p&gt;&lt;p&gt;Wookie users...dont' forget to check out all of the &lt;a href="http://communityserver.org/blogs/announcements/archive/2006/08/09/Community-Server-2.1-Now-Available.aspx" target="wookie_new"&gt;new features&lt;/a&gt; and skins available.&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=209" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://chriskirby.net/archive/tags/Internet/default.aspx">Internet</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/Wookie/default.aspx">Wookie</category></item><item><title>CS 2.1 goes gold...Beta site up and running</title><link>http://chriskirby.net/archive/2006/08/14/CS-2.1-goes-gold_2E002E002E00_Beta-site-up-and-running_5F00_182.aspx</link><pubDate>Mon, 14 Aug 2006 19:23:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:208</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=208</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=208</wfw:comment><comments>http://chriskirby.net/archive/2006/08/14/CS-2.1-goes-gold_2E002E002E00_Beta-site-up-and-running_5F00_182.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.7.0.0 on 2006-08-14T12:37:16 --&gt;&lt;p&gt;The &lt;a href="http://beta.dotnetwookie.com" target="wookie_new"&gt;dotNetWookie beta site&lt;/a&gt; is now running &lt;a href="http://communityserver.org/files/folders/communityserver/default.aspx" target="wookie_new"&gt;Community Server 2.1&lt;/a&gt;! The most noticeably feature right off the bat, is the new Tags feature...Tags have replaced blog categories, and are a great way to quickly find the most popular and relevant content in any section of the site. And, perhaps a not very noticeable feature, but important to me, &lt;a href="http://feedburner.com" target="wookie_new"&gt;Feedburner&lt;/a&gt; support! For a complete list of new features, check out &lt;a href="http://communityserver.org/blogs/announcements/archive/2006/08/09/Community-Server-2.1-Now-Available.aspx" target="wookie_new"&gt;the announcement&lt;/a&gt; at communityserver.org.&lt;/p&gt;&lt;p&gt;The upgrade to the main site should be happening sometime this week...just have to do a few migration test runs and some skin tweaking first.&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=208" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://chriskirby.net/archive/tags/Internet/default.aspx">Internet</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/Wookie/default.aspx">Wookie</category></item><item><title>Asp.net 2.0 membership and migrating legacy users</title><link>http://chriskirby.net/archive/2006/06/21/Asp.net-2.0-membership-and-migrating-legacy-users_5F00_174.aspx</link><pubDate>Wed, 21 Jun 2006 16:07:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:200</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=200</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=200</wfw:comment><comments>http://chriskirby.net/archive/2006/06/21/Asp.net-2.0-membership-and-migrating-legacy-users_5F00_174.aspx#comments</comments><description>I've encountered many instances lately in which i'm developing a new version of a site with an existing (custom) authentication database. Now, in cases like these, most .net developers would suggest writing your own membership and role providers to tie directly in to the existing schema; however, instead of rolling my own, I've decided to take a different approach in which I simply utilize the events provided with the login control to manually authenticate and migration the legacy accounts in real time. This approach requires considerably less code and allows you to utilize the default providers while still supporting the legacy user database. The event code would look something like this: (*note* that the db code makes use of classes and methods from a custom library)
&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;protected&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; Login1_Authenticate(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object&lt;/span&gt; sender, System.Web.UI.WebControls.AuthenticateEventArgs e)
{ &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// first, check to see if the user has already been migrated. if so, then were done here.&lt;/span&gt;
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;if&lt;/span&gt;(Membership.ValidateUser(Login1.UserName, Login1.Password))
{
e.Authenticated &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;true&lt;/span&gt;;
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt;;
}
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;else&lt;/span&gt;
{
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// check legacy credentials&lt;/span&gt;
DataParameters parameters &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; DataParameters();
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@Login"&lt;/span&gt;, SqlDbType.VarChar, Login1.UserName);
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@Password"&lt;/span&gt;, SqlDbType.VarChar, Login1.Password);
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@Email"&lt;/span&gt;, SqlDbType.VarChar, 50, ParameterDirection.Output);
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@UserId"&lt;/span&gt;, SqlDbType.Int, 1, ParameterDirection.Output);
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"ReturnValue"&lt;/span&gt;, SqlDbType.Int, 1, ParameterDirection.ReturnValue);
DataUtility.ExecuteNonQuery(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"ConnectionString"&lt;/span&gt;, CommandType.StoredProcedure, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"ValidateUser"&lt;/span&gt;, parameters);
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// if the credentials are good, then migrate to membership&lt;/span&gt;
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;if&lt;/span&gt;((&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt;)parameters[&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"ReturnValue"&lt;/span&gt;].Value == 0)
{
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// migrate the user account&lt;/span&gt;
MembershipCreateStatus status;
MembershipUser newUser &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Membership.CreateUser(Login1.UserName, Login1.Password, parameters[&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@Email"&lt;/span&gt;].Value.ToString(), &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"What is your Username?"&lt;/span&gt;, Login1.UserName, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;true&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;out&lt;/span&gt; status);

&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;if&lt;/span&gt; (status == MembershipCreateStatus.Success)
{
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// update legacy user with new membership user id, tying the old to the new&lt;/span&gt;
parameters &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; DataParameters(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@UserId"&lt;/span&gt;, SqlDbType.Int, Login1.UserName);
parameters.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"@MembershipUserId"&lt;/span&gt;, SqlDbType.UniqueIdentifier, newUser.ProviderUserKey);
DataUtility.ExecuteNonQuery(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"ConnectionString"&lt;/span&gt;, CommandType.StoredProcedure, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"UpdateUser"&lt;/span&gt;, parameters);
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Create an empty Profile for the newly created user&lt;/span&gt;
ProfileCommon profile &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; (ProfileCommon)ProfileCommon.Create(Login1.UserName, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;true&lt;/span&gt;);
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Populate default profile values&lt;/span&gt;
profile.Theme &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Default"&lt;/span&gt;;
&lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Save the profile&lt;/span&gt;
profile.Save();
e.Authenticated &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;true&lt;/span&gt;;
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt;;
}
&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;else&lt;/span&gt;
Login1.FailureText &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"We were unable to migrate you user account. Please contact support for further assistance."&lt;/span&gt;;
}
e.Authenticated &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;false&lt;/span&gt;;
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;So, with the little bit of code above, I'm able to authenticate and migrate legacy user accounts to the new membership system without breaking the existing db schema. It may not be as elegant as writing your own provider, but in my case, it was equally as effective.&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=200" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Hacks/default.aspx">Hacks</category><category domain="http://chriskirby.net/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/cSharp/default.aspx">cSharp</category></item><item><title>Get the most out of Master Pages</title><link>http://chriskirby.net/archive/2006/04/20/Get-the-most-out-of-Master-Pages_5F00_160.aspx</link><pubDate>Thu, 20 Apr 2006 00:06:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:186</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=186</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=186</wfw:comment><comments>http://chriskirby.net/archive/2006/04/20/Get-the-most-out-of-Master-Pages_5F00_160.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.7.0.0 on 2006-04-19T17:32:20 --&gt;&lt;!-- begin template --&gt;&lt;table border="0" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="font-family: courier new; font-size: 9pt;"&gt;&amp;lt;&amp;lt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://OdeToCode.com/Articles/450.aspx" style="font-family: courier new; font-size: 9pt;" target="wookie_new" title="By Articles"&gt;Master Pages: Tips, Tricks, and Traps&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="padding-left: 15px; font-size: 8pt;"&gt;&lt;i&gt;MasterPages are a great addition to the ASP.NET feature set, but are not without their quirks. This article will highlight the common problems developers face with master pages, and provide tips and tricks to use master pages to their fullest potential. &lt;/i&gt;&lt;/p&gt;&lt;!-- end template --&gt;&lt;p&gt;This article really digs in to the inner workings and advance usage of Master Pages. I took quite a few useful things from it...definitely a great read for any .net developer.&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=186" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/Internet/default.aspx">Internet</category><category domain="http://chriskirby.net/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Reviews/default.aspx">Reviews</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>The schema and service versioning dilemma</title><link>http://chriskirby.net/archive/2006/04/17/The-schema-and-service-versioning-dilemma_5F00_158.aspx</link><pubDate>Mon, 17 Apr 2006 22:49:31 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:184</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=184</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=184</wfw:comment><comments>http://chriskirby.net/archive/2006/04/17/The-schema-and-service-versioning-dilemma_5F00_158.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.7.0.0 on 2006-04-17T16:24:40 --&gt;&lt;!-- begin template --&gt;&lt;table border="0" cellpadding="2" cellspacing="0"&gt;&lt;tr&gt;&lt;td style="font-family:courier new;font-size:9pt;"&gt;&amp;lt;&amp;lt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://pluralsight.com/blogs/tewald/archive/2006/04/14/21733.aspx" style="font-family:courier new;font-size:9pt;" target="wookie_new" title="By XML Nation"&gt;Solving the XSD versioning problem&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;!-- end template --&gt;&lt;p&gt;I would agree, as with most xml and web service developers, that schema and service versioning is a major pain in the ass. In this post by Tim Ewald, he discusses a way to approach this by using a more in-depth approach to validation. The way most of us approach this is simply by throwing the document up against latest known schema, and, if it errors, then the data must be invalid. Well, as well all know, that is usually not the case. Most likely, the document may have been created with a different version and simply contain some minor variations, which, in the end, may not even apply to the data we care about. In those scenarios, his solution suggests that we just get a little more detailed with our validation process...basically ignoring elements we dont understand or care about during validation, and only hiccup a validation error to the sender when its obvious that required data is missing. To my surprise, this type of, per element, validation meta data, is already built into the xsd specification and should be supported by xml processors in .net. I'll definitely look forward to checking out his implementation when he posts the code. &lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=184" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>Wookie Blog Extension v2 Final</title><link>http://chriskirby.net/archive/2006/04/11/Wookie-Blog-Extension-v2-Final_5F00_157.aspx</link><pubDate>Tue, 11 Apr 2006 00:27:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:183</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=183</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=183</wfw:comment><comments>http://chriskirby.net/archive/2006/04/11/Wookie-Blog-Extension-v2-Final_5F00_157.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.6.2.0 on 2006-04-10T17:30:41 --&gt;&lt;p&gt;The final build of the &lt;a href="http://chrisjkirby.com/forums/30/ShowForum.aspx"&gt;Wookie Blog Extension v2&lt;/a&gt; is now available under &lt;a href="http://chrisjkirby.com/files/8/current_release/default.aspx"&gt;Current Releases&lt;/a&gt; in the Files section. This version just addressed some minor issues that came up with beta 2 and now includes a native &lt;a href="http://spaces.msn.com"&gt;MSN Spaces&lt;/a&gt; plugin with the installation. You can view the complete &lt;a href="http://chrisjkirby.com/forums/thread/973.aspx"&gt;release notes&lt;/a&gt; over in the &lt;a href="http://chrisjkirby.com/forums/30/ShowForum.aspx"&gt;discussion forums&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All of the plugins are also available for independent download under &lt;a href="http://chrisjkirby.com/files/8/plugins/default.aspx"&gt;Plugins&lt;/a&gt; in the Files section, including the project files and source code for the Community Server and MetaWeblog plugins.&lt;/p&gt;&lt;p&gt;** update ** I've just updated the rtm installer package with the new &lt;a href="http://www.blogger.com"&gt;Blogger&lt;/a&gt; plugin, as well as uploaded the Blogger plugin source and assembly for seperate download.&lt;br&gt;&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=183" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/CommunityServer/default.aspx">CommunityServer</category><category domain="http://chriskirby.net/archive/tags/Internet/default.aspx">Internet</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/Wookie/default.aspx">Wookie</category></item><item><title>New Gengis for .net 2.0</title><link>http://chriskirby.net/archive/2006/04/03/New-Gengis-for-.net-2.0_5F00_155.aspx</link><pubDate>Mon, 03 Apr 2006 21:38:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:181</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=181</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=181</wfw:comment><comments>http://chriskirby.net/archive/2006/04/03/New-Gengis-for-.net-2.0_5F00_155.aspx#comments</comments><description>&lt;!-- Generated by XStandard version 1.6.2.0 on 2006-04-03T14:51:35 --&gt;&lt;p&gt;&lt;a href="http://www.sellsbrothers.com/" target="wookie_new"&gt;Chris Sells&lt;/a&gt; announced a &lt;a href="http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=dfd0b577-2e97-4d21-90c4-6ca9d83e47ad"&gt;new version Gengis&lt;/a&gt; a few days ago on his blog. This new version, 0.6, is now targeted for .net 2.0, and includes many &lt;a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1978" target="wookie_new"&gt;new controls&lt;/a&gt;. I was hoping they would continue work on this project, its definitely been of great to help to me in the past...and, now this its out for win forms 2.0, I definitely plan on integrating some of the new controls into the wookie blog extension ui. &lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=181" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>OSS Socket Library for .net</title><link>http://chriskirby.net/archive/2006/02/27/OSS-Socket-Library-for-.net_5F00_144.aspx</link><pubDate>Mon, 27 Feb 2006 20:36:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:170</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=170</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=170</wfw:comment><comments>http://chriskirby.net/archive/2006/02/27/OSS-Socket-Library-for-.net_5F00_144.aspx#comments</comments><description>I just came across this really cool open source socket library for .net, mono, and Delphi called &lt;a href="http://www.indyproject.org/Sockets/index.en.iwp"&gt;Indy.Sockets&lt;/a&gt;. I've been looking for an easier way to work with telnet, pop, and others without having to pay for an expensive solution like &lt;a href="http://www.nsoftware.com/ipworks/default.aspx"&gt;IPWorks&lt;/a&gt;, and Indy.Sockets appears to cover all of those needs and then some. The only minor issue I've run into so far, is that all the source and examples are written in Delphi. Its not too hard to muddle my way through the syntax, but Delphi is no C#. A great way to work around that, just to view the code, is to open the compiled assembly with &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt; and have it decompile the IL to C# for you...and, since I have no need to modify the source anytime soon, that method works quite well for now. I've also come across a few articles and demo projects written in C# over at &lt;a href="http://www.codeproject.com/"&gt;Code Project&lt;/a&gt; and &lt;a href="http://www.atozed.com/indy/Demos/"&gt;Atozed Software&lt;/a&gt; if your interested in checking it out.&lt;br&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=170" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Reviews/default.aspx">Reviews</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>Feed me</title><link>http://chriskirby.net/archive/2005/12/05/Feed-me_5F00_124.aspx</link><pubDate>Mon, 05 Dec 2005 21:01:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:150</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=150</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=150</wfw:comment><comments>http://chriskirby.net/archive/2005/12/05/Feed-me_5F00_124.aspx#comments</comments><description>A new version of RSS Bandit was just released last week with some long awaited features, such as NNTP support, Atom 1.0 support, a new subscription wizard, and synchronization features. If you use RSS Bandit, then definitely check out the upgrade...you can grab it from SourceForge &lt;a href="http://sourceforge.net/forum/forum.php?forum_id=514727"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=150" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category></item><item><title>IBlogExtension Interface</title><link>http://chriskirby.net/archive/2005/07/06/IBlogExtension-Interface_5F00_71.aspx</link><pubDate>Wed, 06 Jul 2005 21:36:00 GMT</pubDate><guid isPermaLink="false">fe7bf805-78e2-48d4-8999-041f23e860c0:97</guid><dc:creator>Chris Kirby</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/rsscomments.aspx?PostID=97</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://chriskirby.net/commentapi.aspx?PostID=97</wfw:comment><comments>http://chriskirby.net/archive/2005/07/06/IBlogExtension-Interface_5F00_71.aspx#comments</comments><description>&lt;p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; 


&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;interface&lt;/span&gt; IBlogExtension 
{
   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Name of plug-in, suitable for display to a user &lt;/span&gt;
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;string&lt;/span&gt; DisplayName { get; }


   


   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// return true if plug-in has configuration settings &lt;/span&gt;
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;bool&lt;/span&gt; HasConfiguration { get; } 


   


   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Return true if an editing GUI will be shown to the &lt;/span&gt;
   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// user when BlogItem is called. In this case, the &lt;/span&gt;
   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// aggregator will not display its own editing UI. &lt;/span&gt;
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;bool&lt;/span&gt; HasEditingGUI { get ; } 


   


   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Display configuration dialog to user, if applicable &lt;/span&gt;
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; Configure(IWin32Window parent); 


  


    &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// Post item to weblog. If plug-in is going to show a &lt;/span&gt;
   &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;// GUI for editing, it should return true to HasEditingGUI(). &lt;/span&gt;
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; BlogItem(IXPathNavigable rssFragment, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;bool&lt;/span&gt; edited); 
} &lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;&lt;img src="http://chriskirby.net/aggbug.aspx?PostID=97" width="1" height="1"&gt;</description><category domain="http://chriskirby.net/archive/tags/.Net/default.aspx">.Net</category><category domain="http://chriskirby.net/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://chriskirby.net/archive/tags/OpenSource/default.aspx">OpenSource</category><category domain="http://chriskirby.net/archive/tags/Coding/default.aspx">Coding</category><category domain="http://chriskirby.net/archive/tags/Software/default.aspx">Software</category><category domain="http://chriskirby.net/archive/tags/cSharp/default.aspx">cSharp</category></item></channel></rss>