Wednesday, December 17, 2008

Klok gets a new website

As you may have noticed, over the past few months I have been trying to add more content and information to Klok users through the official Klok website. With the addition of the feature request/bug reporting screen and user forums, I started to feel like the initial quick and dirty site was getting disorganized. So I spent last week putting together a less quick and less dirty website to improve upon the content that was already there.

I haven't applied the new design to the submit a bug/feature request screen yet because that is a Flex application that doesn't use the same template, but that is coming soon.

I have tested the site on IE 7, FireFox 3, Safari 3.2 and Chrome (0.4 and 1.0) all on Windows Vista. If you find any problems on these or any other versions feel free to email me at rob [a] mcgraphix [ dot ] com.

Alos, let me know what you think in general.


Monday, December 15, 2008

Apple IPhone vs. Blackberry Storm

For some reason, the holidays always make me want to buy some new gadget. Maybe it is the overwhelming amount of advertising by anyone with a product to sell. This year, I set my sights on a new phone. 

Now, I don't actually need a new phone but for some reason I have decided to shop around anyway. So, the two that caught my attention are the Blackberry Storm and the Apple IPhone. I am sure I am not the only one to compare these two, but I figured I would share my observations.

They both offer lots of the same features so I am not going to compare each aspect of them. What I would like to compare is my initial Experience with them. 

First impressions are hard to overcome
I popped into the Apple store at the local mall and immediately was greeted with a bunch of associates that were all younger than me that were very friendly and appeared to know all the ins and outs of the product. I picked up one of the many that were on display and could play around with it. I immediately was able to navigate around and play some of the demo songs that were on it, get online and browse to my own website and the Klok website without a problem. I did notice instantly that the Flash content on my sites did not work. Though, this was expected.

The same night I went over to the Verizon store (I have a Verizon phone now by the way). I waited in line at the counter so that I could take a look at the Storm. When I finally got to look at it, I picked it up and tried to click some buttons. After a few attempted "clicks" it was clear that it wasn't working. So, the woman behind to counter took a look at it. Tried to push a few buttons and resorted to pulling the battery out. When she put it back in the phone "rebooted". I waited about an hour (actually about 3 minutes but it felt like an hour) and then left because it wasn't coming back up. About 20 minutes later I came back and it was working again. I was able to play with it but it was hard to get past the fact that just a half an hour ago I had a terrible experience with it. I navigated around but had a hard time browsing the web with it. I couldn't really type too well on it either. 

My Conclusion
Even though I was eventually able to play around with the Storm, looking back I feel like it was harder to figure out, harder to use and generally not as "fluid" as the IPhone. Feel free to disagree with me as I am sure other people's experiences were different. That, however, is exactly my point. It doesn't really matter if one product is "better" than another, what matters is whether it provides "a better experience for me".

So I have decided to purchase and IPhone and switch to AT&T (which I never thought I would do just for a phone)




Wednesday, December 10, 2008

As usual, I mostly agree with Jakob Nielson

If you work in the web world, it is pretty likely that you know who Jakob Nielson is. If not you can read about his work and thoughts here

He recently posted an article talking about Agile Development and Usability which, like I said, I mostly agree with. Really the only part I cringed at was where he says:

"It's perfectly feasible for developers to do interaction design and usability."

Now, I have no problem with developers being involved with usability testing. I think it is extremely valuable to for them to see first hand how users act. The part that bothers me is that it is next to impossible for developers to have an unbiased opinion when analyzing the results of user testing. In my experience, it is because developers know the ins and outs of the system too well to appreciate the way users perceive the system. A designer on the other hand is in a better position to be looking at the system the way an actual user would.

Like I said, I mostly agree. His suggestion for usability and design to happen in a parallel track is one that I have advocated for a long time and has been very successful for me. His suggestion that Foundational User Research should occur before a development project even exists is spot on. This work and much of the work done by interaction and experience designers is just as much a part of the product strategy process as it is the development/ implementation process. So, part of it must be done during the strategy phase long before developers start writing code.



Thursday, December 4, 2008

Klok Integration with Online TimeTracking services

I have had numerous requests for the ability to use Klok to track time against projects stored in 3rd party or homegrown systems. Because of this I have decided to prioritize that functionality.

This feature will allow you to use Klok as usual, even while not connected to the internet, and have the projects/time entries synchronized with the remote source. This will effectively allow you to use Klok in a team environment to track and report time.

As I am wrapping up the necessary infrastructure in order for this to work, I am going to set my sights on one of the many 3rd party systems that exist online. In order to make sure I am focusing on the most common ones first, I would like to ask for your opinion.

So far several people have mentioned FreshBooks and Get Harvest.

Due to the complexity and effort required to implement this, I expect to charge a small fee for this additional feature. If you don't need this feature, then the free Personal Edition of Klok will still be available.

So, if you have a suggestion regarding which one I should start with or a comment on the fact that this won't be free, join the discussion on the Klok user forum.

If you would like information regarding integration with a homegrown system, please contact me directly at rob [a] mcgraphix [dot] com.


Wednesday, December 3, 2008

Experience Designer/Interaction Designer Wanted in Massachusetts

In my previous post I mentioned that I was looking for an Interaction Designer/Experience Designer.  I forgot to specify that the job was in Marlboorough, Massachusetts.

You can see the official job posting here. If you have questions email me at rob[dot]mckeown[a]workscape.com

Monday, December 1, 2008

Experience Designer/Interaction Designer Wanted!

I am looking for a top notch Experience Designer/Interaction Designer to work with me full-time at Workscape designing their next generation of Talent Management and Outsourced Benefits Administration applications.

If you have experience designing web-based enterprise applications this could be for you. In this role, you would work with Product Management, Engineering and myself to create applications that enable employees to accomplish of a variety of goals from benefits enrollment to performance evaluations. We have a major focus on building highly usable software making this a high profile position within the company.

The key requirements are:
  • Proven track record designing enterprise applications
  • Experience participating in usability studies
  • The ability to quickly create wireframes and mockups
  • Design skills that will "Wow" while adding real value to users
  • Experience working in an Agile environment
If you have Flex skills then that is even better. Being able to quickly convert mockups to working prototypes is a major plus.

You can see the official job posting here. If you have questions email me at rob[dot]mckeown[a]workscape.com

I'm going to FlexCamp Boston

I was able to clear my schedule enough to free up Friday Dec. 12 to attend FlexCamp Boston. I have to say I am pretty excited to see Christophe Coneraets presentation on Model Driven Development, Andrew Powell's presentation on Merapi and of course the Flex 4 preview.

I will also be around if anyone wants to chat about Klok.

Monday, November 17, 2008

Thermo is now called Flash Catalyst

at least according to this TechCrunch article and on the Adobe labs site

So far I don't think I like the name... I liked the name Thermo, but I can get used to it if the product lives up to its promises.

Thursday, November 13, 2008

AdvancedDataGrid Horizontal Scrolling Performance Fix

A week or so ago some comments were added in the Adobe Flex Bug system regarding the ongoing performance problems with the AdvancedDataGrid's horizontal scrolling. While a proof of concept workaround was posted, the actual issue still remains. 

If you implement the workaround posted you will get smooth horizontal scroll but it is at the expense of an important feature of the grid... Locked Columns. If you have ever used a spreadsheet with many columns you will know that most of the time you need to lock at least the first column so that you don't get lost in the sea of cells. With the workaround that won't work. 

I added a comment on the issue in the bug system, but I urge others to make sure that this temporary workaround is not  a solution to the problem. We all need some better resolution to this issue and it seems that it is likely to stay "Deferred".

Let's not let that happen. Create an account in the Adobe bug system and post your comments at http://bugs.adobe.com/jira/browse/SDK-17880 


Monday, November 10, 2008

The Suspense is killing me...

If you are a UI designer or in any role responsible for design RIAs that are built using Flex, then you have no doubt heard of Thermo. If not, you are really missing out on the excitement. Ryan Stuart has posted some info on the Adobe Max site regarding a preview release that will be distributed at Max. 

