December 13th, 2007


Facebook is sharing its APIs. That's so very -- special...

The big news in the tech space today is that Facebook is opening up its APIs: other social-networking companies are going to be allowed to copy these same API calls. Everyone is making this sound like it's a good thing. That's because everyone hasn't written anything with the Facebook APIs.

The Facebook APIs are "special" in the sense of "special needs" -- that is, they are very much the hyperactive child running around and knocking things over. They are a fine example of what happens when you let a bunch of smart but *very* inexperienced young programmers take charge of such a project. Some aspects of this particular hell:
  • The APIs are, to say the least, whimsical. You get access to some data -- basically, whatever someone felt like giving you access to. Sometimes, that access is a little surprising: for instance, from a user's record, I can find out what groups they have been *invited* into, but not which ones they actually *belong* to. (For that, I have to fetch the group's record.)

  • The data model is sometimes entertainingly immature. For example, take the new "pages" concept. A "page" is essentially a Facebook profile for a commercial entity, such as a band or a store. (Not what you think of when you use the word "page", I suspect.) But they created a *single, flat data structure* for all commercial entities, rather than making it polymorphic. So you wind up with a gigantic record, that includes ridiculously unrelated fields like "hours of operation" and "publisher" right next to each other.

  • The APIs are *constantly* in flux. Calls are added and deprecated on a weekly basis. In the course of the Spark project (six weeks), we found that we had to make homebrew enhancements to the C# libraries, because the API they were calling by the end of the project had been significantly changed from how it had been when had downloaded them just a little earlier.
I predict a real comedy of errors over the next six months, as other companies try to use these APIs, which are a rapidly-moving target, and which are deeply wedded to Facebook's many idiosyncracies. The only way it stands any real chance of working *well* is if Facebook changes their API development style radically, and I'm not sure they know how to do that...

Now *there* is a good reason to buy a Wii

Check out this video, showing how, with a fairly modest amount of hardware hackery and some clever software, you can take a Wiimote and use it as the basis for a large-scale pseudo-touchscreen. Truly a lust-worthy toy: he shows how to use any surface you can project onto (or any LCD screen) as essentially a Surface-style, multi-touch PC display. Seriously useful stuff, even if the resolution is only so-so...

Voting on the Future

Thanks to TechCrunch for the pointer to this rather interesting new service: Future Scanner is essentially Digg for the future. People put up links to stories talking about the future (anywhere from next year to decades from now), and members vote on the most interesting ones. Probably not the most accurate way to manage predictions, but still likely to be fun for the futurists in the audience...

Marks of Geekery #8293

Okay, it says something about me that, now that I have finally broken down and gotten a Safari subscription (largely on the argument that it doesn't cost anywhere *near* what I pay for my comic books), I am having a real kid-on-Christmas-morning reaction to it. Suddenly having access to essentially every worthwhile book on programming at my fingertips is really quite a lot of fun...