<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Yup Dot Com</title>
    <link>http://www.yup.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Advanced Web Services</description>
    <item>
      <title>Teaching Kids to Hack with Hackety Hack</title>
      <description>&lt;p&gt;&lt;img src="/linked/hackety_hack.gif" style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" /&gt;&lt;/p&gt;

&lt;p&gt;Ruby&amp;#8217;s own Edgar Allen Poe, _why the lucky stiff, mastermind of the continually-evolving &lt;a href="http://poignantguide.net/ruby/"&gt;Why&amp;#8217;s (Poignant) Guide to Ruby&lt;/a&gt; and &lt;a href="http://poignantguide.net/ruby/"&gt;Try Ruby!&lt;/a&gt;, has done it again with &lt;a href="http://hacketyhack.net/"&gt;Hackety Hack: The Coder&amp;#8217;s Starter Kit&lt;/a&gt;. But what exactly has &lt;a href="http://whytheluckystiff.net/"&gt;_why&lt;/a&gt; done, and why?&lt;/p&gt;

&lt;p&gt;In &lt;a href="http://whytheluckystiff.net/articles/theLittleCodersPredicament.html"&gt;The Little Coder&amp;#8217;s Predicament&lt;/a&gt;, _why posits that, unlike us first generation hackers who grew up with Vic 20s, C64s, Amigas, and other machines which came with simple, accessible programming environments, kids aren&amp;#8217;t learning programming on today&amp;#8217;s consoles and desktops because companies are now fearful of placing the power of a programming language in the hands of its users. With Hackety Hack, the expressiveness of Ruby, the power of web-based applications using JavaScript and AJAX, and _why&amp;#8217;s own creativity and artistry have converged to produce a quirky, easy-to-use, and, most of all, &lt;strong&gt;fun&lt;/strong&gt;, programming environment that kids will take to faster than you can type &lt;code&gt;FOR X=0 TO 255: POKE 32768+X,X: NEXT&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Brian DeLacey &lt;a href="http://www.greaterbostonrubyandrails.com/HacketyHackBlog.html"&gt;explains&lt;/a&gt;, &amp;#8220;Hackety Hack is as significant a computer-age innovation as the mouse because it makes computers accessible in wholly new educational and transformational ways.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Hackety Hack currently comes as a standalone installer for Windows (&lt;a href="http://code.whytheluckystiff.net/hacketyhack/chrome/site/dist/HacketyHack-0.3.1.exe"&gt;Version 0.3.1 if you want it&lt;/a&gt;), and it works pretty damn well. (Further platform support should be forthcoming, as well as non-English translations.) As you create programs and follow through the self-guided tutorials, you can create, edit, and save files, which are preserved between sessions. Ruby&amp;#8217;s expressiveness is encapsulated in a DSL which integrates beautifully with JavaScript. &lt;code&gt;say&lt;/code&gt; writes to the output area; &lt;code&gt;ask&lt;/code&gt; uses a JavaScript dialog to grab input from the user, and &lt;code&gt;sleep&lt;/code&gt; presents an animated JavaScript progress bar. All and all, a very kind and sensible interface for the babies.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve been asked what I would recommend as ways to get kids involved with programming, and in the past I&amp;#8217;ve recommended Try Ruby!, but Hackety Hack has taken the self-guided tutorial and freedom of a true, (albeit sandboxed), programming environment to the next level, with a powerful set of methods that make common and &lt;strong&gt;modern&lt;/strong&gt; tasks easy. The simplicity shows through, and as _why explains in &lt;a href="http://code.whytheluckystiff.net/hacketyhack/wiki/TheHacketyManifesto"&gt;The Hackety Manifesto&lt;/a&gt;, &amp;#8220;Hello world should be &lt;em&gt;one line&lt;/em&gt;. In fact, downloading an MP3 should be &lt;strong&gt;one line&lt;/strong&gt;!!.&amp;#8221;&lt;/p&gt;

&lt;p&gt;Best of all, Hackety Hack is free, and will remain so. Thanks, _why. And thanks to all (the 50+) who contributed to this creation.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Hackety_Hack"&gt;Hackety Hack @ Wikipedia&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 27 Apr 2007 10:42:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:698a6d15-2e7c-4927-bb8a-6694827cb9aa</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2007/04/27/teaching-kids-to-hack-with-hackety-hack</link>
      <category>Ruby</category>
      <category>Open Source</category>
      <category>Programming</category>
    </item>
    <item>
      <title>No Reservations about Keywords in Ruby on Rails</title>
      <description>&lt;p&gt;&lt;img src="http://farm1.static.flickr.com/66/164496756_e8f8a16a87_m.jpg" style="margin: 4px; padding: 4px; float: right; border: 1px dotted #ccc;" alt="Thesaurus" /&gt;&lt;/p&gt;

&lt;p&gt;Have you ever had the urge to name a data model in your Ruby on Rails application something obvious, like Action, Table, File, Columns, or Database? Well, don&amp;#8217;t. Choosing a name like that might work for you in some cases, but it might fail miserably for someone else using a different database engine (i.e., MySQL verses PostgreSQL verses Oracle). &lt;/p&gt;

