<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>stevenkuhn.net</title>
		<link>http://www.stevenkuhn.net</link>
		<language>en</language>
		<webMaster>email@stevenkuhn.net (Steven Kuhn)</webMaster>
		<pubDate>Sat, 27 Feb 2010 16:17:56 -0700</pubDate>
		<copyright>Copyright 2008-2009</copyright>
		<ttl>60</ttl>
		<description>a special blend of windows, linux, and .net with a touch of randomness</description>
		<atom:link href="http://feeds.stevenkuhn.net/stevenkuhn" rel="self" type="application/rss+xml" />
		<item>
			<title>myLeagueTracker - My Personal ASP.NET MVC Development Series</title>
			<link>http://www.stevenkuhn.net/blog/my-personal-aspnet-mvc-development-series</link>
			<comments>http://www.stevenkuhn.net/blog/my-personal-aspnet-mvc-development-series#disqus_thread</comments>
			<pubDate>Sun, 22 Nov 2009 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/my-personal-aspnet-mvc-development-series/</guid>
			<description>&lt;p&gt;&lt;em&gt;This will be an ongoing series on the development of &lt;a href='http://www.myleaguetracker.com/'&gt;myLeagueTracker&lt;/a&gt;: an ASP.NET MVC web application that helps manage online &lt;a href='http://en.wikipedia.org/wiki/First-person_shooter'&gt;First-person shooter&lt;/a&gt; (FPS) gaming leagues. As this is my first ASP.NET MVC application, this is a learning opportunity for me, and I hope that you find it helpful.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id='introduction'&gt;Introduction&lt;/h2&gt;

&lt;p&gt;I am an avid computer gamer. Years ago a friend introduced me to Doom and I was hooked. Later it was Quake, Unreal Tournament, Team Fortress Classic, and Counter-Strike. Normally I would play online with a few friends in public servers. It wasn&amp;#8217;t until Valve released Team Fortress 2 two years ago that I joined an online community and started playing in a semi-competitive league. Each week, teams of 6 or 7 players would be matched up to do battle with one another. It&amp;#8217;s a fun experience involving wits and constantly changing strategies.&lt;/p&gt;

&lt;p&gt;The league uses spreadsheets to track and manage players, matches, maps played, and schedules. Of course, there had to be a better solution than a manual process like this. After searching for and finding no available open-source league management tool, I decided to write my own. I wanted to learn more about &lt;a href='http://www.asp.net/mvc/'&gt;ASP.NET MVC&lt;/a&gt;, TDD (&lt;a href='http://en.wikipedia.org/wiki/Test-driven_development'&gt;Test-driven development&lt;/a&gt;), and DDD (&lt;a href='http://en.wikipedia.org/wiki/Domain-driven_design'&gt;Domain-driven Design&lt;/a&gt;) anyway, so I thought this would be the perfect opportunity to learn something as well as provide something valuable to other gamers and developers alike.&lt;/p&gt;

&lt;h2 id='about_myleaguetracker'&gt;About myLeagueTracker&lt;/h2&gt;

&lt;p&gt;This morning I posted my first &lt;a href='http://blog.myleaguetracker.com/2009/11/22/welcome-to-the-home-for-fps-league-management/'&gt;post&lt;/a&gt; on a new blog for &lt;a href='http://www.myleaguetracker.com/'&gt;myLeagueTracker&lt;/a&gt;, a web application that will help FPS gaming communities manage their leagues. The introduction from that post says it well:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href='http://www.myleaguetracker.com/'&gt;myLeagueTracker&lt;/a&gt; is an open-source ASP.NET MVC application currently in development which aims to provide tracking and management of the numerous facets in online &lt;a href='http://en.wikipedia.org/wiki/First-person_shooter'&gt;First-person shooter&lt;/a&gt; gaming leagues. With the ability to handle multiple leagues across any FPS game, myLeagueTracker will help bring versatile league management to gamers who want to concentrate on gaming and not trying to design their own system. Since I am a gamer myself, I hope to provide a system for gamers that is both flexible and easy to use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id='development_series'&gt;Development Series&lt;/h2&gt;

