<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Helicoid Insider</title>
    <link>http://insider.helicoid.net</link>
    <description>Helicoid's tips on designing and coding web applications</description>
    <language>en-gb</language>
    <ttl>40</ttl>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/helicoid_insider" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Riot: Ruby Unit Tests</title>
      <description>&lt;p&gt;&lt;a href="http://github.com/thumblemonks/riot"&gt;Riot&lt;/a&gt; is a unit testing library that I&amp;#8217;ve been using on a few new Helicoid products/features, and some of my open source projects.  It has incredibly concise syntax, and I liked it so much that I wrote a JavaScript version.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://alexyoung.org/2009/10/26/riot-testing/"&gt;Read my overview of Riot here&lt;/a&gt; and download my JavaScript version on &lt;a href="http://github.com/alexyoung/riotjs"&gt;github.com/alexyoung/riotjs&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/GlWOO5WgpxU" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 29 Oct 2009 12:23:04 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/GlWOO5WgpxU/riot_ruby_unit_tests</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/41/riot_ruby_unit_tests</feedburner:origLink></item>
    <item>
      <title>Rails Apps and Server Logs</title>
      <description>&lt;p&gt;We build and maintain Rails apps at Helicoid, and use Linux servers.  By default Rails apps generate a lot of logging, even when logging is set to &lt;code&gt;:warn&lt;/code&gt;.  However, these logs are useful because they contain information that can help fix bugs, or ensure proper operation of long running or background processes.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s a good idea to take some time out to properly manage your log files.  This post discusses two tools for this: &lt;code&gt;logrotate&lt;/code&gt; and &lt;code&gt;logcheck&lt;/code&gt;.&lt;/p&gt;


	&lt;h3&gt;Logrotate&lt;/h3&gt;


	&lt;p&gt;It&amp;#8217;s worth taking some time to manage server logs.  Most Linux distros install &lt;code&gt;logrotate&lt;/code&gt; which gradually expire old files.  You can set logrotate up to rotate your Rails app logs too.  Have a look at the examples in &lt;code&gt;/etc/logrotate.d/&lt;/code&gt; and make one for each of your Rails apps.  No more 100 MB log files!&lt;/p&gt;


	&lt;h3&gt;Logcheck&lt;/h3&gt;


	&lt;p&gt;Another great tool is &lt;code&gt;logcheck&lt;/code&gt;.  This runs through lists of regular expressions to report anything unusual.  If you&amp;#8217;re installing in Debian or Ubuntu, make sure you grab the &lt;code&gt;logcheck-database&lt;/code&gt; to filter out some of the noise from popular daemons on your system.&lt;/p&gt;


	&lt;p&gt;Logcheck can be set to email you reports, so you should have some interesting reading every Monday morning after a weekend away from work email.&lt;/p&gt;


	&lt;p&gt;A similar tool is &lt;a href="http://sial.org/howto/logging/swatch/"&gt;swatch&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/dhxghImF7jo" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 20 Jul 2009 12:43:49 BST</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/dhxghImF7jo/rails_apps_and_server_logs</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/40/rails_apps_and_server_logs</feedburner:origLink></item>
    <item>
      <title>Agile Deployment</title>
      <description>&lt;p&gt;I&amp;#8217;m working on a series of articles about deploying Rails apps.  It&amp;#8217;s based on things I&amp;#8217;ve learned at Helicoid, and it&amp;#8217;s called &lt;a href="http://alexyoung.org/2009/07/13/agile-deployment-introduction/"&gt;Agile Deployment&lt;/a&gt;.  Read it over at my &lt;a href="http://alexyoung.org"&gt;personal blog&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/s2Z1rdwDPjo" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 13 Jul 2009 16:17:39 BST</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/s2Z1rdwDPjo/agile_deployment</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/39/agile_deployment</feedburner:origLink></item>
    <item>
      <title>Open Source: JsChat</title>
      <description>&lt;p&gt;As well as &lt;a href="http://insider.helicoid.net/articles/show/37/loom_open_source_edition"&gt;Loom&lt;/a&gt;, I&amp;#8217;ve been working on a few other open source projects funded by Helicoid.  The biggest so far is &lt;a href="http://jschat.org/"&gt;JsChat&lt;/a&gt; which is an &lt;span class="caps"&gt;MIT&lt;/span&gt;-licensed &lt;span class="caps"&gt;JSON&lt;/span&gt;-based chat system with a nifty web interface:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://files.getdropbox.com/u/221414/helicoid/insider/jschat_insider.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;People have called it an &amp;#8220;open source Campfire&amp;#8221;, but it&amp;#8217;s not really meant to be a Campfire competitor.  It&amp;#8217;s actually a response to these questions:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Can we make a chat system like &lt;span class="caps"&gt;IRC&lt;/span&gt; without the legacy and bloated protocol?&lt;/li&gt;
		&lt;li&gt;Can it work naturally on the web, desktop and console?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The &amp;#8220;Js&amp;#8221; in JsChat refers to &lt;span class="caps"&gt;JSON&lt;/span&gt; rather than JavaScript.  It&amp;#8217;s very easy to build bots and clients.  For more information, see the &lt;a href="http://jschat.org"&gt;JsChat site&lt;/a&gt; and &lt;a href="http://blog.jschat.org"&gt;JsChat blog&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/exxTDrwwJAA" height="1" width="1"/&gt;</description>
      <pubDate>Wed,  1 Jul 2009 12:38:15 BST</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/exxTDrwwJAA/open_source_jschat</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/38/open_source_jschat</feedburner:origLink></item>
    <item>
      <title>Loom: Open Source Edition</title>
      <description>&lt;p&gt;&lt;a href="http://loomapp.com/"&gt;Loom&lt;/a&gt; is our issue tracking system.  It evolved from Bugtagger, which I created for internal use in 2006.  Loom has a few nifty features: the bug report form automatically snoops browser and OS details (to help designers), and it has exception tracking for developers.  You can sign up to try it for free right now.&lt;/p&gt;


	&lt;p&gt;But the future of Loom is open source.  I&amp;#8217;ve set up a private GitHub repo to prepare it for release.  It will be &lt;span class="caps"&gt;MIT&lt;/span&gt; licensed, and easy to set up for use within your company.  I&amp;#8217;ll continue to develop the server-based &amp;#8220;closed&amp;#8221; version, but features will be pushed back into the open source edition.  The only major difference will be that Loomapp.com will be integrated into Helicoid&amp;#8217;s single sign-on system that Helipad and Deadline use.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re interested in helping prepare Loom for the public, &lt;a href="http://helicoid.net/contact/"&gt;contact us&lt;/a&gt; and I&amp;#8217;ll add you to the private GitHub repo.  The repository will become public once we&amp;#8217;ve verified it installs and runs on enough systems&amp;#8212;we initially had Ruby 1.8.6 issues (it was my fault), which &lt;a href="http://www.ricroberts.com/"&gt;Ric Roberts&lt;/a&gt; helped me fix.&lt;/p&gt;


	&lt;p&gt;Loom is built with Ruby on Rails, but help from designers and writers would be awesome too!  You&amp;#8217;ll get fully credited of course!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/r1QQ2aWVNbo" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 26 Jun 2009 13:09:10 BST</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/r1QQ2aWVNbo/loom_open_source_edition</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/37/loom_open_source_edition</feedburner:origLink></item>
    <item>
      <title>Secure Trading Rails Plugin</title>
      <description>&lt;p&gt;&lt;img src="http://dl.getdropbox.com/u/221414/blogs/securetrading.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;We use &lt;a href="http://www.securetrading.com/"&gt;Secure Trading&lt;/a&gt; for &lt;a href="http://helicoid.net"&gt;Helicoid&amp;#8217;s&lt;/a&gt; payment processing.  I wrote a payment processor plugin for our apps about two years ago, and it&amp;#8217;s been in production since then.  A few people have asked me to open source the code, so here it is: &lt;a href="http://github.com/alexyoung/securetrading-rails/tree/master"&gt;securetrading-rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d like to integrate it with &lt;a href="http://www.activemerchant.org/"&gt;ActiveMerchant&lt;/a&gt; because I like their &lt;span class="caps"&gt;API&lt;/span&gt;, but I haven&amp;#8217;t had time so far.&lt;/p&gt;


	&lt;p&gt;Out of all the payment processing companies I&amp;#8217;ve dealt with, which is a lot, Secure Trading have been the most reliable with the best customer service.  Their &lt;span class="caps"&gt;XML API&lt;/span&gt; is relatively straightforward too.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/iuGfPYRvbFM" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 15 Apr 2009 12:06:22 BST</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/iuGfPYRvbFM/secure_trading_rails_plugin</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/36/secure_trading_rails_plugin</feedburner:origLink></item>
    <item>
      <title>Loom exception logging for your apps</title>
      <description>&lt;p&gt;We&amp;#8217;ve recently added exception logging to &lt;a href="http://loomapp.com"&gt;Loom&lt;/a&gt;.  There&amp;#8217;s an open source &lt;a href="http://github.com/alexyoung/loom-exceptions-rails-plugin/tree/master"&gt;rails plugin&lt;/a&gt; which you can use to integrate Loom with your Rails apps.  The &lt;span class="caps"&gt;API&lt;/span&gt; is simple so we&amp;#8217;ll probably collect plugins and libraries for other platforms (I&amp;#8217;ll look into iPhone support for iPhone apps).&lt;/p&gt;


	&lt;p&gt;If you haven&amp;#8217;t seen it before, &lt;a href="http://loomapp.com/"&gt;Loom&lt;/a&gt; is a tiny app we built to track bugs in our apps.  It also works well as a customer support tool.  It originally started off as Bugtagger in 2006, and it had some work towards remote exception logging but this was never finished.  Bugtagger was a quick app I built to support &lt;a href="http://tiktrac.com's"&gt;Tiktrac&lt;/a&gt; customer support in the early days.&lt;/p&gt;


	&lt;p&gt;So now remote exception logging is &lt;em&gt;almost&lt;/em&gt; ready for the public.  You can check out the plugin and integrate it with your apps by adding your Loom account details to a controller.  The &lt;span class="caps"&gt;README&lt;/span&gt; on Github has more details.  The code looks like this:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  enable_loom :email =&amp;gt; 'alex@example.com',
              :password =&amp;gt; 'test',
              :url =&amp;gt; 'http://yoursubdomain.loomapp.com',
              :project_id =&amp;gt; 1
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;There&amp;#8217;s a lot of work to do to make this a truly useful tool, but I have a feeling closely integrating bug reports with support requests and logged exceptions could lead to something incredibly useful.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/5kl-aJ64D6w" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 20 Feb 2009 20:14:47 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/5kl-aJ64D6w/loom_exception_logging_for_your_apps</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/35/loom_exception_logging_for_your_apps</feedburner:origLink></item>
    <item>
      <title>Add ShareThis buttons to Tumblr</title>
      <description>&lt;p&gt;&lt;img src="http://dl.getdropbox.com/u/221414/helicoid/insider/sharethis.png" alt="" /&gt; &lt;img src="http://dl.getdropbox.com/u/221414/helicoid/insider/tumblr.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tumblr.com"&gt;Tumblr&lt;/a&gt; can be extended heavily by editing the templates and by adding services through JavaScript.  I just wrote this &lt;a href="http://sharethis.com"&gt;ShareThis&lt;/a&gt; JavaScript that will automatically add ShareThis buttons to your Tumblr posts.  This will:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Add Digg/Delicious/etc buttons in a menu so people can easily Digg your articles&lt;/li&gt;
		&lt;li&gt;Add the correct link and title to pages on your Tumblr index page, as well as on the article pages themselves&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Here&amp;#8217;s the code:&lt;/p&gt;


