Tuesday, June 23, 2009

Code refactoring

is like trying to deconstruct a sweater into independent and usable separate colored balls of yarn.

Images from here and here.

Monday, June 22, 2009

iPhoto 2009: Faces

I was playing around with iPhoto 2009 the other day and I find how Apple has made use of face detection to organize photos pretty fascinating.

What probably started in the late 1990s (I'm just guessing), has gone a long way. Face detection has been in virtually all modern cameras for awhile now. Since January 2009, its also in photo management applications.

What I find most fascinating about Faces (as they affectionately call it) in iPhoto is their execution of what is essentially a semi-supervised learning process. For those unfamiliar, Faces basically works like this:
  1. iPhoto scans all your photos for possible faces. This is done once for every (new) photo.
  2. As you view your photos, you may name these faces, whenever convenient. iPhoto remembers these names.
  3. Even with only 1 labeled photo, you can open up the Faces category, and iPhoto will give you suggestions on what other faces may also be the named person.
  4. You click once to confirm. Click again to reject.
I imagine that as more photos are labeled, the model of what the named person looks like (in whatever features that iPhoto actually uses) gets better and to the end-user, iPhoto gets "smarter".

So the point in this semi-supervised process is:
  1. How can we make the process fun? Clicking on peoples faces is pretty fun.
  2. How can we make it convenient? Only one click is needed to confirm.
  3. How can we motivate the end-user? Integration with Facebook, a nice UI to display all faces and the corressponding photos.
Of course, Faces does not solve all our problems with photos. In fact, we don't really know what our problems are. As end-users, we use what is provided and are more or less content about it. Only when a better way is shown, do we say: "Hey... That looks useful."

What other affordances do we need to manage our photos? How else can we make use of our photos? What about other forms of media?

Photo obtained from iPhoto website. Copyright Apple Inc.

Sunday, June 21, 2009

ForeCiteNote

If you are not already familiar with TiddlyWiki, do consider it for your day-to-day organization. Personally, I think its main strength is in its ability to be entirely portable and relatively extensible. But in this post, I'm going to talk ForeCiteNote. FCN is a project built on top of TiddlyWiki by my research group, WING. In short, its an academic's version of TiddlyWiki, which includes a number of features including:
  1. A new note type for research that links to a paper (allowing access to the PDF, bibliography, online reading, annotations, keyword extraction, etc)
  2. Ingestion of PDFs, BIBs, ZIPs of papers
  3. Online sync support
  4. Metadata auto completion for the papers in your research notes
  5. Reading list to manage your papers
  6. Publish your notes as public or keep them private.
Right now, its still in Alpha. But take a look at what we have so far:

Saturday, June 20, 2009

Spectral Clustering

Over the past few years, Spectral Clustering has become one of the more popular clustering algorithms. There are several known implementations to the method and therein lies the reason for its popularity: simple to implement, efficient to compute, and outperforms traditional clustering algorithms such as k-means.

Here are some great papers on the matter:
  1. Ulrike von Luxburg (2007). A tutorial on spectral clustering. Statistics and Computing, 17(4), pages 395-416, December 2007. [Springer]
  2. Andrew Y. Ng, Michael I. Jordan, Yair Weiss (2002). On spectral clustering: Analysis and an algorithm. In Proceedings of Advances in Neural Information Processing Systems 14, Vancouver, Canada, December 2001. [CiteSeerX]
  3. Yair Weiss (1999). Segmentation using eigenvectors: A unifying view. In International Conference on Computer Vision, 1999. [PDF]

Guest blogger for ACL-IJCNLP

Recently I was a guest blogger for the upcoming ACL-IJCNLP conference here in Singapore. Check out my post at their blog.

Here is an excerpt:

As a modern society, we interact with many things in our lives: from household appliances and mobile devices to pencil sharpeners and door handles. We take these everyday things for granted and interact with them seamlessly, but the truth is, there was a thorough design process for each and every one of them. Don Norman talks about this very problem in his book, the Design of Everyday Things [1] If everything was designed perfectly, everyone is happy. Sometimes however, the way we think an object should be used, differs from how the designers envisioned it. There is no sign on a door; should we pull the door or should we push it?

Since Norman’s book was first published in 1990, people’s notion of everyday things have grown to include more than just tangible objects. Every day, people interact with their operating systems, email clients, web browsers, search engines, web applications, games, etc. For these systems to function efficiently, users need to understand how to use them. Unfortunately, sometimes the same cognitive gap between user and designer becomes an obstacle. Consider searching for records in a digital library as an example. A 1998 survey indicated that a major usability problem with digital libraries is in finding the appropriate keywords for search [2]. In other words, users are having difficulty interacting with the search engine. Here and beyond digital libraries, the cognitive gap is often about translating user needs and/or tasks into keywords.

How can we close this cognitive gap? Perhaps we invite users to naturally express their needs and tasks in writing. Can we use NLP to understand them? (continued...)

Friday, June 19, 2009