02 January 2009 ~ 0 Comments

Serving SVGs with Ruby on Rails

I’ve been working with Rally’s Ruby API intermittently over the last several weeks, as part of a side project to create some alternative visualizations of SCRUM release progress.  I’ve just now finished gathering the data from Rally and am moving on to creating the charts.

My options are Google’s Chart API (or another hosted graph creator) or to install one of the more popular Ruby gems (Gruff Graphs or Scruffy) though this doesn’t appeal to me as they both require ImageMagick and I want to minimize platform dependency down to native Ruby.

After some recent experience with SVG at the office, it ocurred to me that having a designer make a nice looking chart in Adobe Ilustrator and exporting it to SVG would be pretty slick.  You start with a hardcoded chart as your template, insert some dynamism and you’re all set.  Though it looks like the SVG exporter is still using a DOCTYPE and this is no longer recommended; an easy fix though since it’s all XML (ta-da!).  This assumes your browser supports SVG (FF3, Safari 3, Opera, not IE7).  Fortunately my project is internally focused, so requiring an alternative browser is acceptable.  A luxury, I know ;-)

Thus began a small adventure into just about every Rails nook and cranny, so save yourself some time and learn from it!

30 December 2008 ~ 0 Comments

The Good, The Bad and The ?

There are (fortunately!) many examples of modeless feedback these days, and I’d like to take an opportunity to briefly highlight two of them.

THE GOOD

Amazon.com’s new modeless indicator of shopping cart content!  The button you click to access your cart changes to reflect the number of items you’ve added.

Note the placement of the number ‘inside’ the cart.  Terrific.

The icing on the cake: a mouseover displaying the contents of your cart!

If anyone is interested, that D3X is on my wish list, so feel free ;-)

THE BAD

Well, bad modeless feedback is akin to bad pizza – it’s tough to get it so wrong as to be detrimental.  Hey, at least it’s modeless :-)

THE ?

Ever notice that Gmail will display the name of the next off-screen responder in your conversation?  It’s here:

And a close up:

Is it the next off-screen person in the conversation?  Or the next person that isn’t me?  It’s puzzling enough that I’ve never bothered to understand its utility, though scrolling through a long conversation, it’s a bit distracting to see the color and value change frequently.

What exactly does it mean and how would it change my behaviour?  Would the contents of this mouseover ever prompt me to scroll or stop scrolling?

?

28 December 2008 ~ 2 Comments

Guitar Hero World Tour: 4, Rock Band 2: 0

The scene at my local Best Buy customer service counter, the day after Christmas:

What you don’t seen is the woman in line behind me, also with a set to return.  I would suggest holding off on Guitar Hero World Tour.  Alternatively, pick up a copy of Rock Band 2 like I did after returning mine! :-)

(mine’s the one on the far left)

UPDATE: There appears to be an issue with the placement of the sensors on the cymbals that you can fix with a combination of the RedOctane GHWT Drum Tuning Kit and perhaps a manual relocation of the sensor inside the pad.  I’m pretty sure the price of the full kit just dropped from $189 to $159.

28 December 2008 ~ 8 Comments

Irony

As stackoverflow grows in popularity, I’m seeing it as frequently as Yahoo! Answers when asking technical questions.  Doing a bit of Rails lately, there I found the answer to my question-of-the-moment.  Stackoverflow is about us helping one another, so I had a look at the front page to see if I could return the favor, when I noticed this question:

There are some great examples in there, tinged with frustration – the same motivator that is responsible for this blog.  I pointed the OP towards this site, as I have about a years worth of gripes saved up :-)  Before posting, I noticed that it’s possible to get credit for responding.  In order for me to login (to get credit), I have to choose an OpenID provider.  OpenID?  What’s that?

From OpenID.net, “What is OpenID?”

OpenID lowers user frustration by letting users have control of their login.

Less frustration?  More control?  Let the healing begin!

Here we are at the OpenID login prompt.

I’m not quite sure what to enter in this field, though I do know how to use a drop-down.  Let’s see what happens.  Note though, that I’m interacting with the components in reverse order, using the drop-down to fill (or understand) the contents of the login field.

