FriendFeed's room for improvement

FriendFeed has become very popular lately, in part due to Twitter’s unreliability. FriendFeed still can’t replace Twitter, since it can’t be accessed via SMS or IM, although FriendFeed can be more conversational, since you can comment on a particular item rather than just reply to the user as you do on Twitter.

A few days ago, FriendFeed added rooms, a good idea although it still seems a bit rough around the edges. The big limitation of rooms is that there’s no way to see a list of rooms or find a particular room unless you know the name, although Andy Beard found a way to find rooms through Google.

The API seems to be lacking some features needed to fully support rooms. In particular, it isn’t possible to get all rooms a user belongs to. You also can’t get messages from multiple rooms. I’m sure they’ll continue to refine this feature.

I’m trying to decide how to add room support to my FriendFeed iPhone app without making it too cluttered. I’d welcome feedback & suggestions on how the application can be improved.

Feeding & Powncing

My FriendFeed cocoa classes are now fully functional except including media enclosures in posts. I ended up rewriting it to use NSXMLDocument rather than PSFeed, which doesn’t involve any more code and eliminates the dependence on PubSub.

Now that that’s done, I’m digging into the Pownce API. Pownce isn’t much more complemented, but it requires an API key, which was one of the reasons I had avoided it. Fortunately the API key is no big deal. You just fill out a request form and get the key immediately; it doesn’t have to be approved if you’re just creating a key for testing.

Once I finish the Pownce code and make a less ugly demo program, I’ll release the source code.

More FriendFeed Stuff

I’ve implemented posting in my Cocoa FriendFeed class, and I ended up rewriting the fetch methods to use a NSURLConnection rather than PubSub. I’m now using a temporary PSFeed object to parse the received data rather than maintaining PSFeed objects for all requested feeds. I could probably use a NSXMLDocument, but PSFeed seems cleaner.

Here’s how I’m doing it now:

// this method handles data received from the NSURLConnection
- (void) parse: (NSData*) data {
    PSFeed *feed = [[PSFeed alloc] initWithData: data URL: _url];
    for (PSEntry *entry in [feed entries]) {
        [_entries addObject: [[FFItem itemWithEntry: entry] retain]];
    [feed release];

As you can see I’m using Objective C 2.0, so this will only work in Leopard or later.