Wednesday, February 27, 2008

PHOTOREE Image Recommendation System

For your mindless clicking enjoyment...

This is a fun little site I discovered the other day. You give the thumbs up or down to photos and it recommends other photos that it thinks you might like. Sounds like straight forward user-based collaborative filtering, though maybe it's more technically advanced and has some sort of image analysis system and is actually using item-based collaborative filtering...

MacBook Pro Multi-touch Trackpad

I have an ongoing debate with Arjun over the new MacBook Pro with the Multi-Touch trackpad (the kind first introduced on the MacBook Air).

The Question
Are the additional multi-touch input gestures in the new MBP a result of a software/firmware or a hardware upgrade?

My Position
The hardware of the trackpad must be different in the new MBP, otherwise Apple would have released the upgrade as a firmware/software update, benefiting a larger audience, rather than as a new feature on a new machine.

Arjun's Position
The hardware is the same, and Apple chose not to release the new feature as a firmware/software update so as to exaggerate the "new" features of the new MBP and further distinguish the new model from the current model.

Admittedly, my view holds Apple's integrity in high-esteem. If I'm wrong, that esteem will no longer be so high. I hope that Arjun is right, if only because that would mean Apple could (would?) eventually release the same firmware/software for the last-gen MBP, or some 3rd party could attempt to do so.

The Evidence
First, from pictures, the trackpad on the new and last-gen models are visually the same, as opposed to the MacBook Air trackpad which is visually larger. Although not conclusive either way, it suggests a similarity in hardware.

Second, the last-gen model trackpad can sense multiple sources of input; two-finger tapping is distinguished from one-finger tapping for right and left click respectively, and two-finger scrolling is recognized for page scrolling.

