Gall’s Law

Gall’s Law:

A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.

Solving XRDS’ Host Problem with XRD and host-meta

The ongoing efforts to define standard protocols for common web services have resulted in a wide variety of specifications. If you’re interested in the Internet’s plumbing, as I am, these are truly exciting times. One of the common pieces of functionality needed by all these specifications is discovery.

The most recent, and recommended, format for discovery is XRD (currently at Working Draft 15). XRD supersedes the older XRDS format, which has a convoluted evolution that can be traced in twists and turns through XRI Resolution, Yadis, and XRDS-Simple.

These older specifications define both a data format and a resolution protocol. The resolution protocol suffers a problem, however: it can’t distinguish between a host and a root-level resource. A succinct technical statement is provided in Eran Hammer-Lahav’s host-meta draft:

Read the rest of this entry »

Online Status Indicators with Ajax

Back in October, Tantek Çelik wrote an entry on the Microformats blog, featuring my online identity,, as an example of a beautifully styled hCard.

While I don’t claim to be particularly adept at web design, especially compared to the other two featured individuals (Tim Van Damme and Rogie King), my use of Ajax to display a status indicator was highlighted.

Since that time, I’ve had numerous people inquire as to how I added this functionality to my website. In response, I’m supplying the source code that I use. Download:

Read the rest of this entry »

Internet Identity Workshop 9

Two weeks ago, I attended Internet Identity Workshop 9 at the Computer History Museum in Mountain View. IIW brings together a group of people working on user-centric identity, and gives them a common time and place to collaborate with one another.

In the past, I’ve followed previous IIWs through blogs and mailing lists. I’ve always been impressed with the caliber of people that attend and the quality of work that results. This was the first IIW I attended in person, and my expectations were met.

IIW is organized in unconference style, with the agenda set by the participants. A grid is drawn on the wall, with meeting areas along the X-axis and time sessions along the Y-axis. With each day divided into slots, anyone can propose a topic and schedule it for an available room and time. The format works very well, and allows people to tailor the event to their desired focus, be it business, legal, technical, or cross-discipline.

Read the rest of this entry »

Brett Slatkin on PubSubHubbub

Continuing in the series of entries derived from my notes taken during Mozilla Labs October meetup, this post covers Brett Slatkin’s talk about PubSubHubbub. PubSubHubbub is a simple publish/subscribe protocol for turning Atom and RSS feeds into real-time streams.

The publish/subscribe paradigm is commonly found throughout software engineering. In essence, a component of a system publishes events as it performs its tasks. For example, a video encoder would post an event when it has completed encoding.

Separate components register as subscribers, and receive notice when an event occurs. In our example, a content management system could take the encoded video and publish it to a website. Meanwhile, a separate component could email the director to inform him that his video is available online.

A broker in the middle (a “hub” in PubSubHubbub terminology) is responsible for delivering published events to any interested subscribers. This decoupling creates a flexible architecture, in which separate components are isoloted and can evolve independently.

Read the rest of this entry »