&lt;script src="http://gist.github.com/64346.js"&gt;&lt;/script&gt;

	&lt;p&gt;To use it follow these steps:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Sign up to &lt;a href="http://sharethis.com"&gt;ShareThis&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Create JavaScript for &amp;#8220;Other Blog&amp;#8221; (&lt;strong&gt;ShareThis JS&lt;/strong&gt;)&lt;/li&gt;
		&lt;li&gt;Login to Tumblr, and go to Customize, Theme&lt;/li&gt;
		&lt;li&gt;Get my JavaScript: &lt;a href="http://gist.github.com/64346"&gt;tumblr_sharethis.js&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Replace the first &lt;strong&gt;script&lt;/strong&gt; line with your ShareThis JavaScript (&lt;strong&gt;ShareThis JS&lt;/strong&gt;)&lt;/li&gt;
		&lt;li&gt;Paste your edited tumblr_sharethis.js into the header of your Tumblr Template&lt;/li&gt;
		&lt;li&gt;Change the template where it says {Block:regular} to include &amp;lt;div class=&amp;#8221;ShareThis&amp;#8221;&amp;gt;&amp;lt;/div&amp;gt; after {Body}&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;ve been quite explicit with these instructions but it&amp;#8217;s actually very easy to do.  Just remember that you need to edit my JavaScript with your ShareThis code, because ShareThis uses your publisher ID for its &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;You can see this JavaScript in use on &lt;a href="http://quiteuseful.co.uk"&gt;QuiteUseful&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/uSQBXCdJ4jk" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 14 Feb 2009 11:51:06 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/uSQBXCdJ4jk/add_sharethis_buttons_to_tumblr</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/34/add_sharethis_buttons_to_tumblr</feedburner:origLink></item>
    <item>
      <title>Awesome Helipad ruby gem</title>
      <description>&lt;p&gt;If you want to write software that works with Helipad, there&amp;#8217;s now an awesome &lt;a href="http://blog.nyerm.com/2009/01/08/helipad-ruby-interface/"&gt;Helipad gem&lt;/a&gt; written by Lonnon Foster.  I&amp;#8217;ve checked over the code, and it&amp;#8217;s clean and well-written.&lt;/p&gt;


	&lt;p&gt;You could build a lot of cool stuff with this.  How about a &lt;a href="http://shoooes.net/"&gt;Shoes&lt;/a&gt; Helipad app?  Or maybe something with RubyCocoa?  Let us know what you build and we&amp;#8217;ll give you mad props (and possibly riches).&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s some example code from Lonnon&amp;#8217;s library:&lt;/p&gt;