Unfortunately I can't attend so this is a public plea to Adobe to post it to the Labs site very soon after Max. I can understand why they want to unveil it there first. But I hope we don't have to wait too long to get our hands on it.


Tuesday, November 4, 2008

Klok 1.5 RC 1 - Patch available

In my haste to get the RC1 version of Klok ready to post last night, I didn't fully test the updated time input boxes (which show up when you double click an item on the week view).


I believe I have fixed the issues and have posted an update. Click the check for updates button located on the About and Preferences screens will download the patched version.


I apologize for the inconvenience.

Klok 1.5 RC1 Now Available

As many of you have pointed out, there was an issue related to the time change this past weekend. This updated fixes the problem for the most part.  You can get the latest version by clicking the "check for updates" link on either the Preferences or the About screen.

However, I say "for the most part" because there is still an issue when dragging items on Sunday. The reason is because there is actually one more hour on Sunday than usual. This gets in the way of the calculations. 

One other big change in this release is the replacement of the time entry widget that was displayed when you double click an item on the week view. I had so many complaints about it that I decided to simplify and just use a text field. In this field you can type times in the format 3:24 am or 15:24 for example. It is also smart enough to know what you mean when you enter something like 1a.

I kind of rushed a bit to get this out in order to fix the daylight savings time issue so there will probably another update for the final release of 1.5.

As usual, post any problems at http://bugs.mcgraphix.com


Thursday, October 30, 2008

Changing the font size in a Flex app using the browser's built in controls

A week or so ago, I blogged about the text size buttons on the Adobe Inspire site. I started to feel guilty about criticizing the site. So I set out to investigate how that all works. The easiest way to do it, in my opinion, is to load a compiled CSS file at runtime that overrides the font size of the components or styleNames as necessary. I don't think it makes sense to do anything programatic that would make all fonts bigger since there may be cases where some text is sufficiently big as is. So, this way the control stays completely in the hands of the designer.

So, what I came up with was fairly simple: A component with a few buttons that when clicked load the correct stylesheet. This is probably good enough for most purposes. But what if a user is already familar with changing the font size using the browser's text zoom option? It would be nice to be able to hook into that. The following example does just that.

How does it work?
Using an example I found on www.alistapart.com, I was able to detect changes to the font size made through the browser in Javascript. At this point, the trick was to get that into the Flex app. The Flex Ajax Bridge makes that possible. Putting it all together does exactly what I wanted. 

This a proof of concept so the code could certainly be cleaned up. Feel free to make changes to the example for your own purposes. If you improve upon it, please post a comment with an example (and hopefully the source) here.

Here is what I know needs to be fixed:
  • For some reason this doesn't seem to work in Google's Chrome browser
  • When focus is in the Flex app, the keyboard shortcuts that normally work in Firefox (CTRL + and CTRL -) don't work because the keyboard events are "trapped" in Flash Player
  • I have only verified that this works in IE and FF on Vista


Monday, October 20, 2008

Adobe - In Context Editing - Price

If you build websites for clients, I'm sure you often get the question "Can I update this myself?" 

Well, Adobe has a new service/product which may help. The concept sounds pretty cool. I intend to try out the free preview and post my thoughts here. However, I am a bit nervous about getting too excited since nowhere on Adobe's site (at least not that I can find) does is say what it will cost.

If you have inside knowledge (in other words... If you work for Adobe), please comment here with some ballpark figure :-)



Thursday, October 16, 2008

Adobe Inspire - what's with the text size buttons?

Even if you have seen the new Adobe Inspire site (built with Flex of course), you probably didn't notice the buttons in the upper right that allow you to increase or decrease the text size. Those buttons aren't really a new concept, lots of sites have a mechnism to increase the font size to make the site more readable for those with visual impairments. 

What's weird about the ones on the Inspire site is that, when you click the button to make the type bigger, it doesn't make all the type bigger. It only makes the body copy bigger. However, some of the headings are smaller than the body copy so it would make sense to make those headings bigger as well. I wouldn't expect that visitors to the site will understand why the headings aren't being enlarged when that button is clicked.

All in all, I like the site. Though, I am surprised that it isn't following along with the dark gray/black theme that the Adobe products seem to be using these days.




Wednesday, October 15, 2008

Flash Player 10...working now

I ended up getting Flash Player 10 to work, but I could only get it to work by downloading the Flash Player 10 update for CS4 zip file

So far it looks pretty cool. I can't wait to take advantage of the new features in some projects.

Flash Player 10: Sounds great, but...

Unfortunately Adobe must be "sold out" of Flash Player 10s. I went to Adobe.com and watched the really cool teaser video and thought to myself, "I have to install this right now". When I click to install, it goes through the installation process as normal and then gives me the "Installation successful" screen and indicates that Flash Player 9.x.x.x was installed successfully.

Now, I have seen some weirdness upgrading flash player before which was usually solved by uninstalling the current version and then installing the new version. No problem. I downloaded the uninstaller and uninstalled the current 9.x version and went back to Adobe.com to install the new version and when I go to the screen and click "Agree and Install Now" button, I go to a page where... wait for it... nothing happens. I see what looks like a broken image tag and some text that says it will take a couple minutes on a 56k modem.

They don't make it simple to find and download an old version so I am kind of stuck at the moment.

... and I really want to see some examples of the new typographic capabilities.

Friday, October 10, 2008

Thursday, October 9, 2008

Flex/Jira SOAP Webservice issue resolved

I guess I just needed to put this aside for a day and come back with fresh eyes. Another look at the log files gave me what I needed. There was an exception in the log about a NumberFormatException indicating that the String NaN couldn't be parsed into a number. A breakpoint in the SOAPEncoder.as file indicated that the NaN was being passed as the value of the "votes" property. So explicitly setting that value to "0" fixed the problem.

I would never have expected that I needed to set that property when creating a new issue.

But... it is working now, so expect to see a simpler way to submit bugs and feature requests coming soon.


Wednesday, October 8, 2008

Flex/Jira SOAP Webservice Problems continues - any suggestions?

Well... since my last post I have been trying to successfully create and issue in Jira from Flex. Desipite the problem I found in my last post, which allowed me to retrieve data successfully from Flex, I am stumped when it comes to creating issues. Here is what I am doing... if you happen to have any suggestions, please comment here or email me directly.

var req:CreateIssue_request = new CreateIssue_request();
req.in0 = token; //from login request (which works fine)

var issue:RemoteIssue = new RemoteIssue();
issue.project = "KLOK";
issue.summary = "My new defect";
issue.type = "2";
issue.assignee = "rmckeown";
issue.description = "this is a description on the new defect";
issue.priority = "3";
issue.status = "1";

req.in1 = issue;

jira.createIssue_request_var = req; //jira is an instance of my SOAP service.
jira.createIssue_send();

Any ideas?

Tuesday, October 7, 2008

Jira/Flex SOAP Webservice Problem

If you have been following my latest posts about Klok, you know that I am evaluating Jira as my tool to track bugs. I thought it would be cool to have an area of the Klok website show some statistics regarding the open defects as well as a way to quickly submit a defect. I figured this would be easy to implement but it is taking longer than I thought.

If you are developer the solution is shown below. 

So I enabled the SOAP service and figured it would be simple to hook up Flex to the Jira SOAP Webservice. Using the tools to generate all the necessary code in FlexBuilder I assumed I would just implement the calls to get the data and I would be off an running. Unfortunately that was not the case. 

I started with trying to just list the projects from Jira and was confused when the only data coming back was the project description. After about 5 painful hours of digging into how the generated code works. I noticed that there was code in the Base[servicename]Schema that defines the complex type for RemoteProject... which defined the sequence of properties in a different order that they are being returned by the Jira SOAP webservice. 

If you change the order in the definition to match the order in which they are being returned all seems to work.

