Dr Strangepost, or How I Learned to Accept the Facebook API and Love Social Media

I’ve been spending a good part of the last week or so building social media tools for my employer. We’ve come to the conclusion that services like Facebook provide some of the most immediate and detailed sources of information on important events in the Pacific. I’ll go into this in more detail in an upcoming discussion paper, but for the moment, suffice it to say that Facebook’s ubiquity and its accessibility via mobile devices makes it one of the most compelling means of transmitting information quickly and easily to large numbers of people.

We track a number of public groups, and they’ve provided us with invaluable information. Probably the most vivid example of this is PNG’s Sharp Talk group, which has more closely tracked a number of events in PNG politics than even the most resourceful of the traditional media.

Our work is predicated on the idea that dialogue leads to better understanding. So, naturally, we want to understand how people think and feel about events in the world around them. We also want to be able to record these voices for posterity, and to use the most compelling amongst them to educate others.

So with that in mind, I set out to use Facebook’s programming interfaces to allow staff to flag posts and comments, and to track and store important threads in a local database. This way, we could have a record of commentary as it happened, and we’d be able to perform key word searches, statistical analysis and a few other kinds of research that would (we hope) lead to a better understanding of current issues and how they were perceived.

I struggled. I struggled a lot. It’s kind of an unfamiliar feeling, after 20 or so years in the data-mangling game. There were a number of all-too-familiar issues: Documented approaches that were no longer supported, new approaches that required undocumented steps. These are, for better or for worse, the stock in trade of a lot of web services. Things move quickly, so stability is more of an aspirational goal than anything else.

But there were a few things that, taken together, brought me to a complete stop.

First, it’s nearly impossible to obtain access to the site without an interactive login. I get why Facebook do this – they want to make it hard for spyware and other malicious programs to fake the approval process. And that’s okay, as far as it goes, but it assumes that apps using their programming interfaces are interactive – that is, that someone is sitting in front of the thing, driving it. But that’s precisely the opposite of what I’m trying to do. I want our staff to be able to flag something as interesting and NOT have to sit around reading the bloody page all day long.

Second, the thing just doesn’t work half the time. About 50% of the queries I post to Facebook’s graph service either time out or return an empty data set. Still, with a bit of persistence, I suppose I could manage. Just program the software to retry the query until it gets useful results. This has a few nasty implications – for example: how will I know when I’m supposed to get an empty result set? But I’ve dealt with worse in my time.

The third problem is much bigger. Facebook’s results work the same way Facebook own interface works. In other words, rather than getting the complete set of comments on a given post, they give you the most recent few, and a ‘next’ link to get a few more. Again, they’re assuming that you’re using the data interactively.

I spent a while pondering how to make my proposed service work, puzzling out scenarios and trying to find computer logic that would cope with the shortcomings. And then I had my eureka moment. Facebook doesn’t want people to write apps like mine.

The more I dug into other people’s coding projects and programming interfaces to Facebook’s service, the more I came to realise that it’s actually possible to reliably push things onto Facebook, but it’s quite hard to get them back out. Posting photos, links, likes and comments is pretty straightforward, but trying to make sense of them once they’re on the site is another task entirely. If Facebook were to make it easy to perform automated analysis on their content, they’d be undermining the stickiness of their own service. By allowing it to become commoditised, they’d face losing their identity. In short, they’d become a platform, not a brand.

For Facebook, the idea of someone seeing Facebook data wrapped in someone else’s interface is worst thing in the world.

This made me very sad.

Easily interchangeable data is the very essence of wealth in the knowledge economy. It’s taken me a while to realise it, but some people don’t understand that sharing that wealth creates more for everyone. As far as information is concerned, apparently, most of us have yet to see the merits of free trade. We’re still back in a world of monopolies, hoarding and guilds.

But that’s okay. This will change. The Internet is a porous medium. Generally speaking, information will leak out, and the commodification of social data will eventually happen.

In the mean time, I’ll get to work on building a different set of tools to make sure that, in our little patch of the world at least, the leaking happens sooner than later.