<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>DotNetRocks</title>
        <link>http://ayende.com/Blog/category/468.aspx</link>
        <description>DotNetRocks</description>
        <language>en-US</language>
        <copyright>Ayende Rahien</copyright>
        <managingEditor>Ayende@ayende.com</managingEditor>
        <generator>Subtext Version 1.9.3.51</generator>
        <item>
            <title>Ayende and the If Loop</title>
            <link>http://ayende.com/Blog/archive/2007/12/07/Ayende-and-the-If-Loop.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.dotnetrocks.com/"&gt;Dot Net Rocks&lt;/a&gt; just released the OSS Panel from DevTeach, I had made some comments there, including the GPL'ed If Loop statement. Listening to it, I sound &lt;em&gt;aweful&lt;/em&gt;, I had no idea it was that bad.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/9922.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ayende Rahien</dc:creator>
            <guid>http://ayende.com/Blog/archive/2007/12/07/Ayende-and-the-If-Loop.aspx</guid>
            <pubDate>Fri, 07 Dec 2007 06:39:40 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/12/07/Ayende-and-the-If-Loop.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/9922.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The OR/M Smackdown at DotNetRocks</title>
            <link>http://ayende.com/Blog/archive/2007/05/24/The-ORM-Smackdown-at-DotNetRocks.aspx</link>
            <description>&lt;p&gt;    It is &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=240"&gt;out&lt;/a&gt;, although I have yet to hear the edited version, the real discussion was very interesting.&lt;/p&gt;&lt;p&gt;    Go &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=240"&gt;check it out&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/9327.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ayende Rahien</dc:creator>
            <guid>http://ayende.com/Blog/archive/2007/05/24/The-ORM-Smackdown-at-DotNetRocks.aspx</guid>
            <pubDate>Thu, 24 May 2007 13:30:44 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/05/24/The-ORM-Smackdown-at-DotNetRocks.aspx#feedback</comments>
            <slash:comments>21</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/9327.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Dot Net Rocks Episode is up</title>
            <link>http://ayende.com/Blog/archive/2007/03/29/Dot-Net-Rocks-Episode-is-up.aspx</link>
            <description>You can get it &lt;a href="http://dotnetrocks.com/default.aspx?showID=227"&gt;here&lt;/a&gt;.&lt;img src="http://ayende.com/Blog/aggbug/9167.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ayende Rahien</dc:creator>
            <guid>http://ayende.com/Blog/archive/2007/03/29/Dot-Net-Rocks-Episode-is-up.aspx</guid>
            <pubDate>Thu, 29 Mar 2007 20:32:31 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/03/29/Dot-Net-Rocks-Episode-is-up.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/9167.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Comments on DNRTV #16</title>
            <link>http://ayende.com/Blog/archive/2006/04/29/7639.aspx</link>
            <description>I just finished watching &lt;a href="http://www.dnrtv.com/default.aspx?showID=16"&gt;DNR TV #16, &lt;/a&gt;in which Carl is talking about async programming.&lt;br /&gt;Some of the best DotNetRocks episode was with Carl and the host of the moment just goofing around and talking tech, so I had high expectations of this.&lt;br /&gt;I'm not a VB programmer, and it's interesting to see how a VB guy works, and it even includes commentry.&lt;br /&gt;&lt;br /&gt;One thing that I don't understand is this construct:&lt;br /&gt;&lt;br /&gt;Try&lt;br /&gt;    ' do something that can throw&lt;br /&gt;Catch&lt;br /&gt;    Throw&lt;br /&gt;End Try&lt;br /&gt;&lt;br /&gt;Isn't this a no op? &lt;br /&gt;&lt;br /&gt;This video reminds me of a Joel On Software article about how hard it is to write a function that copies a file.&lt;br /&gt;There is a lot of commentry on some ancient VB stuff along the way, since Carl often compare the way it was done right now and in VB6 and previous versions.&lt;br /&gt;It is a nice show. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7639.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/04/29/7639.aspx</guid>
            <pubDate>Sat, 29 Apr 2006 06:29:06 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/04/29/7639.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7639.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Great DNR Quote</title>
            <link>http://ayende.com/Blog/archive/2006/04/05/7693.aspx</link>
            <description>&lt;p&gt;    I was listening to &lt;a href="http://www.dotnetrocks.com/default.aspx?showID=173"&gt;DNR #170&lt;/a&gt; and Tim Huckaby (Am I the only one who read tha Huckleberry?).&lt;/p&gt;&lt;p&gt;    There was a moment there when Tim said: "Microsoft is never going to ship..." and there was a pause where I thought "WTF?!" and then he continues "another product as bad as Windows ME".&lt;/p&gt;&lt;p&gt;    This sentiment goes a round of appluase from the crowd (which include &lt;a href="http://www.sing365.com/music/lyric.nsf/Me-And-I-lyrics-Abba/BBF6B7C6A82BBA6248256BC60020C38A"&gt;Me and I&lt;/a&gt;, incidently). I keep recalling a quote: "No one will remember if you were late, but they will remember if you were &lt;em&gt;bad&lt;/em&gt;."&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7693.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/04/05/7693.aspx</guid>
            <pubDate>Wed, 05 Apr 2006 15:48:33 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/04/05/7693.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7693.aspx</wfw:commentRss>
        </item>
        <item>
            <title>DotNetRocks #169, Second Take: O/RM</title>
            <link>http://ayende.com/Blog/archive/2006/03/29/7745.aspx</link>
            <description>&lt;p&gt;I listened to the rest of the &lt;a href="ct.ashx?id=63e46857-3d82-4332-b5cd-99b4b64f2a88&amp;amp;url=http%3a%2f%2fwww.dotnetrocks.com%2fdefault.aspx%3fshowID%3d172"&gt;DotNetRocks 
