<?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>Elegant Code &#187; Jan Van Ryswyck</title>
	<atom:link href="http://elegantcode.com/author/jryswyck/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Fri, 05 Feb 2010 20:57:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Integrating ELMAH for a WCF Service</title>
		<link>http://elegantcode.com/2010/02/05/integrating-elmah-for-a-wcf-service/</link>
		<comments>http://elegantcode.com/2010/02/05/integrating-elmah-for-a-wcf-service/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 20:57:08 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/02/05/integrating-elmah-for-a-wcf-service/</guid>
		<description><![CDATA[Peter Cosemans, who is one of my colleagues, found a nice way to integrate ELMAH for a WCF service. ELMAH is an error logging facility for logging unhandled exceptions particularly focused on ASP.NET web applications. There are plenty of sources out there, like this blog post by Scott Hanselman, that describe how to get ELMAH [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/cosemansp">Peter Cosemans</a>, who is one of my colleagues, found a nice way to integrate <a href="http://code.google.com/p/elmah/">ELMAH</a> for a WCF service. ELMAH is an error logging facility for logging unhandled exceptions particularly focused on ASP.NET web applications. There are plenty of sources out there, like <a href="http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx">this blog post</a> by Scott Hanselman, that describe how to get ELMAH up and running for an ASP.NET web application.</p>
<p>In order to get it working for WCF, you need to provide a custom error handler by implementing the <a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx">IErrorHandler</a> interface:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> ElmahErrorHandler : IErrorHandler
{
    <span class="kwrd">public</span> <span class="kwrd">void</span> ProvideFault(Exception error, MessageVersion version,
                             <span class="kwrd">ref</span> Message fault)
    {
        var dummyRequest =
            <span class="kwrd">new</span> SimpleWorkerRequest(<span class="str">&quot;dummy&quot;</span>, <span class="str">&quot;&quot;</span>, <span class="kwrd">new</span> StringWriter());
        var context = <span class="kwrd">new</span> HttpContext(dummyRequest);

        var elmahLogger = Elmah.ErrorLog.GetDefault(context);
        elmahLogger.Log(<span class="kwrd">new</span> Elmah.Error(error));
    }

    <span class="kwrd">public</span> Boolean HandleError(Exception error)
    {
        SDExceptionHandler.DoHandle(error);
        <span class="kwrd">return</span> <span class="kwrd">true</span>;
    }
}</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 error handler needs to be added to the stack of error handlers. You can do this in a couple of ways, for example by providing a custom attribute that implements <a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iservicebehavior.aspx">IServiceBehavior</a> and then applying this attribute to your service class.</p>
<p>Next you need to add some configuration to your web.config and your all good to go:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">system.web</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">httpHandlers</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">verb</span><span class="kwrd">=&quot;POST,GET,HEAD&quot;</span>
             <span class="attr">path</span><span class="kwrd">=&quot;MyService.Elmah.axd&quot;</span>
             <span class="attr">type</span><span class="kwrd">=&quot;Elmah.ErrorLogPageFactory, Elmah&quot;</span> <span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">httpHandlers</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">system.web</span><span class="kwrd">&gt;</span>

<span class="kwrd">&lt;</span><span class="html">elmah</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">errorLog</span> <span class="attr">type</span><span class="kwrd">=&quot;Elmah.XmlFileErrorLog, Elmah&quot;</span>
              <span class="attr">logPath</span><span class="kwrd">=&quot;C:\MyServiceLog\&quot;</span><span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">elmah</span><span class="kwrd">&gt;</span></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>What’s nice about this approach is that you don’t need to run the WCF service in ASP.NET compatibility mode, which is a major bonus.</p>
<p>Hope this helps</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/02/05/integrating-elmah-for-a-wcf-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JetBrains Web IDE</title>
		<link>http://elegantcode.com/2010/01/29/jetbrains-web-ide/</link>
		<comments>http://elegantcode.com/2010/01/29/jetbrains-web-ide/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 21:03:26 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/29/jetbrains-web-ide/</guid>
		<description><![CDATA[As I already mentioned in a previous blog post, I’m kind of (re-)learning HTML and CSS. The best way for me to pick things up again is by getting my hands dirty and work myself through a simple example. So I decided to work on some sort of prototype of a web application without using [...]]]></description>
			<content:encoded><![CDATA[<p>As I already mentioned in a <a href="http://elegantcode.com/2010/01/26/css-basics-the-box-model/">previous blog post</a>, I’m kind of (re-)learning HTML and CSS. The best way for me to pick things up again is by getting my hands dirty and work myself through a simple example. So I decided to work on some sort of prototype of a web application without using any web framework like ASP.NET MVC, Fubu MVC, Ruby on Rails, etc. … Just plain old HTML and CSS, like the Internet gods intended. I also didn’t want to suck all the fun out of it either, so I decided to use <a href="http://www.jetbrains.com/webide/index.html">Web IDE</a> from <a href="http://www.jetbrains.com/index.html">JetBrains</a> as my IDE for churning out this prototype. </p>
<p>I must say that I was pleasantly surprised by some of the features that this IDE has to offer. The first and most obvious one is probably intellisense that just works as expected.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/image9.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb9.png" width="553" height="385" /></a> </p>
<p>Also notice the on-the-fly code inspection (colored marker bar on the right) that should be familiar when you’re a Resharper addict like me. Web IDE provides W3C XHTML/CSS validation while working in the editor which is really useful. </p>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/image10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb10.png" width="548" height="381" /></a> </p>
<p>Being the uncertain type, it was also nice to see all the familiar refactoring features from Resharper being available as well. Renaming a class or id is just a breeze. All the corresponding HTML or CSS files are consistently updated.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/image11.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb11.png" width="546" height="382" /></a> </p>
<p>Navigation is there as well (CTRL-N and CTRL-SHIFT-N).</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/image12.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb12.png" width="543" height="378" /></a> </p>
<p>This looks just like <a href="http://www.jetbrains.com/resharper/index.html">Resharper</a> for web developers, but there’s more. At first, I had all the HTML and CSS files including all the image file in the root folder of the project. I wanted to divide and conquer by putting the images and CSS files into their own separate folder. As I prepared myself to change all the references in the HTML files, Web IDE did that all for me when I dragged the files to their final destination. Now I didn’t had to go over all the HTML files and manually change the links. How cool is that!</p>
<p>Web IDE also provides source-control integration Subversion, Git, Perforce, etc … and that’s just the tip of the iceberg. While working on the prototype of the web application, I mostly focused on the layout and not so much on the behavior so I didn’t use much of the JavaScript capabilities. But I was told that it is comparable with the JavaScript features in <a href="http://www.jetbrains.com/ruby/index.html">RubyMine</a> as described by Peter in <a href="http://peter.worksontheweb.net/post/An-alternative-to-editing-JavaScript-in-Visual-Studio-RubyMine.aspx">this blog post</a>. This is something that I’m going to explore when I start learning more about JavaScript <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . </p>
<p>Although being the first version and still in beta, the IDE seems pretty stable and I couldn’t notice any performance hiccups so far (which <a href="http://davybrion.com/blog/2010/01/i-still-have-low-expectations-for-visual-studio-2010/">cannot be said for all IDE’s</a> these days). </p>
<p>I do hope that there will be some support for ASP.NET or other view engines like <a href="http://sparkviewengine.com/">Spark</a>, <a href="http://nvelocity.sourceforge.net/">NVelocity</a>, etc. … in future versions. In fact, I still silently wish that JetBrains would come up with an IDE for .NET. Being realistic about it, I don’t have high hopes for something like that coming out but it would totally rock if they decided to build one. Sweet dreams <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Bottom line, when you’re doing web development in Visual Studio, make sure to also check out Web IDE. It will probably help you to become more productive along the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/29/jetbrains-web-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calling Non-Public Methods</title>
		<link>http://elegantcode.com/2010/01/28/calling-non-public-methods/</link>
		<comments>http://elegantcode.com/2010/01/28/calling-non-public-methods/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 19:47:39 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[.Net 3.5]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/28/calling-non-public-methods/</guid>
		<description><![CDATA[A typical way for invoking a non-public method of a class is by using reflection. This can come in handy in a number of cases. One typical scenario that comes to mind is when the designers of the .NET Framework or another 3rd party framework decided to bury a class or a method as internal [...]]]></description>
			<content:encoded><![CDATA[<p>A typical way for invoking a non-public method of a class is by using reflection. This can come in handy in a number of cases. One typical scenario that comes to mind is when the designers of the .NET Framework or another 3rd party framework decided to bury a class or a method as internal while this could perfectly solve a problem (I just hate it when they do that).</p>
<p>Invoking private methods is not considered a best practice in general, but there are cases where you have no other option than to fall back on using reflection. The following code snippet shows how one would typically accomplish that.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> Subject
{
    <span class="kwrd">private</span> String DoSomething(String input)
    {
        <span class="kwrd">return</span> input;
    }
}

<span class="rem">// Calling code</span>
var subject = <span class="kwrd">new</span> Subject();
var doSomething = <span class="kwrd">typeof</span>(Subject).GetMethod(<span class="str">&quot;DoSomething&quot;</span>,
    BindingFlags.Instance | BindingFlags.NonPublic);
var result = doSomething.Invoke(subject, <span class="kwrd">new</span>[] { <span class="str">&quot;Hello Muppets&quot;</span> });
Console.WriteLine(result);  </pre>
<style type="text/css">
<p>.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>
<style type="text/css">
<p>.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>We all recognize this piece of code as we’ve done this at some point in one of our coding sessions. What I want to share here is a slightly nicer way to accomplish the same without all the usual reflection ugliness.</p>
<pre class="csharpcode"><span class="rem">// Calling code that uses delegates</span>
var subject = <span class="kwrd">new</span> Subject();
var doSomething = (Func&lt;String, String&gt;)
    Delegate.CreateDelegate(<span class="kwrd">typeof</span>(Func&lt;String, String&gt;), subject, <span class="str">&quot;DoSomething&quot;</span>);
Console.WriteLine(doSomething(<span class="str">&quot;Hello Freggles&quot;</span>));</pre>
<style type="text/css">
<p>.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 code just creates a delegate that matches the signature of the non-public method that we want to call. To me, this approach looks far more elegant. Note that this only works for instance methods and not for static methods. </p>
<p>I hope that this can be of some use.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/28/calling-non-public-methods/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS Basics: The Box Model</title>
		<link>http://elegantcode.com/2010/01/26/css-basics-the-box-model/</link>
		<comments>http://elegantcode.com/2010/01/26/css-basics-the-box-model/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 19:52:34 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/26/css-basics-the-box-model/</guid>
		<description><![CDATA[If you’ve been using CSS for a while, then this post will probably teach you nothing new. I just wanted to state the obvious even if I’m the only one who benefits from it.
While I was (re-)learning CSS, I came across these two properties called margin and padding. At first, they seem to be doing [...]]]></description>
			<content:encoded><![CDATA[<p>If you’ve been using CSS for a while, then this post will probably teach you nothing new. I just wanted to state the obvious even if I’m the only one who benefits from it.</p>
<p>While I was (re-)learning CSS, I came across these two properties called <em>margin</em> and <em>padding</em>. At first, they seem to be doing the same thing namely providing space between HTML elements. But although they seem to fulfill the same purpose, there’s a clear distinction between the two.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2010/01/image5.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb5.png" width="240" height="145" /></a>&#160;</p>
</p>
<p>The margin is intended for providing space between outside HTML elements or the sides of the page. Padding is used for providing visual space between the content and the border of the box. </p>
<div style="border-bottom: #000000 2px dashed; border-left: #000000 2px dashed; margin: 25px; background: #4f81bd; border-top: #000000 2px dashed; font-weight: bold; border-right: #000000 2px dashed"><font color="#ffffff">Some margin, no padding</font> </div>
<div style="border-bottom: #000000 2px dashed; border-left: #000000 2px dashed; padding-bottom: 25px; padding-left: 25px; padding-right: 25px; background: #4f81bd; border-top: #000000 2px dashed; font-weight: bold; border-right: #000000 2px dashed; padding-top: 25px"><font color="#ffffff">Some padding, no margin</font> </div>
<p>&#160;</p>
<p>The first example provides a margin to add visual space between the border and the parent element. The second one provides space between the border and the content.</p>
<p>I agree that this is trivial, but it matters to understand the difference between these two properties when using CSS. </p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/26/css-basics-the-box-model/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kicking Off the New E-VAN Season</title>
		<link>http://elegantcode.com/2010/01/25/kicking-off-the-new-e-van-season/</link>
		<comments>http://elegantcode.com/2010/01/25/kicking-off-the-new-e-van-season/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 19:47:09 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[E-VAN]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/25/kicking-off-the-new-e-van-season/</guid>
		<description><![CDATA[You can read all about it here.
]]></description>
			<content:encoded><![CDATA[<p>You can read all about it <a href="http://europevan.blogspot.com/2010/01/next-european-van-on-08-february-2010.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/25/kicking-off-the-new-e-van-season/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrospective of 2009, Planning for 2010</title>
		<link>http://elegantcode.com/2009/12/30/retrospective-of-2009-planning-for-2010/</link>
		<comments>http://elegantcode.com/2009/12/30/retrospective-of-2009-planning-for-2010/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:55:10 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Esoterica]]></category>
		<category><![CDATA[Goals]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/12/30/retrospective-of-2009-planning-for-2010/</guid>
		<description><![CDATA[After the Kaizenconf of 2008, I wrote down a couple of things I wanted to learn throughout 2009. Looking back at that list for the past year, I think I did fairly well.
Retrospective of 2009

I learned more about integration patterns and ESB’s. I also learned about NServiceBus and I’m going to take this a few [...]]]></description>
			<content:encoded><![CDATA[<p>After the Kaizenconf of 2008, I wrote down a couple of things I wanted to learn throughout 2009. Looking back at <a href="http://elegantcode.com/2008/11/05/kaizenconf-part-3-taking-action/">that list</a> for the past year, I think I did fairly well.</p>
<h2>Retrospective of 2009</h2>
<ul>
<li>I learned more about <a href="http://elegantcode.com/2009/08/18/book-review-enterprise-integration-patterns/">integration patterns</a> and <a href="http://elegantcode.com/2009/10/30/book-review-enterprise-service-bus/">ESB</a>’s. I also learned about <a href="http://elegantcode.com/2009/10/09/exploring-nservicebus/">NServiceBus</a> and I’m going to take this a few steps further in 2010. I’m hoping to get some real-world experience with a true Service-Oriented Architecture. </li>
<li><a href="http://structuremap.sourceforge.net/Default.htm">StructureMap</a> is now <a href="http://elegantcode.com/2008/12/12/learning-about-structuremap/">my IoC container of choice</a>. </li>
<li>I definitely <a href="http://elegantcode.com/2009/07/13/using-nhibernate-for-legacy-databases/">learned</a> <a href="http://elegantcode.com/2009/07/19/nhibernate-2-1-and-collection-event-listeners/">a lot</a> about <a href="http://nhforge.org/">NHibernate</a> this year and I’m still a huge fan. I’m also looking forward to see what <a href="http://fabiomaulo.blogspot.com/2009/06/criteria-on-nh300.html">NHibernate 3.0</a> will bring to the table in 2010. </li>
<li>Thanks to the European VAN presentations of <a href="http://vimeo.com/3171910">Greg Young on DDD</a> and <a href="http://vimeo.com/7838858">Mark Nijhof’s CQRS sample application</a>, I learned a tremendous deal about Domain-Driven Design. I finally understand some of the stuff that <a href="http://codebetter.com/blogs/gregyoung/">Greg Young</a> and <a href="http://www.udidahan.com/?blog=true">Udi Dahan</a> are talking about for a couple of years now.&#160; </li>
<li>I (re)learned HTML/XHTML and picked up some basic knowledge about CSS during the last couple of weeks. My goal is not to become a CSS jedi, but I just want to have enough knowledge and experience in order to prevent the most obvious rookie mistakes. </li>
<li>I took my first baby-steps in Ruby earlier this year, but I definitely need more study and practical use in order to become a more proficient user. </li>
</ul>
<p>There’s some stuff on the list that I didn’t managed to learn about:</p>
<ul>
<li>JavaScript and jQuery </li>
<li>Lean/Kanban </li>
<li>F# </li>
</ul>
<p>On the the other hand, I was able to learn about <a href="http://elegantcode.com/category/couchdb/">CouchDB</a> and the <a href="http://en.wikipedia.org/wiki/NoSQL">NoSQL movement</a>. I also learned a significant deal about <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful architectures</a>.</p>
<p>I also gained a lot of experience with WCF (Windows Communication Foundation) throughout the year, but I regret to say that it was mostly negative than positive. I don’t think that I’m going to consider this technology again in its current state. Maybe I’ll reconsider it again after it further matures.</p>
<h2>Planning for 2010</h2>
<p>Hereby the stuff I want to learn more about in 2010:</p>
<ul>
<li>Continue exploring NServiceBus and using it in a real-world project. </li>
<li>Web development is something that I want to become more familiar with. JavaScript and jQuery are still high on the list, but I also want to take an in-depth look at some of the web development frameworks out there. I’m looking forward to learning about ASP.NET MVC, <a href="http://code.google.com/p/fubumvc/">Fubu MVC</a>, <a href="http://www.djangoproject.com/">Django</a>, <a href="http://trac.caffeine-it.com/openrasta">OpenRasta</a> and <a href="http://rubyonrails.org/">Ruby on Rails</a>. </li>
<li>Following my new motto of<em> learning one NoSQL database each year</em>, this year I’m going to take a closer look at <a href="http://www.mongodb.org/display/DOCS/Home">MongoDB</a>. </li>
<li>Following the same credo applied on programming languages,&#160; I’m currently very interested in learning <a href="http://clojure.org/">Clojure</a>, and not only because it can also <a href="http://github.com/richhickey/clojure-clr">target the CLR</a>. As already mentioned, I also want to become more proficient at Ruby.<br />
<h2>Community</h2>
<p> On the community side, I’ll continue to co-organize the <a href="http://europevan.blogspot.com/">European VAN</a> meetings with <a href="http://colinjack.blogspot.com/">Colin Jack</a>. We’ll try to do them on a more regular basis. I also hope to put out more blog posts in 2010 than I did in 2009. In 2007 and 2008 I managed to write ~100 blog posts a year. This past year, I didn’t even manage to publish half of that and I’m not very pleased with that. While I was evaluating the past year, I’ve come to some conclusions about what might be causing this. Maybe I’ll get back to this in a later blog post.</li>
</ul>
<ul></ul>
<ul>Well, there you have it. I would love to hear about some of the things that you, my dear readers, are planning to learn in 2010. I wish you all a happy and successful new year.</ul>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/12/30/retrospective-of-2009-planning-for-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking a Visit To The SUSE Studio</title>
		<link>http://elegantcode.com/2009/12/19/taking-a-visit-to-the-suse-studio/</link>
		<comments>http://elegantcode.com/2009/12/19/taking-a-visit-to-the-suse-studio/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 19:32:28 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/12/19/taking-a-visit-to-the-suse-studio/</guid>
		<description><![CDATA[After listening to the keynote of Monospace 2009, I got somewhat intrigued by the possibilities of SUSE Studio. Miguel de Icaza talked about this in his presentation and because its not that easy to follow a demo through an mp3 recording, I wanted to try it on my own. SUSE Studio lets you create your [...]]]></description>
			<content:encoded><![CDATA[<p>After listening to the <a href="http://www.redmonk.com/cote/2009/10/28/redmonkradio063/">keynote of Monospace 2009</a>, I got somewhat intrigued by the possibilities of <a href="http://susestudio.com">SUSE Studio</a>. <a href="http://tirania.org/blog/">Miguel de Icaza</a> talked about this in his presentation and because its not that easy to follow a demo through an mp3 recording, I wanted to try it on my own. SUSE Studio lets you create your own customized appliances. An appliance is a pre-configured&#160; combination of an operating system (SUSE Linux in this case),&#160; applications and their configuration.</p>
<p>After logging on, the first step is creating a new appliance. Here you can choose which type of operating system you want to install (desktop, server or minimal), what type of desktop (GNOME or KDE) and the particular processor architecture you want to target (32-bit or 64-bit). </p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb1.png" width="598" height="145" /></a> </p>
<p>You can also give your appliance a name.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb2.png" width="583" height="175" /></a> </p>
<p>After you created your new appliance, its possible to select the packages that you want installed.&#160;&#160; </p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb3.png" width="574" height="366" /></a>&#160; </p>
<p>Of course, you don’t have to choose everything yourself. Some packages are selected by default. Having MonoDevelop pre-installed is quite easy. Just search and add it to the selected software. You can even upload your own package and have it pre-installed for your appliance.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb4.png" width="587" height="274" /></a> </p>
<p>After you made up your mind on which particular applications should be included with your appliance, you can choose to do some configuration. For example, one of the most important choices you have to make is the background of your appliance <img src='http://elegantcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb5.png" width="541" height="476" /></a>&#160; </p>
<p>Other settings like the language, keyboard layout, time zone, users + password, etc. … can all be pre-configured. When you’re done configuring, you can choose to create the appliance. There are a couple of delivery options you can choose from:</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb6.png" width="563" height="197" /></a>&#160; </p>
<p>When SUSE Studio is done building the appliance you composed, you can either download it or take a test drive. Now, this is the probably the coolest feature of SUSE Studio. With test drive you can boot and test your appliance in a browser without downloading it! </p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb7.png" width="586" height="342" /></a> </p>
<p>&#160;</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/12/image8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2009/12/image_thumb8.png" width="586" height="344" /></a> </p>
<p>I don’t know about you, but I would love to have something similar for configuring Windows appliances. I mean, wouldn’t it be cool to have the Windows OS pre-installed with Visual Studio, Resharper, TestDriven.NET, etc. …?</p>
<p>The only thing that I feel is missing in SUSE Studio are a couple of packages that are not yet available, like <a href="http://couchdb.apache.org/index.html">CouchDB</a> for example. I also kind of expected that <a href="http://tirania.org/blog/archive/2009/Dec-15.html">the latest version of MonoDevelop and Mono</a> would be available already, but at the time of this writing only the previous versions can be pre-installed.</p>
<p>Now try it for yourself, it’s free <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . The only thing you have to do is apply for an invitation and you’re ready to take if for a test drive. </p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/12/19/taking-a-visit-to-the-suse-studio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Review Amazon Kindle DX</title>
		<link>http://elegantcode.com/2009/11/20/review-amazon-kindle-dx/</link>
		<comments>http://elegantcode.com/2009/11/20/review-amazon-kindle-dx/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 23:25:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Esoterica]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/11/20/review-amazon-kindle-dx/</guid>
		<description><![CDATA[ 
As my bookshelf has grown out of proportion over the last years, I basically had two options left. First option was to build an extra room onto my house that could serve as a private library, which is kind of expensive. Second option was to the reduce the amount of paper by buying an [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://elegantcode.com/wp-content/uploads/2009/11/kindle_dx.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="kindle_dx" border="0" alt="kindle_dx" align="left" src="http://elegantcode.com/wp-content/uploads/2009/11/kindle_dx_thumb.jpg" width="218" height="320" /></a> </p>
<p>As <a href="http://www.shelfari.com/o1518100500/shelf">my bookshelf</a> has grown out of proportion over the last years, I basically had two options left. First option was to build an extra room onto my house that could serve as a private library, which is kind of expensive. Second option was to the reduce the amount of paper by buying an eReader device. I chose to investigate the second option. I already heard and read a lot of nice things about the Amazon Kindle, especially the Kindle DX.</p>
<p>As you may or may not know, these devices were not available in Europe until about a month ago Amazon announced that they will make the <a href="http://www.amazon.com/exec/obidos/ASIN/B0015T963C/elegantcode-20">Kindle 2</a> available outside the US. But what I really wanted was the <a href="http://www.amazon.com/exec/obidos/ASIN/B0015TCML0/elegantcode-20">Kindle DX</a> because it seemed to provide good support for PDF documents while the Kindle 2 doesn’t support this format at all. I already had a couple of eBooks in PDF format, so that was the most obvious choice for me. I also checked with the major book publishers and most of them also provide the native Kindle (AZW) and <a href="http://en.wikipedia.org/wiki/Mobipocket">Mobi</a> formats (beside PDF). </p>
<p>The only problem left was to get a Kindle DX to Belgium. Luckily <a href="http://elegantcode.com/about/david-starr/">David</a> and <a href="http://domesticoblivion.com/">Elle</a> were happy to help me out on this one (many thanks). And so, since a couple of weeks I’m a proud owner of a Kindle DX. I must say that I really like the experience so far.</p>
<p>I wanted to read both novels and technical books using this device. The 9.7” e-ink screen (no backlit or LCD) provides a pleasant reading experience. At first, I was afraid that some documents wouldn’t be as readable due to the fixed format of PDF. But thus far, the Kindle DX seems to solve this very elegantly. Getting a PDF documents on the device is as easy as you’ve come to expect. Just hook it up on your PC using USB, copy the files and you’re good to go.</p>
<p>The size of the Kindle DX can be compared to a regular technical book. Its also incredibly thin and it definitely doesn’t weigh as much as some books.</p>
<p><a href="http://elegantcode.com/wp-content/uploads/2009/11/kindle_dx_4.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="kindle_dx_4" border="0" alt="kindle_dx_4" src="http://elegantcode.com/wp-content/uploads/2009/11/kindle_dx_4_thumb.jpg" width="256" height="218" /></a> </p>
<p>The amount of storage is amazing. I can practically put my entire library on there without running out of space. It also has a very long battery life. I’ve been using it for about two weeks now and so far I did not have to recharge the battery. </p>
<p>Skimming through a book does take some time. You can’t beat a paper book on that one. But the search capabilities are very neat and it’s also possible to search in multiple books (which again is rather difficult with paper books).&#160; You can place bookmarks its possible to go to a specific page number. The experience of going to a next or previous page was a bit odd at first, but I got used to that after a couple of hours. With auto-rotation, you can read a document in portrait or landscape. The only downside is that the experience is not as fluent as with an iPhone or iPod Touch because sometimes it can take a couple of seconds to adjust. Below are some pictures of my Kindle DX in order to get a sense of the PDF support that it provides:</p>
<p align="center">&#160;<a href="http://elegantcode.com/wp-content/uploads/2009/11/SOA.jpg"><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="SOA" border="0" alt="SOA" src="http://elegantcode.com/wp-content/uploads/2009/11/SOA_thumb.jpg" width="395" height="520" /></a> Enterprise SOA Adoption Strategies (InfoQ)</p>
<p align="left">&#160;</p>
<p align="center"><a href="http://elegantcode.com/wp-content/uploads/2009/11/IMG_5903.jpg"><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="IMG_5903" border="0" alt="IMG_5903" src="http://elegantcode.com/wp-content/uploads/2009/11/IMG_5903_thumb.jpg" width="395" height="519" /></a>C# in Depth</p>
<p align="center">&#160;<a href="http://elegantcode.com/wp-content/uploads/2009/11/NH.jpg"><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="NH" border="0" alt="NH" src="http://elegantcode.com/wp-content/uploads/2009/11/NH_thumb.jpg" width="395" height="519" /></a>&#160;&#160; NHibernate in Action</p>
<p>&#160;</p>
<p align="center"><a href="http://elegantcode.com/wp-content/uploads/2009/11/ASP.jpg"><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="ASP" border="0" alt="ASP" src="http://elegantcode.com/wp-content/uploads/2009/11/ASP_thumb.jpg" width="396" height="522" /></a>ASP.NET MVC in Action </p>
<p>I haven’t tried the text-to-speech feature and wireless support. I also need to check out the support for audio books and the ability to make notes while reading. I think the most obvious new feature for a next version of the Kindle DX would be a color touch screen. That would make the whole experience even better.</p>
<p>Bottom line, compared to the Kindle 2, the Kindle DX is a no brainer. If you’re able to spend the extra money, you won’t regret it. The PDF support and the large screen are definitely worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/11/20/review-amazon-kindle-dx/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Book Review: Enterprise Service Bus</title>
		<link>http://elegantcode.com/2009/10/30/book-review-enterprise-service-bus/</link>
		<comments>http://elegantcode.com/2009/10/30/book-review-enterprise-service-bus/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 20:59:34 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/10/30/book-review-enterprise-service-bus/</guid>
		<description><![CDATA[ About a year ago, I was lucky enough to attend the Kaizenconf in Austin. When I joined the discussions on ESB Patterns, Dru Sellers and Chris Patterson (also known as the MassTransit guys) were talking about this book called Enterprise Service Bus from David Chappell. I finally took the time to read it and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://elegantcode.com/wp-content/uploads/2009/10/ESB.jpg"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="ESB" align="left" src="http://elegantcode.com/wp-content/uploads/2009/10/ESB_thumb.jpg" width="214" height="281"></a> About a year ago, I was lucky enough to attend the Kaizenconf in Austin. When I joined the discussions on <a href="http://kaizenconf.pbworks.com/ESB-Patterns" target="_blank">ESB Patterns</a>, <a href="http://codebetter.com/blogs/dru.sellers/default.aspx" target="_blank">Dru Sellers</a> and <a href="http://www.lostechies.com/blogs/chris_patterson/default.aspx" target="_blank">Chris Patterson</a> (also known as the MassTransit guys) were talking about this book called <a href="http://www.amazon.com/exec/obidos/ASIN/0596006756/elegantcode-20" target="_blank">Enterprise Service Bus</a> from <a href="http://www.oreillynet.com/pub/au/207" target="_blank">David Chappell</a>. I finally took the time to read it and for the most part it was a real eye opener. As you might have guessed, the book provides an architectural overview of the ESB concept. Although it does provide some amount of detail, there are no in depth discussions on any particular technologies. But after reading the book it is quite clear that the author comes more from a Java background. However this is not that important for a book like this as these concepts are technology agnostic anyway. </p>
<p>I must admit that getting through the first chapter, which tries to introduce the ESB, was not that easy. Too abstract and high level for my taste. </p>
<p>The second chapter is about the <em>State of Integration</em> and discusses how both business and technical drivers contributed to the ESB approach as opposed to Enterprise Application Integration (EAI). One of the best parts in the book is the discussion about &#8220;Accidental Architecture&#8221; which is an accurate and far too familiar description of the current architecture in most companies. Although the book is approximately 5 years old, it is still very relevant as the adoption rate of ESB&#8217;s is still not that common. But then again, I could be wrong about this <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .&nbsp;&nbsp;&nbsp; </p>
<p>The third chapter examines the key concepts of an ESB were the author tries to prove that these are born out of necessity, based on real requirements and problems that couldn&#8217;t be solved with typical EAI broker architectures (like Biztalk for example).</p>
<p>Chapter 4 states that XML is the exchange format of choice for passing data structures between applications and services. Nothing new here.</p>
<p>Chapter 5 till 8 provide in dept information about each of the key concepts described in chapter 4, like Message Oriented Middleware (MOM), Service Containers and Endpoints, Routing, Transformation, Messaging, etc. &#8230;</p>
<p>Chapter 9 goes back to the real world by exploring the most common form of integration that is practiced today: bulk data transfer using ETL and an endless amount of small batch applications. Sounds familiar? This chapter also provides the necessary steps in order to migrate away from latency and reliability issues towards a real-time integration and how this affects your business.</p>
<p>Chapter 10 is a bit more technology focused as it talks about Java Components in an ESB. However, this could equally be .NET or any other platform.</p>
<p>For me, chapter 11 is a real masterpiece especially the part on Portal Server Integration patterns like Forward Cache and Federated Query. Highly recommended reading. </p>
<p>The final chapter discusses the WS-DeathStar (WS-*) specifications and what they could mean for an ESB.</p>
<p>In the end, I have a lot to think about after reading this book. It challenged a lot of my earlier assumptions on distributed computing and it certainly helped me understand a couple of things while I was <a href="http://elegantcode.com/2009/10/09/exploring-nservicebus/" target="_blank">exploring NServiceBus</a>.</p>
<p>Till next time</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/10/30/book-review-enterprise-service-bus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next European VAN on 18 November 2009</title>
		<link>http://elegantcode.com/2009/10/29/next-european-van-on-18-november-2009/</link>
		<comments>http://elegantcode.com/2009/10/29/next-european-van-on-18-november-2009/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 20:45:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[E-VAN]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2009/10/29/next-european-van-on-18-november-2009/</guid>
		<description><![CDATA[Mark Nijhof is going to enlighten us all with his DDD/CQRS sample application. You can read all about it at the E-VAN blog.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.fohjin.com/" target="_blank">Mark Nijhof</a> is going to enlighten us all with his DDD/CQRS sample application. You can read all about it at the <a href="http://europevan.blogspot.com/2009/10/next-european-van-on-18-november-2009.html" target="_blank">E-VAN blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2009/10/29/next-european-van-on-18-november-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