I have Yahoo!, Google, Technorati, Flickr and Blogger accounts and maybe an AOL account from 10 years ago.  Which of these is the right choice?  What are the ramifications?  My Google and Yahoo! addresses contain a lot of personal information; will it be visible on the site if I choose it?  Will stackoverflow have access to my personal information?  I choose Google (for no reason really) while feeling a sense of empowerment and control like never before.

Next, the “login field” appears as below:

Is this correct?  Or a bug?  What does this mean?  Should I replace this with my Gmail address?

The only two things I know about OpenID so far:

  • I should feel like I just landed on the moon having ridden a rainbow of non-frustration.
  • The administrator at stackoverflow knows that “OpenID is awesome” and that it belongs with at least one person.

That posting at uservoice (a request to not require OpenID) has many comments: should stackoverflow be using OpenID?  Will it limit site adoption?  My guess is that it would have many more comments though it was declined as a feature request and cannot be voted on.  Understandably so, as OpenID is quite contentious.

Jeff Atwood, author of codinghorror and the founder of stackoverflow has this to say:

…which means the real question is not whether or not stackoverflow should be using OpenID.  It is this:

How can stackoverflow increase satisfaction with its OpenID implementation, such that the purported benefits of less frustration and more control are realized?

One would start by learning from others, such as Yahoo’s OpenID Best Practices:

Promote the utility, not the technology. To reach the majority of users who aren’t familiar with OpenID as a technology, promote the ability to log in using an existing account, not “OpenID” itself.

Or even uservoice.com.  In order to login and reply at uservoice, Jeff would have had to go through their OpenID sign-in process:

An OpenID login process, with no mention of OpenID.  Clicking on “Google” sent me over to Google and voila!  I’m logged in, all the while completely unaware of OpenID and its empowering effects.

Stackoverflow gets a lot of things right.  The site is responsive, the UI is slick, sharp and minimalist and if you get as much of your technical help from message boards and blog posts as I do, you’ve got to love the idea behind it.

What Jeff should keep in mind is that if he’s going to evangelize, he’s got to do more than the bare minimum.  Simply stating your opinion and creating an implementation-model UI isn’t going to win him any OpenID converts.  In fact, quite the opposite – provably so from the momentum of the aforementioned uservoice posting before it was locked.

I do hope stackoverflow nails their OpenID flow, at least for my sake because I’d love to get credit for my responses ;-)

19 October 2008 ~ 1 Comment

Payoff!

All my years of using Amazon, feeding my buying habits into their recommendation engine… well I knew the payoff would happen someday and here we are.

While preordering my 15″ MacBook Pro (hereto referred to as “the new hotness”) Amazon melted my face with a legendary buying tip:

First, I love the discount.  When spending nearly $4000, I can rest easy knowing that I’m saving 0.003%

Second, I have to applaud Amazon for suggesting this pairing.  I’ve been concerned that my new notebook might be lonely and this the perfect solution.

Third and finally, I really have to question this pairing.  A MacBook and a MacBook Pro?  Those of us who buy our notebooks in pairs would opt for the Pro and the Air, not the Pro and basic MacBook.  It’s just common sense.

19 October 2008 ~ 2 Comments

“Whoever has the money has the power”

That’s a line from 2007’s The Lookout, now playing on the Encore network.

What accounts for Firefox’s success has been covered ad nauseum in comparisons of the two browsers – better security, smaller disk and memory footprint, faster rendering, etc.

What many may not know about Firefox is that it has a tool that has become a necessity for web development – Firebug.  Firebug is an add-on that allows you to inspect HTML, CSS, and JavaScript and modify content on-the-fly, allowing you to quickly find and solve problems with pages during development.

In 2007, Microsoft introduced the Internet Explorer Developer Toolbar, which does similar things though not nearly as well.  Going from Firebug to IEDT is a noticable step down.

Combined with a better interpretation and implementation of various web standards (most importantly CSS), Firefox and Firebug are the tools of choice for every web developer I’ve ever met.  Internet Explorer is quickly becoming (let’s not kid ourselves – it already is) an also-ran for the web development community, only fired up when a bug is filed.

Take Salesforce as an example.  Salesforce is considering dropping support for Internet Explorer 6 later this year, at least for newer features.