&lt;p&gt;Think you can remember all the problematic names? Think again. There are at least 974 known keywords which can give you problems. I started with the &lt;a href="http://wiki.rubyonrails.com/rails/pages/ReservedWords"&gt;ReservedWords&lt;/a&gt; pages on the Ruby on Rails Wiki, and pulled in and merged all the SQL-92, SQL-99, SQL-2003, PostgreSQL, MySQL, SQL Server and ODBC reserved keywords, and put them in one place, mainly for my own future reference.&lt;/p&gt;

&lt;p&gt;So what if your data models are about Databases, Tables, Columns, and Files? Simply think of a Good Prefix&amp;trade;, and name all your models accordingly: DaDatabase, DaTable, DaColumn, and DaFile, with resulting table named da_databases, da_tables, da_columns, and da_files. It&amp;#8217;s easy, painless, and helps you group similarly-purposed tables and models accordingly, and you don&amp;#8217;t have to wrack your brains thinking of synonyms for obvious model names like &amp;#8220;Action&amp;#8221;. I use Geo- for location-oriented data, Sys- for System-oriented tables, Log- for transactions, and App- for application-oriented tables.&lt;/p&gt;

&lt;p&gt;Read on to see the full list &amp;#8230; &lt;/p&gt;</description>
      <pubDate>Wed, 31 Jan 2007 16:05:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5b1515c6-c759-4a7a-9e4e-856732447d0b</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2007/01/31/no-reservations-about-keywords-in-ruby-on-rails</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Refresh Tallahassee Group  Now Forming</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" src="http://static.flickr.com/47/176280146_ddddb018ca_m.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Mike Houghton invites all web technologists in the Tallahassee area to the first meeting of Refresh Tallahassee on Thursday, December 7 at 6:30 pm at the Moore Consulting Group. So what is Refresh Tallahassee? Mike writes:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Good question. Here’s a working definition&amp;#8211;Refresh is a community of metro Tallahassee designers and developers who interface to invigorate the web development culture in our area. Refresh is about crafting the best client-user relationship web-based media can offer. It’s a meeting at the crossroads of user-experience and usability, sharing ideas about how to “make it easy to be happy.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;See you there!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.refreshtallahassee.org/"&gt;Refresh Tallahassee Site&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.refreshingcities.org/"&gt;Refresh Home Page&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 02 Dec 2006 18:08:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c74b0494-4e43-4e02-8397-708428217dee</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/12/02/refresh-tallahassee-group-now-forming</link>
      <category>Web Design</category>
    </item>
    <item>
      <title>Better Subversion External Branch Management with Piston</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" src="http://static.flickr.com/53/167075855_2bf474f73f_m.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Subversion exports can be difficult to manage in your Ruby on Rails application, especially if you want to make local changes to a vendor-supplied plugin that shouldn&amp;#8217;t really be applied back to that vendor&amp;#8217;s trunk (or cannot be). Another reason to keep the vendor&amp;#8217;s code checked into your own tree, is that you&amp;#8217;ll be able to better see changes to the vendor&amp;#8217;s code as they happen and assess the impact on your own code, as well as audit vendor changes that break your application in some way. Externals cannot provide such a safety net. So, into the cylinder of Rails plugins enters Piston by François Beausoleil of Sherbrooke, Québec, Canada. His description:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Piston is a utility that eases vendor branch management. This is similar to &lt;code&gt;svn:externals&lt;/code&gt;, except you have a local copy of the files, which you can modify at will. As long as the changes are mergeable, you should have no problems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Watch him demonstrate its usage:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;$ piston import http://dev.rubyonrails.org/svn/rails/trunk vendor/rails
Exported r4720 from 'http://dev.rubyonrails.org/svn/rails/trunk' to 'vendor/rails'
$ svn commit -m &amp;quot;Importing local copy of Rails&amp;quot;
$ piston update vendor/rails
Updated 'vendor/rails' to r4720.
$ svn commit -m &amp;quot;Updates vendor/rails to the latest revision&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;As a bonus feature, you can lock piston-gripped trees with &lt;code&gt;piston lock&lt;/code&gt; to prevent subversion from updating past a specific vendor&amp;#8217;s revision that works with your application. Nice work, François.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://piston.rubyforge.org/"&gt;Piston @ RubyForge&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 01 Nov 2006 20:59:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c411d003-fa9d-41f6-a0b2-24e7a468ff3d</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/11/01/better-subversion-external-branch-management-with-piston</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Rails Plugins Made Even Easier with RaPT</title>
      <description>&lt;p&gt;Wow, can discovering and installing helpful Rails plugins get any simpler than this?&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_shell "&gt;$ gem install rapt
Successfully installed rapt-0.2.1
$ rapt search &amp;quot;full text search&amp;quot;
Active Search
  Info: http://www.agilewebdevelopment.com/plugins/show/22
  Install: http://julik.textdriven.com/svn/tools/rails_plugins/simple_search