&lt;p&gt;Development on &lt;a href='http://www.myleaguetracker.com/'&gt;myLeagueTracker&lt;/a&gt; is currently underway and I will continually work on it when I have the opportunity outside of my normal employment obligations. With that in mind, this is the first post in a continuing series about the programming aspects I am dealing with on this project. All the source code I write is licensed under the &lt;a href='http://www.apache.org/licenses/LICENSE-2.0'&gt;Apache License, Version 2.0&lt;/a&gt; and is currently available at myLeagueTracker&amp;#8217;s &lt;a href='http://github.com/chartek/myleaguetracker'&gt;GitHub project site&lt;/a&gt;. I want these posts and this project to be resource to you as well as a learning experience for me. I will also be posting entries on the blog for myLeagueTracker which will contain general development progress and support posts geared more towards gamers that wish to use this tool. As always, feel free to send me feedback on either site as I am open to suggestions, comments, and questions. Thanks and enjoy!&lt;/p&gt;</description>
		</item><item>
			<title>Migrated from Drupal to GitHub Pages</title>
			<link>http://www.stevenkuhn.net/blog/migrated-from-drupal-to-github-pages</link>
			<comments>http://www.stevenkuhn.net/blog/migrated-from-drupal-to-github-pages#disqus_thread</comments>
			<pubDate>Thu, 27 Aug 2009 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/migrated-from-drupal-to-github-pages/</guid>
			<description>&lt;p&gt;Last night I officially moved &lt;a href='http://www.stevenkuhn.net'&gt;stevenkuhn.net&lt;/a&gt; from my &lt;a href='http://www.linode.com'&gt;Linode&lt;/a&gt;-hosted &lt;a href='http://www.drupal.org'&gt;Drupal&lt;/a&gt; site over to &lt;a href='http://pages.github.com'&gt;GitHub Pages&lt;/a&gt;. Drupal is cool to set up and for more complicated sites it makes tasks easier to accomplish. However, for my simple technical blog, I found that certain simple things (such as attaching images to posts) were unnecessarily complicated. Yes, other systems are more geared for blogging (like &lt;a href='http://wordpress.org'&gt;WordPress&lt;/a&gt;), but after seeing GitHub Pages, I wanted to try a new approach.&lt;/p&gt;

&lt;p&gt;Unlike Drupal, WordPress, or other dynamically driven CMS/blogging engines out there, GitHub Pages serves only static html pages. There is no database. There is no server-side environment running like PHP or ASP.NET. While on the surface it may seem pretty insane not to use a dynamic site since static pages are exactly that, but that&amp;#8217;s where the beauty of &lt;a href='http://github.com/mojombo/jekyll/tree/master'&gt;Jekyll&lt;/a&gt; comes in. What is Jekyll? A brief overview from Jekyll&amp;#8217;s readme file:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jekyll is a simple, blog aware, static site generator. It takes a template directory (representing the raw form of a website), runs it through &lt;a href='http://textile.thresholdstate.com/'&gt;Textile&lt;/a&gt; or &lt;a href='http://daringfireball.net/projects/markdown/'&gt;Markdown&lt;/a&gt; and &lt;a href='http://www.liquidmarkup.org/'&gt;Liquid&lt;/a&gt; converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server. This is also the engine behind &lt;a href='http://pages.github.com'&gt;GitHub Pages&lt;/a&gt;, which you can use to host your project&amp;#8217;s page or blog right here from GitHub.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;#8217;m not going to dive into the details of Jekyll because there are &lt;a href='http://tom.preston-werner.com/2008/11/17/blogging-like-a-hacker.html'&gt;numerous&lt;/a&gt; &lt;a href='http://jarinheit.com/2009/02/16/simplified-blogging-with-github-pages-and-jekyll.html'&gt;sites&lt;/a&gt; &lt;a href='http://blog.new-bamboo.co.uk/2009/2/20/migrating-from-mephisto-to-jekyll'&gt;that&lt;/a&gt; &lt;a href='http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/'&gt;explain&lt;/a&gt; &lt;a href='http://matflores.com/2009/03/25/getting-started-with-jekyll.html'&gt;it&lt;/a&gt; &lt;a href='http://blog.envylabs.com/2009/08/publishing-a-blog-with-github-pages-and-jekyll/'&gt;already&lt;/a&gt;. However, a few advantages I like about Jekyll are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No caching system is needed since there is no database.&lt;/li&gt;

