<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0">

<channel>
	<title>Slash Dot Dash</title>
	<atom:link href="http://www.slashdotdash.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.slashdotdash.net</link>
	<description>Rolling on Rails</description>
	<pubDate>Wed, 18 Mar 2009 22:03:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ruby and Rails Magazines available to Buy or download</title>
		<link>http://www.slashdotdash.net/2009/03/18/ruby-and-rails-magazines-available-to-buy-or-download/</link>
		<comments>http://www.slashdotdash.net/2009/03/18/ruby-and-rails-magazines-available-to-buy-or-download/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 22:03:19 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.slashdotdash.net/?p=1200</guid>
		<description><![CDATA[The thriving Ruby and Rails communities have produced a couple of magazines that you can buy (to show your support) or download PDF versions absolutely free.

Rails Magazine - Issue 1 (1st March 2009)
The Beginning; 36 pages of Rails goodness.

Receiving E-Mail With Rails by Jason Seifer
Delegation in Ruby by Khaled al Habache
Subscription billing with Saasy by [...]]]></description>
			<content:encoded><![CDATA[<p>The thriving Ruby and Rails communities have produced a couple of magazines that you can buy (to show your support) or download PDF versions absolutely free.</p>
<p><img src="http://www.slashdotdash.net/uploads/2009/03/rails_magazine_1-230x300.jpg" alt="" title="" width="230" height="300" class="alignright size-medium wp-image-1197" /></p>
<h2>Rails Magazine - Issue 1 (1st March 2009)</h2>
<p>The Beginning; 36 pages of Rails goodness.</p>
<ul>
<li>Receiving E-Mail With Rails by Jason Seifer</li>
<li>Delegation in Ruby by Khaled al Habache</li>
<li>Subscription billing with Saasy by Alex MacCaw</li>
<li>Making the Switch From RSpec to Shoulda by Dan Pickett</li>
<li>Playing Hooky a.k.a. web hooks by John Nunemaker</li>
<li>Adhearsion by Jason Goecke &#038; Jay Phillips</li>
<li>Rails Performance Analysis by Terry Heath</li>
<li>Getting Started with JRuby and JRuby on Rails by Joshua Moore</li>
<li>Extending Rails Through Plugins by John Yerhot</li>
</ul>
<p><a href="http://magcloud.com/browse/Issue/7830">Buy Now</a> or <a href="http://slashdotdash.net/uploads/2009/03/18/rails-magazine-issue1.pdf">Download</a> for free.</p>
<p><img src="http://www.slashdotdash.net/uploads/2009/03/the_rubyist_august_2008-230x300.jpg" alt="the_rubyist_august_2008" title="the_rubyist_august_2008" width="230" height="300" class="alignleft size-medium wp-image-1199" /></p>
<h2>The Rubyist - Issue 1 (August 2008)</h2>
<blockquote><p>Hampton Catlin, Rein Henrichs, and friends in the first issue of the Rubyist. INSIDE: An interview with Rein Henrichs on Ruby best practices, an interview with Hampton Catlin about Jabl, columns from Giles Bowkett and Rein Henrichs, a Ruby quiz-esque challenge (you can win an iPhone! Yes, you!), building DataMapper adapters, Ben Scofield shares some techniques for auditing your code, using RubyOSA with Evan Light, Yehuda Katz waxes rhapsodic on performance measures in Merb, and learning about building gems with BDD from Jamie van Dyke!</p></blockquote>
<p><a href="http://www.lulu.com/content/3396321">Buy Now</a> or <a href="http://slashdotdash.net/uploads/2009/03/18/the_rubyist_issue_1.pdf">Download</a> for free.</p>
<p><br style="clear:both;" /></p>
<p><img src="http://www.slashdotdash.net/uploads/2009/03/the_rubyist_february_2009-230x300.jpg" alt="the_rubyist_february_2009" title="the_rubyist_february_2009" width="230" height="300" class="alignright size-medium wp-image-1198" /></p>
<h2>The Rubyist - Issue 2 (February 2009)</h2>
<ul>
<li>Regional conferences with Pat Eyler</li>
<li>Talking about the Rails merge with Zach Inglis, and interviews with DHH, Ted Han, and more</li>
<li>Scott Chacon drops some Git knowledge</li>
<li>Yehuda Katz discusses his journey from Rails to Merb to Rails</li>
<li>Martin Rehfeld shares his solution from last issue&#8217;s homework</li>
<li>Obie Fernandez talks about client managment</li>
<li>Aaron Quint spends some time with Sinatra</li>
<li>Evan David Light talks BDD</li>
<li>Ben Scofield talks about testing iPhone applications using Ruby</li>
<li>Eric Hodel talks about the next generation of RubyGems</li>
<li>Dennis Theisen teaches how to use ActiveMerchant</li>
<li>Carlo Pecchia shows off JRuby</li>
</li>
<p><a href="http://www.lulu.com/content/6438917">Buy Now</a> or <a href="http://slashdotdash.net/uploads/2009/03/18/the_rubyist_issue_2.pdf">Download</a> for free.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/K1vY_l-bY2E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2009/03/18/ruby-and-rails-magazines-available-to-buy-or-download/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Migrating this blog from Typo to WordPress</title>
		<link>http://www.slashdotdash.net/2009/01/02/migrating-this-blog-from-typo-to-wordpress/</link>
		<comments>http://www.slashdotdash.net/2009/01/02/migrating-this-blog-from-typo-to-wordpress/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 14:50:39 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Typo]]></category>

		<guid isPermaLink="false">http://www.slashdotdash.net/?p=1171</guid>
		<description><![CDATA[After recently installing Phusion Passenger under Apache 2 to host my Rails apps I wanted to give Ruby Enterprise Edition a go. However as I was running an old version of Typo (version 4.x) which didn&#8217;t seem to like running under REE I decided to migrate to WordPress; upgrading Typo would be just as much [...]]]></description>
			<content:encoded><![CDATA[<p>After recently installing <a href="http://www.modrails.com/">Phusion Passenger</a> under Apache 2 to host my Rails apps I wanted to give <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> a go. However as I was running an old version of Typo (version 4.x) which didn&#8217;t seem to like running under REE I decided to migrate to WordPress; upgrading Typo would be just as much work.  </p>
<p>There&#8217;s already a <a href="http://snippets.dzone.com/posts/show/4326">Ruby upgrade script </a>to create a WordPress compatible WXR file for importing which includes all posts, comments and categories from Typo. I needed to <a href="http://pastie.org/350548">modify the Ruby script</a> slightly to get working with the version of Typo I had installed.</p>
<h2>Exporting Typo blog content to WordPress WXR</h2>
<p>The Ruby script needs to be placed into the script directory of the Typo application root and then run under the production Rails environment:</p>
<pre><code>RAILS_ENV=production ruby script/wp_export.rb &gt; blog.wxr</code></pre>
<h2>Installing WordPress</h2>
<p>Simply <a href="http://codex.wordpress.org/Installing_WordPress">follow the basic WordPress install guide</a> after <a href="http://wordpress.org/latest.zip">downloading the latest software</a> (version 2.7 at the time of writing). The pre-requisites for WordPress are PHP 4.3 or newer and MySQL 4.0 or greater.</p>
<h2>Import existing content</h2>
<p>Once WordPress is installed, log in to the admin section and select <strong>Import</strong> from the <strong>Tools</strong> menu. Choose the <strong>WordPress</strong> option from the list  (<em>Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file</em>). You&#8217;ll need to select the blog.wxr file created by the Ruby script and then click <strong>Upload file and import</strong>. That should recreate your existing Typo blog content (and comments), you may be asked to map the Typo user(s) to WordPress accounts.</p>
<p>With the content installed, the final change required is to setup the <strong>Permalink Settings</strong> from <strong>Settings</strong> &gt; <strong>Permalinks</strong>.  Select the <strong>Day and name</strong> option (giving URLs such as http://www.slashdotdash.net/2009/01/02/sample-post/).  You may need to manually edit or create the .htaccess file to get the rewrite rules working.</p>
<pre><code># .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule></code></pre>
<p>With this working you should find that the standard Typo permalinks (such as http://www.slashdotdash.net/articles/2009/01/02/sample-post/) will now redirect to the corresponding WordPress blog entry, ensuring no broken links when switching from Typo to WordPress.</p>
<h2>Known Issues</h2>
<p>You&#8217;ll probably have a problem with RSS feed readers creating duplicates of the last 10 posts (depending upon your &#8220;Syndication feeds show the most recent&#8221; settings) since the post URLs and GUIDs will have changed.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/XVLoaQHbE7c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2009/01/02/migrating-this-blog-from-typo-to-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Easy Merb installation using Thor</title>
		<link>http://www.slashdotdash.net/2008/09/20/easy-merb-installation-using-thor/</link>
		<comments>http://www.slashdotdash.net/2008/09/20/easy-merb-installation-using-thor/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 00:42:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Merb]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[There&#8217;s now a much simpler way to get Merb setup than I previously noted. By using Thor, either the Stable (Gem) or Edge releases of Merb can be installed as a local Ruby Gem or bundled with your Merb app.
The thor tasks are context aware. Run them in a Merb application directory and they&#8217;ll bundle [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s now a much simpler way to get Merb setup than I <a href="http://www.slashdotdash.net/articles/2008/07/05/getting-started-with-merb-and-datamapper">previously noted</a>. By using <a href="http://yehudakatz.com/2008/05/12/by-thors-hammer/">Thor</a>, either the Stable (Gem) or Edge releases of Merb can be installed as a local Ruby Gem or bundled with your Merb app.</p>
<p>The <code>thor</code> tasks are <em>context aware</em>. Run them in a Merb application directory and they&#8217;ll bundle the relevant files with your app; keeping dependencies with the application and making it independent of your system’s Ruby Gems. When run outside any application, they target the system in general (installing as a standard Gem). This is determined by the presence of a local <code>gems</code> directory (or by specifying the <code>--merb-root</code> option).</p>
<h2>Installing Edge Merb and DataMapper</h2>
<pre><code>mkdir merb; cd merb

# Install Thor
sudo gem install thor

# Get merb.thor file (or update existing file)
curl -L http://merbivore.com/merb.thor &gt; merb.thor
thor merb:tasks:update

# Merb (edge)
sudo thor merb:edge:core --install
sudo thor merb:edge:more --install
sudo thor merb:edge:plugins --install

# DataMapper
sudo thor merb:edge:dm_core --install
sudo thor merb:edge:dm_more --install</code></pre>
<p>Keeping updated with the latest Merb (<code>merb-core</code> and <code>merb-more</code> only) is now simply:</p>
<pre><code>sudo thor merb:edge --install</code></pre>
<p>Further details are given on the <a href="http://merbunity.com/tutorials/18">merbunity site</a>.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/Li-5uoPirHg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/09/20/easy-merb-installation-using-thor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting started with Merb and Datamapper</title>
		<link>http://www.slashdotdash.net/2008/07/05/getting-started-with-merb-and-datamapper/</link>
		<comments>http://www.slashdotdash.net/2008/07/05/getting-started-with-merb-and-datamapper/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 23:46:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Merb]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[Merb is the up-and-coming Ruby web framework, designed to improve upon the ideas in Rails whilst being faster, lighter and less opinionated (or more agnostic). I wanted to discover whether it provides any benefits over Rails and what it does differently. The best way to find out; get it installed it and create a new [...]]]></description>
			<content:encoded><![CDATA[<p>Merb is the up-and-coming Ruby web framework, designed to improve upon the ideas in Rails whilst being faster, lighter and less opinionated (or more agnostic). I wanted to discover whether it provides any benefits over Rails and what it does differently. The best way to find out; get it installed it and create a new app.</p>
<p><strong>Update</strong>: There&#8217;s now a <a href="http://www.slashdotdash.net/articles/2008/09/20/easy-merb-installation-using-thor">much easier way of getting Merb &#38; DataMapper installed</a>.</p>
<p>The <a href="http://www.merbivore.com/">official Merb website</a> gives the following simple installation instructions.</p>
<pre><code>sudo gem install merb</code></pre>
<p>However, since I wanted to also try DataMapper as the <span class="caps">ORM</span> those instructions failed to install a working setup due to a <a href="http://wm.lighthouseapp.com/projects/4819/tickets/440-merb_datamapper-is-out-of-date-version-mismatch-with-dm-more">conflict between Merb and DataMapper dependencies</a>. Unperturbed, I finally got them both installed and working happily together by getting the bleeding edge code from each project&#8217;s github repository and following the instructions provided by Mathew Ford&#8217;s <a href="http://4ninjas.org/merb/">Living life on the edge</a>. The book is also available on <a href="http://github.com/deimos1986/book_mdar/tree/master">github</a>, you can contribute patches there. Hopefully this issue will be resolved soon enough so that you&#8217;ll be able to install the official release gems for both Merb and DataMapper from Rubyforge (instead of running on edge).</p>
<h3>Prerequisites</h3>
<ul>
<li>You must have git installed (<code>sudo port install git-core</code> using MacPorts on <span class="caps">OS X</span>).</li>
<li>Remove any older versions of merb (and datamapper) that you might have installed. Use <code>gem list</code> to view local gems and <code>sudo gem uninstall &lt;name&gt;</code> to remove each individual gem.</li>
</ul>
<h2>The Easy Way</h2>
<p>Matt&#8217;s book outlines an <em>easy way</em> of installing the latest merb &#38; datamapper source, however it failed to properly install the DataMapper gem for me so I had to resort to the <em>hardcore</em> approach.</p>
<pre><code>sudo gem install sake
sake -i 'http://edgy.4ninjas.org/edgy.sake'
sake edgy:install packages="merb-stack"</code></pre>
<p>After installing, to keep up-to-date you just need to execute:</p>
<pre><code>sake edgy:update</code></pre>
<p>Now, if you&#8217;re hardcore&#8230;</p>
<h3>Installing the required dependencies</h3>
<p>Start by installing the gem dependancies.</p>
<pre><code>sudo gem install rack mongrel json erubis mime-types rspec hpricot mocha rubigen haml markaby mailfactory ruby2ruby</code></pre>
<h2>Installing Merb</h2>
<p>Download the merb source:</p>
<pre><code>git clone git://github.com/wycats/merb-core.git
git clone git://github.com/wycats/merb-plugins.git
git clone git://github.com/wycats/merb-more.git</pre>
<p></code></p>
<p>Then install the gems via rake:</p>
<pre><code>cd merb-core ; rake install ; cd ..
cd merb-more ; rake install ; cd ..
cd merb-plugins; rake install ; cd ..</pre>
<p></code></p>
<h2>Installing DataMapper</h2>
<pre><code>git clone git://github.com/sam/extlib.git
git clone git://github.com/sam/do.git

cd extlib ; rake install ; cd ..
cd do
cd data_objects ; rake install ; cd ..
cd do_mysql ; rake install ; cd ..
cd ..

git clone git://github.com/sam/dm-core.git
git clone git://github.com/sam/dm-more.git

cd dm-core ; rake install ; cd ..
cd dm-more ; rake install ; cd ..</pre>
<p></code></p>
<h3>Keeping updated</h3>
<p>To update your local gems with the latest code changes you&#8217;ll need to do a <code>git pull</code> and then <code>rake install</code> for each of the git repositories previously downloaded.</p>
<h2>Creating your first Merb app</h2>
<p>You create a new empty Merb app via the <code>merb-gen</code> utility.</p>
<pre><code>merb-gen app demo</pre>
<p></code></p>
<p>(You can also create flattened or single file applications if you wish).</p>
<pre><code>merb-gen app app_name --flat      (for a flattened application)
merb-gen app app_name --very-flat (for a single file application)</code></pre>
<p>As we&#8217;re using DataMapper we need to edit <code>config/init.rb</code> and uncomment the <code>use_orm :datamapper</code> line. The next step is to create the database settings file <code>config/database.yml</code>:</p>
<pre><code>---
development: &#38;defaults
  adapter:    mysql
  database:   demo_development
  username:   demo
  password:        p@ssword
  host:       localhost

test:
  &lt;&lt;:         *defaults
  database:   demo_test

production:
  &lt;&lt;:         *defaults
  database:   demo_production</code></pre>
<p>You can now fire up the Merb server to make sure it runs.</p>
<pre><code>$ merb
 ~ Loaded DEVELOPMENT Environment...
 ~ Connecting to database...
 ~ loading gem 'merb_datamapper' ...
 ~ Compiling routes...
 ~ Using 'share-nothing' cookie sessions (4kb limit per client)
 ~ Using Mongrel adapter</code></pre>
<p>Some other useful commands to know:</p>
<pre><code>merb -i                                                        # Interactive merb console

merb-gen model &lt;name&gt;                            # Creates a Datamapper Model stub
merb-gen resource &lt;name&gt;                    # Creates a full resource (incuding model, controller, views &#38; test spec)

rake dm:db:automigrate            # Perform automigration
rake dm:db:autoupgrade            # Perform non destructive automigration</code></pre>
<p>Let&#8217;s see how it goes from here with Merb!</p>
<p><strong>Update</strong>: There&#8217;s now a <a href="http://www.slashdotdash.net/articles/2008/09/20/easy-merb-installation-using-thor">much easier way of getting Merb &#38; DataMapper installed</a>.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/2x2xwCZcL8U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/07/05/getting-started-with-merb-and-datamapper/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lifestreaming - combining your online activity into a single stream (using trawlr)</title>
		<link>http://www.slashdotdash.net/2008/03/12/lifestreaming-combining-your-online-activity-into-a-single-stream-using-trawlr/</link>
		<comments>http://www.slashdotdash.net/2008/03/12/lifestreaming-combining-your-online-activity-into-a-single-stream-using-trawlr/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 01:07:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[It&#8217;s been a year since I last mentioned trawlr on this blog at which point I promised no further status updates here. Well I&#8217;m going to just pretend I didn&#8217;t say that for now as I wanted to get some feedback (and usage) on the latest feature I&#8217;ve been working on.
Streaming your life away
It&#8217;s support [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been <a href="http://www.slashdotdash.net/articles/2007/03/09/last-update-on-trawlr-com-until-the-next-time">a year since I last mentioned</a> <a href="http://www.trawlr.com/">trawlr</a> on this blog at which point I promised no further status updates here. Well I&#8217;m going to just pretend I didn&#8217;t say that for now as I wanted to get some feedback (and usage) on the latest feature I&#8217;ve been working on.</p>
<h2>Streaming your life away</h2>
<p>It&#8217;s support for <em>&#8220;lifestreaming&#8221;</em> &#8211; combining your online identity from various different social sites into a single stream. Very much like a diary or timeline of events, grouped by date.</p>
<p>The inspiration for this feature came from a <a href="http://adactio.com/journal/1202/">blog post by Jeremy Keith</a> (hence the title) so props to him for the idea.</p>
<p>Lifestreaming is like Twitter, but covers everything you do online that is publicly available and has an <span class="caps">RSS</span> feed. Currently there&#8217;s support for Delicious, Flickr, Twitter, Upcoming, Last.fm, your own blog feed (RSS) and any other site that provides an <span class="caps">RSS</span> feed.</p>
<p style="float:right"><a href="http://www.slashdotdash.net/images/lifestream.png"><img src="http://www.slashdotdash.net/images/lifestream-small.png" alt="" /></a></p>
<p>You can see an example of <a href="http://www.trawlr.com/users/ben/lifestream">my lifestream</a> in the screen shot. If you already have a <a href="http://www.trawlr.com/">trawlr.com</a> account then why not give it a whirl and create your own lifestream. Don&#8217;t have an account yet? <a href="http://www.trawlr.com/signup">Registration</a> is quick &#38; simple (with no email activation required) and once you&#8217;ve tried out the lifestreaming, you might also be interested in the main <span class="caps">RSS</span> reader.</p>
<p>Once you&#8217;ve created your lifestream, it&#8217;ll be automatically updated throughout the day.</p>
<p>Let me know if you can think of any important sources I&#8217;ve missed, such as; YouTube, Picassa, SmugMug, FaceBook, MySpace, Google Reader shared items, Digg (dugg by) and Reddit (activity).</p>
<p>I&#8217;m planning to create a &#8220;widget&#8221; version of the lifestream so that it may be embedded within your own blog or website, allowing customisation of the display</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/MNFxuMLgu40" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/03/12/lifestreaming-combining-your-online-activity-into-a-single-stream-using-trawlr/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sphinx search with delta indexing thanks to Ultrasphinx</title>
		<link>http://www.slashdotdash.net/2008/03/09/sphinx-search-with-delta-indexing-thanks-to-ultrasphinx/</link>
		<comments>http://www.slashdotdash.net/2008/03/09/sphinx-search-with-delta-indexing-thanks-to-ultrasphinx/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 13:58:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[Evan Weaver has just announced delta indexing support for his UltraSphinx Rails plugin.

Delta indexing speeds up your updates by not reindexing the entire dataset every time.
First, in your .base file, set the indexer option delta to your maximum interval between full reindexes. A day or a week is good, depending. Add a little bit to [...]]]></description>
			<content:encoded><![CDATA[<p>Evan Weaver has <a href="http://blog.evanweaver.com/articles/2008/03/08/delta-indexing-support-in-ultrasphinx/">just announced delta indexing support</a> for his UltraSphinx Rails plugin.</p>
<blockquote>
<p>Delta indexing speeds up your updates by not reindexing the entire dataset every time.</p>
<p>First, in your .base file, set the indexer option delta to your maximum interval between full reindexes. A day or a week is good, depending. Add a little bit to account for the time it takes the actual index to run:</p>
<p><code>delta = &lt;%= 1.day + 30.minutes %&gt;</code></p>
<p>Now, configure your models for delta indexing in the is_indexed call:</p>
<p><code>is_indexed :fields =&gt; ['created_at', 'title', 'body'], :delta =&gt; true</code></p>
<p>Now you can run <code>rake ultrasphinx:index:delta</code> frequently, and only records that were changed within 1 day will be reindexed. You will need to run rake ultrasphinx:index:main once a day to move the delta contents into the main index.</p>
</blockquote>
<p>From the <a href="http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html">UltraSphinx documentation</a>.</p>
<p>I&#8217;ve previously written about how fast Sphinx search is in <a href="http://www.slashdotdash.net/articles/2007/08/06/rails-searching-with-sphinx">Rails searching with Sphinx</a> using the <code>acts_as_sphinx</code> plugin (and also contributed a chapter to the Advanced Rails Recipes book using the UltraSphinx plugin). I&#8217;d now recommend using the UltraSphinx plugin if you want to take advantage of Sphinx for your Rails application.</p>
<p>In my opinion, this completes the &#8216;missing&#8217; piece of functionality and should make Sphinx your default full-text search engine (if you&#8217;re using MySQL).</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/PHNe44MccW0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/03/09/sphinx-search-with-delta-indexing-thanks-to-ultrasphinx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pimp my MacBook Pro</title>
		<link>http://www.slashdotdash.net/2008/03/08/pimp-my-macbook-pro/</link>
		<comments>http://www.slashdotdash.net/2008/03/08/pimp-my-macbook-pro/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 20:19:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[
Thanks to the increasing prevalence of Apple laptops &#8211; including the MacBook, MacBook Pro and new Air &#8211; having a Mac no longer makes you l33t!  To combat this, a couple weeks ago I decided to pimp my MacBook Pro by changing the illuminated Apple logo on the case. A Canadian site sells a [...]]]></description>
			<content:encoded><![CDATA[<p style="float:right"><a href="http://www.slashdotdash.net/images/pimp1.jpg"><img src="http://www.slashdotdash.net/images/pimp1p.jpg" alt="" /></a></p>
<p>Thanks to the increasing prevalence of Apple laptops &#8211; including the MacBook, MacBook Pro and new Air &#8211; having a Mac no longer makes you <em>l33t</em>!  To combat this, a couple weeks ago I decided to <em>pimp my MacBook Pro</em> by changing the illuminated Apple logo on the case. A <a href="http://www.icolours.ca/">Canadian site</a> sells a multitude of inserts that can be used to <a href="http://www.icolours.ca/gallery.html">alter the logo</a>.</p>
<blockquote>
<p>Customize your laptop for only $4.99! These high-quality inserts will make your laptop one of a kind! Free Worldwide Shipping! Compatible with: iBooks, Powerbooks, MacBooks and MacBook Pros</p>
</blockquote>
<p style="float:left"><a href="http://www.slashdotdash.net/images/pimp3.jpg"><img src="http://www.slashdotdash.net/images/pimp3p.jpg" alt="" /></a></p>
<p style="float:right"><a href="http://www.slashdotdash.net/images/pimp2.jpg"><img src="http://www.slashdotdash.net/images/pimp2p.jpg" alt="" /></a></p>
<p>The <a href="http://www.icolours.ca/installation.html">installation guide</a> steps you through the process, the MacBook Pro is rated as &#8220;Medium&#8221; difficulty. Apart from the tight angle to unscrew the 2 retaining screws at the bottom of the screen, the tricky part to the process is removing the back of the screen using a credit card. You need a steady hand and a slightly cavalier attitude to prise the cover apart!</p>
<p>I went for the &#8216;Rainbow&#8217; design &#8211; one of the <a href="http://apple2history.org/history/ah04.html">original Apple logos</a> &#8211; the end result is rather pleasant update to the plain white logo and it still glows in the dark.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/Ycl-MFtGCo0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/03/08/pimp-my-macbook-pro/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BBC iPlayer on the iPhone</title>
		<link>http://www.slashdotdash.net/2008/03/08/bbc-iplayer-on-the-iphone/</link>
		<comments>http://www.slashdotdash.net/2008/03/08/bbc-iplayer-on-the-iphone/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 18:23:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[
Yesterday the BBC announced that their iPlayer video on demand service was available for the iPhone (and iPod Touch). There&#8217;s a more in depth post on the BBC Internet Blog where they give details on the technical implementation.

Back to BBC iPlayer on iPhone implementation: we&#8217;re not using the new Apple SDK, nor are we using [...]]]></description>
			<content:encoded><![CDATA[<p style="float:right"><a href="http://www.slashdotdash.net/images/iplayer1.jpg"><img src="http://www.slashdotdash.net/images/iplayer1p.jpg" alt="" /></a></p>
<p>Yesterday the <a href="http://news.bbc.co.uk/1/hi/technology/7283702.stm"><span class="caps">BBC</span> announced</a> that their <a href="http://www.bbc.co.uk/iplayer/">iPlayer</a> video on demand service was available for the iPhone (and iPod Touch). There&#8217;s a more in depth post on the <a href="http://www.bbc.co.uk/blogs/bbcinternet/2008/03/bbc_iplayer_on_iphone_behind_t.html"><span class="caps">BBC</span> Internet Blog</a> where they give details on the technical implementation.</p>
<blockquote>
<p>Back to <span class="caps">BBC</span> iPlayer on iPhone implementation: we&#8217;re not using the new Apple <span class="caps">SDK</span>, nor are we using the much-rumoured Flash for iPhone (no &#8211; we haven&#8217;t seen it, either). Instead, we&#8217;re creating 516Kbps streams (400Kbps H.264 video, 116Kbps <span class="caps">AAC</span> audio) that show off <span class="caps">BBC</span> programmes brilliantly on an iPhone.</p>
</blockquote>
<p>It&#8217;s interesting to read about the raw processing power required to transcode their 24 simultaneous incoming programmes, for a peak data rate of over a gigabit per second of incoming video.</p>
<p>I tried out an episode of Top Gear and was impressed with both the streaming speed and the quality of the video (check out the images below). The only downside is that it only supports streaming and requires a WiFi connection; unsurprisingly, <span class="caps">EDGE</span> isn&#8217;t fast enough. Ideally it would be fantastic to be able to download a programme to watch &#8216;offline&#8217;, such as on a train (I&#8217;ll keep my finger&#8217;s crossed).</p>
<p style="float:left"><a href="http://www.slashdotdash.net/images/iplayer2.jpg"><img src="http://www.slashdotdash.net/images/iplayer2p.jpg" style="margin:0;" alt="" /></a></p>
<p style="float:left"><a href="http://www.slashdotdash.net/images/iplayer3.jpg"><img src="http://www.slashdotdash.net/images/iplayer3p.jpg" style="margin:0;" alt="" /></a></p>
<p style="float:left"><a href="http://www.slashdotdash.net/images/iplayer4.jpg"><img src="http://www.slashdotdash.net/images/iplayer4p.jpg" style="margin:0;" alt="" /></a></p>
<h3 style="clear:both;">Update</h3>
<p><del>-<strong>Update I</strong>: I knocked up a <a href="http://pastie.org/164454">quick Ruby script to download the mp4 files</a> that the iPhone version uses (it uses wget).</del>- (The script no-longer works due to <span class="caps">BBC</span> attempts to prevent downloads).</p>
<p><strong>Update II</strong>: Paul Battley has <a href="http://po-ru.com/projects/iplayer-downloader/">written a Ruby library, <code>iplayer-dl</code>, for downloading the <span class="caps">BBC</span> iPlayer videos</a>.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/SHm28SZEJWM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/03/08/bbc-iplayer-on-the-iphone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Contributing to “Advanced Rails Recipes”</title>
		<link>http://www.slashdotdash.net/2008/02/28/contributing-to-advanced-rails-recipes/</link>
		<comments>http://www.slashdotdash.net/2008/02/28/contributing-to-advanced-rails-recipes/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 23:10:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[
The latest Beta update to the new Pragmatic Programmers book Advanced Rails Recipes: 72 New Ways to Build Stunning Rails Apps includes two chapters authored by myself.
They are both complete rewrites and updates of two of my popular blog posts Rails searching with Sphinx and iPhone on Rails &#8211; Creating an iPhone optimised version of [...]]]></description>
			<content:encoded><![CDATA[<p style="float:right"><img src="http://www.slashdotdash.net/images/fr-arr-100.jpg" alt="" /></p>
<p>The latest Beta update to the new Pragmatic Programmers book <a href="http://www.pragprog.com/titles/fr_arr">Advanced Rails Recipes: 72 New Ways to Build Stunning Rails Apps</a> includes two chapters authored by myself.</p>
<p>They are both complete rewrites and updates of two of my popular blog posts <a href="http://www.slashdotdash.net/articles/2007/08/06/rails-searching-with-sphinx">Rails searching with Sphinx</a> and <a href="http://www.slashdotdash.net/articles/2007/12/04/iphone-on-rails-creating-an-iphone-optimised-version-of-your-rails-site-using-iui-and-rails-2">iPhone on Rails &#8211; Creating an iPhone optimised version of your Rails site using iUI and Rails 2</a>.</p>
<p>The new recipes are:</p>
<p style="float:right"><img src="http://www.slashdotdash.net/images/api_search.gif" alt="" /></p>
<ul>
<li><strong>Full-Text Search with Sphinx</strong> &#8211; includes a Rails site that uses Sphinx to index the Rails <span class="caps">API</span>.</li>
</ul>
<p style="float:right"><img src="http://www.slashdotdash.net/images/iphone_todo.gif" alt="" /></p>
<ul>
<li><strong>Support An iPhone Interface</strong> &#8211; with a <span class="caps">TODO</span> list app.</li>
</ul>
<p>Along with these two (worth the purchase price on their own!), there are another 79 great recipes with some of the latest Rails best practices in small, easy to implement chunks.</p>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/GdxEtj3IbaM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/02/28/contributing-to-advanced-rails-recipes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby Tidbit: Timeout code execution</title>
		<link>http://www.slashdotdash.net/2008/02/15/ruby-tidbit-timeout-code-execution/</link>
		<comments>http://www.slashdotdash.net/2008/02/15/ruby-tidbit-timeout-code-execution/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 00:39:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">urn:uuid:{a.guid}</guid>
		<description><![CDATA[Just a small tip, if you wish to ensure a snippet of Ruby code doesn&#8217;t run for too long you can use the timeout function. You might want to do this when making a request to a remote server with net/http for example.
timeout.rb

A way of performing a potentially long-running operation in a thread, and terminating [...]]]></description>
			<content:encoded><![CDATA[<p>Just a small tip, if you wish to ensure a snippet of Ruby code doesn&#8217;t run for too long you can use the timeout function. You might want to do this when making a request to a remote server with <code>net/http</code> for example.</p>
<p><a href="http://www.ruby-doc.org/stdlib/libdoc/timeout/rdoc/index.html">timeout.rb</a></p>
<blockquote>
<p>A way of performing a potentially long-running operation in a thread, and terminating it‘s execution if it hasn‘t finished within fixed amount of time.</p>
</blockquote>
<p>Here&#8217;s a quick example using the excellent <a href="http://rfeedparser.rubyforge.org/">rFeedParser</a> (Universal Feed Parser in Ruby) to fetch an <span class="caps">RSS</span> feed.</p>
<pre>
require 'timeout'
require 'zlib'
require 'rubygems'
require 'rfeedparser'

fp = nil
begin
  # Don't take longer than 20 seconds to retrieve &#38; parse an RSS feed
  Timeout::timeout(20) do
    fp = FeedParser.parse("http://feeds.feedburner.com/slashdotdash")
  end
rescue Timeout::Error
  # Too slow!!
end
</pre>
<img src="http://feeds.feedburner.com/~r/slashdotdash/~4/nfAcjLguIJ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.slashdotdash.net/2008/02/15/ruby-tidbit-timeout-code-execution/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