Indexed search engine
  Info: http://www.agilewebdevelopment.com/plugins/show/63
  Install: http://langwell-ball.com/svn/indexed-search/trunk/indexed_search_engine/
Acts as Ferret
  Info: http://www.agilewebdevelopment.com/plugins/show/83
  Install: svn://projects.jkraemer.net/acts_as_ferret/trunk/plugin/acts_as_ferret
Searchable
  Info: http://www.agilewebdevelopment.com/plugins/show/236
  Install: http://svn.mojodna.net/repository/acts_as_searchable/trunk
Query Analyzer
  Info: http://www.agilewebdevelopment.com/plugins/show/392
  Install: http://svn.nfectio.us/plugins/query_analyzer
acts_as_solr
  Info: http://www.agilewebdevelopment.com/plugins/show/400
  Install: http://opensvn.csie.org/thiago/rails/plugins/acts_as_solr/
ExceptionTextable
  Info: http://www.agilewebdevelopment.com/plugins/show/268
  Install: http://svn.pinds.com/rails/plugins/exception_textable/
FCKeditor
  Info: http://www.agilewebdevelopment.com/plugins/show/369
  Install: svn://rubyforge.org//var/svn/fckeditorp/trunk/fckeditor
$ rapt install http://opensvn.csie.org/thiago/rails/plugins/acts_as_slr/
+ ./acts_as_solr/CHANGE_LOG
+ ./acts_as_solr/README
+ ./acts_as_solr/init.rb
+ ./acts_as_solr/install.rb
+ ./acts_as_solr/lib/acts_as_solr.rb
+ ./acts_as_solr/lib/templates/solr.yml
+ ./acts_as_solr/schema.xml&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;All made possible by Ben Curtis&amp;#8217; RaPT tool and the &lt;a href="http://www.agilewebdevelopment.com/plugins"&gt;Rails Plugin Directory&lt;/a&gt;. Thanks, Ben!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.bencurtis.com/archives/2006/10/search-for-rails-plugins/"&gt;Ben&amp;#8217;s Blog Entry on RaPT&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://rapt.rubyforge.org/"&gt;RaPT @ RubyForge&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 27 Oct 2006 11:08:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:c4e91aef-8c8d-4fe2-a79e-85162e0dc296</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/27/rails-plugins-made-even-easier-with-rapt</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Ruby FlexImage Plugin Now Especially Effective</title>
      <description>&lt;p&gt;&lt;img src="http://static.flickr.com/2/1606009_13860efa16_m.jpg" style="border: 1px dotted #ccc; margin: 4px; padding: 4px; float: right" /&gt;Alex Wayne has updated his FlexImage plugin for Ruby on Rails, and it now allows for all sorts of special effects such as translucent overlays, drop shadows, and borders, in addition to its existing image processing capabilities.  The plugin is described as:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&amp;#8220;FlexImage is a plugin that allows you to put image data in your database And retrieve at any size, qulaity or cropping you like. Combine this with page caching and you have a fast and easy way to manage large numbers of uploaded images that are always just the right size for your needs.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As an example, an image can be resized with an added drop shadow with the following snippet:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;flex_image&lt;/span&gt;  &lt;span class="symbol"&gt;:action&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;show&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt;
            &lt;span class="symbol"&gt;:class&lt;/span&gt;  &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;MyImage&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
            &lt;span class="symbol"&gt;:size&lt;/span&gt;   &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;200&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
            &lt;span class="symbol"&gt;:crop&lt;/span&gt;   &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
            &lt;span class="symbol"&gt;:shadow&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Thanks, Alex!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://beautifulpixel.com/articles/2006/10/26/flex-image-now-has-special-effects"&gt;Alex&amp;#8217;s Blog Posting&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://beautifulpixel.com/flex_image/index.html"&gt;FlexImage API Documentation&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.agilewebdevelopment.com/plugins/fleximage"&gt;FlexImage at the Ruby Plugins Directory&lt;/a&gt;  &lt;/p&gt;</description>
      <pubDate>Thu, 26 Oct 2006 16:08:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:71ccdc84-2cbf-4078-aa5f-47ebe21d1c3f</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/26/ruby-fleximage-plugin-now-especially-effective</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Exploitable Denial of Service in Ruby's cgi.rb Library</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" src="http://static.flickr.com/11/13267551_49bda05e0e_m.jpg" /&gt;
Zed Shaw, author of &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt;, has provided a fix for the exploitable error in Ruby&amp;#8217;s cgi.rb library. The error occurs when incorrectly crafted MIME boundaries for multipart uploads causes cgi.rb to loop infinitely waiting for input. &lt;/p&gt;

