Platforms and the rule of three

Back in my old gig, I wrote a feature-length story entitled “Top 20 IT Mistakes” and wrote a followup blog post in which I referenced the excellent Facts and Fallacies of Software Engineering by Robert Glass, writing:

The book contains 55 facts ranging from the people-specific (“Fact 1: The most important factor in software work is the quality of the programmers”) to more specific rules of thumb about the process (“Fact 21: For every 25 percent in problem complexity, there is a 100 percent increase in solution complexity”). There are also 10 fallacies (e.g. “Fallacy 3: Programming can and should be egoless”). Both the facts and the fallacies are organized in a uniquely readable way — each one is a self-contained unit (cross-referencing the others when appropriate) that is divided into “discussion” (an outline of the collected wisdom behind the fact or fallacy), “controversy” (a description of why it is controversial), “sources” (a discussion of the source material available on the subject), and “references” (a traditional bibliography for that particular fact or fallacy).

These days, I’m thinking more about platforms than avoiding IT mistakes, and Glass’ book has helped clarify my thinking once again. Recently, I was thinking about what made a technology a “platform” technology (particularly in the context of the Web 2.0 “web as platform” concept) and I had decided that the platform test was simple: if a piece of technology served two or more separate systems, then it’s a platform, so platform technologies should be designed to do that. With that in mind, I looked into Glass’ book again and this time, Fact 18 suggested that my minimum was one short:

There are two “rules of three” in reuse: (a) It is three times as difficult to build reusable components as single use components, and (b) a reusable component should be tried out in three different applications before it will be sufficiently general to accept into a reuse library.

This sort of language seems very particular to writing code libraries/modules for use inside an organization, but I think the thinking clearly extends to web services that are intended to be “platforms.” Glass goes on to say that the skill set and approach required in building reusable code (and therefore “platform” code in my mind) is unique:

It is no wonder that knowledgeable experts say it takes three times as long. It is also worth pointing out that, although most people are capable of thinking about problems in a generalized way, it still requires a different mindset from simply solving the problem at hand. Many advocate the use of particularly skilled, expert generalizers.

The second rule of thumb is about being sure that your reusable component really is generalized. It is not enough to show that it solves your problems at hand. It must solve some related problems, problems that may not have been so clearly in mind when the component was being developed. Once again, the number of three — try your component out in three settings — is arbitrary. My guess is that it represents a minimum constraint. That is, I would recommend trying your generalized component in at least three different applications before concluding that it truly is generalized.

Those three applications don’t have to be huge, of course, and not all companies even have three products, but the “rule of three” seems reasonable when you’re thinking about building platforms. Maybe you won’t build those three apps to leverage your platform immediately, but you better be thinking about what those three apps might be.

Syndicate Conference next week

The Syndicate conference is next week in San Francisco, and I think it’s well worth checking out. Last year, the conference was an interesting mix of traditional media types who wanted to know what all the RSS/blogs/syndication fuss was about along with the folks who were creating the new world. This year, Doc Searls is the conference chairperson, so you know it will be both thoughtful and entertaining. Here’s the schedule and how to register.

I’ll be there both days, so if you want to meet up, drop me an e-mail (chadd -at- yahoo-inc -dot- com).

(Disclosure: I am on the Syndicate advisory board, though not nearly as active as last year when I moderated two panels and wrote a bunch of the session descriptions.)

We're hiring: join one of the most innovative teams at Yahoo!

If you thought the Event Browser was kick-ass like I did, here’s your chance to actually work with the team that built it. Ravi Dronamraju is adding to Team Edison (a team he put together) and just sent this job description over:

Do you have what it takes to build, prototype, innovate? Are you the über-geek who can think in multiple programming languages? Do you write more lines of code than email? Well, come join Team Edison at Yahoo! As part of the Search and Marketplace organization you will get a chance to put your brain through daily exercise of creativity and innovation, laying the foundation for Web 2.0 and beyond.

Ideally you thrive in a team-first environment, enjoy problem-solving and learning new technologies. You should have MSCS or equivalent with 5+ years of experience in building Web applications. At the core, you can express yourself competently in any of the following: Perl, PHP, C/C++, JavaScript and CSS. Solid understanding of technologies like HTTP, Apache, RDBMS/MySQL, Unix is a plus.

