Understanding the Git Workflow

If you don’t understand the motivation behind Git’s design, you’re in for a world of hurt. With enough flags you can force Git to act the way you think it should instead of the way it wants to. But that’s like using a screwdriver like a hammer; it gets the job done, but it’s done poorly, takes longer, and damages the screwdriver.

Consider how a common Git workflow falls apart.

Create a branch off Master, do work, and merge it back into Master when you’re done

Most of the time this behaves as you expect because Master changed since you branched. Then one day you merge a feature branch into Master, but Master hasn’t diverged. Instead of creating a merge commit, Git points Master to the latest c...


iPad Predictions

With six days to the iPad, I thought I’d test my punditry with a few predictions.

My Predictions

Year 1

The iPad will be a wild success. The effect will be viral. As they slowly pop up in meetings and classrooms, people will ask, “Can I try it?” They’ll be converted on the spot.

Year 2

We will see iPad clones running Zune OS and Android. By the time they catch up with iPad 1.0, Apple will release a desktop touch OS.

Year 3

Flash will be as rare as “IE Only” sites. If your site has video, it supports the HTML5 Video tag but fall back to Flash for IE. There will be at least one artist authoring tool for HTML5 to fill the void of Fla...


American Healthcare is Broken

My first job out of college didn’t provide insurance. One day my throat hurt. I hoped it would go away on its own, but soon it was so painful I had to go to the emergency room.

I waited four hours, in pain, before seeing a doctor. He took five minutes, diagnosed it as a throat infection, and prescribed a bottle of antibiotics. Between the hospital, doctor, and drugs it cost me $1,100. At the time, I was making less than a fry cook.

Today, my uninsured friend had intense stomach pain. She went to the emergency room. The doctor put her through six hours of tests, including x-rays, blood work, and urine analysis. They diagnosed her with a very bad abdominal infection, and prescribed six medications

The entire ordeal cost her one hundred dollars. She lives i...


Writing Desktop Class Applications in JavaScript

Thanks go to Ross Boucher, founder of 280North, for reading an earlier version of this article and correcting a few errors.

The web has a spectrum of sites that fall between static documents and applications. On the document end is cnn.com, and the application end is Gmail and MobileMe. If I sorted popular sites on a spectrum:

DOCUMENTS
---
CNN.com
Craig's List
Flickr
eBay
Amazon
Digg
Netflix
Twitter
Youtube
Pandora
Google Maps
Basecamp
Gmail
Facebook
MobileMe
---
APPLICATIONS

When a site successfully enters the application space, the bar is raised. Thanks to Gmail, you’d be insane to launch a webmail service that behaves like Hotmail in the 90’s.

A few years ago, we said w...


Staying Above the Ghetto

A few years ago, there were fewer libraries and little documentation. If you marched up to your boss and argued, “Our next project should use Ruby,” he’d say, “What’s Ruby?”

The Ruby job market has exploded. Consultants make a killing. There’s a wealth of books and libraries.

Our success has given us a first-world problem: copycats. I’m not worried. Rails developers are more expensive, difficult to find, and higher maintenance, but Rails is a luxury brand. Yo...


I Will Be Presenting at Aloha on Rails

I will be presenting at the Aloha on Rails conference in October. The title of my talk is “Staying Above the Ghetto.” The incendiary title has an equally incendiary abstract:

We’ve won! We’ve got a huge ecosystem and high demand for Rails developers, and as more people adopt Rails, you’ve commoditized yourself. How do you stay above the curve and continue to be worth top dollar? Topics include: watching Rails become the new PHP, skills developers don’t know but should, and how to follow through on those things you’ve been meaning to learn.

I’m honored to be in the company of such respected presenters as Chad Fowler, but it presents a challenge: more


The State of Testing

When I joined Yellowpages.com, I was naive. When I found bad code, I said, “you should leave things better than you found it.” One day I found a method name that wasn’t following conventions, and as pedantic as it sounds, the right thing to do was rename it. So I did. I updated all references, double checked my change, clicked through to make sure nothing broke, and finally, confident, committed my work.

When that change went live, our advertisers stopped receiving impression data. Yellowpages’ profit is entirely from advertisers. This was disastrous.

The bug: inside a configuration file, which nobody knew about, was a set of hard coded method names monitored by the logger code. Nobody knew about this file because the logging system was written...


I'm Back

I haven’t blogged in years because I knew I couldn’t do it well. In the intervening years I think I’ve found things to say.