Cogito ergo sum caseus!

Cogito ergo sum caseus!

How to change Chrome's User-Agent string (redux)

As another brief addendum to a different post (the one about changing Chrome's user-agent string), if you use Google Chrome Portable to masquerade as an iPhone then you can have both a fake-iphone-chrome and a normal-chrome. This is handy for when you want to be able to use the non-iPhone versions of various websites while you're testing.

Don't Try to Reminplement HTML in your Rectangle of Joy (redux)

As a brief addendum to my previous post about HTML, I just thought I'd point out that Google's Webmaster Tools work on my phone while Bing's do not.

Obviously, checking on your website from your phone may not be a core use case (after all, the only reason I know it works on my phone is that I've been travelling and just happened to try it out while away from my "real" computer) but phones and other mobile devices are an increasingly important way people use web applications. Consequently, if your web app lives inside a Flash or Silverlight rectangle you're cutting off an entire class of uses.

The Humble Bundle 2, Anchoring and A/B Testing

I recently purchased The Humble Indie Bundle 2 after reading an Ars Technica article about it and thinking: "Why the hell not?" The Humble Bundle is a collection of 5 independant games, released DRM free in a name-your-own-price sale with some of the proceeds going to the EFF and Child's Play.

One of the interesting things about the about the pay-what-you-want sale is that the price field is pre-filled with $29.95 as a default price:

/blog/entries/2010/12/19/the_humble_bundle_2_anchoring_and_a_b_testing/anchor-200896c2a221.min.png

Unfortunately for them, $29.95 is actually slightly above my threshold for why-the-hell-not purchases, but it did get me thinking about anchoring:

Anchoring or focalism is a cognitive bias that describes the common human tendency to rely too heavily, or "anchor," on one trait or piece of information when making decisions.

... says the Wikipedia. It actually has a very interesting effect on our perception of prices. Basically, if someone tells you that something was originally selling for $1000, but you can buy it for $500 now, you are very likely to be thinking about how good a deal $500 is when compared to $1000 even though the "original" price could very well be a completely made up number (this is where MSRPs actually come from).

The $29.95 in the box is an anchor. So is the $85 in the copy where they explain the set-your-own-price nature of the sale, but I expect it's a much less powerful anchor as it's not inside the box where you name your own price. Since $29.95 is an anchor, and there is a reasonable expectation that changing it will affect the number/value of purchases, I started thinking about another, somewhat related idea: A/B Testing. A/B Testing, in software development, is the practice of serving multiple versions of your software and seeing if one version works better for some value of "works better".

In the case of the Humble Bundle, I would be very interested to see if changing the value inside the set-your-own-price box had a significant impact on the size/number of purchases. You might have variants with $14.99, $29.95 and $59.95. Perhaps toying with people's cognitive biases is too evil for a project that's supporting not one, but two charities, but I'd still like to see the results of such an experiment, y'know, FOR SCIENCE!

Don't Try to Reminplement HTML in your Rectangle of Joy

I recently signed up for the Bing Webmaster Tools and it prompted me to install Silverlight. I thought: "That's kind of weird... I'm pretty sure I've got Silverlight... I mean Netflix..." but I installed it, restarted my browser and... it prompted me to install Silverlight again. Okay, Silverlight doesn't work with the Firefox 4 beta, duely noted. It not working with a Firefox beta is legitimate legitimate. Even if someone in the depths of the bat-cave in Redmond has Silverlight binaries that work against the current Firefox betas, I can see not releasing them until it RC's. I get it, but it's still a lame user-experiance.

I switched to Chrome, and then the real page actually rendered. Good. I started pokeing around and land on a page with a scroll bar so I tried to scroll down... and nothing happened. I tried again, nothing. I looked closer. The scroll bars are wrong, text selection doesn't work, neither does Ctrl+Click, and the text is just wrong. It's kind of noisy. At this point that I realize that the whole page is Silverlight rather than just the graphs and fancy bits.

The Take Home Lesson

Don't try to make you're alien rectangle of joy do what HTML does.

The second you notice that you're headed down the road of implementing browser features in JavaScript, Flash, Silverlight or whatever, stop, turn around and start heading back, because here be dragons. Don't try to make this work. You're not going to get it right. Microsoft didn't get it right, and they have way more dudes than you. I'll grant you that HTML+CSS+JS might not be the most powerful client-app toolset ever imagined, I mean even getting certain things to even just line up can be a pain, and the siren song of a single place for documentation/tools must be alluring, but you're not going to get it right. Browsers do so much. They are huge pieces of software that that do all kinds of stuff and you're not going to be able to copy the behaviour people care about in any meaningful way (especially since there are ways that the browsers legitimately differ when it comes to things like "What happens when I right-click on a link?").

Play to the browsers' strengths. Laying out text? Linking pages togther? Use HTML. Save shelling out to your magical rectangle for things that browser's don't already do well (like rendering interactive 3-D environments :-). Even shelling out to Silverlight to draw graphs is kind of boarderline at this point because there are lots of tools for drawing charts with JavaScript+HTML at this point and they will almost certainly give you a better result.

Embrace your platform. Don't try to build around it, lest you end up re-implementing it poorly.