After fighting this for so long I decided I would submit the defect to the Flex bug site only to find out that it was already there. UGH!

Monday, October 6, 2008

Klok update site back up and running

If you have been testing out the 1.5 Beta of Klok, you can now click the "Check for Updates Now" button to upgrade to the 1.5.1 Beta 2. Alternately, you can download and install the update manually.

Klok Automatic Update not working

If you tried to get the 1.5 Beta 2 version of Klok using the automatic update, you will have noticed that it doesn't work. So, until I get that fixed, you can get the new version by going to http://klok.mcgraphix.com/klok/Klok-1_5_Beta_2.air.

If you happen to be another AIR developer and have run into this issue, there is information on Adobe's site about it.

Sorry for the inconvenience.

Klok 1.5 Beta 2 now available

The new Klok 1.5 beta is available. The biggest change in this version is the completely re-written Week View. However, there are a bunch of other improvements that I will blog about throughout the week.

If you have already installed the 1.5 beta, you can launch it and navigate to the About or Preferences screen and then click "check for updates now" which should prompt you to install it.

If that doesn't work, you can submit it as a bug at http://bugs.mcgraphix.com. Just click the "create new issue" button in the nav bar.

If you haven't already installed 1.5 then you can install the 1.5 beta 2 by downloading it manually.

I just realized that I didn't update the link on the Klok 1.5 screen of the Klok site I will get that fixed today.

Friday, October 3, 2008

Flex/Actionscript XML gotcha

I spent way too long troubleshooting this issue today. I was trying to initialize an XML object with some data from my actionscript object. Here is what I was doing:
private function someFunction(myObject:Identifiable) : void {
var myXML:XML = <objectreference objectid="{myObject.id}">;
myRoot.appendChild(myXML);
}

Then later on in my code I was doing an XPath query like so:

var list:XMLList = myRoot.objectReference.(@objectId=='foo');

Can you spot the problem? It took me way to long to notice the problem, which was obvious once I admitted to myself that I needed to actually use the debugger.


The problem was that I had double quotes around the expression {myObject.id}. The code should have been:

private function someFunction(myObject:Identifiable) : void {
var myXML:XML = <objectreference objectId={myObject.id}/>;
myRoot.appendChild(myXML);
}
Since having it incorrect with the quotes doesn't cause an error, I was really baffled on this.

Get ready for Klok 1.5 Beta 2

In preparation for next beta of Klok, I have set up a bug tracking system which I am evaluating. This was mainly due to the fact that it is hard to keep track of bugs and feature requests through this blog and email. Especially since, over the past week I have gotten over 13,000 spam emails (12,000 of them in one night...ugh!).

So, if you find a bug or would like to request a new feature or improvement, please enter it into the new system so I can see how it works. If you have already sent me an email about a bug and want to try out the new system, feel free to enter it.

Once again, thanks to all the people that have tested it out so far.

Thursday, September 25, 2008

"Excertainment" is the new Entertainment

It appears that I have been tricked into excercising by Nintendo. If you haven't already seen Wii Fit, let me give you the quick explanation. You watch the TV and follow along with the trainer on the screen or play games by controlling your Mii by standing on the balance board. 

What I really like about Wii Fit, is that the user experience does a great job of making excercise, something that you normally don't want to do, fun and actually enjoyable. One unique thing that I like about it is the "Wii Fit Channel" which allows you to do your daily fitness test without having to put the game disc in the system. 

This might seem like a minor feature, but it is actually a very nice addition and makes it easier to stay aware of your weight and BMI. It is also a good example of a feature that directly supports a user's goals. The goal might be to "check my weight everyday". Sounds simple enough. Why would they go the extra mile to allow you to do that without putting the disk in? The about a real user in real life. Chances are users are adults. There is a good chance that those users also have kids. Imagine a real situtation where kids are always playing different games and you have to pry the controller away from them. The time it takes to take the old game out, find the case to put it in, find the Wii fit disk and put that in probably adds up to more time that the test takes. All in all the process of just weighing yourself would seem much more tedious if you needed the disk.

So, combine this with all the time of have be spending playing Rockband, and I might just get back into good enough shape to get my old college band (I'm the guitar player) back together.

Its really interesting to see how video games these days are really changing the way we think about them. When I got my first Atari 2600 back in 1981, video games were something that you played while sitting on the couch...though... my thumb really got a workout on that single red button.
 

Tuesday, September 16, 2008

Klok mentioned on PCWorld.com and ComputerWorld.com

A few months ago I was contacted by a writer for ComputerWorld asking for some information about Klok for an article about Adobe AIR. I hadn't heard anything in a while about it so I thought the article may have wound up in the editor's circular file. However, someone pointed out that the article is finally out. It is called "Running on AIR: Great Office Apps You Can Get Now" and can be found on PCWorld and ComputerWorld


Monday, September 15, 2008

Klok - an ADOBE MAX 2008 SEMIFINALIST

I got word last week that Klok was selected as a semifinalist for the Adobe Max Awards. I'm not sure if I have a real shot at winning but I intend to keep my fingers crossed.

Thursday, September 11, 2008

Klok - beta testing update; helpful workarounds

MISSING DATA WORKAROUND - If you go to the Preferences screen and click the button to choose a new data file folder you will be prompted with a directory browser. If you leave the default selected folder as is and click "ok", it will start working. I am working on this and will be fixed hopefully soon

Thanks William and Scott (whom both found and reported this workaround)
I wanted to personally thank all the folks who have been trying out the new version and reporting the bugs... please keep them coming. To summarize, here are the main bugs so far.
  • After upgrading from 1.0 to 1.5 , the project list appears to have been lost. 
  • When exporting the the timesheets to excel the comments are not showing up. Instead seemingly randon number appears in its place. I have a fix for this that will be in the next beta release
  • When minimizing to the dock on Macs, you cannot restore it. This is a tricky one for me since I don't have a Mac to actually debug this on. I will keep everyone posted on this one.
  • Holding down the Shift key while dragging doesn't constrain the time entries to 15 minute increments as it did in the 1.0 version. 
Once again, thanks to all of you.

If you are feeling generous and would like me to fix the Mac issue sooner :-), consider donating on the Klok website so I can buy my own Mac to debug with.


Friday, September 5, 2008

Klok 1.5 Beta - download server is back up

If you tried to download the beta this morning you have been unable to. My server was down for a bit and is now back up. Sorry for the inconvenience.

Thursday, September 4, 2008

Klok -new version public beta

WARNING - Don't download the beta unless you are willing to try out a version of Klok that may still have bugs

So I am just wrapping up a new version (1.5) of Klok and was in the process of sending out emails to all the people who have volunteered to help me test it (Thank you very much, by the way) when I realized that, I really have no reason to limit testers to just those people who I have already talked to. So, what I would like to do is open up the beta to anyone who wants to test it out.

The new version includes:

New Features:
  • System Tray Integration
  • Monthly and Weekly timesheet export with comments
  • Ability to reorganize the project tree through drag and drop
  • Drill down ability on Pie chart reports
  • Configurable data storage location
  • Context menu actions on project tree view
  • Automatic check for updates
  • Window position is remembered between sessions
Bugs Fixed:
  • Can't "work on" more than 5 items in the same session
  • Editing the start or end time from the project view screen does not update the table on that screen until you switch to another project and then come back
  • Recent projects are lost when you close and re-open Klok
  • If you have a timer running at midnight, it stops at 11:59 - This still happens (for technical reasons to be addressed later), but a second timer will start at midnight and continue counting until you stop it.
If you are willing to test it out and provide feedback, feel free to download the AIR file and let me know how it goes.

If you use Klok to track crucial data, then please back up your data file before installing the new version. I don't anticipate a problem, however, you never can be to careful.

Since I don't have a Mac or Linux machine to test Klok on, I would really appreciate anyone who can test on either of those platforms.

I you happen to think a Mac is a better platform than Windows, please donate to Klok. I will be using the donations to buy a Mac of my own. :-)