As further evidence (and the most convincing in terms of Arjun's argument), the multi-touch capability of the last-gen models is independent of finger position, meaning that a two-finger tap with fingers side by side is recognized just as well as a two-finger tap with fingers spread to opposite sides of the trackpad. This position indifference holds true for two-finger scrolling; dragging two spread fingers works exactly the same as dragging two touching side by side fingers.

The logical inference from the above is that if two fingers spread wide can be dragged in a straight line for scrolling, then those same two fingers spread wide should be able to be rotated in a circular motion for, say, rotating a photo in iPhoto. Because of the hardware necessary to detect two, spread fingers moving simultaneously is already in place in the last-gen model, it isn't too big a jump to suspect the additional gestures added in the new MBP are a result of upgraded firmware/software.

However, one caveat to note is the nature of multi-touch input in the last-gen modes. Namely, all supported multi-touch gestures involve parallel motion; (1) two-finger tapping is recognized only when both fingers tap simultaneously, as opposed to having one finger in contact with the trackpad and then tapping with the other, and (2) two-finger scrolling involves both contacts with the hardware moving in the same direction.

The exception to my parallel inference in the last-gen models is that two fingered scrolling does not require both fingers to be moving, but works just fine if one finger is in contact with the trackpad and the other is moving.

The gestures introduced in the new MBP break the need for parallel motion; 'pinching' is convergent motion, 'spreading' is divergent, 'rotating' is inverse motion, etc. The exception is three fingered 'swiping', though the ability to sense more than 2 sources of simultaneous input may be a hardware improvement in the new MBP.

At this point, it's all speculative, though I hope that somebody with more knowledge in this subject will chime in resolve the debate. Otherwise, maybe we'll hear from Apple some day.

Friday, February 22, 2008

Why I Don't Use My Account

Introducing the Need
I have a account. I've used it sparingly from time to time and I actually think the concept is very good. Depending on my mood and task at hand, I'll browse the web with Firefox, Camino, or Safari. I wouldn't use Firefox except for the Firebug plugin, so that's mainly for developing. The problem is that there's no predicting = what browser I'm going to be using when I stumble across a website that I want to bookmark. On the flip side, there are certain sites I want to have bookmarked in all my browsers. As a result, the browsers share certain bookmarks but each have their own unique finds and so when recalling a site I want to revisit, I can never remember which browser I was using at the time, and thus have to check all three to find the bookmark again.

That is why I wish did not suck so much. If not for the forthcoming problems, it would solve my bookmark woes.

Now to the Problems
First, I dislike the homepage. It assaults my eyes with so much web-safe blue that it all blends together and I feel like I'm looking at a lava-lamp with white liquid and blue lava. The addition of pictures smoothed it out a bit, but it's still a painful experience.

On it's own, that would not be enough to keep me away, which brings me to my second complaint.

Exhibit A:

#9999FF is not a good font-color on top of various shades of pink. Is it too much to ask for a little contrast? I agree, it is a very cool effect to calculate the color of some element based on collected data (I've even done it for a project). Nevertheless, there is always one overriding concern: Make sure that text in the variable color element is still readable.

Even so, the contrast issues wouldn't keep me away, especially since I don't particularly care how many other people have saved my bookmark. My third complaint is the real reason I don't use my account.

Fatal Flaw
The bookmarklet is useless for what I want to do with it.

Sure, I can just drop it in my bookmarks bar and click it when I'm on a page I want to add. But what does this do? It takes me to where I have to sign into my account to save the bookmark. This is a hassle. When I use the bookmarklet, it's because I don't want to go to!

I never visit, so I'm never signed in. Furthermore, I don't want to have to sign in just to save a bookmark. I don't want to use right then and there. I just want to throw something at them real quick, and then come back to it later.

One of the problems is that browser security constraints disallow sending an asynchronous HTTP request by clicking on a bookmarklet. This would be the ideal solution, since it would not even require opening a new window or moving away from the current page. However, as it is not plausible, I'll focus on the sign-in issue.

The fact of the matter is there exists a simple, safe, secure alternative. All the bookmarklet does is redirect the browser to's page for submitting links and passes along information about where you just were (specifically, the url and the window title). The base dilemma is that the bookmarklet is a generic script-- that is, each user has the exact same code in their bookmarklet. The solution is to make the bookmarklet specific to each user. could tack on two more parameters to the query string above that would contain (1) either your user ID or username (both public information, so no security issues yet), and (2) a hash that would be (a) unpredictable, and (b) unique to each user. Basically, it's like having a secret piece of information that only you and know and that is only valid for one user and for one-way communication to For those familiar with public/private key security, this should sound similar. That way, when clicking the bookmarklet, already knows who you are and doesn't have to ask you to sign in first.

Potential Problems
Alright, so what about multi-user environments? First, bookmarklets are probably not going to be found on massively public computers such as libraries and schools. To accommodate the rare case, could keep the generic version available. Second, in the home, different user accounts should accompany different users, thus the operating system manages user settings. Third, what if somebody is on my computer and clicks my "post to" bookmarklet? Just add a "Not userA?" link on the post page that allows a user to login to a different account, problem solved.

Short Version
I like the idea of, but it's just as much of a hassle as synchronizing my local browser bookmarks until there is a solution that does not require me to go to to submit a bookmark.

Wednesday, February 13, 2008's Design Usability Problems

I have issues with Namely, it always takes me ridiculously longer than necessary to accomplish anything on the site.

The Sign In Link
At the top of the page is a line reading "Hello. Sign in to get personalized recommendations." For some reason, the part of that line that links to the login page is "personalized recommendations" rather than "Sign in" or even the whole sentence. My reasons for being on the site had nothing to do with personalized recommendations. Ergo, I stayed away from the mysterious "personalized recommendations" link and was completely frustrated by the time I finally clicked it out of desperation and accidentally stumbled upon the login page.

Gift Card Purchases
I wanted to use a gift card that I had applied to my account to buy a song. For the life of me , I could not find the option to use the gift card for the purchase. I was signed in. I found the song. I clicked purchase. There was no option to select a gift card from my account as the payment method. There was an option to apply a new gift card, but none to use a previously applied gift card. Eventually I said, "f*** this, it's only $1, I'll just use my credit card."

My credit card, however, was never charged. In investigating why, I discovered that gift cards on your account are automatically applied to purchases before whatever payment form you provide.

That leads to a few thoughts:
  1. Why not let me choose to use a gift card, or choose not to? Seems odd to force me to use a gift card just because I applied it to my account for safe-keeping.
  2. If they're going to force me to use the gift card first, why not check to see if I have one before making me input my credit card information, thus saving me the hassle of filling out an unnecessary form.
Well, that's the shortlist of my recent complains regarding's usability...

I was recently told this was, "because you're not dumb enough to appreciate Amazon's idiotic structure."  I'll take that as a compliment.

Why for the domain?

I thought that the reasons behind the domain name deserved a post. I meant to do this a while ago to christen the blog, but just didn't get around to it, so here we go.

First the Why
A few trivial reasons:
  1. My name is common enough that every combination I could justify owning as a domain name was taken long before the idea occurred to me
  2. I wanted something unique, reflective of me, not reflective of the times
  3. I wanted a .com domain
  4. was available (likely because of it's obscurity, length, and likelihood of misspelling)

Now the How
At the most basic level, this blog is a partial record of my thoughts. Fragments, you could say, of my thought process. To take it a step further, I don't always stop to explain my thoughts to myself, but in this blog I do attempt to clarify and analyze. Ergo, the fragments are modified, expounded upon, hopefully improved.

From "improved" I inferred progress in the upward direction and then my background as a musician took over. Up translated as a higher pitch. Fragments became chords, as a piece of music may be digested down to the building blocks underlying the complexity of the melody, rhythm, intonation, and color.

So what happens if you take a chord and "move it up"? If you maintain the same chord, then "moving up" would probably just be playing the first or second inversion. That definition doesn't fit well, since essentially it means reordering the notes within the chord. All the same notes are there, nothing has changed but the order.

I view my posts as more than a reordering of my thoughts, so I needed something that modified the root chord, and yet still "moved it up." And thus I arrived on augmented chords. An augmented triad is a chord with a raised fifth (basically, the high note of the chord is a little higher than usual) resulting in two symmetrical intervals, between the first and third, and the third and fifth, that split the octave evenly.

Augmented chords are dissonant, unresolved, but that's not the implication I am trying to convey. An additional feature of an augmented chord is that, beginning with a major augmented triad in an arbitrary (I'll explain why arbitrary shortly) root position, the first inversion is a root position augmented triad beginning on the third and the second inversion is a root position augmented triad beginning on the fifth. Thus, the root of an augmented chord is ambiguous since it could be any one of the three notes forming the triad. This may seem problematic, but is actually quite wonderful if you happen to be an accompanying musician since it increases the available chord shapes which will "sound good."

Thus, augmented fragments are supposed to be portions of my thought process which have been both clarified and obscured so that they are easily understood and readily applicable to a variety of situations.

I'm not going to give you a fish here, but hopefully you'll come away with a few more hints on how to fish.