Application programming interface

Unofficial TransLink API
It was open, but undocumented until now.
Ten Web 2.0 APIs you can really use
I use some of them, but only ever through libraries since I hate parsing XML.

RSS is a Poor-Man's API

Roland Tanglao first pointed this out, but it's something I've been thinking about for the last couple of months: Babak Nivi says that RSS is an API for content:

RSS is like an API for content. RSS gives you access to a web site’s data just like an API gives you access to a web site’s computing power. Most important, RSS gives you access to your data that you have locked up on a web site.RSS is an API for Content

Emphasis in original. Note that he says "like an API" in the text of the article but omits the "like" in the title. The "like" is more appropriate, since RSS normally doesn't give you access to a site's past data, nor should it: it shines best when giving you the most recent content—usually writing, but also photos and video and music—from a site. That's an important distinction from an API, which usually gives programmers access to a site's old data based on a certain set of parameters. You can put parameters in RSS feeds—"give me the most recent photos tagged with 'beautiful'" or "give me the most recent mentions of my full name"—but RSS is generally not as flexible as APIs ("give me all photos between certain times", "give me all mentions of my family name cross-indexed with the tag 'icelandic'".

Generally if you want something that's flexible, you want something that's fairly complex. (It's not called "Really Complicated Syndication", but then again, what's in a name?) That's why RSS is a 'good-enough' solution for non-programmers or beginner-programmers who don't want to learn how to parse XML. I consider myself an intermediate-level—and just barely—and I still refuse to learn how to parse XML in PHP because there are so many libraries that do the work for me. Magpie RSS-PHP has saved so much work for me—in fact, there is no obvious way for me to donate to the project. I decided just now that I've benefited at least enough to give back at least in the form of a monetary amount sufficient to buy a nice meal for the principal developer of the library. My credit card came out and everything! Kellan, you're making it hard for me to give you money!

There's a point to this, and it's already in the title, so it's not like it's hard to figure out, but RSS is a very easy-to-understand data format that, with tools like Magpie for PHP—which I use all over the place—and the Universal Feed Parser and even hosted tools that give you some Javascript so that you can 'syndicate' your stuff from elsewhere on your own site.

I've finally moved on to figuring out APIs, but I'm still using libraries like phpFlickr to do caching to store in an object and arrays what is delivered by XML. Yes, there is dissent, in that RSS isn't really an API, but rather a data model. That's technically correct, but calling RSS a data model isn't very sexy. Dave Winer calls RSS "automated web surfing", and that's one of the things it is. In my just-barely-intermediate-programmer mind, though, it's an API, because web services like Flickr have RSS for everything. (Actually there are publicly available frequently-updated sections of Flickr that are not accessibly via RSS.) RSS is something that most people can use to get to most of the most compelling content of websites, which these days usually means the most recently-updated content. There are more exciting technologies out there, like Atom (data format), Jabber (messaging), Atom API (publishing and editing), but RSS "works today" as some of those around me like to say.

API Roundup
Looking forward to when Audioscrobbler comes out with a real API.