&lt;li&gt;No longer tied to a WYSIWYG textbox. I&amp;#8217;m free to write my posts in any text editor of my choosing.&lt;/li&gt;

&lt;li&gt;Offline support. Running &lt;a href='http://github.com/mojombo/jekyll/tree/master'&gt;Jekyll&lt;/a&gt; locally will run a local webserver which can be used to view changes without being connected to the internet.&lt;/li&gt;

&lt;li&gt;Complete control over the html. I like to be able to change the html easily without messing around with php templates (as I did with Drupal).&lt;/li&gt;

&lt;li&gt;Static pages can look and act dynamically with the various javascript libraries and APIs available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far I&amp;#8217;m impressed with how the site has turned out. My next plans are to add my twitter feed, an archive section, and paging support for the front page. The source of my blog is available on GitHub; feel free to &lt;a href='http://github.com/chartek/chartek.github.com/tree/master'&gt;take a look&lt;/a&gt;!&lt;/p&gt;</description>
		</item><item>
			<title>Disposing a WCF proxy using an extension method</title>
			<link>http://www.stevenkuhn.net/blog/disposing-wcf-proxy-using-extension-method</link>
			<comments>http://www.stevenkuhn.net/blog/disposing-wcf-proxy-using-extension-method#disqus_thread</comments>
			<pubDate>Thu, 02 Jul 2009 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/disposing-wcf-proxy-using-extension-method/</guid>
			<description>&lt;p&gt;A while back I read a &lt;a href='http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/'&gt;blog post by Dan Rigsby&lt;/a&gt; about why you should not use C# &lt;code&gt;using&lt;/code&gt; statements on a WCF service proxy class even though it implements IDisposable. Basically it comes down to the &lt;code&gt;Dispose()&lt;/code&gt; method calls &lt;code&gt;Close()&lt;/code&gt; which can throw an exception preventing the service proxy from being disposed properly. The solution by Dan Rigsby involving a wrapper class and &lt;a href='http://bloggingabout.net/blogs/erwyn/archive/2006/12/09/WCF-Service-Proxy-Helper.aspx'&gt;another solution by Erwyn van der Meer&lt;/a&gt; (which provides a helper class that you can derive from) both allow you to use the &lt;code&gt;using&lt;/code&gt; statement and still properly dispose of the proxy.&lt;/p&gt;

&lt;p&gt;I wrote an extension method below will dispose a service proxy properly, but it doesn&amp;#8217;t require you to change that proxy in any way. By providing an extension method around ICommunicationObject, any WCF class that dervives from it (ClientBase, ServiceHostBase, etc.) will have this method available as well.&lt;/p&gt;
&lt;pre class='brush: csharp'&gt;
public static class ICommunicationObjectExtensions
{
   public static void TryCloseOrAbort(this ICommunicationObject obj)
   {
      if (obj != null)
      {
         if (obj.State != CommunicationState.Faulted &amp;amp;&amp;amp;
             obj.State != CommunicationState.Closed)
         {
            try { obj.Close(); }
            catch (CommunicationObjectFaultedException)
            { obj.Abort(); }
            catch (TimeoutException)
            { obj.Abort(); }
            catch (Exception)
            {
               obj.Abort();
               throw;
            }
         }
         else
            obj.Abort();
      }
   }
}
&lt;/pre&gt;
&lt;p&gt;With that method in place, all you you have to do is call &lt;code&gt;TryCloseOrAbort()&lt;/code&gt; in a &lt;code&gt;try-finally&lt;/code&gt; block to make sure it is called even if an exception is thrown.&lt;/p&gt;
&lt;pre class='brush: csharp'&gt;
// Example usage:
//      assume MyServiceClient is a WCF service proxy class
var client = new MyServiceClient();

