Flame for the iPhone

I’ve been playing with iPhone development recently, and have ported Flame to it. Well, re-implemented, really – Flame is written in Python and there’s no PyObjC for the iPhone, and nor is there likely to ever be. But Objective-C is getting easier as I get practice, and this app even has a modicum of proper memory management.

This time, the source lives in GitHub/jerakeen as git seems like the cool kid this week and I need the practice. I’d expect it to build and run in the simulator just fine, and it runs on my device, so it’ll run on yours if you know the magic hoops to jump through. It’s possible that this app might actually make it to the App Store at some point, though it’s somewhat niche.. You never know.

Let me know if you have ideas for improvements. For a start, I’d like certain services to be linkable – HTTP servers should open their web page in Mobile Safari if clicked, for instance.

Released Shelf 0.0.12

Another week, another Shelf release – this one is 0.0.12 – read the release notes or download the binary.

Loads of stuff in this one, but muttley may like the fact that you can now turn off the background poller and have Shelf look for context only when you hit a global shortcut key. This will also make life nicer for people with smaller screens who don’t want this widow popping to the foreground every time it can figure out who you’re looking at.

Other than that, there are lots of improvements. Shelf should be faster and make less gratuitous network requests. Feed display is prettier, and I make an effort to display recently updated feeds at the top, rather than in random order.

Released Shelf 0.0.11

So, I have a new release of Shelf, having finally been inspired to put a bit of effort into the scary refactorings I was putting off. It’s internally much better than the last one, though I still have places I can take it. Feature-wise, it’s only a little better, though. Feeds look nicer. It should be fast, and caches the contents of remote feeds better, so it’ll thrash the network less.

The big thing is the Google Social Graph integration. Disabled by default, because it’s a privacy nightmare, I can ask Google who the current page in our web browser belongs to, to found out a person to display in Shelf. Once I’ve got a person, I can also ask Google what other URLs they advertise about themselves, so you no longer have to stuff dozens of URLs into your Address Book cards just to see interesting things about people. Looking at Brad’s homepage is a good torture test..

I’m alwo working towards making Simon happier, with a couple of preferences determining how the window should be displayed. It’s not all the way there yet, but I’m moving..

Get the full release notes here.

Yet Another Shelf Release (0.0.8)

These version numbers are just jumping around randomly now. Well, ok, they’re not, but not every version escapes to the world. Anyway, download the new Shelf – this one has an icon! And it now includes Sparkle, so it’ll update itself automatically from now on – you can stop visiting my blog every 10 minutes to see if I’ve released a new version now.

Incidentally, Sparkle is <i>stupidly</i> easy to install – everyone should use it. It’s awesome.

I’m going to start keeping a proper ChangeLog now, because I have no idea what’s in this version. Better cacheing? I think it’ll also use AddressBook.app as a source of Clues, so if you’re having trouble getting the app to do anything, just open Address Book and look at a card – you’re guaranteed to see something.

A usable Shelf release

Right, Shelf has now reached version 0.0.6 – download it (there are newer versions out now – get those). It’s good enough that I’m running it full time now. Thanks to Mark Fowler, it can now pull clues from Firefox, which is a relief. I’ve also added Address Book and iChat support, although the iChat stuff is a little hokey – it assumes you’re not using tabbed chats, and that you speak English. Sorry. The iChat AppleScript dictionary is lousy.

Musings

It’s been suggested that I could work out twitter feed and Flickr photostream URLs about people based on their name / nick / email. I’m currently shying away from deriving too many things about a person magically. For instance, I could work out (and cache, obviously) a Flickr username for a person from their email address. Quite apart from the horrible privacy implications of sending the email addresses of everyone you read mail from to Flickr, I just don’t like the approach. I’d much rather encourage a rich address book with lots of data in it. This has the side-effect that Shelf will also recognise my Flickr page as belonging to me.

Shelf ported to Python

Ruby turned out to be a bit of a pain for Shelf – I needed many external libraries and the Ruby bridge does a fairly bad job of packaging them all. I’ve ported the thing to Python now and it seems better – in fact, it’s better enough that I can actually produce a binary! Check out the downloadable action! – MacOS 10.5 only, and this is very unlikely to change. Deal with it.

It’ll pull context from Safari, NetNewsWire, Mail.app, Adium and Twitterific. Adding new apps is easy, I just haven’t yet. It’ll display only the person’s name, email addresses, and street address. And there will be errors if the street address is incomplete. It’s a PROOF OF CONCEPT. Jeez. Quit whining. There is code to fetch the recent feeds of their pages, but it’s disabled because the app blocks while it’s doing it, making it practically unusable.

Update: [Version 0.0.2 now available](http://2lmc.org/files/jerakeen/Shelf-0.0.2.zip) – it’s a little smarter, and tries to parse microformats in the source of the current Safari tab now.Another Update: Hmm, packaging things is _hard_. Never mind, try [version 0.0.5](http://2lmc.org/files/jerakeen/Shelf-0.0.5.zip) – it actually _works_, and does RSS feeds and Flickr photos and twitter messages and threading and things. I’m getting happier and happier with this..

Rather than me updating this page all the time, just go to the Shelf project page and get the most recent binary from there.

DuckCall 0.0.3

DuckCall didn’t work work under Leopard. Noone really noticed, so I assume noone uses it. Which is probably a Good Thing. But if you were sitting on the edge of your seat, waiting for a compatibility release, you can now relax. DuckCall-0.0.3.zip is now available.

It’s also 80k zipped, as opposed to the 3 megs of version 0.0.2. Hurray for bundled PyObjC. This means that this version will only work under Leopard. But there are no other changes between it and 0.0.2, so all you laggards don’t need to feel left out.