Google released XMPP support for App Engine a few days ago and I spent a couple of hours playing with it last night. The result is Pingr, another app that solves a problem for me and me only.
My wonderful wife Amy has only one annoying habit; when she’s at home she often leaves her phone in her bag next to the front door and doesn’t notice when I’m trying to call or text her. We don’t have a home phone, so when this happens I have to log onto IM to send her a message, and at some point she’ll notice it on her laptop and get back to me. Pingr reduces this to one step, a “ping” message is sent whenever I press the button on my iPhone home screen:
Of course the app is completely pointless, it’s just a good excuse to play with the technology.
As with the rest of App Engine, the XMPP support is (mostly) well documented, and just works. Treating incoming messages the same as incoming HTTP requests is a nice abstraction, having both in the same framework makes writing apps that bridge the web and XMPP easy. It reminds me of the hacking I did on POE 5 years ago, but much much easier.
There were a couple of rough patches:
- There’s no documentation on how to test XMPP handlers locally. I found the test page in the SDK console at
/_ah/admin/xmpp/
by accident, until then the only way I could think of to test was to deploy it to Google’s servers and test in production. - The handling of JIDs is less polished than I’d expect. There’s some documentation on "JIDs", "Resources" and "Bare JIDs", but the sample code ignores the details entirely and there’s no convenience functions to handle them. It’s nothing that a
split('/')
can’t handle, but it’s something that will trip up people not already familiar with how XMPP works. - The "Oops. Something went wrong." message gets really annoying really quickly. If I have debugging on it’d be nice to get some kind of error in context without having to go to the admin console and check the logs.
Nitpicking aside, it took me longer to pick colors for the icon than it did to learn the framework from scratch and write the code. That alone makes XMPP in App Engine very interesting.
■