episode 169 with Rocky Lhotka&lt;/a&gt;. This time, I wanted to comment about the part 
where Rocky talks about ORM. Before everything else, I would like to comment on 
something he said about Microsoft and O/RM.&lt;/p&gt;
&lt;p&gt;He said that most O/RM are using Reflection, and that only Microsoft can 
solve this issue, because the can modify the CLR to allow direct access to 
private fields.&lt;/p&gt;
&lt;p&gt;I wanted to note that there is already such a thing in .Net 2.0, and it is 
called LCG (Lightwieght Code Generation), and it basically means that you can 
inject a method into a class, which will have full access to all the class' 
members, regardless of visibility (just as any class on the object does). There 
is a patch for NHibernate that allows it to use this functionality in .Net 2.0, 
so you don't need to me Microsoft to use this.&lt;/p&gt;
&lt;p&gt;I would also like to comment that NHibernte is already avoiding Reflection 
whenever possible, relying on runtime code generation to read and write to 
public properties / fields. &lt;/p&gt;
&lt;p&gt;I want to address another part of what he said, where he said that O/RM 
assumes that objects are structure the same way as the database is. Only the 
simplest O/RM assumes this. One of the important charactaristics of objects is 
not the data they contain, but what type of object you have, and what relations 
it has to other objects. A good O/RM will know to map the schema of a database 
to your object structure without impacting the design of the object.&lt;/p&gt;
&lt;p&gt;In fact, I would go as far as to say that this is the criteria of good 
O/RM.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7745.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/03/29/7745.aspx</guid>
            <pubDate>Wed, 29 Mar 2006 09:13:30 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/03/29/7745.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7745.aspx</wfw:commentRss>
        </item>
        <item>
            <title>DotNetRocks #169 and TDD</title>
            <link>http://ayende.com/Blog/archive/2006/03/29/7746.aspx</link>
            <description>&lt;p&gt;    I was listening yesterday to&lt;a href="http://www.dotnetrocks.com/default.aspx?showID=172"&gt; DotNetRocks episode 169 with Rocky Lhotka&lt;/a&gt;, and I was muttering "WTF??!!" throughout the first part of the show.&lt;/p&gt;&lt;p&gt;    The issue that I had was Rocky talking about TDD and saying stuff that simply didn't match the reality, not by a long shot. &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2006/03/28/141920.aspx"&gt;Jeffery Palermo&lt;/a&gt; post about it as well, by the way.&lt;/p&gt;&lt;p&gt;    Rocky's main objections seem to be:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;&lt;em&gt;When you are working Test First, you don't get intelli sense for classes and methods that don't exists, and that seem to hurt his development style. &lt;/em&gt;&lt;/div&gt;&lt;p&gt;    First, what is the problem. You just created a class, why do you need intelli sense for something that you'll write in a few minutes? Yes, it is convient, but the rate of creating new methods / classes in my code is not high enough that I will forget that I created that class 3 minutes ago and need to think about the interfce I want to give it.&lt;/p&gt;&lt;p&gt;    Second, good enough tools like the wonderful ReSharper or VS.Net 2005 (far less powerful) will gladly create classes and method for you on the fly when you refer to something that do not exist. This is not an issue.&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;Test First require that you will first write the test, and then write the code. Doesn't mesh well with programming by the wizards. &lt;/div&gt;&lt;p&gt;    Considerring that most of the wizards have to do with UI in the first place, and considerring the big problems in testing UI, I would say that this is a non issue. If I think that I need something that doesn't work directly in the UI, I can't see how the wizards and the tools will help me any. I am aware that other people feels just the opposite.&lt;/p&gt;&lt;p&gt;    That said, do you really think that you can trust the code that the wizard generates? Or are you going to run it through it paces a few times, just to make sure it works? If you intend to check it yourself, you need a test for this (or several). You will change this part of the code, and you need it covered. I would also argue that you get far better design and working experiance when working in TDD fashion that you do with all the wizards.&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;You write a bunch of tests, and then you've to write the code to make them work, which is hard.&lt;/div&gt;&lt;p&gt;    You know what, he is right on this one, which is why you never write a bunch of tests and then try to implement them. You write &lt;em&gt;one &lt;/em&gt;test, then you make it work, then you write another test, etc.&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;On a large system, it is hard to test one method at a time.&lt;/div&gt;&lt;p&gt;    This is possible, and it indicate a design problem in the code, fix it. Check out "Working Effectively With Legacy Code" for the details. I can't imagine trying to change something in a large system without tests. How do I know that I didn't break anything?&lt;/p&gt;&lt;p&gt;    If he is talking that it is hard to TDD a feature with small increments, than he is right, it takes some work. The end result is worth it since you got a decoupled design you know is working.&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;Ater writing a test, developers fear to refactor the system, since it will break the test.&lt;/div&gt;&lt;p&gt;    I was literally ranting at this point, and this one is really over the top. If I have ever heard a falser statement... TDD is made up of three things: "Red, Green, &lt;strong&gt;Refactor&lt;/strong&gt;". If you don't do all three, you are not doing TDD. What he calls refactoring is not that, it's random code movement through the code, with the prevent wishes of the developer that he isn't breaking anything. Thanks, but "Code and Pray" are not for me.&lt;/p&gt;&lt;div style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 4px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-COLOR: #ffffe1"&gt;It's easy to write your own test harness in a couple of lines.&lt;/div&gt;&lt;p&gt;    Yes, it is easy, but you are only running one test that you keep changing, you are not check other parts of the code, can't add it to the build process, etc. In essense, this "test harness" is merely a way to execute the code as it would be on the production system, so you could debug the problems. I would rather not debug at all, and get a nice warm blanket of tests telling me where I am doing wrong.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7746.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/03/29/7746.aspx</guid>
            <pubDate>Wed, 29 Mar 2006 05:41:07 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/03/29/7746.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7746.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I Love Being Pwop Ambassador!</title>
            <link>http://ayende.com/Blog/archive/2006/03/01/7855.aspx</link>
            <description>&lt;p&gt;    If you're not familiar with the term, Pwop Ambassadors are geeks that donate bandwidth to distribue the files that &lt;a href="http://www.pwop.com"&gt;Pwop&lt;/a&gt; produce using bittorrent. And Pwop is the company that produce shows like:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;        &lt;a href="http://www.dotnetrocks.com"&gt;Dot Net Rocks&lt;/a&gt;    &lt;/li&gt;    &lt;li&gt;        &lt;a href="http://mondays.pwop.com"&gt;Mondays&lt;/a&gt;    &lt;/li&gt;    &lt;li&gt;        &lt;a href="http://www.Hanselminutes.com"&gt;Hanselminutes&lt;/a&gt;    &lt;/li&gt;    &lt;li&gt;        &lt;a href="http://www.dnrtv.com"&gt;Dnr TV&lt;/a&gt;    &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;    This means that I spent a couple of hours setting it up, and now whenever I see an annoucement for a new show being released, I can head to my Hard Disk, and voila, it is there already. Talk about immediate gratification.&lt;/p&gt;&lt;p&gt;    In return, I'm sharing those files, of course, so this mean that if you are in Israel, you really should try downloading those shows (all of them are excellent, by the way) via BitTorrent, since you've a local source nearby, serving them.&lt;/p&gt;&lt;p&gt;     &lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7855.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/03/01/7855.aspx</guid>
            <pubDate>Wed, 01 Mar 2006 05:36:13 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/03/01/7855.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7855.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Boo &amp; DotNetRocks</title>
            <link>http://ayende.com/Blog/archive/2006/01/01/7998.aspx</link>
            <description>&lt;p&gt;Fact: &lt;a href="http://www.dotnetrocks.com"&gt;DotNetRocks&lt;/a&gt; makes you a better programmer.&lt;/p&gt;&lt;p&gt;&lt;a fact="" href="http://boo.codehaus.org"&gt;Boo&lt;/a&gt; makes you a  great programmer.&lt;/p&gt;