Remember, this is still a beta, so there may be bugs. However, I think I fixed more than I created ;-)




Tuesday, September 2, 2008

Google Chrome V8 vs. Tamarin

In case you have been living under a rock with no internet access, you may not have heard about the new Google web browser called Chrome. It sounds great in the comic strip, but I can't help but wonder what let Google to build their own Javascript VM (called V8). Now I am no expert in the field of virtual machines so I would be interested in anyone that can explain why the folks at Google would choose to start their own VM rather than work with the Tamarin team. For those of you who don't know, Tamarin was the result of Adobe open sourcing the Flash/Actionscript Virtual Machine.

Monday, August 25, 2008

Well...I guess I "sold out"

I have entered into the world of corporate blogging. So not only can you read my ramblings here on agileui.blogspot.com, you can also read my stuff at blogs.workscape.com. My first post called "The Hidden Costs of Poor User Interfaces" is up an ready for comments now.

Monday, August 11, 2008

Quotes like this make me cringe


"It's amazing what people have done with HTML, which was never intended to do rich Internet applications. And Flash was originally created for lightweight animation--literally for Mickey Mouse on the Web," said Brad Becker, who as group product manager for rich client platforms at Microsoft helps oversee Silverlight. "But these technologies were designed for something else, and people are really hacking them to do more."
This was in an article on CNET.

In my opinion, there is a big difference between how AJAX has be built on top of technologies that weren't meant for application development and how Flash was really rewritten to create a platform intended for application development. I don't consider what is being done with Flex and Flash as "hacking them to do more"


Thursday, August 7, 2008

The Extended User Experience

When most people think of User Experience of a product, they think of the product's physical interface which could be a UI on a screen of a virtual product or industrial design of a non-virtual product. However, the Experience (not to be confused with Jimi Hendrix's Experience), is far more than just that. It is every interaction the consumer or user has with the product and the company that produces it.

You can see examples of this with most restaurants. It isn't only about the product (the food). It is also about the experience (the atmosphere and the service). Think of Starbucks. The coffee itself is probably not enough to make it as popular as it is (IMHO).

When you deliver an online product, make sure you think beyond just the product. Comcast has done that in a very unique way. Their approach might not be right for everyone, but it certainly is an innovative way to use the social nature of the internet to better provide an "Experience"

Usability testing on a budget... but only on a Mac

If are designing software you no doubt realize the importance of usability testing your wireframes, mockups and prototypes. However, most people hear "usability testing" and automatically assume that means a giant effort at a giant cost. Well the geniuses over at Clearleft have a solution called Silverback. The real power is in its simplicity. It allows you to put a user in front of a screen and point and click their way through whatever you put on the screen while it records screen changes, mouse clicks and video of the user.

All that and its only 49.99.

It really begs the question, "Why didn't something like this already exist?"

Unfortunately, for those Windows users, it only runs on the Mac. If you know of something similar for Windows users, feel free to comment.

Why is UX hard to sell?

In any other type of product, if it is hard to use, people will look for something better. Whether it is a car, dishwasher, lawnmower or anything else, you would not put up with struggling to figure out how to use it when you can buy something else that is simpler and allows you to get to work, wash your dishes or mow your lawn more effectively.

In light of those facts, you would expect that anyone building a product, whether a physical product or a piece of software, would place ease-of-use at the top of the priority list. However, in may cases that isn't true.

It goes back to the early history of computers when the people using them were the people that created them and they understood and appreciated how difficult they were to program to do anything. So when presented with something complicated, they thought "wow... this must have been really complicated to develop". They were ok with that. But now, computers and software are "magic" to the majority of people. They don't care how complicated they are to develop and don't appreciate the effort (and they are right not to). But people creating software sometimes think that users will understand how difficult a feature is and cut them some slack if the interface isn't as good as it could be. It just isn't true anymore.

I, and other designers I'm sure, would be interested to here success stories from those designers who have overcome the "lets just make it work... we'll make it easier to use later if we have time" mentality. Feel free to comment.

Wednesday, August 6, 2008

Adaptive Path and Mozilla's Aurora - Part 2


Aurora (Part 2) from Adaptive Path on Vimeo.

The second part of the video shows two people using a mobile device to access a similar interface to the desktop version shown in the previous video. What is interesting is that the mobile device is not also a phone, camera, mp3 player and food processor as would expect in "the future".

Tuesday, August 5, 2008

Adaptive Path and Mozilla's Aurora


Aurora (Part 1) from Adaptive Path on Vimeo.

It seems that some people like this interface while others have had mixed feelings about it. But let me put my two cents in.

When I look at these types of videos I typically stand back on try to imagine a world in which I use that tool. In most cases, like with Aurora and the multi-touch coffe table, I wind up thinking that I would never use that. However, one thing to keep in mind is that the purpose of these futuristic visionary interfaces is not to predict exactly what the future will hold. The real purpose to to explore the possibilities much like a concept car from an auto manufacturer. In most cases the total package never gets rolled out but certain aspects of them get rolled into more realistic versions of cars.

So while I think some of it is interesting from an interaction design aspect, other parts seem like a solution looking for a problem to solve... but thats ok and I commend Adaptive Path for going well outside the box.

Friday, August 1, 2008

Worst UI Ever: Too much information

Have you ever heard someone say that more information than you need couldn't hurt? In some cases that is true. However, most of the time, when it comes to communicating effectively too much information can definitely "hurt" by overwhelming the reader and ultimately confusing them. This example comes from the the US Army website and is intended to show how many pushups one must do in order to pass basic combat training. Here is the screenshot...

As you can see this grid has quite a few numbers in it... 750 cells of data. There are only 20 numbers that are actually useful to support the goal of: I want to know how many pushups I have to do to pass. The rest of the numbers are all either failing amounts or more than you need. Granted, there may be a secondary goal such as I want to know what my grade would be if I did 100 pushups. However, a grid of 750 numbers is not the best way to do that either.

Something like this would more effectively meet the goals of the user trying to see how many pushups he needs to do to pass each test.


If you find yourself saying "I'm not sure what data the user needs so lets show all of it" then you probably haven't thought enough about who your users are and why they are using your site or application. You must resist dumping the data on screen like an export from your database. It will only overwhelm the reader.

It is no different than if you ask someone on the street the time and he proceeds to list off the time in every possible timezone. That is useful data to someone but not me and not right now.

Adobe Media Player - Can't download it?

Is it just me or is there a problem with the download site for Adobe Media Player? If I go to http://get.adobe.com/amp/ there is no button to actually download it. It appears that the badge installer is not clickable. The text on the page says "If you click install now..." but the "install now" appears to be missing.

For those of you that run into this problem, you can get it from the Adobe AIR Marketplace

Thursday, July 31, 2008

If you have ever said that Comic Sans was a worthless font... think again

This will change your mind: http://www.collegehumor.com/video:1823766

Here's something you should think about but probably don't

How many of you have websites? Quite a few I bet. Now, how many have designed your own website? Not quite as many but a lot. Now, how many of you have actually designed a 404 error page? Not as many...what happened? Unfortunately as designers we spend a lot of time thinking about what the UI should be under normal circumstances. This is also why things like form validation and error messages are usually an afterthought.

The 404 error page is one of those things that you assume people on see when they make a mistake and enter an nonexistent page url. This is probably true in many cases, but it could also be because you made a change to a page on your site and inadvertently broke a link (that never happens does it?) Regardless of why people wind up on the error page they end up in the same situation since they were expecting the content they requested and didn't. So, why not take the opportunity to help the visitor find what they were actually looking for. Robert Hoekman, Jr. talks about this in his book Designing the Obvious (which is great by the way). Take a look on page 1154 and you will see a discussion about it.

For some ideas on how you can create a better error page, also check out http://patterntap.com/tap/collection/404-pages

