So What, Exactly, Is the Purpose of a Rails Controller?

Have you ever hesitated when trying to refactor a controller for simplicity? Sure, you know how to write a controller so that it “works”. You even know how to organize your controllers in a resource-oriented, RESTful way. But when it comes to understanding the purpose of controllers, they’ve always seemed a bit fuzzy. And they’ve […]

Experimenting with the Architecture of Ember.js

What do you get when you cross Ember.js with the Single Responsibility Principle? I recently decided to find out by refactoring the architecture of Ember.js so that each class had only one responsibility. This is the result of my experiment. Three Layers You can think of a software application as having three layers, each having […]

From Ruby to JavaScript

Last Tuesday I spoke at the Boston Ruby Group about strengthening your JavaScript skills. I’ve put the slides online. Enjoy!

Stop Using Single Point Estimates

Estimating how long it will take to develop software is difficult. Fortunately, as an industry we’ve moved away from big-planning-up-front, exhaustive Gantt charts and toward a more agile approach. Unfortunately, we’ve stuck with single point estimates which have some significant disadvantages when compared to range estimates.

Are You a Good Programmer?

If someone asks you to recommend a good programmer, who comes to mind? Do you consider yourself a good programmer? What criteria do you use to judge?

Please Steal My Startup Idea

Every restaurant menu item in the world is searchable by its ingredients.

Sanely Updating Your Gems

If you followed my advice in the previous post, your Gemfile would look something like this:

source :rubygems
 
gem 'rails', '3.0.3'
gem 'devise', '1.1.5'
gem 'redgreen', '1.2.2'
gem 'capybara', '0.4.0'

There’s nothing wrong with this except that if you wanted to keep your gems up to date frequently it would be tedious to manually change all of these versions. Fortunately, we don’t always have to be this exact with the version numbers.

The No-Nonsense Guide to Managing Gem Versions

If the Ruby code you write never leaves your computer, then this article is not for you. But if you find yourself sharing Ruby code with others, or deploying your Ruby code to a web server, then you have a problem. And that problem is gem versions. Sooner or later, the version of a gem on your computer will not match the version of that gem on your production web server, and your cute little disruptive social media web app will fail in a steaming pile of 500 errors.

Crash Course in Web Typography

Thoughtbot recently started up a fantastic design group called Design with Boston. Last Thursday I gave a presentation there called “Crash Course in Web Typography” and I’ve put the slides online.

Tutorial for Adding Tabs to Rails Using Tabulous

This tutorial shows you how to make a simple Rails application from scratch that has both tabs and subtabs.