&lt;p&gt;What happens when you combine them together? The entire dot net rocks archive!&lt;/p&gt;&lt;p&gt;I keep going to the Dot Net Rocks site for more stuff, but because I listen faster than they record (except during the road trip {Hi, when is the next one due :-)}), I've started to dig into their archives. But they are lots of shows, and there doesn't seem to be any torrent for all of the files. After downloading a single show for the tenth time, I decide to put some code into action, instead of clicking on links like an idiot.&lt;/p&gt;&lt;p&gt;Here is the result:&lt;/p&gt;&lt;div class="syntax"&gt;&lt;div class="python"&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="de1"&gt;&lt;span class="kw1"&gt;import&lt;/span&gt; System.&lt;span class="me1"&gt;IO&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&lt;span class="kw1"&gt;import&lt;/span&gt; System.&lt;span class="me1"&gt;Net&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="de1"&gt;&lt;span class="kw1"&gt;import&lt;/span&gt; System.&lt;span class="me1"&gt;Text&lt;/span&gt;.&lt;span class="me1"&gt;RegularExpressions&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt; &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="de1"&gt;link_url = &lt;span class="st0"&gt;""&lt;/span&gt;&lt;span class="st0"&gt;"http://perseus\.franklins\.net/[\d\w]+\.mp3"&lt;/span&gt;&lt;span class="st0"&gt;""&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt; &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="de1"&gt;&lt;span class="kw1"&gt;for&lt;/span&gt; i &lt;span class="kw1"&gt;in&lt;/span&gt; &lt;span class="kw1"&gt;range&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;,&lt;span class="nu0"&gt;157&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;        base_url = &lt;span class="st0"&gt;"http://www.dotnetrocks.com/default.aspx?showID=${i}"&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="de1"&gt;        &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;"echo Trying to connect to: ${base_url}"&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;        using response=WebRequest.&lt;span class="me1"&gt;Create&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;base_url&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;GetResponse&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:              &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="de1"&gt;                &lt;span class="kw1"&gt;match&lt;/span&gt; = Regex&lt;span class="br0"&gt;(&lt;/span&gt;link_url&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;Match&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;StreamReader&lt;span class="br0"&gt;(&lt;/span&gt;response.&lt;span class="me1"&gt;GetResponseStream&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;ReadToEnd&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;                &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;"wget ${match.Value}"&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;This is just 12 lines of code (with some spaces) to create a script that would download all the shows. You can get &lt;a href="http://users.ugent.be/%7Ebpuype/wget/#download"&gt;wget here&lt;/a&gt; and from there, just pipe it to a batch file, and have fun listening.&lt;br /&gt;I really like the way that Boo just stepped out of the way nicely to let me do it.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://ayende.com/Blog/aggbug/7998.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/01/01/7998.aspx</guid>
            <pubDate>Sun, 01 Jan 2006 19:35:28 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/01/01/7998.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7998.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>