And before anyone comments and asks if my sites http://www.mcgraphix.com and http://klok.mcgraphix.com have custom error pages, let me admit that they don't. Hey... I'n not perfect you know. But, I will be rectifying that immediately.

Monday, June 30, 2008

StyledText - Free Flex Component

As anyone who is familiar with Flex knows, you can style most of your components using CSS. Most people are also familiar with the Text component and its ability to render HTML using its htmlText property. The problem for me has always been that the CSS "classes" you define in your application's CSS are not available to the HTML content of a Text component. In other words, if your css had this in it:


a {
color:#ff0000;
text-decoration:underline;
}

and your Text components htmlText property had something like this in it:


<p>This is some content with <a href="http://www.mcgraphix.com/">a link</a> in it</p>

the link, would not be red or underlined.

So, after a quick search on Google with no luck, I figured I would just create my own solution. You can check it out for yourself (view source is enabled) or download the source code

Thursday, June 19, 2008

Klok in the top 10

It looks like Klok has made the top 10 apps making AIR worth installing (at least according to lifehacker.com). Thanks to Kevin for the kind words. I highly recommend checking out some of the other apps on that list too. There are also, plenty of other great AIR apps worth checking out too over at the Adobe AIR Marketplace.

Thursday, May 22, 2008

Backing up/Transferring Klok data

Another common question I get about Klok is how can I back up my data "just in case". The data for Klok is stored in a file called klok.dat. It can be found at

Windows XP: C:\Documents and Settings\[User Name]\Application Data\Klok.AF6B2973D903BFAE0589C27890FE0146C233490A.1\Local Store

Windows Vista: C:\Users\[User Name]\AppData\Roaming\Klok.AF6B2973D903BFAE0589C27890FE0146C233490A.1\Local Store

Close Klok and copy that file somewhere safe. In the event of a problem, just copy that file back and start Klok and you will get your data back. As you might have guessed, you could use this method to transfer your data between computers if you wanted to, essentially allowing you to "sync" multiple instances of Klok.

Creating Project Templates in Klok