&lt;p&gt;The following servers are affected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mongrel&lt;/li&gt;
&lt;li&gt;Lightspeed&lt;/li&gt;
&lt;li&gt;CGI Standalone&lt;/li&gt;
&lt;li&gt;Any other server using cgi.rb&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&amp;#8217;re running any of these, you may want to upgrade or patch. More information on the error can be found in &lt;a href="http://www.ruby-forum.com/topic/85966"&gt;Zed&amp;#8217;s post&lt;/a&gt; to the Ruby on Rails forum.&lt;/p&gt;</description>
      <pubDate>Wed, 25 Oct 2006 18:24:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:832d1512-d859-4367-9e57-0aec9c561be0</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/25/exploitable-denial-of-service-in-rubys-cgi-rb-library</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>What is the Ruby Way?</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc;" src="http://static.flickr.com/81/225431728_861a035b13_m.jpg" /&gt;Hal Fulton, a computer scientist from Austin, Texas, has graciously provided an updated second edition of &lt;a href="http://www.awprofessional.com/bookstore/product.asp?isbn=0672328844&amp;amp;rl=1"&gt;&lt;em&gt;The Ruby Way&lt;/em&gt;&lt;/a&gt;. An article at &lt;a href="http://www.infoq.com"&gt;InfoQ&lt;/a&gt; provides a thoughtful excerpt from his new book, which abounds with quoted wisdom about design and simplicity. An example of his writing:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;What Larry Wall said about Perl holds true: &amp;#8220;When you say something in a small language, it comes out big. When you say something in a big language, it comes out small.&amp;#8221; The same is true for English. The reason that biologist Ernst Haeckel could say &amp;#8221;&lt;a href="http://en.wikipedia.org/wiki/Recapitulation_theory"&gt;Ontogeny recapitulates phylogeny&lt;/a&gt;&amp;#8221; in only three words was that he had these powerful words with highly specific meanings at his disposal. We allow inner complexity of the language because it enables us to shift the complexity away from the individual utterance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ruby has transformed my way of thinking about programming, now that I continually take simplicity, elegance, form &lt;em&gt;and&lt;/em&gt; function into consideration when crafting a solution, and I am eagerly awaiting the release of this book.&lt;/p&gt;

&lt;p&gt;Thanks, Hal!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.infoq.com/articles/what-is-the-ruby-way"&gt;Article: &lt;em&gt;What is the Ruby Way?&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 21:12:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:83fec4ea-91c5-4fc9-8c48-346977a83781</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/18/what-is-the-ruby-way</link>
      <category>Intelligence</category>
      <category>Ruby</category>
      <category>Programming</category>
    </item>
    <item>
      <title>New Ruby Web Application Framework: Merb</title>
      <description>&lt;p&gt;&lt;img style="float: right; border: 1px dotted #ccc; margin: 4px; padding: 4px;" src="http://static.flickr.com/1/123880662_4ad4046fe4_m.jpg" /&gt;Ezra Zygmuntowicz of Yakima, Washington, has announced a new lightweight Ruby web application framework: Merb, named by combining the lightweight HTTP application server &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt; with the templating system &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/"&gt;Erb&lt;/a&gt;. Using ActiveRecord, a simpler-than-rails routing system and taking full advantage of Mongrel&amp;#8217;s X-SendFile features, the &amp;#8220;pocket framework&amp;#8221; can server dynamic templated pages at 400 requests/second on a MacBook.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s simple to get started:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo gem install merb
$ gem unpack merb
$ cd merb-0.0.3/examples/sample_app
# edit the conf/merb_init.rb to add your database password info.
# then add a posts table to your db with a title and body column.
$ merb start -t
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once you do that, visit &lt;a href="http://localhost:4000/posts/new"&gt;http://localhost:4000/posts/new&lt;/a&gt;, &lt;a href="http://localhost:4000/posts/list"&gt;http://localhost:4000/posts/list&lt;/a&gt;, or &lt;a href="http://localhost:4000/uploads/start"&gt;http://localhost:4000/uploads/start&lt;/a&gt; to see the little framework that could in action.&lt;/p&gt;

