<?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>Ramble &#187; Programming</title>
	<atom:link href="http://www.alterzone.net/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alterzone.net/blog</link>
	<description>Where the Future Never Looks the Same Way Twice</description>
	<lastBuildDate>Wed, 04 Feb 2009 21:19:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Dreaming in Code Paperback Released</title>
		<link>http://www.alterzone.net/blog/2008/03/04/dreaming-in-code-paperback-released/</link>
		<comments>http://www.alterzone.net/blog/2008/03/04/dreaming-in-code-paperback-released/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 14:53:43 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[Book]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2008/03/04/dreaming-in-code-paperback-released/</guid>
		<description><![CDATA[Yesterday, I received my paperback copy of Dreaming in Code from Scott Rosenberg as part of a free paperbacks for bloggers promotion. I read the hard-cover edition when it was first released, but it has been a while and my original copy is now in the hands of a colleague. So, I will be re-reading [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I received my paperback copy of <a href="http://www.dreamingincode.com/">Dreaming in Code</a> from <a href="http://www.wordyard.com/">Scott Rosenberg</a> as part of a<a href="http://www.wordyard.com/2008/02/25/free-paperbacks/"> free paperbacks</a> for bloggers promotion.  I read the hard-cover edition when it was first released, but it has been a while and my original copy is now in the hands of a colleague.  So, I will be re-reading this fantastic book this week and writing a more formal review as soon as I am done.</p>

<p>If you haven&#8217;t read it yet, you really should.  The digressions into software engineering history alone are reason enough to read the book.  The Chandler part of the story may strike some as a cautionary tale of what not to do when developing new software, but I found it an accurate description of the kinds of unexpected issues and challenges that crop up in any large software project.</p>

<p>Go out and get a copy from your local library or buy the new paperback today.  It is a great read.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2008/03/04/dreaming-in-code-paperback-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodeMash 2008 Wrap Up, Part 1</title>
		<link>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/</link>
		<comments>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 23:59:13 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/</guid>
		<description><![CDATA[CodeMash 2008 came to end on Friday. This year&#8217;s conference was even better than the inagural event; a whirlwind two days, packed with three keynotes and dozens of sessions. I talked with developers coming from a wide range of backgrounds and organizations. As one attendee remarked to me while we were getting food from the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codemash.org" title="CodeMash Website">CodeMash 2008</a> came to end on Friday. This year&#8217;s
conference was even better than the inagural event; a whirlwind two
days, packed with three keynotes and dozens of sessions. I talked
with developers coming from a wide range of backgrounds and 
organizations.  As one attendee remarked to me while we were getting
food from the buffet, it was nice to be in a event full of geeks.</p>

<p>Topics at CodeMash are varied and atendees are encouraged to 
attend sessions outside their comfort zones.  I see CodeMash as a
valuable way station on the raod from journeyman to master, a place
where the pragmatic meets the esoteric and the everyday programmer
can be exposed to ideas and practices that illuminate the deeper
nature behind and practices of software engineering.  I certainly
had that experience this year.</p>

<p><span id="more-146"></span></p>

<p>The first day was packed with events. Our first keynote was delivered
by <a href="http://www.nealford.com/mypastconferences.htm" title="Neal Ford's Conference Slides">Neal Ford</a>, 
<em>Software Engineering &amp; Polyglot Programming</em>. 
The takeaway was a vision of the future of programming where the
language is separate from the platform and we take advantage of solid
runtime platforms like the JVM or .NET CLR while casting aside the
cumbersome languages traditionally associated with them in favor of
more productive, more dynamic languages. For example, Groovy on the
JVM or IronPython on .NET.  In Ford&#8217;s view,</p>

<blockquote>
  <p>Testing is the engineering rigor of software engineering.</p>
</blockquote>

<p>By combining dynamic languages on solid runtimes with rigorous 
testing practices, software &#8220;engineering&#8221; can begin to live up
to its namesake.</p>

<p><a href="http://objo.com/" title="Joe O'Brien's Blog">Joe O&#8217;Brien&#8217;s</a> <em>Ruby Testing Mandatory</em> talk was one
of those &#8220;outside my comfort zone&#8221; talks, as I know very little 
about Ruby.  But, the testing support Joe showed was quite impressive.
It is a mandatory practice because:</p>

<ol>
<li>It&#8217;s included in the language</li>
<li>It&#8217;s easy &amp; you can make it easier</li>
<li>There is nothing you cannot unit test in Ruby</li>
</ol>

<p>With a powerful, dynamic language like Ruby, you can easily do stupid
things, but testing can help you catch problems earlier, mitigating
the risk. This conclusion sounded, unsurprisingly, like Neal Ford&#8217;s
keynote.  But, I was sold on the importance of testing last year.
The take away from this session for me was seeing how awesome
the Ruby tools are.  I think I briefly experienced the 
Reality Distortion Field that seems to be increasingly turning
otherwise rational programmers into Ruby zealots.  I&#8217;ll definitely
be making some time over the next few months to play with Ruby.</p>

<p>Continuing on my non-.NET language tour, I stopped by 
<a href="http://catherinedevlin.blogspot.com/" title="Catherine Devlin's Blog">Catherine Devlin&#8217;s</a>, 
<em>Crash, Smash, Kaboom Course in Python</em> session.  It was a very code
heavy session and I surprised myself by already knowing much of what
she discussed as she introduced Python programming via the 
development of a solar system modeling program, complete with
realistic gravitational forces and exploding planets.  It was a fine
introduction to the language and I was relieved that the example
project was not yet another Web app.  Yes, Python can do more
than Web pages.</p>

<p>After lunch, I had the great pleasure of seeing the best keynote of
the conference, <em>Mashing it up with IIS7</em>, delivered by <a href="http://www.hanselman.com/blog/" title="Scott Hanselman's Computer Zen">Scott
Hanselman</a>. The talk of the conference was actually the
first ten minutes of his presentation which was, basically, stand-up
for geeks. When the keynote presenter uses LOLCat slides in his
presentation, you know you are in for a good time. The presentation
itself was on hosing PHP on IIS7. Despite some technical difficulties
during the presentation, it was great. I wish we were upgrading soon
because I was sold on the new feature set. I am actually starting to
gain a little respect for the IIS folks. I&#8217;m not ready to give up my
beloved Apache, but IIS7 looks sharp and I hope I get to play around
with it soon.</p>

<p>As an aside, the highlight of CodeMash for me was talking with and
rocking out with Scott playing <a href="http://www.rockband.com/" title="Rock Band Website">Rock Band</a> during the Day 1 party.
He seems like a very nice guy, knowledgable, and a quick study on the
drums. I actually think many people found Rock Band to be a
centerpiece of the event. You could always find the most interesting
people hanging out around the game as well as the funniest moments.
I have a grainy cellphone video of a &#8220;cowbell&#8221; incident that
I&#8217;ll post in the near future for those that were there.  The
funniest thing about the Rock Band setup was that there was a 
<em>real</em> band playing next door.</p>

<p>I skipped the first of the vendor sessions in the afternoon due to
being really tired by this point.  In the afternoon, I checked out
<a href="http://www.blueskyonmars.com/" title="Blue Sky On Mars">Kevin Dangoor&#8217;s</a>, 
<em>Introducing the Dojo JavaScript Tool</em> talk.  Being a complete
JavaScript novice, I found it very informative.  The feature
set is huge and the care taken in making the core libraries as 
compact on the wire as possible really impressed me.  The quote
of the session:</p>

<blockquote>
  <p>The great thing about Dojo is that you don&#8217;t need to know JavaScript
  well.</p>
</blockquote>

<p>The final session of Day 1 was <a href="http://diditwith.net/default.aspx" title="Did it with .NET">Dustin Campbell&#8217;s</a>
<em>Putting the Fun into Functional with F#</em>. This was my favorite
session and I heard many other atendees remark that it made their
head spin. As Dustin explains, <a href="http://research.microsoft.com/fsharp/fsharp.aspx" title="Microsoft Research - F#">F#</a> is a <strong>HUGE</strong> language
developed by <a href="http://research.microsoft.com/" title="Microsoft Research">Microsoft Research</a> that fully implements
the three major programming paradigms we have today: functional,
imperative, and object-oriented. The talk focused on the functional
aspects. I think I learned more about functional programming from
this one talk than from all the intermittent reading of Lisp websites
I&#8217;ve done over the past few years. Since the language comes with the
full source code, I&#8217;m really excited to download and play around with
it. Dustin also appears on the latest <a href="http://hanselminutes.com/" title="Hanselminutes Podcast">Hanselminutes</a> podcast and
does a good job explaining some of the points he made in the talk. I
listened to it on my way home tonight. I think F# is going to be a
big deal in the .NET community once people wrap their minds around
the functional aspects.  There is so much power there, yet the
language is also very accessible to current .NET/C# programmers.</p>

<p>After dinner, the Attendee Party commenced where the aforementioned
Rock Band rocking out occured.  Great times were had by all.  I was
originally going to summarize my entire CodeMash 2008 experience
in this entry, but as it is already getting late, I&#8217;ll end it here.
Stay tuned for my summary of Day 2, which included an utterly
fascinating keynote by Brian Goetz on concurrency programming
and some Perl bashing from Bruce Eckel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iTunes U. Authentication Gotchas</title>
		<link>http://www.alterzone.net/blog/2007/12/16/itunes-u-authentication-gotchas/</link>
		<comments>http://www.alterzone.net/blog/2007/12/16/itunes-u-authentication-gotchas/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 21:35:20 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/12/17/itunes-u-authentication-gotchas/</guid>
		<description><![CDATA[While working on an implemention of the iTunes U. authentication algorithm in C#, I came upon a few major gotchas that I thought would be useful to share. I ported the Java implementation that is a part of the example code(zip) package downloadable from the iTunes U. support site. Gotcha #1: iTunes U. Signature Must [...]]]></description>
			<content:encoded><![CDATA[<p>While working on an implemention of the <a href="http://www.apple.com/itunesu" title="iTunes U.">iTunes U.</a> authentication
algorithm in C#, I came upon a few major gotchas that I thought would
be useful to share. I ported the Java implementation that is a part of
the <a href="http://images.apple.com/support/itunes_u/docs/iTunes_U_Code_Samples.zip" title="iTunes U. Example Code">example code</a>(zip) package downloadable from the iTunes
U. <a href="http://www.apple.com/support/itunes_u/" title="iTunes U. Support Site">support</a> site.</p>

<p><span id="more-134"></span></p>

<h2>Gotcha #1: iTunes U. Signature Must be Lowercase</h2>

<p>One issue I encountered when trying to debug my code was that
despite generating the proper signature string, iTunes U. would
reject it as invalid.  The reason?  The string I was generating
was uppercase.  To fix it, I simply called <code>ToLower()</code> on my
generated string before returning it.  The HMAC-SHA256
algorithm is already implemented in the .NET libraries, so it is
trivial to write the signature algorithm.  It is so short, here
it is in its entirety:</p>

<pre><code>public string HMACSHA256(string message, byte[] key)
    {
        UTF8Encoding ue = new UTF8Encoding();
        HMACSHA256 hmac = new HMACSHA256(key);
        byte[] hash = hmac.ComputeHash(ue.GetBytes(message.ToCharArray()));

        // Convert the bytes to hex
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i &lt; hash.Length; i++)
        {
            sb.Append(hash[i].ToString("X2"));
        }

        return sb.ToString().ToLower();
    }
</code></pre>

<h2>Gotcha #2: iTunes U. is Picky About URL Encoding</h2>

<p>Even after I had the signature algorithm working properly, iTunes U.
would still reject my requests.  After some investigation, it turns
out that the iTunes U. server is very picky about how you URL
encode your credentials and identity strings.  If you don&#8217;t do it
just right, the signature will not be valid.  There are two issues
with the URL encoding that I needed to fix to get everything
working:</p>

<ol>
<li><p>The <code>HttpUtility.UrlEncode()</code> method does not encode &#8216;(&#8216; or &#8216;)&#8217;
characters.  But, iTunes U. expects that these characters are
encoded as %28 and %29, respectively.</p></li>
<li><p>Also, in a reverse of Gotcha #1, the <code>HttpUtility.UrlEncode()</code>
method outputs entity codes in lowercase, but iTunes U. expects
uppercase.  For example, a token data string like,</p>

<p><code>credentials=foo&amp;identity=&lt;jdoe@example.edu&gt;"jdoe"&amp;time=1139331600000</code></p>

<p>needs to be encoded as:</p>

<p><code>credentials=foo&amp;identity=%3Cjdoe@example.edu%3E%22jdoe%22&amp;time=1139331600</code></p>

<p>Notice the &#8216;%3C&#8217; instead of &#8216;%3c&#8217;.  It makes a difference.</p></li>
</ol>

<p>I worked around the problem by first URL encoding my string and
passing that string to a function that fixed these two above 
problems.  Since this is another short function, I reproduce it 
below:</p>

<pre><code>private string FixURLEncoding(string UrlEncodedString)
        {
            StringBuilder s = new StringBuilder(UrlEncodedString);
            for (int i = 0; i &lt; s.Length; i++)
            {
                // Find an encoded character and make the letter
                // part upper case because the iTunes U algorithm
                // is very sensitive.
                if (s[i] == '%')
                {
                    if (Char.IsDigit(s[i + 1]) &amp;&amp; Char.IsLetter(s[i + 2]))
                    {
                        s[i + 2] = Char.ToUpper(s[i + 2]);
                    }
                }
            }

            // Encode '(' and ')' b/c UrlEncode doesn't do it and iTunes U
            // is sensitive to this
            s = s.Replace("(", "%28");
            s = s.Replace(")", "%29");

            return s.ToString();
        }
</code></pre>

<h2>Gotcha #3: iTunes U. Timestamp is in Unix Epoch Format</h2>

<p>This is a minor gotcha. You need to convert your time to UTC and then
format it as <a href="http://en.wikipedia.org/wiki/Unix_time" title="Unix Time">Unix time</a>. This is mentioned in the documentation,
but I think only very briefly. If you are unfamiliar with Unix time,
Wikipedia says it is &#8220;the number of seconds elapsed since midnight UTC
of January 1, 1970, not counting leap seconds.&#8221;  You just need
to take your <code>DateTime</code> object and create a new <code>TimeSpan</code> object
that is equal to your time (in UTC) minus the epoch date.  Then,
take the <code>TotalSeconds</code> of the <code>TimeSpan</code> and you have your
timestamp for the iTunes U. request.</p>

<h2>Gotcha #4: Keep Your Clock Synced</h2>

<p>Another minor issue that was caught early on was that if your
computer&#8217;s clock is not synced with an accurate external time source,
your timestamp can be off enough to cause iTunes U. to reject your
request. This happened during the initial testing of credentials with
the supplied Java test script. It only takes a minute or two
inaccuracy in your computer&#8217;s time to cause requests to be rejected.
It is something to remember if you are deploying an application that
implements the iTunes U. authentication algorithm.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/12/16/itunes-u-authentication-gotchas/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ASP.NET and Its Discontents</title>
		<link>http://www.alterzone.net/blog/2007/12/14/aspnet-and-its-discontents-3/</link>
		<comments>http://www.alterzone.net/blog/2007/12/14/aspnet-and-its-discontents-3/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 05:05:24 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/12/14/aspnet-and-its-discontents-3/</guid>
		<description><![CDATA[I like C#. While I prefer languages like Perl and Python, I have to admit that C# is pretty cool. And, with Mono, I could even write nice, happy, FLOSS apps in it, if I like. But, I hate ASP.NET. I am forced to use this abominable framework at work and today I was once [...]]]></description>
			<content:encoded><![CDATA[<p>I like <a href="http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx" title="The C# Language">C#</a>. While I prefer languages like <a href="http://www.perl.org/" title="The Perl Directory">Perl</a> and <a href="http://www.python.org/" title="Python Programming Language">Python</a>,
I have to admit that C# is pretty cool. And, with <a href="http://www.mono-project.com/Main_Page" title="Mono Project">Mono</a>, I could
even write nice, happy, FLOSS apps in it, if I like. But, I <em>hate</em>
<a href="http://asp.net/" title="The Official Microsoft ASP.NET Site">ASP.NET</a>.</p>

<p>I am forced to use this abominable framework at work and today I was
once again reminded of why I hate it so much. My biggest problem with
it is that it seems to have been designed without any real thought
put into what <em>Web</em> programming entails. I suppose it sounded like a
great idea at the time to design a framework that mimicked desktop
application development. But, the majority of the serious programming
I have done in my life has in some way touched on the Web, either
directly as a traditional Web application, or using Web-related
protocols. I am a Web native and I don&#8217;t need my framework getting in
my way all the time. Working within the Page model of ASP.NET feels
like both my hands and feet have been shackled while I&#8217;m in the
middle of a competitive sparing match.  Today, I lost the fight.</p>

<p><span id="more-133"></span></p>

<p>On the plus side, I can dive into the <a href="http://msdn.microsoft.com/msdnmag/issues/02/09/HTTPPipelines/" title="HTTP Pipelines, MSDN Magazine">HTTP Pipeline</a>, which
is nice. HTTPModules saved me when I was trying to create a big part
of the next <a href="http://drexel.edu/irt/rmcweb/" title="Rich Media Syndication System">RMCP</a> release. But, still, it wasn&#8217;t as easy as if I
just used Python with <a href="http://www.djangoproject.com/" title="Django Web Framework">Django</a> or <a href="http://www.rubyonrails.org/" title="Ruby on Rails">Ruby on Rails</a>, or even,
sometimes, straight up Perl <a href="http://www.wiley.com/legacy/compbooks/stein/" title="Official Guide to Programming with CGI.pm">CGI.pm</a>! Today, I encountered a
particularly nasty bug/feature of .NET 2.0 that has caused
development of a simple implementation of an <a href="http://www.apple.com/itunesu" title="iTunes U">iTunes U</a> login system
grind to a screeching halt.</p>

<p>I have a form, lets call it <code>Login.aspx</code>, that iTunes U will redirect
users to when they try to access an iTunes U page that is not
public (i.e., requires you to be authenticated).  So, their system
simply causes iTunes to launch the users browser and hands it a 
URL with a simple query string like 
<code>http://mydomain.edu/Login.aspx?destination={$SomeITunesUrl}</code>.</p>

<p>Simple, right? My <code>Login.aspx</code> page displays a Login form and in the
background will check LDAP to authenticate the user and then a custom
database to authorize the user and decide what specific iTunes U
credentials are assigned. Then, there is this whole iTunes U
authorization algorithm that I ported today from their Java example
that just builds a HTTP request with a special authorization token
that is sent to iTunes U and what I get back is a special HTML page
that I am supposed to forward back to the user&#8217;s browser, wherein the
user&#8217;s browser will open back up iTunes and, as if by magic, the user
will be logged into iTunes U.</p>

<p>The problem comes after I have the HTML page.  How do I get 
that page back to the user?  You can&#8217;t do it from within a
regular ASPX page, as far as I can tell.  Because of the way the
HTTP Pipeline processing works for ASPX pages, no matter what I
do, even if I directly mess with <code>Application.Response</code> within
the page, it will be overridden by the time the HTTP pipeline
event, <code>OnEndRequest()</code>, is called.  So, what I want to do is just
redirect the request, after I have done the authentication and
authorization, to a custom <a href="http://msdn2.microsoft.com/en-us/library/5c67a8bd(VS.71).aspx" title="HttpHandlers">HttpHandler</a> that will do the actual
request to iTunes U and return the HTML to the user, since within
the handler, I can completely control the HTTP response sent
back to the client.  Okay, still with me?  Great.</p>

<p>The problem is that I need do the transfer to the handler while
passing it some context variables, specifically, information about
the user and the destination URL within iTunes U. So, I thought, hey,
that&#8217;s a perfect job for <code>Server.Transfer()</code>! <strong>WRONG!</strong> If you try
it, you get a nice error message that explains nothing.</p>

<p>Even though the <a href="http://msdn2.microsoft.com/en-us/library/8z9e2zxx.aspx" title="HttpServerUtility.Transfer Method">documentation</a> explicitly provides a method
signature that would lead one to believe that you can transfer to a
HttpHandler, you apparently, can&#8217;t. Well, at least not unless it is
another Page handle. So, Microsoft says that this is by
<a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102401" title="Error execute child request... exception">design</a>, but then why have it in the documentation!</p>

<p>I wasted at least half of my day on this and now I am going to 
need to figure out how to do this completely differently.  I
think this <code>Server.Transfer()</code> &#8220;feature&#8221; should be considered a
bug.  I could use <code>Response.Redirect()</code>, but that doesn&#8217;t help
me because I need to transfer context items and I can&#8217;t do that
with a redirect.  I can&#8217;t pass the data as a query string because
then you&#8217;d be able to just see the query string params and
bypass the whole login form!  I guess I could build some elaborate
system that encrypts my data as a string with a time stamp that is
decrypted by the handler, but I shouldn&#8217;t need to do something
like that for such a simple task.</p>

<p>Plain and simple: ASP.NET drives me crazy. There are just things that
seem easy to do in other frameworks and languages, but force one to
jump through incredible numbers of poorly documented hoops to do in
ASP.NET. It is sucking the life out of me. Maybe v3.0/3.5 will help?
I don&#8217;t even care. I&#8217;m so sick of ASP.NET and .NET in general, that I
just want to dump the whole enterprise and I would, if only I could.</p>

<p>Oh well, maybe I&#8217;ll have better luck tomorrow.  If anyone has
any ideas on a workaround to the <code>Server.Transfer()</code> with 
HttpHandler problem, let me know.  My frayed nerves would
appreciate it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/12/14/aspnet-and-its-discontents-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