One of the common things I have been asked about Klok is how to create or modify the project templates you see when you create a new project. The templates are completely configurable however, I hadn't actually documented it anywhere. So, if you want to create your own templates here's how you do it.
  1. Open the file C:\Program Files\Klok\ProjectTemplates.xml (This is for XP or Vista. I'm not sure where this ends up on a mac...If you do, post a comment)

  2. Copy and paste one of the existing <template>...</template> tags and edit the names of the projects. Notice that the projects can be nested as deeply as you want.

  3. Restart Klok and your new template will show up in the dropdown when you create a new project.

Let me know if you have any problems with it.


Tuesday, May 20, 2008

Bullet Graph - Free Flex Component

I was recently reading Stephen Few's book entitled "Information Dashboard Design" and was exposed to many examples of the "bullet graph". While most of the examples show them being used to show sales type targets, it got me to thinking that they may be a good way to show actual time spent vs. the estimated time for a project in Klok. I found that there was no out-of-the-box component that met the specs that Mr. Few describes. So, I decided to put one together for myself. Here is a screenshot.


Granted, this could probably be made more configurable, but this is just the first crack at it. So, right now, you can set the label, target, actual value and give the ranges that would indicate "bad", "satisfactory" or "good". You can also specify how many tick marks should be shown on the quantitative scale.

Feel free to check it out here (view source is enabled) or download the zip here.

I highly recommend Stephen's book for anyone who is creating any application that needs to display complex data. You don't have to be building a traditional "Dashboard" put his suggestions to good use.

Wednesday, May 14, 2008

New Klok Feature- customizable remote data storage location - vote now

I have been getting quite a few emails lately regarding Klok. Many people are making some great suggestions for future versions. I would have to say that the most frequent request is to add the ability to store the data on a remote server or USB drive. I usually work on my laptop, which is obviously portable, so I never really thought about this as being required.

So here is the question, is this important enough for me to put out another update for Klok Version 1 or can you all wait for the next version which should be done in the next few months. I am leaning towards putting out another update for V1. Please let me know what you think.

Also, if you could have one additional feature in that update what would you like to see?

Tuesday, May 6, 2008

Adobe Feeds to the rescue

In a previous post I had mentioned how lost I felt with MXNA not working. Well, in case you haven't heard, it is back with a new url and it seems to be much faster. Now if only the cool Flex front end I had been using still worked :-)

Tuesday, April 15, 2008

The sky is falling! The sky is falling!

Is it just me or have there been a lot of blog posts lately in response to Grant Skinner's post about the memory leak in Flash Player? Now I don't mean to say that, this isn't a problem. But posts like this or this are a bit over the top. The problem doesn't mean that applications can't be built with AIR or Flex. Grant Skinner's description describes the problem pretty accurately which to me sounds like they would never affect many applications.

In the first link above, Jim Robson title's his post "Time to switch to Ajax?" which I find a little humorous since Internet Explorer has some serious memory issues of its own which make AJAX apps just a susceptible to memory issues.

I, like everyone else, hope that Adobe makes this problem easier to deal with, but I don't think we should all run for cover just yet.

Monday, April 14, 2008

MXNA is down. What do I do?

That title isn't meant to be rhetorical. I really don't know where to go for my daily news. I guess I didn't realize how much I rely on it. It is a good reminder of how what we think and what is true are not always the same. If you asked me, I probably would have said that I use it sometimes but it isn't essential to my daily life. The reality is that it truly is essential.

I have to pack some kind of User Experience lesson in here, so here goes. Don't trust what user's tell you. They become so unaware of the things that use all the time that they take them for granted. Anyone who looked over my should on any given day, they would probably notice that every time I am doing a build (which takes a couple of minutes), I switch over to my browser window which always has the first tab open to http://thoughtfaqtory.com/flex/mxnaviewer/.

So keep that in mind when you want to find out how users actually use the software you build. Just remember to ignore what they tell you and pay attention to what they show you.

Sunday, April 13, 2008

Worst UI Ever - Progressive Disclosure

So here is a little example of what not to do. Before I go any further, let just say that Progressive Disclosure itself is not bad. In fact it is a very useful tool in many situations where you need so show more options as a result of some previous option being selected. It is just this use of it that doesn't work.

I am in the market for a minivan so I head over to the Toyota site to see what it would cost for the one I am looking for. The site is looks very nice, however I ran into this little problem. The dropdown shown below has a clearly labeled link called "Build Your Sienna" as shown below.


When clicking it, the problem is obvious


I actually had expected to be taken to the "Build Your Sienna" screen rather than have this mysterious little form pop up. In fact, for a second or two I didn't even notice it. When I did notice it, I wasn't sure what I was supposed to do. So I just clicked "Build Your Sienna" again. While my mouse button was held down, the words "Zip code" were displayed in the form field. When I released the button, it went away again.

Since I didn't think my zip code was relevant, I just clicked on "Go" and was met with this:


Apparently, a zip code is required in order for me to build my vehicle.

First of all, the if the zip code field was going to be there it should be labeled initially. This could just be a bug due to me using Firefox. Perhaps the site wasn't tested enough.

In my opinion though, if a zip code is a required part of building my vehicle then it should be part of the vehicle building process rather than this unlabeled popup. The reason for the zip code is probably due to changing costs based on geographical location. They may not want to say that on the site, but they could have said something like "Your zip code is used to find dealers near you that might have the vehicle you build in stock" This would do two things, give the user a reason why the zip code is needed and also benefit the customer since there is a good chance that a potential buyer might want to actually go test drive the vehicle at a local dealership.

While it might seem cool to add the little form using Progressive Disclosure, this is not an appropriate place for it. "How" we put stuff on screen is only part of the equation. The "Why" and "What" are usually far more important.

Thursday, April 10, 2008

Microsoft makes good - A User Experience Story

So I started my day today by firing up my XBox 360 only to find 3 red blinking lights in the Ring of Light". Now, hardware is not my specialty, but I immediately knew this couldn't be a good sign. And, since I had my original XBox suffer a similar fate I was fairly irritated all day. Since I didn't have time to call customer support this morning, I had to wait til 10:45 at night to call about it. Of course I know it is a year and a half old so I am probably out of luck, but why not give it a shot?

So after a 10 minute phone call with an unusually helpful customer support tech, I was told that it is most likely a hardware failure but Microsoft is extending the warranty and fixing this kind of thing for free.

You could argue that, the thing shouldn't have broken in the first place and I would agree. But this post is more about how a user's perception of a product and a company can be influenced by all aspects of the user experience, not just the product itself. It isn't only about how easy it is to accomplish a task. It is about fulfilling users' needs. Usually these needs can easily be described as goals, such as "I want to play a game" or "I want to watch a DVD". However, there is another type of goal which is often forgotten since it isn't related to the task at hand. Regardless of the product in question, it is always a user goal to "not feel stupid". This type of "feeling" goal is important. In the case of Microsoft's XBox support "product", it is very important that the user not feel stupid or not feel unimportant.

If I look back at my experience, I very quickly went from feeling irritated and angry (when I thought I was gonna be screwed) to feeling very satisfied, despite the fact that I can't play my XBox for probably a couple of weeks.

So, kudos to Microsoft in this case... but don't think I'm not keeping an eye on you

Wednesday, April 9, 2008

Free 42 inch flat panel tv... for real.

I had to take some time off from Klok development to work on a client's website. So I will be getting back on track. Along with the new site, is a promotion in which you can get some free stuff. If you are in the market for a home theater or media room, check out the site and free offer.

Hopefull this will make up for that fact that I haven't spent more than 5 minutes on Klok in the last week.

Tuesday, April 1, 2008

Moonwalking bears and RIAs - The effects of change blindness

Change blindness is a phenomenon where humans fail to see major changes within the visual field regardless of how significant the change is. For a fun example of this effect, take a look at this. Or check out Wikipedia's page on the subject.

If you are wondering what this has to do with RIAs, lets think back to the web 1.0 days. In most applications the only way to see changes in data was to refresh the entire screen which resulted in a brief loss of focus followed by an attempt to regain focus once the page was refreshed. Usually the new page was different enough to make you briefly rescan the entire screen.

Now fast forward a few years and we are in Web 2.0 land with all the RIA goodness thanks to AJAX, Flex, Flash, etc. With these new technologies has come the ability to refresh only the data of the screen which, on one hand, is much better since you don't have to reacquaint yourself with the screen after every change. However, on the other hand, without page refreshes it may become difficult for users to actually notice that a particular portion of the screen has changed. For example, if I add an item to my shopping cart, I could miss the fact that my total or estimated delivery date has changed.

Keep in mind that if it is important that the user notices a change, then we must make it obvious (with a non-modal) notification.

I refuse to blog today

Today I will not be blogging anything (except this and my earlier post :-) because I fear that nothing is taken seriously today. Instead here are some links to other April fools day posts to keep you entertained. Feel free to add some in your comments.

Google - Time travel
Flash on the iPhone finally
Microsoft will own us all eventually
Now this is just crazy talk

Klok update - bugs fixed

A couple of serious bugs have been fixed in this update of Klok. Visit the official Klok site for details

Monday, March 31, 2008

Klok bug found - workaround

Recently several people have reported bugs with Klok that are severe. If you have started a timer which is currently running, do not try to change that entries start time. If you realize for example that "hey I should have started the timer 20 minutes ago" resist the urge to drag the start time. Just wait until you stop the timer and then adjust the start time. I am working on a fix for this now. An update will be posted here soon.

Sorry for the inconvenience.

Thursday, March 27, 2008

Flex Developer Challenge - Are you up to it?

Unfortunately, I don't have anything to reward you with if you decide to take on this challenge except my respect and a free license of Klok (of course that is free anyway but still). So here is the challenge.

As you all know, smooth scrolling didn't make it into Flex 3. You can find some info and a head start at Alex's Flex Closet. If you are currently working on implementing this for datagrids (horizontal and vertical scrolling) and lists with variableRowHeight="true" that would be awesome. If you aren't already working on it but like a good challenge, I'm sure the rest of the Flex developers of the world would appreciate it.

If anyone has something more tangible to offer in reward feel free to comment here.

To save or not to save

Every time I write something on this blog I am reminded that some software is so transparent that I don't even need to think about it. Take Blogger for example. As I type this text, I often stop typing for a few seconds at a time to think... like just then...When I become idle for a bit Blogger notices and takes that time to automatically save my work.


It tells me when it last did it so I can be sure that if something went wrong and I lost my internet connection or my machine crashed, all but the last few words would be safe. If I click SAVE NOW, I get this so I can differentiate when I saved vs. an auto-save.


Notice that the text saying when it was saved is not modal, so I can happily ignore it if I want. This is much better than an Alert saying the same thing since you can't ignore an Alert.

Usually the argument against this goes like this "We can't decide when the user should save" or "What if the user doesn't want to save?" In actuality, it is safe to assume that the user always wants to save. After all, how often do you spend a bunch of time writing something and then not want to save it? You may infrequently, discard changes but that certainly happens much less often. Since it happens so infrequently, Blogger has no way to not save. This was no doubt a concious decision based on knowledge of real users' goals.

Now, some applications may need the ability to not save. But, that doesn't mean that you can't have auto-save. One solution would be to store the last manually saved data in a secondary location until the next manual save. Then if you wanted to revert to your last save after auto-saves have occured, you could simply retrieve it from that secondary location. If revert is never needed, then you could just throw that data away when the session ends.

I can already hear the arguments now. "That would be very difficult to implement", "We should spend our time on REAL features", "How would referential integrity be maintained?", etc.

In some applications this not trivial. But, as usual, the arguments against rarely mention Jane Smith, the professional writer. Remember, software is meant for humans to use to solve their problems. We can't leave them out of the equation.

Wednesday, March 26, 2008

Worst UI Ever: Error Messages Part 3

As a user, I always find these terribly frustrating. As a Interaction Designer, I find these somewhat funny. Here is a tandem set of error messages from Microsoft Excel that were really frustrating at the time.

First off, my Excel document had a Word document embedded in it. I had double clicked the icon to launch Word. When I tried to close Excel with Word still open I received this error message.


Now, assuming that the error had something to do with the open Word document, you have to wonder why the error message didn't say something like "You cannot close this spreadsheet while the embedded document is open". Obviously at some point in the development, someone decided that "Reference is not valid" was going to be an appropriate message to show Bob Smith the accountant tracking inventory. Even as a developer, I have no idea what that could mean. But, since the only choice is "OK", I guessed that I should click it. After that, nothing seemed to happen, so I decided to try quiting Excel entirely. And then...

Ummm..... huh? What do you mean you can't quit Excel? Am I not in control of my own computer. I said quit and and you should quit. Again, somewhere in the development process someone decided that it would be ok to be in a state in which the application cannot stop. Like a bus with no brakes, all we can do is honk the horn and tell people we can't stop.

I assumed that the problem has to do with this Word document. So I just hit "OK" (By the way... things DO NOT feel ok at this point). I close Word and then try to quit word again and get...




... hmmm... So now things are not looking good. So I do what everyone would do and open up Task Manager, click on the Process tab, find excel and click End Process. So, if I could "quit" Excel, why did Excel say it couldn't?

This is a case where these messages were probably not expected to occur, but even if there is an unlikely chance of it, a small amount of time could have been spent to at least give some idea of why the program was in this state. A few minutes more, and the message could have explained how to recover, albeit a round about way. Almost anything would have been better than these messages.

Before all the Mac followers start proclaiming that this is why Microsoft is evil, let me just remind you of this:

Watch out... its gonna blow!

In Apple's defense though, most of the time they at least did a better job of telling you how to get past your problem.


However, the bomb icon is a bit disturbing and there is really no point in saying "unimplemented trap".

The bottom line is that if you are going to say something to the user about an error condition, make sure it is in a language they can understand. "Referenence Error" and "Unimplemented Trap" might as well be in Greek to most people.

Tuesday, March 25, 2008

RIAs give new life to browsers

I was poking around the IE 8 beta site and had a thought. Given that the developer community seems to be looking outside the typical browser standards (HTML, CSS, Javascript) for ways to build richer applications, it might be easy to jump to the conclusion that the browser will be reduced to a simple delivery mechanism for Flash/Flex, Silverlight and JavaFX applications.

However, I think this trend is likely to release the browser of its responsibility of an application platform. Since it was never intended to be that platform, all the complexity that went along with it just detracts from its value as a platform for retrieving and displaying information. In the role of information delivery I think the browser is a wonderful thing. Features like the new WebSlices and Activities features of IE8 are information-centric features.

Just like any employee, if we let the browser do the job it was hired to do, it can really excel at it.

User Experience - Homer Simpson Style - take 2

Doh!....Sorry for the re-post, but it seems that something went wrong with my first post on the subject which I think I have now fixed.

Does Forrester think AJAX is over?

There is an interesting synopsis of a Forrester paper over at Computerworld which seems to indicate that the sky is falling if you are building AJAX apps. While I agree that performance problems and lack of rich interactivity still put AJAX behind Flex or Flash for applications, I think the authors took it a little too far. I don't intend to go pay for the actual paper from Forrester, but I have to imagine that their conclusion is a little less alarmist.

Having built many AJAX and Flex applications I personally feel that it is harder to deliver as rich a user experience using AJAX as with Flex. My gripe with the article however, is that the synopsis specifically talks about power users as being disappointed. The reality is that only a small percentage of users of most applications are ever power users. Similarly, only a small percentage are novice users for very long. The majority of users are intermediate users. So be careful about choosing a technology based on the wrong population.

Sunday, March 23, 2008

User Experience Problems - Not just for software anymore

Recently, I found myself the unfortunate victim of a poorly redesigned User Experience. No... this wasn't a new version of some software program. This was a change in the cafeteria at my office. Bear with me...this isn't just me ranting.

I don't eat in the cafeteria much. In fact I almost never eat in the cafeteria. I do, however, get a drink at the cafeteria daily. Up until last week, the process was very simple. I could go to the soda machine which had the cups, lids and straws kept in a plastic dispenser directly to the right of the soda machine. So the process of getting a drink was simple. Pick up the cup, fill with ice and soda, retrieve a cover from the dispenser, get a straw and off I go.

One day I noticed there were no straws next to the machine. I assumed the dispenser needed to be refilled. I asked someone for more straws and he quickly walked out into the the area where all the tables are (the soda machine is in the area with the kitchen and salad bar) and opened the cabinet below the counter where the utensils and napkins were stored and pulled out a box of straws. I took one and off I went.

Ever since that day, there have been no straws near the soda machine. They are now stored along side the napkins and utensils.

So here is the problem. The straws appear to now be kept in the current location for the sake of keeping them near the place where the extra stock is stored, instead of where they are actually needed. This is often a problem in software development as well. How many times have you heard a developer say "it is easier to put the button here" or "we have to do it this way for techincal reasons." There may be times when it is techincally challenging to make software do what is best for its users. However, the problem could have easily been solved before it was a problem, by thinking about how it might be used.

One could argue that many people who come to the cafeteria are there to eat so they will likely need napkins and utensils as well. However, the is a whole other type of visitor, that frequent the cafeteria. This is also a common problem in software. As developers, it can be very difficult to think about anything other than "The User". The problem is "The User" is a combination of every possible type of user which leads to an interface created for a person that doesn't really exist. If the cafeteria manager thought about "customers here to eat", "customers here for a snack" and "customers here for a beverage" then it would be obvious that things should be set up to accomodate each of them. For example, customers planning to eat would likely need utensils, napkins and straws. The current set up would work well for them. Customers who came in just for coffee or a soda would probably never need to visit the seating area at all. Placing sugar, creamer, straws and napkins right by the checkout would make a lot of sense.

We can do this in software design as well by thinking about the types of users the system might have. The point is to make sure you are supporting the real users of your software so that you don't make the system difficult or ineffecient for a significant amount of them.

User Experience - Homer Simpson Style

I happened upon a Simpson's episode the other day that, despite having nothing to do with User Experience, made me think of a common experience in web applications. The episode in question is called The Wizard of Evergreen Terrace. The basic plot of the episode is that Homer realizes that he hasn't done much in his life and decides to be an inventor. Obviously, many funny gags follow. The thing that prompted this blog entry was one of Homer's inventions. He called it the "Everything's ok alarm". Basically it beeps loudly every three seconds unless something isn't ok.

If you are wondering what that has to do with the User Experience of software, let me set the stage. How many times have you been prompted with an Alert box telling you that some was "ok". This might be something like "Your changes were saved successfully" or something to that effect. The reality is that, while it would be appropriate to Alert the user when changes failed to be saved, it isn't appropriate to say "everything's ok" with the software equivalent of an alarm going off.

Homer's invention illustrates the absurdity of using the wrong method of communication in the "real world", however, sometimes we forget that the same care must be taken when selecting a method to communicate in software.

A better way to alert the user that something was successful would be to display a message, perhaps next to the save button, saying "Changes were saved at 12:34 pm" This notifies the user that the changes were saved without forcing the user to acknowledge what a great job the software did doing its job. It also adds more value because it indicates the last time changes were saved which may be important in some applications.

So lets leave the "Everything's OK alarm" to the cartoons... and I don't want to see any software equivalents of the "makeup gun" either.

Wednesday, March 19, 2008

Klok version 2 - Mac testers wanted

In the next major version of Klok, I intend on adding many new features. One of those features is the ability to minimize to the system tray. You would then be able to "pause" and "restart" your current task if you get pulled away from your desk for example.

It has been a long time since I worked on a Mac, so I can't even remember if they have any equivalent feature. If so, I would like to add it and would need some help testing it. If not, I would appreciate somone with a Mac testing it out to make sure I don't inadvertantly cause a bug that isn't apparent on Windows.

If you are interested, email me at rob (at) mcgraphix (dot) com

Monday, March 10, 2008

Klok makes Mashable.com "10 Adobe Air Apps Worth a Look" list

I was wondering why around March 5 and 6 the Klok site got 50 times more hits than usual. Not all is attributed to the mashable.com post on March 5, but a good chunk was. Thanks to whomever put that up.

Thursday, March 6, 2008

Flash...iPhone...What the hell?

In my opinion not having Flash on the iPhone is not good for anyone... it isn't good for Apple or Adobe, yet somehow neither one seems to be ready to give in. If it is really just an issue over PDF rendering, it is even worse. If you were putting out a hand-held computer (which is what the iPhone really is) with all the power of the iPhone, wouldn't want to give the consumer the best possible experience? Wouldn't you want developers all over the world to create apps that run on it?

Apparently Steve Job's is either a complete nut-job or a genius beyond all of our understanding. Ordinarily I would say that he is making a huge mistake, but for some reason he seems to pull off some long shots.

Thursday, February 28, 2008

Klok and Color Scheme Builder updated for AIR 1.0

I forgot to mention in my previous post that Color Scheme Builder was also updated to AIR 1.0.

Klok update for AIR 1.0


EXISTING USERS READ THIS BEFORE INSTALLING
See the section below on "Migrating to the new version"

Over the last few days, I have recieved at least a hundred emails asking when an update for AIR 1.0 would be available. I am happy to say, that it is now ready. While there is still much work to be done, there are some new things worth checking out.

Details are below but if you don't feel like reading, the new features are:

  • Weekly timesheet excel export
  • Totals on the week view screen
  • Selectable week/month on the reports screen
  • Archive feature
  • Un-delete across multiple sessions

First of all, the data format on the back end has changed a bit. This change allowed me to now store items in the trash between sessions. So you can now un-delete something even if you have closed Klok. To empty the trash, just click on the trash can and click "Empty Trash".

I have also added an Archive feature which will allow you to hide clients/projects/tasks from the tree view, the week view and all reporting. Simply drag a client, project or task and drop it on the file cabinet icon in the bottom left. To un-archive, double click the file cabinet and pick the items you want. When archiving an item, all sub items are also archived. When un-archiving all parent items are un-archived.

You will also notice that in the place where the calendar used to be, there is now a "Common Tasks" list (currently with only one item in it). Probably the most common feature request over the last few months has been for better reporting. So in a first step to getting to something useful, I have added the View/Export Weekly Timesheet feature. Clicking that link, will launch a preview of the timesheet for the selected week. This gives you daily and weekly totals for each task, plus totals overall. To get this out of Klok and into some other project (Excel for example), you can just drag the table of data onto your desktop or directly into excel. From there, you can do with it what you please.

Speaking of totals, I have also added daily totals at the bottom of the week view. I realize there is a slight alignment problem which I will fix in the next update.

If you were wondering what happened to the calendar that was on the left, I found that it wasn't as useful as what is going to be in the common tasks list. So, I moved it into a dropdown above the week view where it shows the currently selected date. Just click the little calendar icon.

I have also moved the zooming feature which was down the right hand side of the screen. The complaint was that it wasn't obvious. So it is now in the area right above the week view.

On the old reports screen I haven't changed much except for adding the ability to pick a week or month other than the current and previous ones. The bug where "this week" and "next week" were launching the wrong reports has also been fixed.

Migrating to the new version
Before installing backup you old data file called data.dat. The location of this file differs on different operating systems.
On Windows XP it is C:\Documents and Settings\[UserName]\Application Data\TimeTracker\Local Store\data.dat On Windows Vista it is: C:\Users\[UserName]\AppData\Roaming\TimeTracker\Local Store\data.dat

After you install the new version, you will want to copy your backed up data file into the new install location which would be:
XP: C:\Documents and Settings\[UserName]\Application Data\Klok.AF6B2973D903BFAE0589C27890FE0146C233490A.1\Local Store\
Vista: C:\Users\[UserName]\AppData\Roaming\Klok.AF6B2973D903BFAE0589C27890FE0146C233490A.1\Local Store

If that folder has a file called klok.dat, delete it. DO NOT rename the data.dat file to klok.dat. Then next time you launch Klok, it will automatically migrate the data from the old format to the new format.

As usual, post any comments, suggestions or bugs here.

Wednesday, February 20, 2008

Kuler API Woes

Since launching my Color Scheme Builder almost a month ago, I have received many emails asking if I intended to incorporate Kuler themes into my application. I had thought of that, but due to the wording in the Kuler Terms of Use (8. APIs and RSS Feeds > b. Restrictions. > v1.) , it appears that I can't do that.

I am afraid that my application could be considered to one that "replicates or attempts to replace" Kuler. My intention was never to replace Kuler, since it is so cool. I just wanted something I could use offline.

For now, I will leave it as is. Perhaps I will try to get permission in some way.

Friday, February 1, 2008

Yahoo/Microsoft Conspiracy Theory

Is it just coincidence that Yahoo replaced their Flex based maps application with an AJAX version? Could a Silverlight one be in the works? I have also heard reports of many of the Flex developers at Yahoo leaving and not being replaced?... The truth is out there somewhere... just Google it :-)