&lt;p&gt;Thanks, Ezra!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://rubyforge.org/frs/?group_id=2383"&gt;The RubyForge Project Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://merb.devjavu.com/"&gt;The Merb Trac Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://svn.devjavu.com/merb/"&gt;The Merb SVN Repository&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://brainspl.at/articles/2006/10/15/merb-gets-cool-routes-and-file-uploads"&gt;An article on Merb at Brainspl.at&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 18 Oct 2006 09:49:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:7dbceb3b-e70b-4a53-be81-4c67dbf44522</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/18/new-ruby-web-application-framework-merb</link>
      <category>Ruby</category>
      <category>Web Development</category>
    </item>
    <item>
      <title>Rails Documentation in CHM Format</title>
      <description>&lt;p&gt;&lt;img style="float: right; border: 1px solid #ccc; margin: 4px; padding: 4px" src="http://static.flickr.com/78/230643739_571cb726cf_m.jpg" /&gt;DeLynn Berry from Denver, Colorado, has converted the Rails Documentation to CHM format, which is quite a bit easier to use than the online HTML format. CHM, or Microsoft Compressed HTML Help, is a proprietary format for online help files, but it can be read on other platforms like Linux and Mac with additional software. DeLynn writes of the update:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&amp;#8220;This update has the documentation for the 1.1.6 release of Rails. This version also has a much more organized Contents section that has a folder group for each gem, which will hopefully lead to easier browsing of the entire file.&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you&amp;#8217;re on Mac, try &lt;a href="http://www.versiontracker.com/dyn/moreinfo/macosx/28016&amp;amp;vid=277468"&gt;Chamonix&lt;/a&gt;, which has better search features than &lt;a href="http://chmox.sourceforge.net/"&gt;Chmox&lt;/a&gt;, but both tools work. On Linux, try &lt;a href="http://freshmeat.net/projects/gnochm/"&gt;GnoCHM&lt;/a&gt; or &lt;a href="http://freshmeat.net/projects/kchmviewer/"&gt;KchmViewer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://delynnberry.com/2006/10/16/rails-chm-documentation-version-1-1-6"&gt;Link to DeLynn&amp;#8217;s Blog Announcement&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://delynnberry.com/assets/2006/9/20/rails-documentation-1-1-6.chm"&gt;Direct Link to CHM File&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 17 Oct 2006 11:03:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:9c551bc4-b717-468f-929d-8b106646823e</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/17/rails-documentation-in-chm-format</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Roxen 4.5.111 Released</title>
      <description>&lt;p&gt;&lt;img src="http://static.flickr.com/116/251175594_7e785afc81_m.jpg" style="float: right; margin: 4px; padding: 4px; border: 1px dotted #ccc" /&gt;&lt;/p&gt;

&lt;p&gt;Roxen Webserver 4.5.111 (r2) has just been released by &lt;a href="Roxen Internet Software AB"&gt;http://www.roxen.com/&lt;/a&gt; of the 709-year old city of &lt;a href="http://en.wikipedia.org/wiki/Link%C3%B6ping"&gt;Linköping,
Sweden&lt;/a&gt;. Roxen, named after a nearby lake, is a full-featured web application server platform, written in Pike and C, and supporting features such as dynamically-generated images and text, a XML-based macro language, a non-forking multi-threaded HTTP/HTTPS engine, proxy and relaying support, database integration. and other advanced features. &lt;/p&gt;

&lt;p&gt;Changes since 4.5.78 include several RXML, HTTP, and database-related fixes. In the included version of Pike, they have included several &amp;#8220;internal fixes for compiler errors, 2GB+ files, memory handling, asynchronous HTTP queries, etc.&amp;#8221; The Image module now supports &amp;#8220;CMYK format, EPS variations, little-endian TIFF files, GhostScript timeout, and more&amp;#8221;.&lt;/p&gt;

