The tabulous gem has continued to grow in popularity ever since I released it in 2011. Since so many people have found it useful, I decided to give it some love. Tabulous 2 is a complete rewrite, featuring a simpler syntax and new behavior. Tabulous is designed to be perfect for quick prototyping, robust enough [...]
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.