Thursday, January 31, 2008

Audio Capture Component?

It seems to me like this would be a very handy component. If you don't know what I mean by it, let me explain. What I want to build is an application that runs on a tablet PC but sometimes requires the user to enter extensive notes. I am trying to avoid requiring anyone to use the keyboard to enter this information. What I would like is a way for the user to speak the notes, capture it as an audio file, and store it on the file system and eventually back on the server. I know FMS would allow me to do it but since this will be an AIR application used by people "in the field", they may not always have a connection back to the server at the time of the recording which is why I need to store it on the file system.

If this doesn't already exist, it might be my next pet project.

Thursday, January 24, 2008

What Kuler Desktop should be

First of all let me say that I think Kuler is one of the, forgive the pun, coolest Flex apps I have seen. Kuler desktop however, leaves a lot to be desired. It seems to me that Kuler is a perfect example of an app that should be a desktop application that can be occasionally connected to the internet to retrieve published color schemes. Its main functionality, the creation of color schemes, does not require you to be online.

When I first read about Kuler desktop I had high hopes but was dissappointed. So, I set out to create something that I could use offline. What I came up with is this:



This doesn't do everything that Kuler does obviously but it serves my need for a way to create color schemes plus additional tints and shades. You simply pick your colors using the HSB sliders. If you want to link the hues of your colors, you can click the small link icon which shows up when you hover a large color swatch. Once linked, changes to the hue of the main color are mirrored in the linked colors. I'm not sure linking only the hue is enough. What do you think? Once linked, should change to saturation or brightness also be mirrored?

