<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xoltar</title>
	<atom:link href="http://www.xoltar.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.xoltar.org</link>
	<description>How can we make this simpler?</description>
	<lastBuildDate>Mon, 28 Jun 2010 18:23:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using MySQL with Linq to Entities</title>
		<link>http://www.xoltar.org/?p=47</link>
		<comments>http://www.xoltar.org/?p=47#comments</comments>
		<pubDate>Mon, 28 Jun 2010 05:30:13 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[EF]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=47</guid>
		<description><![CDATA[If you&#8217;re thinking about using MySQL with Linq to Entities, just don&#8217;t. The provider from mysql.com can&#8217;t handle subqueries, outer joins, or anything else I&#8217;ve tried with it beyond simple, one entity selects. Please let me know if there&#8217;s a killer EF provider for MySQL that I&#8217;ve missed somewhere.
]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re thinking about using MySQL with Linq to Entities, just don&#8217;t. The provider from mysql.com can&#8217;t handle subqueries, outer joins, or anything else I&#8217;ve tried with it beyond simple, one entity selects. Please let me know if there&#8217;s a killer EF provider for MySQL that I&#8217;ve missed somewhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=47</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASP.Net MVC Metadata and Validation</title>
		<link>http://www.xoltar.org/?p=45</link>
		<comments>http://www.xoltar.org/?p=45#comments</comments>
		<pubDate>Sun, 13 Jun 2010 14:54:45 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=45</guid>
		<description><![CDATA[Daniel Chambers posted a nice overview of the ASP.Net MVC metadata and validation classes, with diagrams and analysis. If you want or need to know how these work, this article will save you at least an hour or two of reading the MVC source.
]]></description>
			<content:encoded><![CDATA[<p>Daniel Chambers posted a <a href="http://www.digitallycreated.net/Blog/54/deep-inside-asp.net-mvc-2-model-metadata-and-validation">nice overview of the ASP.Net MVC metadata and validation classes</a>, with diagrams and analysis. If you want or need to know how these work, this article will save you at least an hour or two of reading the MVC source.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=45</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consolidated Dependencies</title>
		<link>http://www.xoltar.org/?p=42</link>
		<comments>http://www.xoltar.org/?p=42#comments</comments>
		<pubDate>Wed, 19 May 2010 07:30:23 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[dependency injection]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=42</guid>
		<description><![CDATA[Dependency injection (DI) is a very useful technique, especially when it is used consistently throughout a system, but it’s beyond the scope of this post to discuss its virtues – Martin Fowler’s article is a good introduction. 
DI comes in several flavors, but two of the most common should be mentioned. Constructor injection, in which [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Dependency_injection">Dependency injection</a> (DI) is a very useful technique, especially when it is used consistently throughout a system, but it’s beyond the scope of this post to discuss its virtues – <a href="http://martinfowler.com/articles/injection.html#InversionOfControl">Martin Fowler’s article</a> is a good introduction. </p>
<p>DI comes in several flavors, but two of the most common should be mentioned. <em>Constructor injection</em>, in which the class to be instantiated receives all its dependencies as constructor arguments from the DI container, provides a clear declaration of the dependencies of a type. I generally prefer it over <em>setter injection</em>, which makes less clear assertions about dependencies – if the DI container can provide an implementation to populate a property on a constructed object it will, but if it cannot satisfy the dependency, it’s not an error. With constructor injection, all dependencies must be satisfied, or you get an exception. It’s very clear. </p>
<p>There’s a problem with constructor injection, however. When using DI with classes that inherit from a base class that has constructor dependencies, the deriving class must also require those same dependencies. In many cases, these arguments are required solely so that they may be passed to the base class constructor:</p>
<pre>public class Base
{
	private ISomeDependency _someDependency;

	public Base(ISomeDependency someDependency)
	{
		_someDependency = someDependency;
	}

	protected void DoSomething()
	{
		_someDependency.MagicHappens();
	}
}

public class Derived : Base
{
	public Derived(ISomeDependency someDependency): base(someDependency)
	{
	}
}</pre>
<p>Note that Derived has no use for an <code>ISomeDependency</code>, it&#8217;s purely an implementation detail of the base class. Now at some point, after you have fifty or so classes that derive from Base, someone will decide that Base really needs another dependency. Then you’re faced with a hard choice: Go through all your source and update the constructors in all fifty subclasses to take the new dependency that they need in order to invoke Base’s constructor, or give up on DI for that new dependency:</p>
<pre>	...
	IOtherDependency _otherDependency;

	public Base(ISomeDependency someDependency)
	{
		_someDependency = someDependency;
		_otherDependency = StaticContainer.Resolve<iotherdependency>();
	}
	...</pre>
<p>Or perhaps equivalently, you start passing the container itself in as a constructor dependency. Either approach hamstrings the testability benefits of dependency injection. </p>
<p>A better approach is for base classes to take a <em>single</em> constructor argument that encapsulates all the dependencies for the base class:</p>
<pre>public class BaseDependencies
{
	ISomeDependency SomeDependency {get;set;}
	IOtherDependency OtherDependency {get;set;}

	public BaseDependencies(ISomeDependency someDependency, IOtherDependency otherDependency)
	{
		SomeDependency = someDependency;
		OtherDependency = otherDependency;
	}
}</pre>
<p>Now we make Base take only a BaseDependencies parameter in its constructor:</p>
<pre>public Base(BaseDependencies dependencies)
	{
		_someDependency = dependencies.SomeDependency;
		_otherDependency = dependencies.OtherDependency;
	}	</pre>
<p>We can add new properties to BaseDependencies at any time, and the DI container will provide implementations as we would wish, and our derived classes no longer need to be updated whenever the base class needs another dependency. </p>
<pre>	public Derived(BaseDependencies dependencies):base(dependencies)
	{
	}	</pre>
<p>Of course the pattern can be extended for deeper inheritance as well – instead of taking BaseDependencies, Derived can take a DerivedDependencies object that extends BaseDependencies. No need to hamstring your DI, no need to update those fifty derived classes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AfterMix</title>
		<link>http://www.xoltar.org/?p=38</link>
		<comments>http://www.xoltar.org/?p=38#comments</comments>
		<pubDate>Tue, 23 Mar 2010 05:17:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=38</guid>
		<description><![CDATA[I had the pleasure of attending the Microsoft MIX conference this year. It was my first MIX, and I have to say it was very, very useful. When you’re working with the MS technology stack, it’s extremely helpful to get a sense of what MS wants to focus on, what they think is the important [...]]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of attending the Microsoft MIX conference this year. It was my first MIX, and I have to say it was very, very useful. When you’re working with the MS technology stack, it’s extremely helpful to get a sense of what MS wants to focus on, what they think is the important stuff. It was a lot easier to sense that in person at this conference than otherwise. </p>
<p>For example, I had completely missed the importance of ADO.Net data services, which went under the radar as something that was useful only for people who wanted a RESTful interface for developering Silverlight apps. It’s far more than that. In particular, it’s <em>Linq to your data over the web.</em> If you already have an EF model, or a Linq to Sql model, or you care to implement something that looks like one (i.e., has IQueryable&lt;T&gt; properties), you can have a <em>fully queryable</em> web interface to that data, in just a few minutes’ time. As in, “Give me all the Foos with Bar greater than 5 and FooDate sometime in the last week,” and so on.</p>
<p>The speakers varied between adequate and excellent, with more excellent than not. The conference was held at the Mandalay Bay hotel in Las Vegas, and it was well organized. It was my first trip to Las Vegas, and on the whole I’d recommend against hosting a conference there in the future. Too expensive, too hard to get around without a taxi. Mine might be a minority opinion, though. More raucous souls seem to have enjoyed the nightlife there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real World Haskell</title>
		<link>http://www.xoltar.org/?p=36</link>
		<comments>http://www.xoltar.org/?p=36#comments</comments>
		<pubDate>Sun, 07 Mar 2010 07:14:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=36</guid>
		<description><![CDATA[When I learned Haskell, there were hardly any books on the subject at all, and those that did exist weren’t really targeting professional software developers. So I wound up learning primarily from academic papers, which was a struggle, as you might imagine. I am happy to report that the need for that sort of thing [...]]]></description>
			<content:encoded><![CDATA[<p>When I learned Haskell, there were hardly any books on the subject at all, and those that did exist weren’t really targeting professional software developers. So I wound up learning primarily from academic papers, which was a struggle, as you might imagine. I am happy to report that the need for that sort of thing is now officially <em>over</em>.</p>
<p><a href="http://book.realworldhaskell.org"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="realworldhaskell" border="0" alt="realworldhaskell" src="http://www.xoltar.org/blog/wp-content/uploads/realworldhaskell.jpg" width="187" height="244" /></a></p>
<p><a href="http://book.realworldhaskell.org">Real World Haskell</a> is an excellent book. It covers all the basics, it covers common application development areas such as web, GUI, and database programming, and it covers real world needs like unit testing and performance profiling. It’s worth the price just for the coverage of monads and monad transformers.</p>
<p>A working copy of the book was online while it was being written, and many, many people (self included) contributed feedback along the way, which the authors graciously accepted and used to improve the book. So I had read parts of the book online already before I ever picked up the book in the book store. Still, I was surprised to see how much there was that I hadn’t read before, and also at how much more compelling it was in book form. Even if you’ve read the online version, you might still want to go buy the book.</p>
<p>The authors bring a great deal of knowledge and experience to the work, and I was very grateful for their observations and advice on Haskell software engineering and good style. The book is filled with little flashes of insight, and some very elegant code. If you want to be serious about Haskell, you want this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=36</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why Isn&#8217;t Cabal Installed with GHC?</title>
		<link>http://www.xoltar.org/?p=33</link>
		<comments>http://www.xoltar.org/?p=33#comments</comments>
		<pubDate>Tue, 23 Feb 2010 22:49:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cabal]]></category>
		<category><![CDATA[ghc]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=33</guid>
		<description><![CDATA[Given that installing Haskell packages is painless with Cabal and often exasperating without it, why isn’t it just included by default in a GHC install? Seems like an easy step to take that would make a huge difference to the user community, especially new users. Are we supposed to use the new (beta) Haskell Platform [...]]]></description>
			<content:encoded><![CDATA[<p>Given that installing Haskell packages is painless with <a href="http://www.haskell.org/cabal/">Cabal</a> and often exasperating without it, why isn’t it just included by default in a GHC install? Seems like an easy step to take that would make a huge difference to the user community, especially new users. Are we supposed to use the new (beta) <a href="http://hackage.haskell.org/platform/">Haskell Platform</a> instead of the regular GHC install to get this sort of tool support?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=33</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>A Beginner&#8217;s Guide to R</title>
		<link>http://www.xoltar.org/?p=31</link>
		<comments>http://www.xoltar.org/?p=31#comments</comments>
		<pubDate>Wed, 17 Feb 2010 05:52:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[r]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=31</guid>
		<description><![CDATA[I’ve been looking for tools for data analysis lately, and remembered R, a language primarily geared toward statistics and graphing. R is a little bit unusual in how it works compared to other languages, so a quick skim of the manual wasn’t giving me a good understanding. A book was called for. Most of the [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been looking for tools for data analysis lately, and remembered <a href="http://www.r-project.org/">R</a>, a language primarily geared toward statistics and graphing. R is a little bit unusual in how it works compared to other languages, so a quick skim of the manual wasn’t giving me a good understanding. A book was called for. Most of the books on R assume you’re a statistician already, or are trying to teach you statistics using R. While getting a better grip on statistics is high on my list of things to do, I wanted to learn R first. Hence, this book.</p>
<p><a href="http://www.springer.com/statistics/computational/book/978-0-387-93836-3"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="USER Ritz-Streibig.qxd (Page 1)" border="0" alt="USER Ritz-Streibig.qxd (Page 1)" src="http://www.xoltar.org/blog/wp-content/uploads/beginners_guide_to_r.jpg" width="99" height="147" /></a> </p>
<p>The book did what I hoped it would – gave me a basic understanding of R’s syntax and how to perform common operations. It’s also a slim volume at 217 pages, which is always appreciated. I found myself coming back to it for reference, rereading chapters that I had skimmed and getting more out of it the second time. So on the whole, it’s a good and useful introduction to R. It gave me the necessary footing to go out and explore more on my own. Do beware, however, that some of the examples have typos or other errors. Also, it leaves large swathes of R’s functionality completely unexplored (no discussion of R’s object orientation, for example). Nevertheless, you’ll be well prepared to go out and track down whatever further information you require after reading this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Measure Anything</title>
		<link>http://www.xoltar.org/?p=25</link>
		<comments>http://www.xoltar.org/?p=25#comments</comments>
		<pubDate>Fri, 05 Feb 2010 21:59:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[book]]></category>
		<category><![CDATA[metrics]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=25</guid>
		<description><![CDATA[
&#160;
We find no sense in talking about something unless we specify how we measure it; a definition by the method of measuring a quantity is the one sure way of avoiding talking nonsense&#8230;      - Sir Hermann Bondi

This book was a great read and completely changed the way I think about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.howtomeasureanything.com"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="how-to-measure-anything" border="0" alt="how-to-measure-anything" src="http://www.xoltar.org/blog/wp-content/uploads/howtomeasureanything2.jpg" width="132" height="197" /></a>
<p>&#160;</p>
<blockquote><p>We find no sense in talking about something unless we specify how we measure it; a definition by the method of measuring a quantity is the one sure way of avoiding talking nonsense&#8230;      <br />- Sir Hermann Bondi</p>
</blockquote>
<p>This book was a great read and completely changed the way I think about measurement. It offers many techniques for taking the data you already have and analyzing them in ways that allow you make better decisions. It also teaches you how to evaluate what kinds of additional information would be most helpful to solving your problem, and even put a dollar value on how much it would be worthwhile to spend get that information in order to make a better decision.</p>
<p>Most importantly, it does an excellent job of challenging the basic assumption that some things just aren’t measurable. After reading this book, I feel like there’s always <em>something</em> I can do to help get the information I need, understand my problem better, and make a better decision. I heartily recommend this book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tech Note: Finding All the Assemblies Available to Your Application</title>
		<link>http://www.xoltar.org/?p=23</link>
		<comments>http://www.xoltar.org/?p=23#comments</comments>
		<pubDate>Thu, 04 Feb 2010 03:59:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=23</guid>
		<description><![CDATA[I sometimes have .Net library code that needs to work both in web applications and in console or service applications. The differences between the two environments, even for a library, are sometimes surprising. For example, I recently needed to find all the assemblies available to (i.e., in the same folder with) the application. My first [...]]]></description>
			<content:encoded><![CDATA[<p>I sometimes have .Net library code that needs to work both in web applications and in console or service applications. The differences between the two environments, even for a library, are sometimes surprising. For example, I recently needed to find all the assemblies available to (i.e., in the same folder with) the application. My first implementation worked fine for the command line app, but failed miserably for the web site. After trying a few different approaches, I found one that works well. I’m recording this for the benefit of anyone else who has to perform this trick.</p>
<p>The “obvious” way to do this, I thought, was to use Assembly.GetExecutingAssembly().Location to find where the assembly lived, use DirectoryInfo.GetFiles() to find the dll and exe files in that location’s directory, and then use Assembly.LoadFile() to load them. This all works just fine in the command line application, but in a web site, there’s shadow copying involved – the assembly returned to you from GetExecutingAssembly isn’t in your Bin folder, it’s in a semi-randomly named folder nesteded several levels deep from your Temporary ASP.Net Files folder. To add difficulty, that one assembly (along with its pdb file, perhaps) is all that’s in the folder. Each of the assemblies in your Bin folder gets copied to a unique folder of its own before it’s loaded into the application, so there’s no easy way to find them all and iterate over them. I didn’t check this, but it’s entirely possible that the assembly isn’t copied at all until it needs to be loaded, in which case even scrubbing through the funny folders looking for assemblies wouldn’t work.</p>
<p>So if Assembly.Location doesn’t work, what does? Something on the AppDomain, perhaps. AppDomain.CurrentDomain.BaseDirectory works for command line apps, but for web sites it gives you the root of the site, not the bin folder. For a web site, the Bin folder is in PrivateBinPath. PrivateBinPath is null for command line apps, though. So it turns out the way to find all your assemblies is by using PrivateBinPath if it’s not null, or else BaseDirectory.</p>
<p>Now that we have a way to find all the available assemblies, what about loading them? If your application is doing shadow copying, you can’t use Assembly.LoadFromFile, since you’re working with assemblies from the Bin folder, but your application is loading them from the shadow copy directories with the funny names, which means if you need a type called “Foo.Bar.Baz,MyAssembly” and you load it from an assembly in the Bin folder, it won’t be compatible with the types that are already loaded in your application, because they were all loaded from different assemblies in the shadow copy folders. </p>
<p>A better way to load them is to ask the AppDomain to Load() them. Get the name from the file, strip the extension, pass it to AppDomain.CurrentDomain.Load(). That way it will load types from the correct assemblies – either from the application directory, or from the shadow copy directories, whichever is correct for your application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clarity</title>
		<link>http://www.xoltar.org/?p=19</link>
		<comments>http://www.xoltar.org/?p=19#comments</comments>
		<pubDate>Sun, 31 Jan 2010 20:34:00 +0000</pubDate>
		<dc:creator>xoltar</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[simplicity]]></category>

		<guid isPermaLink="false">http://www.xoltar.org/?p=19</guid>
		<description><![CDATA[It’s been a long time since I’ve posted. One reason is that work has been taking large portion of my time, which is a good thing, generally. However, since I’ve been spending almost all of time I have available for programming on work, and that work is all proprietary, there’s been little material available to [...]]]></description>
			<content:encoded><![CDATA[<p>It’s been a long time since I’ve posted. One reason is that work has been taking large portion of my time, which is a good thing, generally. However, since I’ve been spending almost all of time I have available for programming on work, and that work is all proprietary, there’s been little material available to share with you, gentle reader.</p>
<p>Therefore, I’m changing the focus of this blog. The new focus will be on clarity and simplicity &#8211; in thinking, in programming, in life. These qualities are notoriously difficult to achieve, especially in complex systems like software or our own lives. It’s certainly a struggle for me, but one I’m passionate about. I’d like to share the books, techniques, etc. that help me find simplicity and clarity, and invite others to do the same.</p>
<p>The new look of this blog is also a simplification. The first version of my blog worked with software I’d written myself. After some time I had to admit I didn’t have time to both write blog software and write for the blog. So I switched to some content management software, based on the notion that I wanted to build an interesting web site that would require lots of things beyond a blog. I installed a beta version because I thought I’d rather get the latest and greatest, and I’d want to tweak and extend the software, so a developer’s version would be fine. Turns out I didn’t have time for that either. Now, I’m using a supported version of a program specifically focused on blogging, and my focus will be solely on finding and writing good content. Simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xoltar.org/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
