Sunday, May 31, 2009

iPhoto '09 and Facebook

I've been playing around with iPhoto '09 recently (specifically for Apple's implementation of facial detection and recognition), and (almost obviously) I have a big complaint.

Facebook contact misconnections

After I tagged people via Faces, and uploaded them to Facebook, I was surprised that several of my contacts, though having the exact same name as they do on FB, were not matching up.

I wondered why, then I wondered how. I believe the methodology of 'matching' contacts is done via email. Unfortunately, my address book on my laptop (which acts as my master book, because it synchronizes with Google and my iPhone) does not contain all the oddball email addresses used by my friends with their Facebook accounts. Even me, when I set up my Facebook account, didn't use my good email account, and used an alternative. This goes for a lot of people, really. Now, here are some solutions

Assume people take pictures of friends

For the most part, people will be taking pictures of their friends, which would theoretically limit the amount of duplicate names which can sprout up from attempting to match my friend 'Joe Schmoe' with all the 'Joe Schmoes' on Facebook.

Use Bayesian statistics to pinpoint contact matching

Instead of matching contacts via true or false, 1 or 0 boolean hits based on email addresses, use a combination of first name, last name, screen name, and email address to come up with a significant percentage chance of this 'Joe' matching my friend Joe.

Cache contact matching information

Once the database of matches is created, confirm with the user that the contacts are the same (probably for any low-confidence matches, to avoid annoyance), and store the details. Facebook assigns a GUID to every account, which can be used to more accurately pinpoint contacts should their information either on the client or the server changes. This way, when iPhoto 'tags' someone, it does so via the GUID, and always hits its mark. Note: Here, it doesn't really matter if the client or the server (ideally the server) stores the cached matches, just that someone does.

Allow for modification of the database

If we need to change something down the line, or make errors, let's make sure we can. This way, if the GUID scheme changes, we can rebuild the database with the new naming convention.

Provide address book synchronization capabilities

Seriously Facebook, you need to get on this. As nice as you are for keeping in touch with friends (and having them annoy the hell out of me via crappy applications which litter up my home page), all of the information about my friends store on FB is practically irretrievable when it comes to my devices. Wouldn't it be great to click 'export' and have all the data merged into my Address Book on my Mac, and synchronized to my Google accounts? Nearly all other contact-storing services from other companies allow for this functionality, get with the ball!

Of course, I'd be willing to fix it for you, just hire me.

0 comments :

Post a Comment