Friday, November 23rd, 2007

Joe’s Goals Gets a Revamp

Category: Announcements, ColdFusion, Yahoo!

When Ian Smith launched Joe’s Goals back in June, 2006, it was an instant hit due to it’s simplicity, excellent UI, and it’s excelllent ability to handle the task of managing your goals. By leveraging YUI, the FamFamFam icon library and ColdFusion, Ian created one of most recognizable Ajax-based applications out today.

Ian just announced a major update to the Joe’s Goals site, putting JG v2.0 into private beta and releasing a host of new features which are sure to make his users very happy. Performance was a big focus in this release as well as improving usability and reducing page refreshes:

  1. Speed Speed Speed! 2.0 is a full Ajax application, no more waiting around for page refreshes.
  2. Improved stats including a longest chain stat for positive goals and longest gap stat for negative goals.
  3. Lighter design means there are less links to deal with and better clarity. Goals can now be edited by clicking on their name instead of on the options link.
  4. Customizable display options means you can pick which stats you want to watch for each goal.
  5. Printable tracker for those who like to work on a hard copy during the week and update their tracker on the weekend.
  6. You can also switch back and forth between 2.0 and the classic version until everyone gets ported over.

In trying out version 2.0, it’s definitely an improvement overall to the previous version. The interface is substantially less cluttered and the use of Ajax does give the appearance of improved performance, mainly due to the lack of a page refresh. This is immediately apparent when scrolling back and forth between days which is noticeably snappier due to the partial page refresh versus the full page refresh found in the previous version.

I had a chance to chat with Ian about this new release:

How many users are actively using JG v2.0 and what’s been the response?

Our active user count various but it is between 3000 and 5000 users during most of a given month.

JG leveraged YUI from the get-go. Did you introduce any new technologies in this release (eg: new libs)?

Since JG 1.0 there have been a lot of improvements made to the YUI. I’ve tried to rely as heavily as possible on those components this time around and cut out a lot of my own hacked together code. I’m taking better advantage of the panel and animation libraries as well as their connection library. With the connection library I benefit greatly from the ability to tag Ajax calls with specific arguments so I can capture the call backs and programmatically make page changes based on which requests succeeds or fails. The connection library is the best example of this I’ve seen of any Ajax Toolkit.

I’m not sure what version of CF you’re using but CF8 now includes Ajax tags that leverage Ext, YUI & Spry. Did you use any of that?

I’m sitll using CF 7. An upgrade will probably happen in the the next few months but I’ll still probably code the JavaScript by hand though.

What contributed to the speed improvements? Was it the Ajax functionality, under-the-hood updates?

There were several changes that helped (including a rewrite of the backend code). I also develop some techniques for better handling the data in the web browser and pushing as much of the processing to the user’s computer and away from the server.

How did you go about deciding how Ajax would be expanded in JG v2.0? I think readers would be interested in knowing the UI rationale for their own work.

Yahoo Mail and Google Docs have both set the bar really high in my opinion and they both show that users are willing to adopt web applications that functional a little differenlt that your traditional page based approch. A big part of the Ajax enhancements for JG 2.0 was moving to JSON for handling the data layer and converting most of the original functionality to Ajax calls instead of page refreshes. You can now move back and forth between days, skip to a particular day using the calendar, add/edit/delete goals, filter the goals by tags, and watch your goal status update in realtime. All without a page refresh. A key part of the redesign was to shift away from HTML and to use HyperScript ( to create the actual goal tracker grid.

Any plans for an API where people can grab the data for other apps?

Absolutely. I’m very excited about the possibilities opened up by adding an API and I’m also watching closely to see what happens in the social networking space (hint hint).

Posted by Rey Bango at 6:30 am
Comment here

3.4 rating from 31 votes

Comments Here »

Comments feed TrackBack URI

Leave a comment

You must be logged in to post a comment.