Why DHH Would Hate Flash

David Heinemeier Hansson, the creator of the Ruby on Rails programming framework and partner at 37signals, is a very opinionated programmer. Much of his philosophy seems to revolve around making things as simple as possible for programmers by making intelligent assumptions. Need to hook up a “controller” to a “view”? Rails knows where to find your HTML file, and what it will be called. Using CSS? Rails knows where to expect that, too. Using a database? If you set it up the way Rails expects, you can get away with not changing a single line of code to get it working. It’s pretty awesome.

Not only does Rails make lots of assumptions, but the web browser brings its own assumptions to the table as well. If you put the code for an image inside your page, it loads as soon as it can, often indicating its “progress” by loading progressively. Forms just work, with a standard look and feel that meets the expectations of most users. Links just work. The back button works great. And so on.

But all of these assumptions go out the window when you’re working with Flash. Want visitors to know an image is loading? You have to write a bunch of code to do that. Want links to be underlined? You have to bend over backwards to do it. Want your site to be accessible, and friendly to search engines? It takes a lot of work, my friend.

Studios like ours tend to, over time, develop a library of useful code for Flash projects. And that really helps us save time and cut costs. Yet the most frustrating thing about Flash remains, and isn’t going away: it’s a pain to do really simple things. Flash makes very few assumptions, and that makes it very flexible… but that flexibility comes at a high price. Nothing is as easy as it ought to be, and one’s code too often ends up verbose and difficult to maintain. It makes you appreciate programming languages like Ruby that much more.

Raymond Brigleb

Creative Director, dreamer, partner, father, musician, photographer. Has been known to ride the rails. Pulls one heck of a shot.