Funny How That Works

I spent a couple months, weeks at least, working on my Collaborative Filter project. It’s in use in a fairly large production system. I presented a walkthrough of using it at the Boston Ruby Group. There are exhaustive examples. Despite this the project currently has 4 followers on GitHub. One is my brother. Two are people I know personally.

Meanwhile, a few weeks ago I realized it’d be handy if I could control the computers I use via a Jabber IM client. So, I set about writing Uppercut. The first version took… two hours, maybe. Since, then it’s gotten a bit more complicated and I’ve added tests and examples and whatnot.

Uppercut currently has 50 followers. It has 4 forks. I’ve received patches from people who I don’t personally know. It’s in use in at least one real application. And today it was featured at the top of RubyInside’s list of “What’s Hot on GitHub: August 2008”.

In the larger scheme of things, that’s all pretty minor. Jamis Buck could really a steaming pile and get far more attention. (Not that Jamis Buck would release such a thing.) But, comparative to Collaborative Filter there’s a raving party of admirers outside of the Uppercut studios.

This initially seemed odd to me. For most metrics which matter to me, Collaborative Filter is a superior project. The algorithms are most interesting and in my opinion, it is ultimately more useful than Uppercut.

So why the disparity in public interest?

I think it’s two things. And they’re the opposites of each other. Uppercut is easy. It’s really easy. You could have a simple agent up and running in 5 minutes. It’s easy to think of simple uses for Uppercut as well. I already have about half a dozen uses for it planned.

On the other hand, Collaborative Filter is much harder to wrap your head around. It has dozens of configuration options. The average programmer probably does not see a need for such a thing in the first place! Collaborative filtering is hard. There’s not getting around that. (Although the underlying idea, at least with recommendations, is really simple. Picture a sparsely filled matrix. Users to Items. Your job is to fill in the missing values.)

So, I guess the take home for me is that I need to simplify the way Collaborative Filter works…

...And give it a silly name.

blog comments powered by Disqus