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.

FriendFeed API

I’ve been playing with the FriendFeed API in Objective C, although I don’t have anything ready for public consumption yet.

Since the fetch methods basically work like RSS feeds, they can be handled easily using PubSub. Most of the code I had to write was to decode the entries returned into something more useful. The methods which require authentication turned out to be no big deal; it can be handled using PSFeed’s login property and the setPassword: method. My next step will be to tackle the publish methods, which can be handled using NSURLConnection.

To make time to work on this, I haven’t been reading my RSS feeds regularly (or checking Twitter). Setting NetNewsWire to manual refresh only is a huge productivity booster. I also haven’t been blogging regularly, as my readers probably noticed.

Google App Engine

I signed up for Google’s new App Engine beta and I’ve already started looking at the APIs. It looks very clean and well-designed. I’m not too familiar with Python, but it looks like it’s fairly simple to pick up. The language itself is easy and has some nice Lisp-like features that I really like. The hard part is getting familiar with the huge library of extension modules.

I’m thinking of possibly rewriting my2unz.com with App Engine, since Drupal can be really ugly when trying to integrate several third party modules with my own code.

Revisiting Mii Transfer

I haven’t had a chance to do much work on mii transfer for a long time, but now that DarwiinRemote 0.7 was released, I’m taking a look at the latest code to incorporate into Mii Transfer.

My goal in this version is to avoid modifying the WiiRemote framework, but rather to extend the classes in it through a Mii category. I see that the latest version of the framework incorporated my Mii reading code, but not the code for writing Miis.

I’m also working on a MiiView class, which will display the Mii, and of course be able to export it in various graphics formats supported by NSImage. The actual code is pretty simple but involves lots of grunt work, creating lots of graphic resources for every variation of each part, which I then composite into the image. Right now I’m still bogged down in creating those pieces.

Drupal 6 disappointment

I’m starting to get pretty disgusted with Drupal 6. I took another look at it today and the module compatibility situation is still dismal. Common modules like CCK and Views still aren’t fully compatible with Drupal 6. For MacMegasite, I would lose the buddy lists, user points, and custom home pages. The situation is even worse for WorldBeatPlanet and my2unz, where I depend on media support and custom node types.

I realize most of the Drupal modules aren’t developed by the core team, but they should make an effort to work with module contributors to ensure compatibility and officially support some of the more critical modules such as CCK & Views.

Filing bug reports for iPhone SDK

Rogue Amoeba has filed bug reports for many of the iPhone SDK’s limitations, including:

  • Allow applications to be installed at the user’s discretion, not Apple’s
  • Allow applications to run in background on iPhone
  • A MediaPicker API for accessing the iPod music files is needed
  • Add option to allow iPhone applications to access entire filesystem
  • Allow iPhone applications to access the host computer when docking
  • Allow iPhone applications to access the docking port

I filed one myself requesting the ability to run in the background, which is a critical requirement for the product I plan to develop. Since it spends most of its time sleeping until it gets a timer event, it uses no CPU time at all until it wakes up every few hours to check in with a server and then goes back to sleep (Apple is concerned that background apps would waste CPU time and shorten the battery life).

Evil Software

I don’t pay much attention to Windows shareware & freeware, so I haven’t heard of G-Archiver until I read this item at Coding Horror.

I was looking for a way to back up my gmail account to a local drive. I’ve accumulated a mass of important information that I would rather not lose. During my search I came across G-Archiver, I figured what the heck I’ll give it a try.

It didn’t really have the functionality I was looking for, but being a programmer myself I used Reflector to take a peek at the source code. What I came across was quite shocking. John Terry, the apparent creator, hard coded his username and password to his gmail account in source code. All right, not the smartest thing in the world to do, but then I noticed that every time a user adds their account to the program to back up their data, it sends and email with their username and password to his personal email box! Having just entered my own information I became concerned.

Actually it’s very easy to back up your Gmail account to a local drive by simply downloading your email via POP3 or IMAP.