To get the HEX code for any swatch, including the tints and shades, simply right click and choose "Copy HEX code" to copy the code to your clipboard.

There are some additional features in the works and the current version may be buggy. Feel free to try it out by clicking here (or try out the badge installer on the right) and let me know what you think.

Wednesday, January 16, 2008

Flex 3 Programmatic skinning gotcha

I recently came across what seemed like a bug in ProgrammaticSkin. It turned out not to be a bug, but it was a confusing API. Anyway, what I was trying to do was create a skin that can be used for buttons that would be a bit more interesting than the built in border skin.

So I fired up Illustrator and figured out what I wanted. What I needed to do was create a vertical gradient and then overlay a partially transparent horizontal gradient on top of it. Sounds easy enough. However what I tried to do didn't work. Can you spot why?

var hm:Matrix = horizontalGradientMatrix(0, 0, w, h);
var vm:Matrix = verticalGradientMatrix(0, 0, w, h);

var fillColors:Array = [bgColor,
ColorUtil.adjustBrightness(bgColor,
brightnessAdjustment),
bgColor];

g.beginGradientFill("linear", fillColors,
[1, 1, 1], [0, 127, 255], hm);

g.drawRect(b.left, b.top, w, h);
g.endFill();


fillColors = [0xffffff,
0xffffff,
bgColor,
bgColor];

var hilightStop:Number =
Math.min(shininess * 126, 126);

g.beginGradientFill("linear",
fillColors, [.20, .20, .20, .20],
[0, hilightStop, 127, 255], vm);

g.drawRect(b.left, b.top, w, h);
g.endFill();


I looked at this for quite a while before realizing why both gradients were vertical. It turns out that horizontalGradientMatrix() and verticalGradientMatrix() don't create and return a Matrix. What it does, is modify its own instance of a Matrix and then return it. So you end up with hm an vm both referencing the same Matrix object. Since verticalGradientMatrix() was called last, that instance was a vertical gradient.

The solution is to call horizontalGradientMatrix(), do what you need with the horizontal one, then call verticalGradientMatrix() to get the vertical one. So the code above becomes this.

var m:Matrix = horizontalGradientMatrix(0, 0, w, h);

var fillColors:Array = [bgColor,
ColorUtil.adjustBrightness(bgColor,
brightnessAdjustment),
bgColor];

g.beginGradientFill("linear", fillColors,
[1, 1, 1], [0, 127, 255], m);

g.drawRect(b.left, b.top, w, h);
g.endFill();

m = verticalGradientMatrix(0, 0, w, h);

fillColors = [0xffffff,
0xffffff,
bgColor,
bgColor];

var hilightStop:Number =
Math.min(shininess * 126, 126);

g.beginGradientFill("linear",
fillColors, [.20, .20, .20, .20],
[0, hilightStop, 127, 255], m);

g.drawRect(b.left, b.top, w, h);
g.endFill();


The result is now exact what I want. Notice the subtle glow achieved by the slightly lighter center portion of the button.