<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Jim's Ramblings - Programming</title>
    <link>http://www.jimjag.com/imo/</link>
    <description>IMO</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    <pubDate>Mon, 09 Feb 2009 15:48:00 GMT</pubDate>

    <image>
        <url>http://www.jimjag.com/imo/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Jim's Ramblings - Programming - IMO</title>
        <link>http://www.jimjag.com/imo/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>How I Learned to Appreciate and Enjoy Groovy</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/231-How-I-Learned-to-Appreciate-and-Enjoy-Groovy.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/231-How-I-Learned-to-Appreciate-and-Enjoy-Groovy.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=231</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=231</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    As most people who know me know, I am a big fan and user of scripting languages. There are just so many places where they not only make sense, but are the only logical solution to the problem. My recent preferences have been &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=631&amp;amp;entry_id=231&quot; title=&quot;http://www.python.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.python.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=632&amp;amp;entry_id=231&quot; title=&quot;http://www.ruby-lang.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.ruby-lang.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Ruby&lt;/a&gt; and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=633&amp;amp;entry_id=231&quot; title=&quot;http://www.php.net/&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP&lt;/a&gt; and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=634&amp;amp;entry_id=231&quot; title=&quot;http://www.perl.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.perl.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Perl&lt;/a&gt;, and they&#039;ve been enough. At least, up until now.&lt;br /&gt;