&lt;p&gt;We use Roxen and Apache 2/Rails/Mongrel side-by-side to be able to handle various difficult web-hosting situations. Things that are difficult in Apache are quite simple in Roxen, and some of the limitations of Roxen can be easily handled by Apache.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://download.roxen.com/4.5/changes.xml"&gt;Roxen WebServer changes in 4.5.111 r2&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://download.roxen.com/4.5/"&gt;Download Source or Linux, Windows, or Mac Binaries&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 15 Oct 2006 09:48:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:1105e9c0-f882-4ff7-80e1-80a925c3bbf2</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/10/15/roxen-4-7-111-released</link>
      <category>Web Design</category>
      <category>Open Source</category>
    </item>
    <item>
      <title>Ruby on Rails date_finder plugin</title>
      <description>&lt;p&gt;Jonathan Viney of New Zealand has announced his &lt;code&gt;date_finder&lt;/code&gt; plugin for Ruby on Rails. The plugin allows the following types of actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To find the next five Mondays and Fridays:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DateFinderBase&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;weekly&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;day&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:monday&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;day&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:friday&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:max&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;To find the 10th of the month for the next five months:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DateFinderBase&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;monthly&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;day_number&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:max&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;To find the last Thursday in September for the next 3 years&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DateFinderBase&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;yearly&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;month&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:september&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;day&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:thursday&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;day_occurrence&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:last&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:max&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;To find the next 5 Wednesdays on a fortnightly basis (skips every second week):&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DateFinderBase&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;weekly&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;day&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:wednesday&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:max&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To install, execute &lt;code&gt;script/plugin install http://svn.viney.net.nz/things/rails/plugins/date_finder&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Thanks, Jonathan.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.agilewebdevelopment.com/plugins/date_finder"&gt;Date Finder @ Ruby Plugins Directory&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 20 Sep 2006 09:07:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:3961e8ff-4344-47f7-82ff-f911e74ef7a6</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/20/ruby-on-rails-date_finder-plugin</link>
      <category>Ruby on Rails</category>
      <category>plugin</category>
    </item>
    <item>
      <title>A Manifesto for Tags</title>
      <description>&lt;p&gt;&lt;img style="float: right; border: 1px dotted #ccc; margin: 4px; padding: 4px;" src="http://static.flickr.com/26/50374777_922ab2da9e_m.jpg" /&gt;Someone from Manchester, England&amp;#8217;s &lt;a href="http://www.vagueware.com"&gt;vagueware.com&amp;#8211;Innovation in Software&lt;/a&gt; blog (presumably Paul Robinson) wrote an excellent article describing the modern &lt;em&gt;need&lt;/em&gt; for &amp;#8220;tags&amp;#8221; for classifying information in the digital realm. Here&amp;#8217;s the problem: it&amp;#8217;s hard to find stuff that you don&amp;#8217;t know that much about &amp;#8230; yet. In the classic Dewey Decimal System method, you go find one book about something you&amp;#8217;re interested in, and &lt;em&gt;viola&lt;/em&gt;, there&amp;#8217;s more right there. But with information, how to you create a &amp;#8220;distance function&amp;#8221; that allows information to be found near other information that is similar. He conveys the scope of the problem:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;It gets worse when you realise that you could be dealing with not just a few thousand items in a library, but the entire sum of human knowledge. Every document, photo, film, sound recording, computer program and physical object. Imagine trying to classify and then later find everything related to piegeons, cooking and hunting in that lot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So instead of taxonomies, hierarchies, ontologies, we have something that is quite easy and powerful: tagging. Paul continues:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;The purpose of tagging is to replace taxonomies. We want to do this for lots of reasons, including:&lt;/p&gt;
    
    &lt;ul&gt;
    &lt;li&gt;We don’t want to have to worry about where we put stuff into the system. We want to mark the item up without having to spend an hour - or decade - debating which part of the taxonomy it belongs in.&lt;/li&gt;
    &lt;li&gt;We want to know it can be easily retrieved by those who may be interested in finding it at a later date.&lt;/li&gt;
    &lt;li&gt;We want to be able to easily find ‘neighbours’ even if they belong in a traditionally unrelated taxonomy.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Overall, a well-written manifesto which you should read if you have any question about how tags can and will help you in your information-filled future.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.vagueware.com/2006/9/19/a-manifesto-for-tagging"&gt;A Manifesto for Tags&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 19 Sep 2006 19:05:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:47533e52-0809-4258-b449-37b39e0a332d</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/19/a-manifesto-for-tags</link>
      <category>Intelligence</category>
      <category>manifesto</category>
      <category>taxonomy</category>
      <category>ontology</category>
      <category>tag</category>
      <category>intelligence</category>
      <category>knowledge</category>
    </item>
    <item>
      <title>Leonard Richardson on Ruby Libraries</title>
      <description>&lt;p&gt;&lt;img src="http://static.flickr.com/62/208086434_16c53c78b1_m.jpg" style="float: right; border: 1px dotted #ccc; margin: 4px; padding: 4px" /&gt;Pat Eyler has a short interview with the author of &lt;i&gt;Ruby Cookbook&lt;/i&gt;, Leonard  Richardson, who touches on the ability of great Ruby libraries which change the way you think about the problems of programming. &lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Leonard: I&amp;#8217;m looking forward to more libraries that use Ruby&amp;#8217;s idioms to radically simplify entire domains. I think this is where dynamic languages like Ruby and Python show their power: Rails, ActiveRecord, ActiveResource, gserver, DRb, Starfish, Twisted, PyGame, etc. These libraries tackle a problem that&amp;#8217;s been around for years, and succeed by hiding a huge amount of the work and/or changing the way you think about the problem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Leonard even lists his top 5 libraries in Ruby, including mine, Hpricot:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;Leonard: Hard to pick just five, but I&amp;#8217;ll showcase some lesser-known libraries that I think deserve attention:&lt;/p&gt;
    
    &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://code.whytheluckystiff.net/hpricot/"&gt;hpricot&lt;/a&gt;, by _why, which makes me think I should just pack up Rubyful Soup.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://rufy.com/starfish/doc/"&gt;Starfish&lt;/a&gt;, a really simple distributed programming library that Lucas wrote.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://rubyforge.org/projects/char-encodings/"&gt;char-encodings&lt;/a&gt; deserves more attention. By which I mean, people should work on it as a way to improve Ruby&amp;#8217;s internationalization support, and yet I shouldn&amp;#8217;t have to do any work on it.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://ferret.davebalmain.com/trac/"&gt;Ferret&lt;/a&gt; is a Ruby port of Lucene, the best Java library ever. It lets you do full-text search on structured data.&lt;/li&gt;
    &lt;li&gt;Finally, &lt;a href="http://www.ryandaigle.com/articles/2006/06/30/whats-new-in-edge-rails-activeresource-is-here"&gt;ActiveResource&lt;/a&gt; isn&amp;#8217;t a real library yet, and everybody knows about it, but it&amp;#8217;s going to be awesome.&lt;/li&gt;
    &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://on-ruby.blogspot.com/2006/09/author-interview-leonard-richardson.html"&gt;Leonard Richardson Interview&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 11 Sep 2006 18:53:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:d5cb7139-2823-4b5d-8e78-0387b07ec3d0</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/11/leonard-richardson-on-ruby-libraries</link>
      <category>Ruby</category>
    </item>
    <item>
      <title>A Natural Language Date/Time Parser for Ruby: chronic</title>
      <description>&lt;p&gt;Chronic is a natural language date/time parser written in pure Ruby.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;
  &lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;chronic&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

  &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;   &lt;span class="comment"&gt;#=&amp;gt; Sun Aug 27 23:18:25 PDT 2006&lt;/span&gt;

  &lt;span class="comment"&gt;#---&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;tomorrow&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Mon Aug 28 12:00:00 PDT 2006&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;monday&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:context&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:past&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Mon Aug 21 12:00:00 PDT 2006&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;this tuesday 5:00&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Tue Aug 29 17:00:00 PDT 2006&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;this tuesday 5:00&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:ambiguous_time_range&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="symbol"&gt;:none&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Tue Aug 29 05:00:00 PDT 2006&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;may 27th&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:now&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;local&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;2000&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;))&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Sat May 27 12:00:00 PDT 2000&lt;/span&gt;

  &lt;span class="constant"&gt;Chronic&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;may 27th&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:guess&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="constant"&gt;false&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="comment"&gt;#=&amp;gt; Sun May 27 00:00:00 PDT 2007..Mon May 28 00:00:00 PDT 2007&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;blockquote&gt;
    &lt;p&gt;Chronic uses Ruby’s built in Time class for all time storage and computation. Because of this, only times that the Time class can handle will be properly parsed. Parsing for times outside of this range will simply return nil. Support for a wider range of times is planned for a future release.&lt;/p&gt;
    
    &lt;p&gt;Time zones other than the local one are not currently supported. Support for other time zones is planned for a future release. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://chronic.rubyforge.org/"&gt;Cronic @ Rubyforge&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 10 Sep 2006 19:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:ccc8148b-1205-46df-9a49-b91b8df60257</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/10/a-natural-language-date-time-parser-for-ruby-chronic</link>
      <category>Ruby</category>
    </item>
    <item>
      <title>Ruby on Rails Plugin: CriteriaQuery</title>
      <description>&lt;p&gt;You&amp;#8217;ll like this code:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;Person&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;query&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;name_like&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;').&lt;/span&gt;&lt;span class="ident"&gt;join&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;address&lt;/span&gt;&lt;span class="punct"&gt;').&lt;/span&gt;&lt;span class="ident"&gt;city_like&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;city&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&amp;#8230; and CriteriaQuery brings it to you (via Max Muermann) as a Ruby on Rails plugin. Head to the &lt;code&gt;README&lt;/code&gt; for some useful examples, like this awkward beauty:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;  &lt;span class="ident"&gt;pq&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Person&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;query&lt;/span&gt;
  &lt;span class="ident"&gt;pq&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;disjunction&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;first_name_eq&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:name&lt;/span&gt;&lt;span class="punct"&gt;]).&lt;/span&gt;&lt;span class="ident"&gt;last_name_eq&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:name&lt;/span&gt;&lt;span class="punct"&gt;])&lt;/span&gt; &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:name&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
  &lt;span class="ident"&gt;pq&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;category_id_eq&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:category&lt;/span&gt;&lt;span class="punct"&gt;])&lt;/span&gt; &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:category&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
  &lt;span class="punct"&gt;...&lt;/span&gt;
  &lt;span class="ident"&gt;address&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;pq&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;join&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;address&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
  &lt;span class="ident"&gt;address&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;state_eq&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:address&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:state&lt;/span&gt;&lt;span class="punct"&gt;]])&lt;/span&gt; &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;params&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:address&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="symbol"&gt;:state&lt;/span&gt;&lt;span class="punct"&gt;]]&lt;/span&gt;
  &lt;span class="punct"&gt;...&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Neat, huh?&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.muermann.org/ruby/criteria_query"&gt;CriteriaQuery Plugin Documentation Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.agilewebdevelopment.com/plugins/criteria_query"&gt;Ruby Plugins Directory Entry&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 06 Sep 2006 21:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:d74f0256-8098-47cb-89ff-de191aaff5e1</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/06/ruby-on-rails-plugin-criteriaquery</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Prototype Carousel Class for Ruby on Rails</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin: 6px; border: 1px dotted #ccc;" src="http://static.flickr.com/1/185956773_4d50545870_m.jpg"/&gt;
