Open Source: JsChat
Posted on Wed 1 Jul, 2009
As well as Loom, I’ve been working on a few other open source projects funded by Helicoid. The biggest so far is JsChat which is an MIT-licensed JSON-based chat system with a nifty web interface:

People have called it an “open source Campfire”, but it’s not really meant to be a Campfire competitor. It’s actually a response to these questions:
- Can we make a chat system like IRC without the legacy and bloated protocol?
- Can it work naturally on the web, desktop and console?
The “Js” in JsChat refers to JSON rather than JavaScript. It’s very easy to build bots and clients. For more information, see the JsChat site and JsChat blog.
Loom: Open Source Edition
Posted on Fri 26 Jun, 2009
Loom 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.
But the future of Loom is open source. I’ve set up a private GitHub repo to prepare it for release. It will be MIT licensed, and easy to set up for use within your company. I’ll continue to develop the server-based “closed” 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’s single sign-on system that Helipad and Deadline use.
If you’re interested in helping prepare Loom for the public, contact us and I’ll add you to the private GitHub repo. The repository will become public once we’ve verified it installs …
Secure Trading Rails Plugin
Posted on Wed 15 Apr, 2009

We use Secure Trading for Helicoid’s payment processing. I wrote a payment processor plugin for our apps about two years ago, and it’s been in production since then. A few people have asked me to open source the code, so here it is: securetrading-rails.
I’d like to integrate it with ActiveMerchant because I like their API, but I haven’t had time so far.
Out of all the payment processing companies I’ve dealt with, which is a lot, Secure Trading have been the most reliable with the best customer service. Their XML API is relatively straightforward too.
Loom exception logging for your apps
Posted on Fri 20 Feb, 2009
We’ve recently added exception logging to Loom. There’s an open source rails plugin which you can use to integrate Loom with your Rails apps. The API is simple so we’ll probably collect plugins and libraries for other platforms (I’ll look into iPhone support for iPhone apps).
If you haven’t seen it before, Loom 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 Tiktrac customer support in the early days.
So now remote exception logging is almost 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 README on Github has more details. T…
Add ShareThis buttons to Tumblr
Posted on Sat 14 Feb, 2009

Tumblr can be extended heavily by editing the templates and by adding services through JavaScript. I just wrote this ShareThis JavaScript that will automatically add ShareThis buttons to your Tumblr posts. This will:
- Add Digg/Delicious/etc buttons in a menu so people can easily Digg your articles
- Add the correct link and title to pages on your Tumblr index page, as well as on the article pages themselves
Here’s the code:
To use it follow these steps:
- Sign up to ShareThis
- Create JavaScript for “Other Blog” (ShareThis JS)
- Login to Tumblr, and go to Customize, Theme
- Get my JavaScript: tumblr_sharethis.js
- Replace the first script line with your ShareThis JavaScript (ShareThis JS)
- Paste your edited tumblr_sharethis.js into the header…
Awesome Helipad ruby gem
Posted on Wed 28 Jan, 2009
If you want to write software that works with Helipad, there’s now an awesome Helipad gem written by Lonnon Foster. I’ve checked over the code, and it’s clean and well-written.
You could build a lot of cool stuff with this. How about a Shoes Helipad app? Or maybe something with RubyCocoa? Let us know what you build and we’ll give you mad props (and possibly riches).
Here’s some example code from Lonnon’s library:
Unified Single Site Browser (SSB) support
Posted on Wed 14 Jan, 2009

