What’s Wrong with “HTML5″
In the past year or so, the term “HTML5″ has increasingly been picked up by the tech press as the successor to “DHTML”, “Web 2.0″ or “Ajax”. When used by the tech press, it is becoming a generic term for “the next generation of web technology”, except that the term “HTML5″ is less precise than...
Bundler: As Simple as What You Did Before
One thing we hear a lot by people who start to use bundler is that the workflow is more complicated than it used to be when they first start. Here’s one (anonymized) example: “Trying out Bundler to package my gems. Still of the opinion its over-complicating a relatively simple concept, I just want to install...
Here’s to the Next 3 Years
I officially joined Engine Yard on January 1, 2008, about a week before we announced our Series A funding, becoming its twenty-second employee. I was Engine Yard’s very first “Engineering” hire, and I would spend the next year working on Ezra’s Merb project, finally releasing Merb 1.0 at MerbCamp that October. When I joined Engine...
Announcing Handlebars.js
For a number of years, I’ve been about as active in client-side development (through jQuery) as I have been active in server-side development (through Merb and then Rails). Recently, I’ve released a couple of libraries (jQuery Offline and Rack::Offline), designed to make it easier to build applications that can withstand both flaky connections and a...
Automatic Flushing: The Rails 3.1 Plan
preamble: this post explains, in some detail, how we will implement a nice performance boost for Rails developers. Understanding the details might help gain the full benefits of the optimization, but you will gain some benefits even if you have no idea how it works. As you’ve probably seen, DHH announced that we’d be looking...
A Tale of Abort Traps (or Always Question Your Assumptions)
For a few months now, the bundler team has been getting intermittent reports of segfaults in C extensions that happen when using bundler with rvm. A cursory investigation revealed that the issue was that the C extensions were compiled for the wrong version of Ruby. For instance, we would get reports of segfaults in nokogiri...
Using >= Considered Harmful (or, What’s Wrong With >=)
TL;DR Use ~> instead. Having spent far, far too much time with Rubygems dependencies, and the problems that arise with unusual combinations, I am ready to come right out and say it: you basically never, ever want to use a >= dependency in your gems. When you specify a dependency for your gem, it should...
Threads (in Ruby): Enough Already
For a while now, the Ruby community has become enamored in the latest new hotness, evented programming and Node.js. It’s gone so far that I’ve heard a number of prominent Rubyists saying that JavaScript and Node.js are the only sane way to handle a number of concurrent users. I should start by saying that I...
Everyone Who Tried to Convince Me to use Vim was Wrong
A couple weeks ago, I took the plunge and switched to vim (MacVIM, to be precise). It wasn’t the first time I tried to make the switch, and I had pretty much written it off entirely. Why? Because the past few times I tried switching to vim, I took the advice of a master vim...
What’s New in Bundler 1.0.0.rc.1
Taking into consideration the huge amount of feedback we received during the Bundler 0.9 series, we streamlined Bundler 1.0 significantly, and made it fit user expectations better. Whether you have used bundler before or not, the easiest way to get up to speed is to read the following notes and go to http://gembundler.com/v1.0 for more...
Encodings, Unabridged
I wrote somewhat extensively about the problem of encodings in Ruby 1.9 in general last week. For those who didn’t read that post, let me start with a quick refresher. What’s an Encoding? An encoding specifies how to take a list of characters (such as “hello”) and persist them onto disk as a sequence of...
My Common Git Workflow
A recent post that was highly ranked on Hacker News complained about common git workflows causing him serious pain. While I won’t get into the merit of his user experience complaints, I do want to talk about his specific use-case and how I personally work with it in git. Best I can tell, Mike Taylor...

