Archive for January, 2010

The UI Implications of Having a Big Finger

January 30, 2010

Among the settings that a user of my Twitter app, ThrededTweet, can adjust are the number of tweets that should be loaded at one time, and the time interval that should pass between reloads.  For the former, the allowed values are between 20 and 200, while for the latter it’s between 0 and 60 minutes.  These values are adjusted with a slider on the “Settings” page.

Currently (version 1.1.2 and earlier), the sliders behave in a purely linear manner. That is, the distance you have to slide the slider is the same to go from 5 minutes to 6 minutes, as it is to go from 55 minutes to 56 minutes. While this works well in the iPhone simulator, where user interface elements are manipulated with a mouse, on an actual iPhone I’ve discovered that it’s a different story. I’m 6’5″, with hands to match, and I’ve found it difficult to exercise the fine amount of control needed to hit a value precisely. If I want to reload every 5 minutes, sometimes I’ll end up with 4 minutes or 6 minutes.

In version 1.2.0, the sliders are still there, but after having a realization about usage, I’ve modified how they’re handled in a way that improves usability quite a bit. The realization is that, most of the time, people will be more concerned about hitting small values precisely than they will about hitting large values. Many people will want to select between a reload every minute vs. every two minutes, while few if any will be concerned about accurately selecting between 55 minutes and 56 minutes.

So as of 1.2.0, slider values are interpreted with an exponential function, rather than a linear function. This gives a lot more sensitivity for small values, at the cost of sensitivity for large values.

If we assume that a slider all the way left has value 0.0, and one all the way to the right has value 1.0, then the reload time can be defined like so:

reloadTime = 10^sliderValue * 6.666666 – 6.666666

For sliderValue=0, this gives a reload time of 0 minutes, while for sliderValue=1, this gives 60 minutes. In Objective-C, this is:

    int reloadTime = round(pow(10.0,reloadTimeSlider.value)*6.6666666-6.6666666);

Going the other way:

    reloadTimeSlider.value = log10((reloadTime+6.6666666)/6.6666666);

For the number of tweets to load, since the range is between 10^0*20 and 10^1*20 (20-200), the formula is simpler:

    int numTweetsToLoad = round(pow(10.0,feedCountSlider.value)*20.0);
    feedCountSlider.value = log10(numTweetsToLoad/20.0);

After making this change, I’ve found these sliders much easier to manipulate accurately on the actual phone.

Advertisements

Reading on Friday

January 29, 2010

I’m having a reading tomorrow in Los Gatos.  A nice change from all the tech I’ve been hip-deep in the last couple of months or so.

The Future of the Web

January 21, 2010

Tonight, I went to a fantastic presentation at the Silicon Valley Java Users Group entitled The Future of the Web According to Dion Almaer and Ben Galbraith. The short answer, as to the future of the web, was that the web will change as much in the next ten years as in the previous ten.  The story of the web over the last ten years was its transformation from static web pages (the “brochure” model) to a platform where one can write applications, albeit in a limited form. The next ten years should feature much more advanced graphics capabilities (from technologies like Canvas and CSS Transformations), to the ability of web apps to break out of their sandbox and behave like real desktop applications.

As one example of how the web experience will change, check out the Snow Stack demo. A description is here. If you have a Macintosh and Snow Leopard (i.e. MacOS 10.6.0 or later), check out the live demo here (on Safari only).

Victim of the California Budget

January 1, 2010

With a name like “Theatrical Programmer”, I guess I should post something theatre-related from time to time. Unfortunately, my first theatre post is going to have to be bad news: I found out a couple of days ago that the playwriting class I’ve been taking at Foothill College since 2004 (and with which I was affiliated as an actor from 2002) is not going to be available in Winter quarter, due to budget cutbacks. This isn’t entirely surprising: over the last couple of years, Foothill has been continuously decreasing the amount of slack they give the instructor with regard to the number of students required to sign up for the class in order for it to take place. They’ve also been closing off the number of avenues available for people to sign up for it.

Nevertheless, I’m very disappointed that the class isn’t going to happen. It’s a great way to motivate me to write, and I don’t want to lose that.  It’s also a great way to stay in touch with fellow theatre people, and a nice break from the technology world.