try { client.MyServiceMethod(); }
finally { client.TryCloseOrAbort(); }
&lt;/pre&gt;</description>
		</item><item>
			<title>Extension method to sort ListItems in a ListControl in ASP.NET</title>
			<link>http://www.stevenkuhn.net/blog/extension-method-sort-listitems-listcontrol-aspnet</link>
			<comments>http://www.stevenkuhn.net/blog/extension-method-sort-listitems-listcontrol-aspnet#disqus_thread</comments>
			<pubDate>Wed, 27 Aug 2008 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/extension-method-sort-listitems-listcontrol-aspnet/</guid>
			<description>&lt;p&gt;Yesterday I needed a way to sort the items in a ListControl (in this case, a DropDownList) after the list had been populated. The reason for that is after I databound my DropDownList from a collection of items, I inserted a few more ListItems depending on certain circumstances. Instead of trying to hack some method of inserting those items in my original collection, I wanted a more elegant solution. After I came across a post on Google I came up with a solution using an extension method and LINQ:&lt;/p&gt;
&lt;pre class='brush: csharp;'&gt;
public static void Sort(this ListItemCollection items)
{
  IList&amp;lt;ListItem&amp;gt; itemList = new List&amp;lt;ListItem&amp;gt;();
  foreach (ListItem item in items)
    itemList.Add(item);

  IEnumerable&amp;lt;ListItem&amp;gt; itemEnum =
    from item in itemList orderby item.Text select item;

  items.Clear();
  items.AddRange(itemEnum.ToArray());
}

//example - assume MyDropDownList is a DropDownList on the aspx page
MyDropDownList.DataSource = SomeMethodThatReturnsAList();
MyDropDownList.DataBind();
MyDropDownList.Items.Insert(0, 
	new ListItem(&quot;My Display String&quot;, &quot;My List Value&quot;));

//this will sort all the items based on ListItem.Text
MyDropDownList.Items.Sort();
&lt;/pre&gt;
&lt;p&gt;I wanted a simple solution so I didn&amp;#8217;t do any performance metrics on it. Things I might change is add ability to sort by ListItem.Value, add the ability to change the sort direction, or perhaps sort by a custom comparer. So if you want a way to sort a ListItemCollection, give this a try and let me know what you think! :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (July 16, 2009)&lt;/strong&gt; The post that I found &lt;a href='http://coercedcode.blogspot.com/2007/08/sorting-listitem-collections-in-aspnet.html'&gt;http://coercedcode.blogspot.com/2007/08/sorting-listitem-collections-in-aspnet.html&lt;/a&gt; no longer works. If I find it, I&amp;#8217;ll update this post.&lt;/p&gt;</description>
		</item><item>
			<title>Using TypeMock to mock nHibernate's ISession.Load&lt;T&gt;</title>
			<link>http://www.stevenkuhn.net/blog/using-typemock-mock-nhibernates-isessionloadt</link>
			<comments>http://www.stevenkuhn.net/blog/using-typemock-mock-nhibernates-isessionloadt#disqus_thread</comments>
			<pubDate>Wed, 13 Aug 2008 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/using-typemock-mock-nhibernates-isessionloadt/</guid>
			<description>&lt;p&gt;The development team I work with uses &lt;a href='http://www.hibernate.org/343.html'&gt;nHibernate&lt;/a&gt; for our data-access and data persistence needs. We also use &lt;a href='http://www.typemock.com/&amp;quot;'&gt;Typemock Isolator&lt;/a&gt; to mock classes and methods during unit tests. This is especially handy to mock certain nHibernate API calls to make sure our unit tests are more isolated. Today, I needed a way to mock nHibernate&amp;#8217;s &lt;code&gt;ISession.Load&amp;lt;T&amp;gt;()&lt;/code&gt; for all data objects in the project that use nHibernate. To mock a generic method (like &lt;code&gt;ISession.Load&amp;lt;T&amp;gt;()&lt;/code&gt;) I would normally do the following:&lt;/p&gt;