In Rapid Fluid support I talked about adapting web applications for Fluid. Since Bubbles for Windows has a similar API I decided to write a wrapper around Fluid and Bubbles so you can support both SSBs in your web applications.
This wrapper is called ssbx, and is used like this:
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);
}
You can also only run when there’s a compatible SSB available like this:
SSBX.run(function() {
SSBX.log(‘hello’);
}
It’s still evolving, so add it to your watch list on GitHub if you’d like to stay up to date.
Tips on sending SMS from web applications
Posted on Sat 3 Jan, 2009
We recently added SMS support to Deadline. Finding a bulk SMS provider that we liked was actually more work than supporting the technical requirements in our software.
There used to be several free web and email to SMS gateways. Certain mobile operators in the US make still make this possible (also Orange in France have a developer programme that provides free SMS for France). However: generally SMS is expensive.
Most bulk SMS providers allow you to buy credits. The cost of sending a message to a phone on in each country (and for each operator) varies. For example, Clickatell charge you 1 credit for the whole of the US, but operators in the UK vary between 1 and 2 credits.
We tested both free and commercial bulk SMS services, with the following criteria:
- Transparent international support
- Clean API
- Affordable pricing
Technically supporting SMS is incredibly easy. Our code basically does the following:
- Tracks the number of messages sent p…
Rapid Fluid support
Posted on Fri 26 Dec, 2008
Fluid is a Site Specific Browser (SSB) for Mac OS. It allows web applications to run in their own window with a dock icon, dock badge and supports Growl notifications. You can support Fluid in your web app without any server-side code changes.
I recently added Fluid support to Deadline. Deadline basically a calendar/reminder system, so it works particularly well with Growl notifications. It was a rewarding development experience: Fluid’s API is clean and delivers excellent results with minimal effort.
Browser support detection
It’s important to check if Fluid is available before trying to call its API.
The easiest way to do this is:
if (!Object.isUndefined(window.fluid)) {
return new FluidAppMode
}
This stops browsers from trying to load Fluid functionality when its not available.
Auto-refresh
Deadline displays a list of events with no automatic browser refresh. When adding Fluid su…
Rails plugin: AssetAutoInclude
Posted on Thu 16 Oct, 2008
AssetAutoInclude is a new Rails plugin written by Gabriel (who helps me out with Helicoid’s projects and works on Rails projects for all kinds of big companies in the US). It’s designed to make JavaScript and CSS includes more efficient, by only including the JavaScript or CSS you require for each controller and action.
The motivation for this project is to:
- Help manage your CSS and JavaScript in a familiar Rails-friendly way
- Only include the required CSS and JavaScript on each page
This is in contrast to the common technique of appending JavaScript or CSS into monolithic files.
Usage
Install using script/plugin:
script/plugin install git://github.com/gabrielg/asset_auto_include.git
By adding the following to a layout:
<%= javascript_auto_include_tags %>
<%= stylesheet_auto_include_tags %>
You’ll get JavaScript and CSS automatically included according to the following scheme:
mydomain.com/users ...
Top 5 uses for Capistrano
Posted on Thu 2 Oct, 2008
This is a technical post about Capistrano, a tool that makes deploying software to servers more manageable.
I use Capistrano to deploy changes to Helicoid’s applications to our servers. However, Capistrano also comes in handy for lots of things beyond deployment. Here’s my top 5 Capistrano tips beyond deployment.
1. Signup statistics
When running advertising campaigns I find it’s useful to see the impact on signup statistics. I used Capistrano to connect to servers and query our databases to gather registration data. It’s fairly easy to output tables and graphs as well.
In Analytics with Capistrano I wrote about this in more detail with some code snippets.
2. Server backups
For a small or medium-sized project, Capistrano can be used to automate off-site backups. I wrote a Capfile to backup one server to another one in another datacentre using rsync a…
Building our centralised authentication system
Posted on Thu 25 Sep, 2008
This article is a technical discussion about our newly developed authentication server. It’s currently powering Helipad and will be rolled out to our other apps over the coming months, providing single sign-on across our products.
Background
We’ve got a lot of things in development at the moment that got caught behind a bottleneck. Several products need cross-app integration, and others are waiting for our centralised billing system to be finished.
Now, to make billing work in this way we need to know who you are. We need to relate your user account between applications. Of course, if you’re going to do that you might has well provide single sign-on. That’s when I decided we should build a centralised authentication system.
At this point it’s worth remembering that I’m still the sole developer of our products. I couldn’t waste time building the most advanced authentication system ever, it had to work and it had to work quickly.
Implementation
The server provides …
Dynamic Rails error help
Posted on Mon 22 Sep, 2008
Here’s a little JavaScript snippet I just wrote for our apps. It parses the standard error messages Rails displays then puts dynamic popup error messages on each of the corresponding form inputs. This allows people to quickly see the error on each field. It currently only displays one error per field, but that could easily be fixed.
You can customise it a bit with by passing a list of options:
initialize: function(objectName, options) {
this.options = {
errorTextSelector: '#errorExplanation ul li',
messageClass: 'popinfo_inner'
}
Be aware that the error popup I’m using uses some existing CSS/layout that our apps already use, so you’ll want to customise showError.
Usage:
Instantiate the ModelErrors class with the name of your model:
new ModelErrors(‘issue’)
Download here: “model_e…
Lighttpd: 422 (Unprocessable Entity) and ActiveResource
Posted on Thu 18 Sep, 2008
Recently we deployed an internal server that works using ActiveResource to share objects between our applications. All my tests ran, and eventually I deployed the service. The tests ran on the server. I took a night off and got loads of wine and pizza.
However, after a few days I noticed errors weren’t being received from the server. I tore my hair out checking everything even down to the versions of the server software and libraries. Then I noticed: when I ran the application with webrick it returned errors and ActiveResource objects correctly displayed error messages.
I then went on a huge lighttpd/fcgi/rails/activeresource search engine hunt and found nothing. After getting a friend in to help, we discovered that it looked like lighttpd wasn’t responding with the full body when responding with 422 (Unprocessable Entity).
We even checked the source, and eventually found:
Guerrilla Software Marketing Strategies
Posted on Fri 12 Sep, 2008
Guerrilla Software Marketing Strategies is an article I wrote for Biznik about our experiences marketing Helicoid’s web applications. It covers (proven!) free techniques for marketing your software.
Software companies have many opportunities to get free or cheap marketing. Whether you sell desktop software or you’re a web agency, you can use your own strengths to get free and honest exposure.
Cutty Sark Cam
Posted on Wed 10 Sep, 2008
Our friend (and long-time Helicoid beta tester/software breaker) Simon Starr recently created the Cutty Sark Cam. The Cutty Sark is a clipper ship built in 1869, and was sadly damaged by a fire in 2007. You can watch the progress of the extensive restoration using Simon’s camera.
Analytics with Capistrano
Posted on Mon 8 Sep, 2008

If you want realtime stats on your web site, why not try using Capistrano to collect data and create graphs and tables? It’s pretty easy to do this, and the beauty is you don’t need to make any modifications to your application.
I’m currently experimenting with marketing Helicoid’s web applications on social networks, so I really wanted a quick way to get information to see the results. Waiting for services like Google Analytics isn’t so bad, but there’s some information locked up inside your application that they can’t get at.
1. Set up a basic Capistrano task
Create a new Capfile and set up your server and SSH details:
role :app, ‘yourserver.com’
set :user, ‘alex’
set :port, 8321
task :stats, :roles => :app do
end
2. Write some code to extract data
This Capistrano task is going to login to your server and collect data so you can analyse it locally. My example is for downloading user signup counts. I’m just g…
Build your own search engine
Posted on Tue 19 Aug, 2008
I recently used Yahoo!’s BOSS search API to build search.helicoid.net—a tiny Rails app that searches our public-facing web sites. It’s tied into our 404 pages which makes it easy for people to find things when they’re lost.
So how would you like to build your own search engine? The BOSS API searches Yahoo!’s index without any restrictions. This means you can freely search Yahoo!’s index with minimal hassle. The BOSS API is also incredibly simple to use.
To get started, you need to sign up and get a BOSS ID. Visit the BOSS page, then click “Build an Application.” I selected Browser Based Authentication in the sign-up form.
Once you’ve got your appid using the API is easy. Simply send requests to the service like this:
>Incredible kinetic sculpture
Posted on Tue 8 Jul, 2008
This amazing kinetic sculpture was created by ART+COM for BMW in Munich. It’s mechanical and uses metal balls to create shapes in 3D. Here’s a youtube video of it in action.
Korg DS-10: A synth for your DS
Posted on Sun 22 Jun, 2008
The Korg DS-10 is an incredible piece of software: it’s a sequencer and synth based on the Korg MS-10, allowing you to make music on your Nintendo DS.
There’s excellent coverage of it in this week’s 1up show, including interviews and jam sessions with the developers.



