A friend of mine shared this link with me: 37signals has some lessons for European startups. It made me think about 37signals business and marketing approach to web apps — what works and what doesn’t for the rest of us.
I build web applications and I also freelance. My company is called Helicoid. I’ve found that marketing software without a good chunk of capital is like playing the lottery. There’s a chance that your apps might get noticed, but you need to sustain interest over time. You might have noticed how often certain businesses appear on premium advertising services like The Deck — that’s because they invest a serious amount of money into marketing.
Read More →
Riot is a Ruby unit testing framework. It results in terse and expressive unit tests. It strikes the perfect balance between shoulda and rspec–like test frameworks. It’s also very fast.
Riot isn’t based on Test::Unit (unlike Shoulda). It flattens your tests into contexts with sets of assertions. It has a setup block that runs before the assertions in a context.
Read More →
I wanted to create an API in JavaScript that behaved like a DSL. The aim was to cut down on unnecessary syntax in the client code. I explored a few techniques which I will present below. In my opinion the best technique is the final one, which my friend Annealer came up with. He intimated that I co–created it, but he was just being nice so don’t believe him.
These examples use a fictional DSL object called DSLRunner that is capable of executing the DSL.
Read More →
Glow is the BBC’s JavaScript framework. Things to note:
- The namespacing makes it play nice with other frameworks (and itself)
- It’s split into modules that are mostly self–contained (an exception will alert you to a missing dependency but this is rare)
- Modules include: dom manipulation, language extensions, events, animations
- Also features UI widgets with bundled images, HTML and CSS
- The homepage works with the Konami code
Why does Glow exist?
To read what the developers say, see What is Glow?
Read More →
I’ve put all my gems on gemcutter. They were on GitHub but seeing as GitHub has dropped building gems I thought it’d be useful to move them.
Using gemcutter
The site makes it look easy, because it is:
Read More →
We moved house recently, so my daily development machine was packed up for a few weeks while I worked off a laptop and a 3G card. It was like being on holiday except I still had to work. Anyway, I found a few deployment–related scripts I was working on for my Agile Deployment series of articles (visit the agiledeployment tag for more).
I’ve packaged these scripts as rubygems, so they’ll be easy to install and try out. They’re essentially snippets that I use to maintain sanity when deploying. They might form part of a bigger deployment system in the future.
Read More →
Are you tired of rockstar drama queens declaring war on languages, burning all their bridges and filling up Hacker News with boring articles?
Over the last few years Python and Ruby programmers have had a quiet, seething war. It’s equally as ridiculous as Nintendo vs. Sega was back in school. Conventional wisdom in the gaming community is that these wars start because kids can only afford one of the consoles, so they inevitably take sides.
Read More →
Track Your Happiness is an entertaining experiment. It’s a site that periodically sends out links to surveys. The surveys are designed to gather information on your general well–being and happiness. The surveys work fine on iPhones too, so I was able to fill them out wherever I was.

Read More →
Source code management is closely tied to deployment. Creating a deployment strategy that truly feels agile requires careful management and preparation of the source repository.
Branched Environments
My first approach worked like this:
Read More →
Here’s a huge Rails productivity tip. It’s a shell command that does the following:
- Changes directory to a Rails project
- Opens
$EDITOR (set this as TextMate, MacVim, etc.)
- Opens a tab for
script/console
- Opens a tab for logs
- Names the tabs so switching between them is easier
- Gives your Rails projects tab completion
It doesn’t start script/server because I use Passenger Preferences Pane -- this is another excellent productivity-increasing Rails-oriented secret.
Read More →