&lt;pre class='brush: csharp;'&gt;
Mock&amp;lt;ISession&amp;gt; mock = 
	MockManager.MockObject&amp;lt;ISession&amp;gt;(Constructor.Mocked);
mock.AlwaysReturn(&quot;Load&quot;, new DynamicReturnValue(
	(parameters, context) =&gt;
	{
		// assume MyClass has a constructor with int Id parameter
		return new MyClass( (int)parameters[0] );
	}), typeof(MyClass));
&lt;/pre&gt;
&lt;p&gt;That means anytime I call &lt;code&gt;ISession.Load&amp;lt;MyClass&amp;gt;(1);&lt;/code&gt;, I get back a new &lt;em&gt;MyClass&lt;/em&gt; object with 1 passed into the constructor. But what if I have 50 different classes similar to &lt;em&gt;MyClass&lt;/em&gt; that I want to mock like this? The simplest way is to iterate over a list of types needed and mock them as well, like below:&lt;/p&gt;
&lt;pre class='brush: csharp;'&gt;
Mock&amp;lt;ISession&amp;gt; mockSession =
	MockManager.MockObject&amp;lt;ISession&amp;gt;(Constructor.Mocked);

// Retrieve all the types in the same assembly as MyClass
// and mock those types that have the &quot;Id&quot; property
Assembly assembly = Assembly.GetAssembly(typeof(MyClass));
foreach (Type type in assembly.GetTypes())
{
   Type objType = type; // this line is needed because 'type' will 
                        // cause issues with the anonymous method
                        // below.

   if (objType.GetProperty(&quot;Id&quot;) != null)
   {
      mockSession.AlwaysReturn(&quot;Load&quot;, new DynamicReturnValue(
      (parameters, context) =&gt;
      {
         return Activator.CreateInstance(objType, parameters[0]);
      }), objType);
   }
}
&lt;/pre&gt;
&lt;p&gt;Obviously you can change the foreach loop to use whatever list of types you need, but this certainly beats having to duplicate code!&lt;/p&gt;</description>
		</item><item>
			<title>An error was discovered processing the &lt;Security&gt; header</title>
			<link>http://www.stevenkuhn.net/blog/error-was-discovered-processing-security-header</link>
			<comments>http://www.stevenkuhn.net/blog/error-was-discovered-processing-security-header#disqus_thread</comments>
			<pubDate>Mon, 04 Aug 2008 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/error-was-discovered-processing-security-header/</guid>
			<description>&lt;p&gt;A coworker and I were troubleshooting an issue we were having concerning a .NET call to a webservice that used WSE Security. Our client derived from &lt;code&gt;Microsoft.Web.Services2.WebServicesClientProtocol&lt;/code&gt; and every time we tried to call the webservice this error would appear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;An error was discovered processing the &amp;lt;Security&amp;gt; header&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A quick search on Google returned a &lt;a href='http://forums.asp.net/p/966958/1838192.aspx'&gt;quick, easy solution&lt;/a&gt;: verify that client and server have their &lt;em&gt;system time in synch&lt;/em&gt; (a 5 minute window is allowed). Once the server time (about 6 minutes apart) was fixed the issue immediately disappeared.&lt;/p&gt;</description>
		</item><item>
			<title>Staging environments via Linode are awesome!</title>
			<link>http://www.stevenkuhn.net/blog/staging-environments-linode-are-awesome</link>
			<comments>http://www.stevenkuhn.net/blog/staging-environments-linode-are-awesome#disqus_thread</comments>
			<pubDate>Wed, 30 Jul 2008 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/staging-environments-linode-are-awesome/</guid>
			<description>&lt;p&gt;This weekend I wanted to upgrade my Linode server from &lt;a href='http://www.ubuntu.com/'&gt;Ubuntu&lt;/a&gt; 7.10 to 8.04 and also to upgrade my &lt;a href='http://trac.edgewall.org/'&gt;Trac server&lt;/a&gt; to version 0.11. Now the quickest method would have been to just change the &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; file to point to hardy and do a &lt;code&gt;sudo apt-get update; sudo apt-get dist-upgrade&lt;/code&gt; and then download the latest version of &lt;a href='http://trac.edgewall.org/'&gt;Trac&lt;/a&gt;. But not knowing if my sites would still be running combined with the fact I wasn&amp;#8217;t quite happy with the way I had set things up originally, I decided to buy another &lt;a href='http://www.linode.com/'&gt;Linode server&lt;/a&gt; and set up a staging environment.&lt;/p&gt;

