Unicorn vs. Passenger on Heroku

I’ve been hosting my flagship SaaS app on Heroku since 2008. Overall it’s been a stable, if a bit overpriced, platform. Over the past year, however, I’ve been experiencing mysterious performance problems. The app runs fine for several weeks. Then suddenly I begin receiving exception reports about certain methods not … Continue reading

Muut for Octopress

Muut (formerly Moot) is a lightweight, customizable commenting system. Octopress is a static blogging framework built on Jekyll. Mix the two and you have a delicious recipe enabling visitors to comment on static blog posts without having to resort to a database. My Octopress plugin makes this integration super easy. … Continue reading

Spreedly extension for Radiant

I built the original Spreedly extension for Radiant a couple of years ago. It’s a nice little package that makes it really easy to integrate Spreedly’s subscription payment system with your Radiant site. You can choose which pages to require a subscription to view, manage subscribers from the admin backend, … Continue reading

Amending git commits

Git is a wonderful SCM with some very powerful features. But as a programmer, it’s very easy to aquire a rudimentary working knowledge of Git and never learn anything more. For example, how would we fix our repository if we committed the wrong piece of code? What if our commit … Continue reading

Quick ‘n dirty Lindo step for Cucumber

Lindo is great for verifying your Rails tests by opening the HTTP response body in a browser for inspection. It works with most popular testing frameworks including Test::Unit and RSpec. But what about Cucumber? It’s actually pretty easy to build a custom Cucumber step that triggers Lindo from your cukes. … Continue reading

Delete/backspace doesn’t work in nano

If you’ve ever performed a fresh install of Ubuntu, you’ve probably noticed that the delete/backspace key doesn’t work correctly in nano. This is frustrating, but easy enough to fix. This problem also occurs quite frequently for me when logging into a remote server. For example, a default Slicehost instance usually … Continue reading