&lt;br /&gt;
At &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=635&amp;amp;entry_id=231&quot; title=&quot;http://www.springsource.com/&quot;  onmouseover=&quot;window.status=&#039;http://www.springsource.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SpringSource&lt;/a&gt;, I and my team been working quite busily on software products, and one area which tied all the pieces together was a front-end installer and various post-installation scripts that provide additional capability. Now historically we would use Perl for these scripts, but an additional requirement was on the product: assume a bottom-line dependency of a Java JVM. This meant that Perl was out.&lt;br /&gt;
&lt;br /&gt;
Now of course, I could still do this in Python or Ruby (the languages) but that the implementations would need to be the Java versions (&lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=636&amp;amp;entry_id=231&quot; title=&quot;http://www.jython.org/Project/&quot;  onmouseover=&quot;window.status=&#039;http://www.jython.org/Project/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Jython&lt;/a&gt; and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=637&amp;amp;entry_id=231&quot; title=&quot;http://jruby.codehaus.org/&quot;  onmouseover=&quot;window.status=&#039;http://jruby.codehaus.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;JRuby&lt;/a&gt;, respectively). So I could still script in one of these languages, I would simply compile them and ship the class files for the scripts (jar-ed up, of course). So there was no real problem. I did some prelim testing and was somewhat disturbed to fine that Jython was somewhat old but happy to find that JRuby was quite up to date and, from my testing, very, very robust.&lt;br /&gt;
&lt;br /&gt;
But SpringSource had recently &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=638&amp;amp;entry_id=231&quot; title=&quot;http://www.javaworld.com/javaworld/jw-11-2008/jw-11-springsource-g2one.html&quot;  onmouseover=&quot;window.status=&#039;http://www.javaworld.com/javaworld/jw-11-2008/jw-11-springsource-g2one.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;acquired&lt;/a&gt; G2One, and so, in the logical interests of eating our own dogfood, decided to take a look at Groovy.&lt;br /&gt;
&lt;br /&gt;
I&#039;m glad I did.&lt;br /&gt;
&lt;br /&gt;
My first mistake, unfortunately, was looking at it as a &quot;version&quot; of Ruby. Although there are numerous similarities, there are also enough differences that programming Groovy requires you to, at a very low level, keep your Java thinking-caps on. For example, you need to concern yourself more over actions that would cause an Exception in Groovy, whereas Ruby would just &quot;do the right thing&quot;. In this way, I discovered my 2nd mistake: ignoring the fact that Groovy &lt;strong&gt;wants&lt;/strong&gt; to maintain a Java-like consistency. In other words, I was looking at Groovy from the standpoint of a &quot;traditional&quot; script monkey, and not from that of a Java-monkey would wanted an extremely robust scripting language that removed like about 98% of the normal pain in programming in Java. When I got my head around that, then &lt;code&gt;foo = new Fee()&lt;/code&gt; made more logical sense than &lt;code&gt;foo = Fee.new()&lt;/code&gt; for example.&lt;br /&gt;
&lt;br /&gt;
So I&#039;ve added new language to my scripting belt. And, I&#039;ll be honest here, it&#039;s made me enjoy Java programming more than ever.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 09 Feb 2009 10:48:00 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/231-guid.html</guid>
    
</item>
<item>
    <title>Spring Python</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/225-Spring-Python.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/225-Spring-Python.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=225</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=225</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Lots of people like Spring. The only trouble is that a lot of people also don&#039;t like Java. They would love to be able to use Spring but don&#039;t want to make the leap from their favorite scripting language.&lt;br /&gt;
&lt;br /&gt;
Well good news, especially for us Python fans. The latest version of &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=623&amp;amp;entry_id=225&quot; title=&quot;http://springpython.webfactional.com/&quot;  onmouseover=&quot;window.status=&#039;http://springpython.webfactional.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Spring Python&lt;/a&gt; is now available. The real cool thing about this is that Spring Python is now an official Spring Extension with this latest release. Spring Extensions are a way of extending and enhancing Spring and Spring-related addons with the official help of SpringSource. It&#039;s sort of like a mini-Incubator for SpringSource.&lt;br /&gt;
&lt;br /&gt;
Anyway, I&#039;m looking forward to diving into Spring Python. Looks like fun! 
    </content:encoded>

    <pubDate>Fri, 05 Sep 2008 10:36:28 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/225-guid.html</guid>
    
</item>
<item>
    <title>Enterprise worthy</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/222-Enterprise-worthy.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/222-Enterprise-worthy.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=222</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=222</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Due to both my interests, as well as projects at work, I go thru phases of using various languages. Lately, it&#039;s been a C, PHP and Java cycle. It&#039;s amazing that of the 3, Java is the only one that most people consider &quot;enterprise worthy&quot;.&lt;br /&gt;
&lt;br /&gt;
For PHP, I think it&#039;s mostly due to its association of being &quot;just&quot; a server-side language. People forget that you can write standalone PHP applications, which is a darn shame. I&#039;m not saying that PHP is better suited for such tasks than Python or Ruby, but it is pretty rare to see PHP apps that aren&#039;t assumed to be running in a web environment. Be that as it may, as anyone even remotely familiar with various social networking sites (and others) know, PHP is certainly more than capable of being a cornerstone of an enterprise worthy implementation.&lt;br /&gt;
&lt;br /&gt;
Now C is very different. Most people don&#039;t write applications (web applications, that is) in C, and yet most of the entire service infrastructure (OS, various protocol daemons, utilities, etc...) is programmed in C. So how can C not be enterprise worthy, if it provides the underlying foundation for enterprise apps? And yet people deride C, as if it is somehow quaint and yet also stupid to &quot;dirty your hands&quot; with C, simply because C requires the programmer to have a better understanding of how hardware is actually implemented and how software and hardware interacts. I&#039;ve met many &quot;professional&quot; programmers who have no idea what &quot;native word size&quot; or &quot;indirect addressing&quot; means, and yet optimal and efficient programming depends on these, and other, constructs so much. Instead, the glory is saved for precious &quot;programming patterns&quot;, which have their place, to be sure, but are not the be-all and end-all.&lt;br /&gt;
&lt;br /&gt;
And so we come to Java. IMO, there is nothing within the actual language itself which makes Java enterprise worthy. Instead, it is the vast supporting infrastructure which does so, as well as the results of years and years of external forces &quot;convincing&quot; people that Java is the (only) way to go. Unless you think otherwise, consider how crucial RoR was to bringing Ruby to the forefront. Now imagine if Ruby (or Python or whatever) had the same sort of supporting infrastructure that Java enjoys, and Java had none; in that case, Java would be considered the &quot;toy&quot;, the &quot;fringe player&quot; as far as enterprise apps. &lt;br /&gt;
&lt;br /&gt;
IMO, enterprise worthiness is more a measure of the talent of the programmers, developers and architects, and not the language itself. 
    </content:encoded>

    <pubDate>Sat, 16 Aug 2008 10:11:07 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/222-guid.html</guid>
    
</item>
<item>
    <title>To understand a language</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/217-To-understand-a-language.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/217-To-understand-a-language.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=217</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=217</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Each language has its own personality, advantages, warts and inconsistencies. But each also seem to have an almost singular aspect that, if you really wish to be proficient in the language, you must know really, really well. Here&#039;s my list on my top 4:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
 &lt;li&gt;C: pointers&lt;/li&gt;&lt;li&gt;Python: name space rules&lt;/li&gt;&lt;li&gt;Java: Interfaces&lt;/li&gt;&lt;li&gt;Ruby: Ducking&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
Of course, this is far from complete, and &quot;expertise&quot; in each topic doesn&#039;t imply expertise in the language itself, but without getting your head around these, I feel that you are limited by what you can do.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 26 Jun 2008 15:08:12 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/217-guid.html</guid>
    
</item>
<item>
    <title>Irony and Self Reflection</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/211-Irony-and-Self-Reflection.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/211-Irony-and-Self-Reflection.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=211</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=211</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    From &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=607&amp;amp;entry_id=211&quot; title=&quot;http://www.bileblog.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.bileblog.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Bileblog&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
Were you so unloved as children that youre so desperate to squeal out your emotions to every inanimate object you come across? Are you THAT insecure that you so desperately plead for attention whenever you sense sentience nearby?&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Most likely crafted during an instance of clarity whilst looking in a mirror.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 18 May 2008 14:19:33 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/211-guid.html</guid>
    
</item>
<item>
    <title>Evolution of a script</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/199-Evolution-of-a-script.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/199-Evolution-of-a-script.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=199</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=199</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Two of the more useful pages on my &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=586&amp;amp;entry_id=199&quot; title=&quot;http://people.apache.org/~jim/&quot;  onmouseover=&quot;window.status=&#039;http://people.apache.org/~jim/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://people.apache.org/~jim/&lt;/a&gt; site are my &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=587&amp;amp;entry_id=199&quot; title=&quot;http://people.apache.org/~jim/projects.html&quot;  onmouseover=&quot;window.status=&#039;http://people.apache.org/~jim/projects.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ASF Projects&lt;/a&gt; and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=588&amp;amp;entry_id=199&quot; title=&quot;http://people.apache.org/~jim/committers.html&quot;  onmouseover=&quot;window.status=&#039;http://people.apache.org/~jim/committers.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ASF Committers&lt;/a&gt; pages.&lt;br /&gt;
&lt;br /&gt;
These are autogenerated pages which look at various resources and files to determine the &quot;current&quot; list (and status) of the ASF projects and their committers. The script that generates these pages actually has a pretty interesting heritage. The &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=589&amp;amp;entry_id=199&quot; title=&quot;http://www.jimjag.com/code/projects.py&quot;  onmouseover=&quot;window.status=&#039;http://www.jimjag.com/code/projects.py&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;initial version&lt;/a&gt; was written by &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=590&amp;amp;entry_id=199&quot; title=&quot;http://intertwingly.net/blog/&quot;  onmouseover=&quot;window.status=&#039;http://intertwingly.net/blog/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Sam Ruby&lt;/a&gt; in Python. I decided to take that as a starting point and &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=591&amp;amp;entry_id=199&quot; title=&quot;http://www.jimjag.com/code/makestats.pl&quot;  onmouseover=&quot;window.status=&#039;http://www.jimjag.com/code/makestats.pl&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ported it to Perl&lt;/a&gt; since, at the time, I didn&#039;t like Python all that much (that, of course, has changed greatly). Along the way, people started using and referring to the pages more and more, and so the script itself gained some increased functionality.&lt;br /&gt;
&lt;br /&gt;
After awhile though, I tired of doing the script in Perl and decided  to rewrite it in Ruby, resulting in the &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=592&amp;amp;entry_id=199&quot; title=&quot;http://www.jimjag.com/code/makestats.rb&quot;  onmouseover=&quot;window.status=&#039;http://www.jimjag.com/code/makestats.rb&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;current version&lt;/a&gt;. What is interesting, I think, in reviewing all 3 &quot;main&quot; versions is that the original heritage of the script still is apparent in certain sections. If instead of simply &quot;porting&quot; to a new language, if I instead had &quot;rewritten&quot; it, I think the structure would be different, maybe even vastly different in some areas. Also note that in some sections I do things very Ruby-like, and in others, take a more &quot;traditional&quot; approach... This is something I tend to do in all my coding, to reinforce the fact that there are always different ways to code things, and to keep myself, and my code readers, on our toes.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 25 Mar 2008 10:25:59 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/199-guid.html</guid>
    
</item>
<item>
    <title>proxy hooks</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/195-proxy-hooks.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/195-proxy-hooks.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=195</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    In the Apache httpd 2.2 development, I&#039;ve spent a lot of time on the proxy module, especially on the load balancer aspects of mod_proxy. This is an area which interests me and, based on the feedback and popularity of various presentations and webinars I&#039;ve done, interests others as well.&lt;br /&gt;
&lt;br /&gt;
Not that long ago, on the httpd development list, we were discussing ways of enhancing the load balancing mechanism, with possibly a separate process/thread which periodically verifies the health of backend servers and maybe even providing information on their CPU load, stuff like that. With all that in mind, I started working on some additional load balancing (LB) implementations but ran into a snag. See, right before the proxy module runs the actual scheme handler (that is, &quot;what to do with this request&quot;), it calls a special hook: proxy_run_pre_request. The problem is that this hook is implemented as RUN_FIRST/DECLINED, meaning that all functions registered with this hook will run in order until one returns something other than DECLINED. Now this makes sense for a lot of hooks, but really thinking through the proxy module, it doesn&#039;t make sense for this one. Adding insult to injury, the one mod_proxy registers is also noted as APR_HOOK_FIRST, making this hook pretty much useless for other modules/submodules to be able to use if you want to also do &quot;other things&quot; at the same time. This is also the same for the proxy_run_post_request as well.&lt;br /&gt;
&lt;br /&gt;
So what I proposed was &quot;fixing&quot; these hooks instead be RUN_ALL, allowing other modules/submodules from using them (eg: OK, we&#039;ve found a balancer, now do some checks against them, or create a timestamp or even bypass that selected balancer all together). Unfortunately, this can be considered an API change, which would make it unsuitable for inclusion in 2.2. In other words, this is easy to address/fix in trunk, but I also want to see this functionality in 2.2.x as well, and a major API change would forbid that.&lt;br /&gt;
&lt;br /&gt;
We haven&#039;t decided yet, conclusively, if, in fact, it &lt;b&gt;&lt;i&gt;is&lt;/i&gt;&lt;/b&gt; an API change, or, if it is, how &quot;dangerous&quot; it is (due to the way it&#039;s implemented, I&#039;m pretty confident that no one is using it, but that doesn&#039;t carry too much weight). So what I&#039;m looking at are adding 2 more hooks: proxy_hook_pre_shandler and proxy_hook_post_shandler, which runs before and after proxy_hook_scheme_handler (that&#039;s what the &#039;shandler&#039; means). This would provide the hook opportunites that I think mod_proxy requires around this stage of processing, as well as being suitable for both trunk and 2.2. The disadvantage is that it adds some cycles to &quot;work around&quot; what is really (IMO), a design/API flaw. The overhead, from all my testing, is pretty much a non-issue, but it still seems an in-elegant solution.&lt;br /&gt;
&lt;br /&gt;
But it&#039;s likely the one I&#039;ll be pushing for... 
    </content:encoded>

    <pubDate>Wed, 27 Feb 2008 09:20:59 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/195-guid.html</guid>
    
</item>
<item>
    <title>mod_site_utime</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/191-mod_site_utime.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/191-mod_site_utime.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=191</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    I&#039;ve used &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=573&amp;amp;entry_id=191&quot; title=&quot;http://www.proftpd.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.proftpd.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;proftpd&lt;/a&gt; as my preferred FTP server for quite awhile now (although I do have a few sites running &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=574&amp;amp;entry_id=191&quot; title=&quot;http://httpd.apache.org/modules/&quot;  onmouseover=&quot;window.status=&#039;http://httpd.apache.org/modules/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;mod_ftp&lt;/a&gt; as well). I&#039;ve also been baselining &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=575&amp;amp;entry_id=191&quot; title=&quot;http://www.panic.com/transmit/&quot;  onmouseover=&quot;window.status=&#039;http://www.panic.com/transmit/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Transmit&lt;/a&gt; as my main OS X FTP client as well, supplementing the various CLI FTP clients as well.&lt;br /&gt;
&lt;br /&gt;
In any case, I&#039;ve noticed that Transmit, after uploading files, tries to reset the timestamp on those files. The rub is that, except for the &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=579&amp;amp;entry_id=191&quot; title=&quot;http://tools.ietf.org/html/draft-somers-ftp-mfxx-03&quot;  onmouseover=&quot;window.status=&#039;http://tools.ietf.org/html/draft-somers-ftp-mfxx-03&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;IETF draft&lt;/a&gt;, there really is no standard way to do this under FTP. There is overloading the  MDTM FTP command, which some clients and servers support. There is also the SITE UTIME command as well. Unfortunately, there appears to be 2 popular formats for SITE UTIME:&lt;br /&gt;
&lt;blockquote&gt;SITE UTIME YYYYMMDDhhmm[ss] path&lt;/blockquote&gt;&lt;br /&gt;
and&lt;br /&gt;
&lt;blockquote&gt;SITE UTIME path YYYYMMDDhhmm[ss] YYYYMMDDhhmm[ss] YYYYMMDDhhmm[ss] UTC&lt;/blockquote&gt;&lt;br /&gt;
What is even more unfortunate is the proftpd doesn&#039;t support the MDTM overload and only supports the 1st flavor of SITE UTIME, whereas Transmit (and others) use the 2nd SITE UTIME flavor.&lt;br /&gt;
&lt;br /&gt;
So using the mod_site_misc.c proftpd contrib module as a starting point, I&#039;ve crafted &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=577&amp;amp;entry_id=191&quot; title=&quot;http://www.jimjag.com/code/mod_site_utime.c&quot;  onmouseover=&quot;window.status=&#039;http://www.jimjag.com/code/mod_site_utime.c&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;mod_site_utime.c&lt;/a&gt;. It&#039;s designed to just implement SITE UTIME (not other SITE commands, like mod_site_misc), and to add some extra flexibility on what is provided in mod_site_misc, like supporting timestamps with seconds values, supporting both format flavors and some basic error checking.&lt;br /&gt;
&lt;br /&gt;
I hear that later versions of proftpd will support the IETF drafts, but until that time, mod_site_utime just may be quite useful for a number of people. 
    </content:encoded>

    <pubDate>Mon, 11 Feb 2008 09:06:53 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/191-guid.html</guid>
    
</item>
<item>
    <title>Happy belated birthday, Donald Knuth</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/186-Happy-belated-birthday,-Donald-Knuth.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/186-Happy-belated-birthday,-Donald-Knuth.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=186</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    It wasn&#039;t until I read &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=566&amp;amp;entry_id=186&quot; title=&quot;http://yoavs.blogspot.com/&quot;  onmouseover=&quot;window.status=&#039;http://yoavs.blogspot.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Yoav&#039;s&lt;/a&gt; &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=564&amp;amp;entry_id=186&quot; title=&quot;http://yoavs.blogspot.com/2008/01/happy-birthday-mr-knuth.html&quot;  onmouseover=&quot;window.status=&#039;http://yoavs.blogspot.com/2008/01/happy-birthday-mr-knuth.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;blog post&lt;/a&gt; that I realized that I had missed &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=567&amp;amp;entry_id=186&quot; title=&quot;http://en.wikipedia.org/wiki/Donald_Knuth&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/Donald_Knuth&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Donald Knuth&#039;s&lt;/a&gt; birthday. Mr. Knuth is on my short list of programming and computer science giants. And it goes without saying that his seminal work, The Art of Computer Programming, holds a place of honor on my bookshelf... it also goes without saying that it is an incredibly worn and dog-eared copy... 
    </content:encoded>

    <pubDate>Fri, 11 Jan 2008 09:50:47 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/186-guid.html</guid>
    
</item>
<item>
    <title>Perl 5.10</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/183-Perl-5.10.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/183-Perl-5.10.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=183</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=183</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Even though other scripting languages like Python and Ruby (and even Erlang) seem to be getting a lot more press recently, Perl5 is still very much a real workhorse in use all over the place. So the &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=562&amp;amp;entry_id=183&quot; title=&quot;http://dev.perl.org/perl5/&quot;  onmouseover=&quot;window.status=&#039;http://dev.perl.org/perl5/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;release of Perl 5.10&lt;/a&gt; is very good and welcome news! Congrats to the perl5-porters team! 
    </content:encoded>

    <pubDate>Wed, 19 Dec 2007 10:54:03 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/183-guid.html</guid>
    
</item>
<item>
    <title>Why community matters</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/182-Why-community-matters.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/182-Why-community-matters.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=182</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=182</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    As mentioned &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=560&amp;amp;entry_id=182&quot; title=&quot;http://www.jimjag.com/imo/index.php?/archives/180-Marc-responds.html&quot;  onmouseover=&quot;window.status=&#039;http://www.jimjag.com/imo/index.php?/archives/180-Marc-responds.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;previously&lt;/a&gt;, one core fundamental of the ASF which is often misunderstood is the idea of &quot;community over code&quot;.&lt;br /&gt;
&lt;br /&gt;
Some people take this to mean is that as long as the community is healthy, then it doesn&#039;t matter whether the code is good or not. This is, of course, total crud. The phrase does not mean that at all, nor is that the intent of the ASF as well. Instead, the slogan refers to a basic truth that has long been proven, time and time again within the ASF (and elsewhere); That a healthy community creates world-class code. It also implies the necessary corollary: That unhealthy communities do not create sustainable world-class code. The key word is &quot;sustainable&quot;.&lt;br /&gt;
&lt;br /&gt;
There are, IMO, 2 main variants of unhealthy communities: one with poisonous people, and others which lack diversity and/or collaboration. My good friends Ben and Fitz explain the impacts of &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=561&amp;amp;entry_id=182&quot; title=&quot;http://video.google.com/videoplay?docid=-4216011961522818645&quot;  onmouseover=&quot;window.status=&#039;http://video.google.com/videoplay?docid=-4216011961522818645&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Poisonous People in Open Source&lt;/a&gt;, so I won&#039;t go into a lot of further detail about that. I will say that the impacts of poisonous people depends greatly on whether they are committers on a codebase or whether just nasty skunks on a list. The former is much more dangerous since the end result is driving away other developers within that codebase, as well as preventing other developers from even considering joining (&quot;That project is a zoo... I can&#039;t stand that guy...&quot;).  So you devolve the project into the 2nd variant: no diversity and/or no real collaboration. The only people left in a project are either those who don&#039;t care or are simple &quot;Yes men&quot; to the poisonous person.&lt;br /&gt;
&lt;br /&gt;
But I can hear people asking &quot;Well, except for the purist aspects, why is that bad? The guy is a coding machine! The code he&#039;s producing is really good! So what is the big deal?&quot;&lt;br /&gt;
&lt;br /&gt;
The big deal is that there will come a time, sooner or later (and most of the time it is sooner) that the person burns out, is forced out or changes jobs or whatever that causes him to leave the project. It happens... it happens a lot. And when it does, you are left with a codebase which is basically now left fallow. There are no people left around to &quot;fill in&quot;. The codebase suffers, the development community (what is left of it) suffers and the user community suffers.&lt;br /&gt;
&lt;br /&gt;
The ASF sees all that as an event to be avoided. The ASF wants to see code survive and even prosper with the changeover of developers, even super studly ones. The ASF wants to see code as a long-term resource, one that continues to attract users and developers. And by creating an environment where merit is rewarded, the expectation is that talented developers will be drawn to those projects that interest them, and will share their talents by helping that project along. And all this with the end result of a much better codebase.&lt;br /&gt;
&lt;br /&gt;
The code and the project are more important than the whims of a single developer... A healthy community is the antidote against poison and antagonism. A healthy community fosters and creates good, viable, sustainable code. Ergo: community over code. 
    </content:encoded>

    <pubDate>Mon, 17 Dec 2007 09:29:12 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/182-guid.html</guid>
    
</item>
<item>
    <title>At ApacheCon US 2007</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/176-At-ApacheCon-US-2007.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/176-At-ApacheCon-US-2007.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=176</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=176</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    So yesterday I arrived in Atlanta for a week (well, almost a week) attending &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=548&amp;amp;entry_id=176&quot; title=&quot;http://us.apachecon.com/us2007/&quot;  onmouseover=&quot;window.status=&#039;http://us.apachecon.com/us2007/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ApacheCon&lt;/a&gt;... It was actually a not-bad flight and it was nice, for a change, to fly somewhere and not have to worry about timezone changes.&lt;br /&gt;
&lt;br /&gt;
By the time I got in, there was little time for coding at the hackathon, but, as always, sufficient time for socializing...&lt;br /&gt;
&lt;br /&gt;
As I type this, I&#039;m sitting at a hackathon table with Henri, Justin, Garrett, Sander and David. The room itself is about 2/3s full... Not bad for 10:40 in the AM! 
    </content:encoded>

    <pubDate>Tue, 13 Nov 2007 10:33:20 -0500</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/176-guid.html</guid>
    
</item>
<item>
    <title>Telaen 1.2.0</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/173-Telaen-1.2.0.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/173-Telaen-1.2.0.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=173</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=173</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    Today we released version 1.2.0 of &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=545&amp;amp;entry_id=173&quot; title=&quot;http://www.telaen.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.telaen.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Telaen&lt;/a&gt;, a very simple but powerful PHP-based webmail system. The reason why I like it is that it requires a very bare-bones PHP installation and is really designed to be as straightforward as possible. If you&#039;ve read my previous posts about Telaen, you know that it is an offshoot of Uebimiau. We&#039;ve been contacted by several organizations and projects (including web-host control panels) that will be dropping UM for Telaen. 
    </content:encoded>

    <pubDate>Tue, 30 Oct 2007 09:50:48 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/173-guid.html</guid>
    
</item>
<item>
    <title>Language bigots and aficionados</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/169-Language-bigots-and-aficionados.html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/169-Language-bigots-and-aficionados.html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=169</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    I&#039;ve been following for quite some time now the various blogs and articles regarding &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=531&amp;amp;entry_id=169&quot; title=&quot;http://www.erlang.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.erlang.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Erlang&lt;/a&gt;.  In general, the &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=532&amp;amp;entry_id=169&quot; title=&quot;http://journal.dedasys.com/articles/2007/09/22/erlang&quot;  onmouseover=&quot;window.status=&#039;http://journal.dedasys.com/articles/2007/09/22/erlang&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;ones&lt;/a&gt; by &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=533&amp;amp;entry_id=169&quot; title=&quot;http://journal.dedasys.com/&quot;  onmouseover=&quot;window.status=&#039;http://journal.dedasys.com/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;David Welton&lt;/a&gt; I&#039;ve found the most &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=534&amp;amp;entry_id=169&quot; title=&quot;http://journal.dedasys.com/articles/2007/10/09/languages-worst-case-vs-average&quot;  onmouseover=&quot;window.status=&#039;http://journal.dedasys.com/articles/2007/10/09/languages-worst-case-vs-average&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;enjoyable&lt;/a&gt;. But one thing I&#039;ve noticed whenever new languages are discussed are that one tends to bring out of the woodwork language bigots instead of language aficionados. The bigots are those who refuse to see anything good in any language other than &quot;theirs&quot;; that their language is suitable for any and all projects; that it is both general and yet specialized. I much prefer listening to the aficiandos, since they can inform me about the reality of their language. When programming, I tend to worry about the reality of programming languages.&lt;br /&gt;
&lt;br /&gt;
As anyone who knows me, or regularly reads this blog knows, I have an affinity for scripting languages. Some mistakenly interpret that as being &quot;anti-Java&quot; when nothing could be further than the truth. The reality is, of course, that Java does not need my help in the least in making a name for itself. The huge marketing forces behind Java have done their job incredibly well, almost too well, since now there is this misconception that Java is the &lt;b&gt;only&lt;/b&gt; language that matters, especially in enterprise application development. And that is something that I &lt;b&gt;do&lt;/b&gt; hope to clear up. In fact, I&#039;m actually co-presenting with &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=535&amp;amp;entry_id=169&quot; title=&quot;http://www.openlogic.com/company/team.php#rod&quot;  onmouseover=&quot;window.status=&#039;http://www.openlogic.com/company/team.php#rod&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Rod Cope&lt;/a&gt; a &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=536&amp;amp;entry_id=169&quot; title=&quot;http://www.covalent.net/services/training/webinars.html&quot;  onmouseover=&quot;window.status=&#039;http://www.covalent.net/services/training/webinars.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;webinar&lt;/a&gt; on this very topic.&lt;br /&gt;
&lt;br /&gt;
I think that languages always have a basic design premise behind them; there is one area which they want to shine. The trick is, of course, whether that is &lt;b&gt;&lt;i&gt;a&lt;/i&gt;&lt;/b&gt; focus of the language or &lt;b&gt;&lt;i&gt;the&lt;/i&gt;&lt;/b&gt; focus. Consider FORTRAN; its focus was on engineering and mathmatical calculations. That focus was so intense, however, that it made it extremely unsuited for almost any other application. Now compare that with C that was designed from the onset to be a &quot;general purpose&quot; language, but ideally suited to systems programming. In this case, the specialization did not destroy the generality.&lt;br /&gt;
&lt;br /&gt;
Which brings us back to Erlang... for me, the measure of success for a language is how well it does what it was designed to do; And Erlang appears to do that very well. The fact that it doesn&#039;t do such a good job on things it wasn&#039;t really designed for does not strike me as a fault or failure at all. After all, would I complain that I can&#039;t use my hammer to saw wood well? Or that my saw sucks at driving nails? Of course, if I had some fancy hammer-saw in my toolbox, and it does an awful job at both sawing and hammering, then the generalization is useless no matter what.&lt;br /&gt;
&lt;br /&gt;
Languages, all languages, have warts; As a programmer, I want to know, heck, I &lt;i&gt;need&lt;/i&gt; to know, what they are. But only if they are real, honest and true warts. &lt;br /&gt;
&lt;br /&gt;
PS: Regarding the webinar mentioned above. A few days ago someone emailed us back saying:&lt;br /&gt;
&lt;blockquote&gt;Haha what a joke this is.  No one wants to use a scripting language over java for web applications.  This is a sad old Unix guy&#039;s last attempt to save perl or something.  Give me a break.&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
I kind of liked the &quot;sad old Unix guy&quot; phrase... And I kind of feel sad for those &quot;young Java guys&quot; who feel so threatened... and are so out of touch. 
    </content:encoded>

    <pubDate>Thu, 11 Oct 2007 09:46:00 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/169-guid.html</guid>
    
</item>
<item>
    <title>A URI by any other name...</title>
    <link>http://www.jimjag.com/imo/index.php?/archives/168-A-URI-by-any-other-name....html</link>
            <category>Programming</category>
    
    <comments>http://www.jimjag.com/imo/index.php?/archives/168-A-URI-by-any-other-name....html#comments</comments>
    <wfw:comment>http://www.jimjag.com/imo/wfwcomment.php?cid=168</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.jimjag.com/imo/rss.php?version=2.0&amp;type=comments&amp;cid=168</wfw:commentRss>
    

    <author>nospam@example.com (Jim Jagielski)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=521&amp;amp;entry_id=168&quot; title=&quot;http://intertwingly.net/blog/2007/10/03/Key-Data&quot;  onmouseover=&quot;window.status=&#039;http://intertwingly.net/blog/2007/10/03/Key-Data&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Many&lt;/a&gt; &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=522&amp;amp;entry_id=168&quot; title=&quot;http://journal.paul.querna.org/articles/2007/10/04/goodbye-rdbms/&quot;  onmouseover=&quot;window.status=&#039;http://journal.paul.querna.org/articles/2007/10/04/goodbye-rdbms/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;people&lt;/a&gt; are &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=523&amp;amp;entry_id=168&quot; title=&quot;http://bluxte.net/blog/2007-10/04-48-26.html&quot;  onmouseover=&quot;window.status=&#039;http://bluxte.net/blog/2007-10/04-48-26.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;buzzing&lt;/a&gt; about Amazon&#039;s &lt;a href=&quot;http://www.jimjag.com/imo/exit.php?url_id=524&amp;amp;entry_id=168&quot; title=&quot;http://allthingsdistributed.com/2007/10/amazons_dynamo.html&quot;  onmouseover=&quot;window.status=&#039;http://allthingsdistributed.com/2007/10/amazons_dynamo.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Dynamo&lt;/a&gt;, and for good reason. But the buzz is almost dual in nature, because not only is it very cool technology, but also because of the real and perceived impacts on other architectural designs. After all, as noted by others as well, what we&#039;re really seeing is a RESTful DB, and how it maps to a RESTful web architecture as well. The key is the URI and the data is the resource; it is a very natural fit. And when the &quot;DB&quot; is better, faster and more scalable due to its simplicity, we see a mutual self-validation between the two. The success of REST implies that Dynamo is the right approach, and the power and capability of Dynamo indicate that RESTful architectures should, of course, continue to be taken seriously (if not more seriously).&lt;br /&gt;
&lt;br /&gt;
Of course, one can pretty much claim that the web itself is a key/value distributed DB implementation, and they&#039;d be right.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t agree that RDBMs are going away anytime soon, but mostly it&#039;s because that I don&#039;t believe in one-size-fits-all solutions. I like having a wide range of tools in my utility belt, so I can use the technology that works, instead of shoe-horning something in, which is the real danger, IMO, with tunnel vision technology. 
    </content:encoded>

    <pubDate>Thu, 04 Oct 2007 12:13:05 -0400</pubDate>
    <guid isPermaLink="false">http://www.jimjag.com/imo/index.php?/archives/168-guid.html</guid>
    
</item>

</channel>
</rss>