Cal Henderson – Taking Flickr to Gama

Cal Henderson is the chief software architect of Flickr and he spoke at the Future of Web Applications conference about Taking Flickr to Gama. Flickr started as a tool for the development of massively multiplayer online game by Ludicorp. As it turned out the game was shelved and photo-sharing tool became Flickr. Ludicrop as a game company was complete failure, but as a photo-sharing platform it was a genius. From Cal’s experience with both failure and success he stated that they started with the things that then already knew and the things that they needed to know. In the case of Ludicorp, the company that developed Flickr, Cal stated that the overlap between what they knew and what they needed to know was just a small bit of HTML.

Cal also advises upstart startups to plan for maintenance. Cal said that no matter how large a site and how many resources available, something will go down. If at all possible provide advance notice of scheduled disturbance. Another suggestion provided by Cal was to try to upgrade, disable, fix a component at a time instead of the whole site. And throughout the process have a clear escalation path. What happens when the system breaks?

Another great piece of advice that Cal gave the audience is to create dashboards to visualize a lot of the data you maintain for your users. According to Cal, if you can’t use the visualizations, at least they are kewl. Speaking of kewl, he also said that APIs are kewl but be careful because a bad API can lead to bad programming which can lead to unintentional abuse. With a bad API you might have developers hitting you site several times a second. “What I hit your site 20 times per second, I that out it was meant to hit it once an hour… Ahh, one decimal place.” But with all of this said, APIs force a clean interface and allow for easy regression testing.

Cal also stressed the importance of having clean URLs. Clean URLs are understandable by humans that they can see where they are and can modify the location bar in the browser to where they want to be! Before you go cleaning up your URLs here is the rule of thumb for URLs: Never Break Them. Cal also recommended something that goes against the practice of many Ruby on Rails applications; he suggested that you do not expose the auto-incremented database ids in your URL.

Cal echoed something that Michael Arrington of TechCrunch said earlier in the conference. Cal said that hiring people is though since good engineers already have jobs. Because his talk was running long, the last five minutes of his talk was just a photostream of advice: Documentation save my life. Release early, release often. Under construction sign has been replaced with a perpetual beta. In the Internet nothing is ever finished, unless it is finished. Make small increments of visible progress. Have developers own the process not the feature; they will feel like the own the application not just a component. No developer is an island. Allow for a one-touch deploy, with rollbacks (ala Capistrano). Automate everything. Be pragmatic and make the system work, if it works then good, if it is also maintainable, even better. And lastly he said, “Ideologically beauty is not a priority.”

Here are some visualization tools recommended by Cal: Cacti, Ganglia, and VisualComplexity.

Technorati Tags: , , , , , , , , , , , , , ,