I work very closely with this team, so if you’re interested in this role, send me an e-mail with your resume (and tell me what you like to do and why you want to join the team). Please put “Team Edison position” in the subject line. My Yahoo! e-mail is chadd -AT- yahoo-inc -DOT- com. (No recruiters or agencies, please.)

Job descriptions rarely do justice to a position, so here’s my informal scoop. . . this team is heavily-focused on API development, both internal and external, so the work itself really couldn’t be more fun. The team is also small and nimble (very much on purpose) — a great group to join if you want to have an immediate impact (just ask Ed, who started working on the Event Browser on his second day, I think). And Yahoo! really is a great place to work — I’ve been here barely over three months now and it’s a blast. Come join the fun.

First impressions of Measure Map from Adaptive Path

I got my invitation a few days ago to try out the alpha release of Measure Map, the blog stats service from the folks over at Adapative Path. After a few days of using it, I’m generally impressed. The quickest (but also crudest) way I can think of to describe the service is WebSideStory’s Hitbox or Omniture Site Catalyst for bloggers, since (like Measure Map) both of these services leverage the placement of Javascript code in a site’s pages to deliver reporting, freeing sites from the laborious crunching of log files, filtering out spider/robot traffic, and the many other annoyances of old-school methods of traffic reporting on the web. That being said, even if WebSideStory or Omniture decided to create a blogger offering, you can bet it wouldn’t be as simple, elegant, and useful as Measure Map. Even though it’s alpha, it looks like they’re building the right half of a product, but not a half-assed product. The tag line is “get to know your blog,” and that’s what Measure Maps is already helping me do.

Setup was easy for WordPress. I have no problem editing my templates based on rudimentary written instructions, but I still appreciated the clear visual guidance the Adaptive Path folks give in their instructions. Here’s an example:

Measure Map template editing

Almost immediately, the numbers started rolling in, and I found myself checking my Measure Map stats as often as I had grown accustomed to checking my Feedburner stats (incidentally, I consider these two services complementary at this point, since Measure Map measures non-RSS traffic, and Feedburner measures RSS traffic). Here’s a sample screen, the “Links” screen which tells me inbound links, outbound links (how else are you going to get that info without a bunch of ugly redirects and log crunching?), and search terms used to get to your site.

Measure Map links screen

The outbound links tracking is cool because it includes everything on your blog page, so you can see exactly which photos people are clicking on your Flickr badge, for example. The search terms section lets you know what words people are using to find you on search engines. Like everything else in Measure Map, the information is updated fairly instantly as activity occurs on your site.