Sébastien Gruhier of Carquefou, France, a new Rails convert (after 13 years of C++/Java) has provided a handy &lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt;/&lt;a href="http://script.aculo.us/"&gt;Scriptaculous&lt;/a&gt; Carousel component, which does not use any Yahoo User Interface JavaScript components. A carousel component allows you to view a window into a image stream, with forward and reverse buttons that allow you to navigate through the images. &lt;/p&gt;

&lt;p&gt;Yahoo&amp;#8217;s page describes the component:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;The carousel component manages a list of content (HTML UL and LI elements) that can be displayed horizontally or vertically. The content can be scrolled back and forth with or without animation. The content can reference static HTML content or the list items can be created dynamically on-the-fly (with or without Ajax).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The current version supports both static and Ajax content.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://prototype-carousel.xilinus.com/"&gt;Prototype Carousel Component Home Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://billwscott.com/carousel/"&gt;Original Carousel Component Documentation&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 06 Sep 2006 19:32:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:f94896d9-ca5a-4855-9d3c-84dfedf55298</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/09/06/prototype-carousel-class-for-ruby-on-rails</link>
      <category>Web Design</category>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>The New Ruby-Lang.org</title>
      <description>&lt;p&gt;A new design for ruby-lang.org is coming, and it&amp;#8217;s very Web 2.0. Sweet.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://redhanded.hobix.com/images/ruby-lang-2006.png" alt="Ruby Lang Logo"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://redhanded.hobix.com/cult/theNewRubyLang.html"&gt;_why&amp;#8217;s Blog Article&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://new.ruby-lang.org"&gt;New Site&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.ruby-lang.org"&gt;Old Site&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Aug 2006 18:00:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:90dbf4a8-ba35-4f8a-935b-a2c2f72e3429</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/08/30/the-new-ruby-lang-org</link>
      <category>Ruby on Rails</category>
      <category>Web Design</category>
    </item>
    <item>
      <title>Rails No-Nos Now</title>
      <description>&lt;p&gt;&lt;img style="float: right; border: 1px dotted #ccc; margin: 4px; padding: 4px;" src="http://static.flickr.com/75/229477859_745945240b_m.jpg" /&gt;&lt;/p&gt;