&lt;script src="http://gist.github.com/53931.js"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/S-jaRksFUX4" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 28 Jan 2009 12:46:18 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/S-jaRksFUX4/awesome_helipad_ruby_gem</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/33/awesome_helipad_ruby_gem</feedburner:origLink></item>
    <item>
      <title>Unified Single Site Browser (SSB) support</title>
      <description>&lt;p&gt;&lt;img src="http://dl.getdropbox.com/u/221414/blogs/ssbx.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;In &lt;a href="http://insider.helicoid.net/articles/show/30/rapid_fluid_support"&gt;Rapid Fluid support&lt;/a&gt; I talked about adapting web applications for &lt;a href="http://fluidapp.com"&gt;Fluid&lt;/a&gt;.  Since &lt;a href="http://bubbleshq.com"&gt;Bubbles&lt;/a&gt; for Windows has a similar &lt;span class="caps"&gt;API I&lt;/span&gt; decided to write a wrapper around Fluid and Bubbles so you can support both SSBs in your web applications.&lt;/p&gt;


	&lt;p&gt;This wrapper is called &lt;a href="http://github.com/alexyoung/ssbx/tree/master"&gt;ssbx&lt;/a&gt;, and is used like this:&lt;/p&gt;


&lt;pre class="code"&gt;
&lt;code&gt;
if (SSBX.isAvailable()) {
  SSBX.log('hello');
  SSBX.notify({ message: 'This is a message', title: 'Title' });
  SSBX.notifyOnce({ message: 'This is a message', title: 'Title', unique_id: 5});
  SSBX.setDockBadge(5);
  SSBX.log(SSBX.availableDriver);
}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;You can also only run when there&amp;#8217;s a compatible &lt;span class="caps"&gt;SSB&lt;/span&gt; available like this:&lt;/p&gt;


&lt;pre class="code"&gt;
&lt;code&gt;
SSBX.run(function() {
  SSBX.log('hello');
}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;It&amp;#8217;s still evolving, so add it to your watch list on GitHub if you&amp;#8217;d like to stay up to date.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/helicoid_insider/~4/ViKGS5JBhqw" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 14 Jan 2009 16:04:00 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/helicoid_insider/~3/ViKGS5JBhqw/unified_single_site_browser_ssb_support</link>
      <dc:creator>Alex Young</dc:creator>
    <feedburner:origLink>http://insider.helicoid.net/articles/show/32/unified_single_site_browser_ssb_support</feedburner:origLink></item>
  </channel>
</rss>