Other stats I quickly learned:

  • the browser breakdown for my blog (58% Firefox, 26% IE, 12% Safari, 4% “other”)
  • the geographical distribution of visitors (73% U.S., 5% UK, 5% Canada, 5% Australia, 4% India, the rest spread among 12 other countries)
  • peak usage times (7-9am, 1pm, 5pm)
  • My top 10 posts (#1 is “Super-mashup with Yahoo! APIs: event browser“)

Bottom line: though only in alpha, Measure Map is already quite useful to me. Only one significant glaring hole that I noticed in the materials: no mention of an API on the Measure Map alpha status page under “feature set”: We’ve got a few great features coming soon, including stats for your RSS feed, tracking interesting events in your stats, and deeper tools for understanding search engine traffic. This might very well be on the way, but it would be nice to see it explicitly mentioned. After all, the service itself is being developed on top of some sort of API — why not start surfacing it early? It would be great to be able to do some remixing with the Feedburner API, for example.

Update (for those of you who don’t keep up with the comments): Jeff Veen from Adaptive Path writes: “We’re already working with Feedburner, with the intent of hooking your accounts together and merging the stats. Also, our first peek at a public API will be coming very soon now.”

Flock and WebOS

Now that I have Flock, I decided to test it out a little.  My first task, of course, was trying to post to my blog.  That’s what you’re seeing here (please forgive some of the wonky formatting).  I was hoping that the blog tool would allow for offline posting a la ecto, but that doesn’t appear to work.  When I tried to save a draft with no network connection (I turned off my wireless card and pulled my network cable for fun), the app went into a tailspin.  This inability to save locally in what is essentially an extension of the Firefox browser reminded me of Jason Kottke’s post about the WebOS way back in August.

Flock is perhaps the quintessential Web 2.0 company (technology and hype included), but after ten minutes with the application and some reflection on Kottke’s WebOS post, I think Flock could be more than simply “a Web 2.0 on-ramp” (as Kris Krug of Bryght calls it in this Wired story).  I think Flock might be thinking WebOS. From Kottke’s WebOS post:

So this is my best guess as to how an “operating system” based on the Web (which I will refer to as “WebOS”) will work. There are three main parts to the system:

  • The Web browser (along with other browser-ish applications like Konfabulator) becomes the primary application interface through which the user views content, performs services, and manages data on their
    local machine and on the Web, often without even knowing the difference. Something like Firefox, Safari, or IE…ideally browser agnostic.
  • Web applications of the sort we’re all familiar with: Gmail, Flickr, and Bloglines, as well as other applications that are making the Web an ever richer environment for getting stuff done. (And ideally
    all Ajaxed up to provide an experience closer to that of traditional desktop apps.)
  • A local Web server to handle the data delivery and content display from the local machine to the browser. This local server will likely be highly optimized for its task, but would be capable of running locally installed Web applications (e.g. a local copy of Gmail and all its associated data).

That’s it. Aside from the browser and the Web server, applications will be written for the WebOS and won’t be specific to Windows, OS X, or Linux. This is also completely feasible, I think, for organizations like Google, Yahoo, Apple, Microsoft, or the Mozilla Foundation to make happen (more on this below).

“Something like Firefox, Safari, or IE.”  “Web applications of the sort we’re all familiar with.”  “Won’t be specific to Windows, OS X, or Linux.” Pretty close to what Flock encapsulates.  The only area where Flock completely misses is the third point (basically running locally without loss of features), which is understandable given the constraints of current browser technology and the fact that Flock is a “developer preview.” I would still love to be able to save a draft blog post locally using Flock while disconnected on a plane, though.

Going back in the time machine to Kottke’s oh-so-long-ago post in August, he asks, “So who’s going to build these WebOS applications? Hopefully anyone with XHTML/JavaScript/CSS skills, but that depends on how open the platform is. And that depends on whose platform it is. Right now, there are five organizations who are or could be moving in this direction.”

Aside from the usual suspects (including my employer, where we are definitely doing lots of cool things as the post suggests), Kottke lists the Mozilla Foundation:

This is the most unlikely option, but also the most interesting one. If Mozilla could leverage the rapidly increasing user base of Firefox and start bundling a small Web server with it, then you’ve got the beginnings of a WebOS that’s open source and for which anyone, including Microsoft, Google, Yahoo, and anyone with JavaScript chops, could write applications. To market it, they could refer to the whole shebang as a new kind of Web browser, something that sets it apart from IE, a true “next generation” browser capable of running applications no matter where you are or what computer (or portable device) you’re using.

Flock isn’t the Mozilla Foundation and they are “completely independent,” but reading Flock CEO’s Bart Decrem post about how Flock will create “sustainable value” (the answer to all the what is your business model? questions) gives me pause. If you replace Mozilla with Flock in the Kottke quote above you might be tempted to think that Flock is working towards something a lot bigger than a cute Web 2.0 browser. Besides, who needs another browser anyway?

And who needed another search engine?

Web 0.1 head-to-head: 37Signals' Backpackit vs. Gmail in Lynx

Last night, I decided to not-so-carefully run a couple of Web 2.0 apps through the old-school Web 0.1 Lynx browser to see which would work best, or work at all. It occurred to me that in the Web 2.0 world, Lynx might be thrown onto the trash heap of history, made useless by whiz-bang AJAX development. That would be a shame (though the life of Lynx could very well be extended by folks using the lynx -source [URL] command to dump the source from cool AJAX apps)

All this aside, I really just wanted to see what would happen when a Web 2.0 AJAX app got run through the Lynx HTML meat grinder — kind of the same impulse that led me to put various things in the microwave in my youth. For this test, I chose Gmail and 37Signals’ Backpackit.

For these tests, I used this version of Lynx:

Lynx Version 2.8.5rel.1 (04 Feb 2004)
libwww-FM 2.14, SSL-MM 1.4.1, GNUTLS 1.0.16

Let the games begin! First, the Gmail login screen was a bit of a mess under Lynx (username label off to the right, login on the second screen), but ultimately useable.

After login, I jumped through a series of redirects before ending up on this page:

And the experience ended there — no more redirects, just that raw screen. Game over, Google. Yes, I could cut and paste the long URL from the screen into a browser, but then I wouldn’t be testing Lynx any more, would I? Gmail is definitely NOT Lynx-certified. Stay away, Lynx fans.

Next, 37Signals’ Backpackit. The login screen in Lynx is very nice and simple with elegant alignment, all on one page so I didn’t have to resort to the dreaded space bar to advance to the next page:

I navigated a bit and decided to add a note using Lynx.

It worked, as you can see when I checked in Firefox:

The winner by a landslide: 37Signals’ Backpackit. Nice job. Through adequate support of Lynx, Jason and team are clearly practicing the “less is more” that they preach.

Update: In my cheekiness about Lynx, I didn’t think about one aspect that Eugene Chan has pointed out in the comments: “As Lynx goes so does screenreaders for the blind. So it does mean that web designers who are not thinking about web 0.1 may leave an important segment of users behind.” Very good point.

Web 2.0 and Punk Rock

While keeping an eye on the discussion about what “Web 2.0” means over the past few weeks/months (especially Tim O’Reilly’s vision made explicit recently), I had been thinking that the basic participatory DIY ethic embodied in what some people are calling “Web 2.0” had a punk rock feel to it at its core. Without a doubt, our industry is at a tipping point of some kind, and the rhetorical battles over what Web 2.0 is are getting into issues of authenticity.

It’s hard to read Jason Fried’s latest post (“The top 10 things that aren’t Web 2.0“) and the resulting comments and not think that the “Web 2.0” discussion viewed in a certain way is a different take on the perpetual “what does it mean to be truly ‘punk’?” debates that have kept independent record store employees and only-three-chords guitarists occupied for over twenty-five years now. Like those debates, the discussion about Web 2.0 is personal and (if you look at the language in the comments on Jason’s post) political. danah’s words were certainly prescient when she wrote: “The reality is that when people talk about Web2.0, they’re talking about a political affiliation with The Next Cool Thing, even if no one has a clue what it is yet.”

This punk rock angle had been bubbling in my thoughts for a few weeks now, so today I dusted off my favorite punk rock history book (England’s Dreaming: Anarchy, Sex Pistols, Punk Rock, and Beyond, by Jon Savage), looking for some historical perspective. I found a passage about what Savage saw as a tipping point of punk rock, when talk show host Bill Grundy interviewed the Sex Pistols on national television. The Sex Pistols dutifully played the part of the fearsome punks that the general public was afraid of and that brand of “punk rock” became a caricature of itself ever more quickly, feeding a new breed of punk rockers who bought the right clothes but cared little about the original philosophy behind the music. From the book:

A lot of people who had been on the scene disappeared as soon as Grundy happened,” says Jonh Ingham. “It became stupid very quickly and no one with any snazz wanted to be associated with something like that. They were into it for the clothes and the elitism and as soon as it became Rock’n’Roll they didn’t want to know”. . . .

“Bill Grundy was the end of it for me really,” says Marco Pirroni, “from something artistic and almost intellectual in weird clothes, suddenly there were these fools with dog collars on and ‘punk’ written on their shirts in biro. It had been like the Warhol scene, filmmakers and poets and artists and God knows what. Then there was Sham 69: Jimmy Pursey leaping about like an idiot, and his band with long hair, flares, and Hawaiian shirts.”

Yet there was another side to this process of definition. All pop movements have started with elites — and none, to that date, more self-consciously than Punk — but there is always a point where the elite loses control. That point is reached when the mass market and mass media take over, a necessary process if that movement is to become pop. Within this transaction, simplicity is inevitably imposed on complex phenomena, but there is also a fresh burst of energy released with unpredictable, liberating results.

Punk was a living exemplar of the subcultural process: the dispossessed gain cultural access, but at a price. Pop music is the site of this sale and the record companies are the auctioneers. Definition is a vital part of this, not only pinning down Punk, but opening the floodgates of commerce. As the trade magazine Music Week stated: Punk “might be THE NEXT BIG THING so long awaited.” For the next few months, any male Rock group with the requisite stance had an interested hearing from the major record companies.

Is Scoble’s begging for the Microsoft checkbook the “Web 2.0” equivalent of saying, “hey, I’m about to sign the next Nirvana“? I guess we’ll see.

Jason’s “what is not Web 2.0” list is useful as a warning to those who might think throwing AJAX and RSS on their sites is a shortcut claim to Web 2.0 cred, much like the preppy suburban kid who buys a studded collar from the Hot Topic at the mall on a Saturday and comes to school as a self-certified “punk” on Monday. At the same time, you can’t help where you were born, and maybe you’ve got to start somewhere.

Microsoft,, and Web 2.0

David Berlind wrote recently about Marc Benioff’s (CEO of response to Steve Ballmer’s recent proclamation that Microsoft is going to give “a run for its money.” In in an e-mail to the press, Marc wrote:

Microsoft’s failed enterprise software strategy has let the industry down. We have competed against them in the CRM market since 2002, and they have failed to deliver a competitive product. They just cancelled version two of that legacy application and skipped ahead to three. In the meantime, we are on the 18th generation of our service in just six years. Customers are tired of waiting for Microsoft to innovate.

What Marc didn’t mention in his e-mail to the press is the fact that already has a serious leg up on Microsoft in the web services arena with its sforce web services platform (something I wrote glowingly about at InfoWorld almost three years ago now). My experience as a customer of at InfoWorld was largely what really made me “get it” when it comes to web services. Anyone thinking about “Web 2.0” and “web as platform” in the non-enterprise context owes a debt to the the smart folks over at They were “Web 2.0” before it was cool. I don’t know if they get enough credit for their vision, probably because it’s so ingrained in the way they think and operate that they don’t remember how cool it really is. (Hey Marc, it is really cool).

Salesforce was a Web 2.0 pioneer, but they certainly aren’t sitting still now. Check out their AJAX toolkit (released in late July) and the ultra-cool Spanning Salesforce, a third-party app developed by Charlie Wood’s Spanning Partners which uses the sforce API as the platform to deliver sales leads via RSS. How cool is that?

Site to watch:

I just subscribed to the blog, described by the site’s creator (John Musser) here:

So what’s the point of this site? Although still euphemistically ‘in beta’, the goal is to create a home page for Web 2.0 developers. Content to include news, reviews, comparisons, and examples. Formal APIs, unofficial APIs, and accidental APIs are all fair game. Anything ‘programmatic’ that’s publicly accessible online from sources including Amazon, Google, eBay, Microsoft,, Feedster, UPS, EVDB, WeatherBug, indeed, Blogger and others. [Hey John, don’t forget Yahoo! Actually, John does list Yahoo’s APIs here. – CD]

Why? Because going From Web Page to Web Platform is a big deal. It’s immature and a bit ill-defined but full of potential. To particpate as developers requires understanding, and to do that means to know what the parts are and how they work.

Another way to look at this site is from its genesis: frustration. I wanted to get the ‘big picture’ view of web apis. So I picked-up what books I could find (like Iverson). Pretty good start. But not enough. Then where? Everywhere. Despite what seems like an infinite number of social/web2.0 blogs, sites and businesses, I still couldn’t find the ‘go-to’ place I wanted.

Although it’s in the early stages, the site looks promising and I agree with John that the web-as-platform is a HUGE deal (why else would I leave my CTO gig to take a job at Yahoo! with the word “platform” in the title?) I actually met John when I was at InfoWorld since he used to be involved in the NY CTO Club that I wrote about and visited regularly. I’ll definitely be keeping an eye on his site.