&lt;p&gt;Kevin Clark of San Diego has posted an article describing several deprecated features of Rails&amp;#8211;thing you should fix now or they&amp;#8217;ll break later. Quickly, they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accessing Instance Variables You Didn’t Create&lt;/li&gt;
&lt;li&gt;Stop using &lt;code&gt;find_all&lt;/code&gt; and &lt;code&gt;find_first&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t write the AJAX-enabled feature before you write the simple fallback feature.&lt;/li&gt;
&lt;li&gt;Stop asking for things not directly related to your problem. &lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t use scaffolding.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t use components.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t use engines unless you&amp;#8217;re going to do it  right.&lt;/li&gt;
&lt;li&gt;Use layouts more&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t use Rails Paginator class&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t put controllers into namespaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don&amp;#8217;t completely agree with all of Kevin&amp;#8217;s findings, but you should at least view the article to be aware of some of the problems that you might encounter using these less than best practices features.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://glu.ttono.us/articles/2006/08/30/guide-things-you-shouldnt-be-doing-in-rails"&gt;Things You Shouldn&amp;#8217;t Be Doing in Rails&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Aug 2006 17:45:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:3ae1f910-81b0-41d3-a71c-3e1eed63b6bd</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/08/30/rails-no-nos-now</link>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <title>Beware of &amp;quot;Assumed Logged In&amp;quot; Attacks</title>
      <description>&lt;p&gt;&lt;img style="float: right; border: 1px dotted #ccc; margin: 4px; padding: 4px" src="http://static.flickr.com/54/128390795_3d16a30ee3_m.jpg" /&gt;
Brian Ellin of Portland, Oregon, warns us of &amp;#8220;assumed logged in&amp;#8221; attacks, which are cross-site attacks in which another site carefully crafts a URL that opens in a hidden frame which performs a destructive action on a different site that you are assumed to have been logged in to. His solution: the secure-action-plugin. He describes the problem and the solution:&lt;/p&gt;

&lt;blockquote&gt;

&lt;p&gt;In an assumed logged in attack, a malicious site assumes the visitor is logged into your site. The malicious site manually crafts a URL to a destructive action on your site (change email, delete account, etc.) and opens the URL to that action in a hidden iframe. The browser then sends the user’s cookies and actions may be performed on your user’s behalf without them ever knowing. This technique may be used to steal accounts, inject or delete account data, or perform other malicious actions.&lt;/p&gt;

&lt;p&gt;The plugin works by overriding ActionController.url_for and adding a signature of the user’s session_id and some salt to URL query strings. By adding a sig that includes the user’s session_id, it makes it impossible to for malicious sites to create URLs that will work on your site for anyone but themselves. The signature is verified before a secure action is executed.&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;Until now, I had not conceived of this type of attack. Thanks, Brian. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://wiki.rubyonrails.com/rails/pages/Secure+Action"&gt;Secure Action on the Rails Wiki Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://code.google.com/p/secure-action-plugin/"&gt;Plugin Home Page&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.agilewebdevelopment.com/plugins/secure_action_plugin"&gt;Ruby Plugins Directory Entry&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Aug 2006 07:01:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:a982cd27-e9e4-43fc-aab0-ba103c08600c</guid>
      <author>Daniel Butler</author>
      <link>http://www.yup.com/articles/2006/08/30/beware-of-assumed-logged-in-attacks</link>
      <category>Ruby on Rails</category>
    </item>
  </channel>
</rss>
