<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>The Snailbyte Weblog &#187; Ruby or Rails</title>
	<atom:link href="http://www.snailbyte.com/category/ruby-on-rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.snailbyte.com</link>
	<description>Company news along with technology and business trends.</description>
	<pubDate>Wed, 03 Sep 2008 14:09:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>ruby + grep = rak</title>
		<link>http://www.snailbyte.com/2007/12/03/ruby-grep-rak/</link>
		<comments>http://www.snailbyte.com/2007/12/03/ruby-grep-rak/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 16:55:10 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[Ruby or Rails]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2007/12/03/ruby-grep-rak/</guid>
		<description><![CDATA[<p>Daniel Lucraft recently released Rak, a ruby powered grep replacement.</p>

<p>To install:
gem install rak</p>

<p>Rak is useful for searching Rails code through the console. Search results are displayed with the search terms highlighted, which is very useful. </p>

<p>Go ahead, give it a spin!</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.daniellucraft.com/blog">Daniel Lucraft</a> recently released <a href="http://www.daniellucraft.com/blog/2007/11/rak-a-grep-replacement-in-pure-ruby/">Rak</a>, a ruby powered grep replacement.</p>

<p>To install:
<code>gem install rak</code></p>

<p>Rak is useful for searching Rails code through the console. Search results are displayed with the search terms highlighted, which is very useful. </p>

<p>Go ahead, give it a spin!</p>

<p><img src="http://www.snailbyte.com/ftpuploads/rak_screenshot.jpg"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2007/12/03/ruby-grep-rak/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Campfire activity notifier for KDE</title>
		<link>http://www.snailbyte.com/2007/09/13/campfire-activity-notifier-for-kde/</link>
		<comments>http://www.snailbyte.com/2007/09/13/campfire-activity-notifier-for-kde/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 10:20:50 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[KDE]]></category>

		<category><![CDATA[Ruby or Rails]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2007/09/13/campfire-activity-notifyer-for-kde/</guid>
		<description><![CDATA[<p>Campfire is a web-based chat product from 37Signals. One thing bothered me with using it as a development chat channel: I want to be notified of messages visually instead of checking for them.</p>

<p>Kathy Sierra once wrote an excellent post on the addiction to email-checking. The same goes for Campfire, constantly checking it for new messages [...]</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.campfirenow.com">Campfire</a> is a web-based chat product from 37Signals. One thing bothered me with using it as a development chat channel: I want to be notified of messages visually instead of checking for them.</p>

<p>Kathy Sierra once wrote an excellent post on the <a href="http://headrush.typepad.com/creating_passionate_users/2006/03/clicker_trained.html">addiction to email-checking</a>. The same goes for Campfire, constantly checking it for new messages can drive you insane.</p>

<p>Solution? <a href="http://opensoul.org/2007/1/27/tinder-listening-is-just-as-important-as-speaking">Tinder</a>.</p>

<p>Install Tinder and run the following ruby script:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="ruby"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'tinder'</span>
campfire = <span style="color:#6666ff; font-weight:bold;">Tinder::Campfire</span>.<span style="color:#9900CC;">new</span> <span style="color:#996600;">'your_domain'</span>
campfire.<span style="color:#9900CC;">login</span> <span style="color:#996600;">'your_login'</span>, <span style="color:#996600;">'your_password'</span>
room = campfire.<span style="color:#9900CC;">find_room_by_name</span> <span style="color:#996600;">'Development'</span>
<span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">knotify</span> title, msg
  <span style="color:#008000; font-style:italic;"># shows message on screen</span>
  <span style="color:#CC0066; font-weight:bold;">system</span> <span style="color:#996600;">&quot;dcop knotify default notify eventname <span style="color:#000099;">\'</span>#{title}<span style="color:#000099;">\'</span> <span style="color:#000099;">\'</span>#{msg}<span style="color:#000099;">\'</span> '' '' 16 2&quot;</span>
  <span style="color:#008000; font-style:italic;"># plays alarm sound</span>
  <span style="color:#CC0066; font-weight:bold;">system</span> <span style="color:#996600;">&quot;dcop knotify default notify eventname <span style="color:#000099;">\'</span>#{title}<span style="color:#000099;">\'</span> <span style="color:#000099;">\'</span>#{msg}<span style="color:#000099;">\'</span> '/usr/share/sounds/KDE_Error_2.ogg' '' 1 2&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
room.<span style="color:#9900CC;">listen</span> <span style="color:#9966CC; font-weight:bold;">do</span> |m|
  <span style="color:#9966CC; font-weight:bold;">if</span> !m.<span style="color:#0000FF; font-weight:bold;">nil</span>? <span style="color:#9966CC; font-weight:bold;">and</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:message</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">size</span> &gt; <span style="color:#006666;">1</span>
    knotify<span style="color:#006600; font-weight:bold;">&#40;</span>m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:person</span><span style="color:#006600; font-weight:bold;">&#93;</span>, m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:message</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;'&quot;</span>,<span style="color:#996600;">&quot;&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#008000; font-style:italic;"># knotify doesn't like this character</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>


<p>Note that the script currently works for KDE only, but the <code>knotify</code> method could be replaced with a call to Growl for Apple users. Also, it&#8217;s best to use a login name that is already on the channel so the bot doesn&#8217;t get kicked out of the chat room after being inactive.</p>

<p>We&#8217;ve also used Tinder to hook Campfire up with <a href="http://subversion.tigris.org">Subversion</a>, <a href="http://trac.edgewall.org">Trac</a> and <a href="http://www.capify.org">Capistrano</a>. </p>

<p>Sweet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2007/09/13/campfire-activity-notifier-for-kde/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Scalable web sites</title>
		<link>http://www.snailbyte.com/2007/06/23/scalable-web-sites/</link>
		<comments>http://www.snailbyte.com/2007/06/23/scalable-web-sites/#comments</comments>
		<pubDate>Sat, 23 Jun 2007 10:57:47 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[Books]]></category>

		<category><![CDATA[Ruby or Rails]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2007/06/23/scalable-web-sites/</guid>
		<description><![CDATA[<p>Cal Henderson&#8217;s Building Scalable Web Sites is a must read for anyone in the business of developing for the web.</p>

<p>The author is a PHP hacker and it was interesting to see that according to him, PHP has had it&#8217;s fair share of the same question people keep asking about Rails: &#8220;Does it scale?&#8221;</p>

<p>The distinction between [...]</p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://i136.photobucket.com/albums/q180/geirfugl/th_remoteImage-6.jpg" border="0"/>
<a href="http://www.iamcal.com/">Cal Henderson&#8217;s</a> <a href="http://tinyurl.com/2w75n5">Building Scalable Web Sites</a> is a must read for anyone in the business of developing for the web.</p>

<p>The author is a PHP hacker and it was interesting to see that according to him, PHP has had it&#8217;s fair share of the same question people keep asking about Rails: <strong>&#8220;Does it scale?&#8221;</strong></p>

<p>The distinction between performance and scalability is made very clearly in the book and a scalable system is defined as one that has thee characteristics:</p>

<ul>
<li>It can accommodate increased usage.</li>
<li>It can accommodate an increased dataset.</li>
<li>It is maintainable.</li>
</ul>

<p>Rails passes all these tests for the same reasons PHP does. An increased dataset is accommodated in the database layer, an increased user-base is accommodated though the <a href="http://en.wikipedia.org/wiki/Shared-nothing_architecture">&#8220;share nothing&#8221; architecture</a> and as for maintainability, Rails passes with flying colours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2007/06/23/scalable-web-sites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OpenID and Rails</title>
		<link>http://www.snailbyte.com/2007/02/28/openid-and-rails/</link>
		<comments>http://www.snailbyte.com/2007/02/28/openid-and-rails/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 12:53:13 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[FOWALondon07]]></category>

		<category><![CDATA[OpenID]]></category>

		<category><![CDATA[Ruby or Rails]]></category>

		<category><![CDATA[The Web as a platform]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2007/02/28/openid-and-rails/</guid>
		<description><![CDATA[<p>Before going to the Future of Web Apps conference last week, I&#8217;d become aware of some buzz about OpenID on sites such as Tech Crunch, Slashdot and in the blogosphere in general.</p>

<p>Simon Willisson&#8217;s talk on FOWA (slides, video) was an eye opener and OpenID seems close to reaching a tipping point.</p>

<p>David Heinemeier Hansson has [...]</p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://i136.photobucket.com/albums/q180/geirfugl/th_remoteImage-3.jpg" border="0"/> Before going to the Future of Web Apps conference last week, I&#8217;d become aware of some buzz about <a href="http://openid.net/">OpenID</a> on sites such as <a href="http://www.techcrunch.com/2007/02/15/freeyourid-personalized-openid/">Tech Crunch</a>, <a href="http://it.slashdot.org/article.pl?sid=06/12/05/139204">Slashdot</a> and in the blogosphere in general.</p>

<p><a href="http://simonwillison.net">Simon Willisson</a>&#8217;s talk on FOWA (<a href="http://simonwillison.net/2007/talks/future-openid/">slides</a>, <a href="http://cubicgarden.blip.tv/file/154352/">video</a>) was an eye opener and OpenID seems close to reaching a tipping point.</p>

<p>David Heinemeier Hansson has <a href="http://www.loudthinking.com/arc/000604.html">recently</a> <a href="http://www.loudthinking.com/arc/000606.html">shown</a> interest, Dan Webb posted the Rails based <a href="http://www.danwebb.net/2007/2/27/the-no-shit-guide-to-supporting-openid-in-your-applications">The No Shit Guide to Supporting OpenID in your Applications</a> and East Media Group have made a <a href="http://identity.eastmedia.com/identity/show/Consumer+Plugin">plugin</a> available.</p>

<p>Following the Rails community&#8217;s reaction to this will be interesting. It wouldn&#8217;t surprise me if OpenID support becomes native to Rails in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2007/02/28/openid-and-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Last.fm hack presented on FOWA: IRCCat</title>
		<link>http://www.snailbyte.com/2007/02/26/lastfm-hack-presented-on-fowa-irccat/</link>
		<comments>http://www.snailbyte.com/2007/02/26/lastfm-hack-presented-on-fowa-irccat/#comments</comments>
		<pubDate>Mon, 26 Feb 2007 11:16:49 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[FOWALondon07]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Open source]]></category>

		<category><![CDATA[Ruby or Rails]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2007/02/26/lastfm-hack-presented-on-fowa-irccat/</guid>
		<description><![CDATA[<p>In my last post I mentioned a hack that was featured in a presentation made by Matthew Ogle and Anil Bawa-Cavia of Last.fm at The Future of Web Apps conference last week. Anil has blogged about the presentation and the hack which has just been open sourced by their CTO, Richard Jones.</p>

<p>The hack is basically [...]</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/priddy/401300588/" ><img class="alignright" src="http://i136.photobucket.com/albums/q180/geirfugl/th_remoteImage-2.jpg" border="0"/></a>In my last post I mentioned a hack that was featured in a presentation made by Matthew Ogle and Anil Bawa-Cavia of Last.fm at The Future of Web Apps conference last week. Anil has <a href="http://www.quotesque.net/archives/2007/02/lastfm_at_fowa.html">blogged about the presentation and the hack</a> which has just been <a href="http://www.last.fm/user/RJ/journal/2007/02/21/350855/">open sourced</a> by their CTO, Richard Jones.</p>

<p>The hack is basically an IRC bot, called IRCCat (as in cat to IRC), that listens to messages on some port and sends them to an IRC channel the developers are logged onto. This can be used to make commits to <a href="http://subversion.tigris.org">Subversion</a>, ticket changes on <a href="http://trac.edgewall.org">Trac</a> or any other event in a development environment become part of a chat conversation.</p>

<p>Now that IRCcat has been open sourced, implementing this for Capistrano deploys will be very straight forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2007/02/26/lastfm-hack-presented-on-fowa-irccat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby search on Firefox</title>
		<link>http://www.snailbyte.com/2006/10/26/ruby-search-on-firefox/</link>
		<comments>http://www.snailbyte.com/2006/10/26/ruby-search-on-firefox/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 11:18:37 +0000</pubDate>
		<dc:creator>Geir</dc:creator>
		
		<category><![CDATA[Ruby or Rails]]></category>

		<guid isPermaLink="false">http://www.snailbyte.com/2006/10/26/ruby-search-on-firefox/</guid>
		<description><![CDATA[<p>Google is now allowing the creation of custom search engines via personalised search. At the Ruby Inside blog, Peter Cooper has provided a much needed service with Google Ruby Search.</p>

<p>Extremely useful.</p>
]]></description>
			<content:encoded><![CDATA[<p>Google is now allowing the creation of custom search engines via <a href="http://www.google.co.uk/psearch">personalised search</a>. At the <a href="http://www.rubyinside.com/">Ruby Inside</a> blog, Peter Cooper has provided a much needed service with <a href="http://www.rubyinside.com/google-ruby-search-for-firefox-278.html">Google Ruby Search</a>.</p>

<p>Extremely useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.snailbyte.com/2006/10/26/ruby-search-on-firefox/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