&lt;p&gt;Honestly, it wasn&amp;#8217;t hard at all! Once I installed 8.04 fresh on the stage server, I installed apache, mysql, php, trac, subversion, and other necessary packages, set it up as if it was my primary server (creating aliases like stage.stevenkuhn.net where I could see how it looked), and then copied the new disk image back to the old server. Once there I restarted the old server with the new disk image and since all my original domains still pointed to my production server, I had a &lt;em&gt;very limited&lt;/em&gt; downtime. When I was finished, I canceled my second server and received a pro-rated created. I spent less than $2 for having a limited-time staging environment! &lt;a href='http://www.linode.com/'&gt;Linode&lt;/a&gt; is the best!&lt;/p&gt;</description>
		</item><item>
			<title>A Special Blend</title>
			<link>http://www.stevenkuhn.net/blog/special-blend</link>
			<comments>http://www.stevenkuhn.net/blog/special-blend#disqus_thread</comments>
			<pubDate>Tue, 29 Jul 2008 00:00:00 -0700</pubDate>
			<guid isPermaLink="true">http://www.stevenkuhn.net/blog/special-blend/</guid>
			<description>&lt;p&gt;Welcome to my little corner of the blogosphere! From the title of this post, the main plan for this site is to give what I call a special blend of .NET development and Linux knowledge, along with my other random thoughts and ideas. :)&lt;/p&gt;

&lt;p&gt;For those of you coming across this who don&amp;#8217;t know me (or would like to know more), I live in the Chicago area where my work primarily consists of ASP.NET/C# development using different technologies such as AJAX.NET, nHibernate and TypeMock to develop websites specifically for the needs of people inside the company I work for. I&amp;#8217;m also involved with a LEGO&amp;#174; based Half-Life 2 mod called &lt;a href='http://www.blockpartymod.com/'&gt;Block Party&lt;/a&gt;, where I&amp;#8217;m mainly responsible for the programming aspect as well as maintaining our &lt;a href='http://dev.blockpartymod.com/'&gt;development site&lt;/a&gt;. As far as Linux is concerned, I&amp;#8217;ve been a fan since I bought my first RedHat Linux 4.2 discs from Best Buy over back in 1997. :) I&amp;#8217;ve since latched onto Ubuntu, running it on my home computers as well as the &lt;a href='http://www.linode.com/'&gt;Linode&lt;/a&gt; I&amp;#8217;m using to host this site. I must say Linux has sure grown leaps and bounds from the time I first used it!&lt;/p&gt;

&lt;p&gt;When I&amp;#8217;m not plugging away with code or tweaking my home network, you can usually find me hitting up a couple different game servers on &lt;a href='http://www.teamfortress.com/'&gt;Team Fortress 2&lt;/a&gt;, which has definitely been my game of choice as of late. :)&lt;/p&gt;

&lt;p&gt;Again welcome to my site and hope you enjoy your stay!&lt;/p&gt;</description>
		</item>
	</channel>
</rss>