“In addition to working on next-generation UI, we frequently wrestle with random, difficult-to-reproduce, hard-to-fix bugs in IE6.  And while we admittedly love a challenge…working around bugs in older browsers isn’t really how we want to spend our time.  In fact, investigating and coming up with solutions for bugs that appear only in IE6 robs us of time we would rather spend on new feature development, which is what we love doing and where we believe our customers would also prefer we focus our efforts.”

“But our current thinking is that our next-generation UI enhancements, to be released starting later this year, will not be supported on IE6.

This is one part natural decline in usage of IE6 and one part frustration in working with a poor client tool.

As another example, at work we make heavy use of Rally, a tool for managing Agile software development processes.  Rally is all but unusable on IE7 (I wouldn’t even attempt to use it with IE6) as it makes heavy use of AJAX.  The more front-end code you’re cutting, the more it behooves you to develop in an environment that provides a compelling advantage and right now that’s Firefox.

Microsoft has the money and Microsoft has the power yet developers have fled from the platform.

The web is now being defined by those developing for it and they’re increasingly focusing on Firefox first and Internet Explorer second. It’s the quickest way to get a site launched.

…which begs the question – do they really have the power?

25 September 2008 ~ 0 Comments

How Offensive Could It Be?

I received an email blast from Bioware, makers of Mass Effect, one of my favourite games of 2007 (the other being Bioshock, not actually made by Bioware – strangely enough).  The email pertains to some new footage of Dragon Age being available, a game under development.

First, an age check:

Why, after being asked for my age did I end up here?

By offering 2008 as a choice in the dropdown, I end up doing something I do on a regular basis – enter today’s date.  It was purely automatic; I did it without thinking.

I occasionally make this mistake during “age gates” when the dates run up to the present.  Are there really that many 1-2 year old cruising Bioware, looking for hot footage of this game?  At least kick out the current year to nudge me out of autopilot.

Starting up Safari did the trick ;-)

20 September 2008 ~ 0 Comments

Context!

With my recent upgrade from the D200 to the D300, I realized that my 512MB and 2GB CompactFlash cards just aren’t going to cut it anymore.  RAW files are twice as big as when I picked these up for my D70, and these cards are just taking up space.

I always consult Rob Galbraith’s CF/SD Performance Database when picking up new cards.  The SanDisk Ducati 8GB was what I choose (I’m still on the fence about whether or not the tie-in is cheesy or sexy) for two reasons: 1) Top performer at that capacity and 2) Rebates!

Here’s the second page of the rebate form:

When designing a rebate form that is to be filled out and printed, I have two suggestions:

  1. Make the PDF a fillable form, meaning you can fill it out electronically and then print it.
  2. This form is 62% covered in solid black and red meaning I have to pour ink into my printer like oil into my first car.

SanDisk is no stranger to providing rebates, so I’m guessing they either struck a deal with HP to use up all of our ink, they dislike the environment, hope we don’t fill out the forms or some combination of the above :-)

15 September 2008 ~ 0 Comments

Aren’t Wizards Supposed to Help?

From Mozilla Thunderbird account setup:

Hmm… ;-)

11 September 2008 ~ 0 Comments

It’s Not As Helpful As You’d Think

Web sites frequently make use of JavaScript’s onLoad event handler in conjunction with focus() to reposition the cursor once the page has finished loading.  Here’s a page full of search results on javascript focus.

Pages do this so that you can begin typing immediately without having to first TAB or click-focus on an obvious starting point: the “Wireless number” field in the AT&T login screen for example:

Take a quick look back at the screencap.  You’ll notice the characters “yz” in the “Wireless number” field.  That’s not my wireless number.  It’s the last two letters of my password.  I certainly didn’t start by typing my password given my familiarity with the login/password paradigm, so how did it happen?

When I’m halfway through my password, the onLoad event is fired and this helpful JavaScript kicks in, relocating my cursor and blanking out the fields. Even though most sites aren’t as aggressive in removing your previous values, they refocus nonetheless. In those cases, I would be left with “yz55555555555″ which is still a problem.

Here’s a quick suggestion: In the onLoad event handler, if focus has moved on to another field or if another field has fired key related events, don’t refocus.

Get to work AT&T! :-)