Archive for March 12th, 2010

Allopurinol For Sale

Friday, March 12th, 2010

…continued from Part 2

Allopurinol For Sale, So by now your applications are awesome!  You are winning industry awards, your users want you, and developers want to be you.  Things couldn’t be better!  Well, baby steps are good anyway…

There are two main lessons to take away from this rant article:

Lesson 1: Don’t leave it to the user

If the help desk needs information then applications need to take care of that automatically.  Just like Windows Error Reporting, applications need to submit crash data automatically if it matters.  The user is using software for one reason: to get work done.  Anything that gets in the way of that is a failure.  If you need to break flow for a dialog it had better be a critical error.  If it’s recoverable, then it’s not the user’s business.  Deal with it and leave the user alone!

Lesson 2: Recover automatically

If you have an I/O error, try again.  Delay if you need to so you don’t overload systems, but don’t make the user think about it.  If your application needs to crash, send a crash dump and then trigger a restart.  Windows has a great feature called Application Recovery and Restart where you have a chance to clean up from before the crash and recover pretty quickly.  It takes a little plumbing work but it’s worth it.

Lesson 3: Present information that’s actually useful

Don’t interrupt the user.  If you think you need to, think it through again.  If you still need to, make it painless as possible.  Don’t make the user remember things – just give them something relevant to complete their task.

 

Now that you know what not to do, here are few thoughts on better error handling.  It may or may not work in your application, but hopefully it will inspire more painless errors:

Solution 1: Dashboard

I’m guessing someone is already doing this, but nothing that I use.  Most applications, certainly LOB systems, have certain dependencies: network, file server, LOB system, database.  Create a bar across on one your application’s borders to indicate the state of these dependencies.  A green means good, red means bad.  A flash means a change to error.  When the LOB system goes red, that implies that something in the background detected a problem.  Hopefully it hasn’t even affected the user yet.  If they care, they can click the indicator to see details (tooltip or maybe even modal since the user initiated it).  With such a feature they will have warm fuzzies when things are green, and know who to blame when they see red (see what I did there?).

Solution 2: Interrupt Sparingly

Show modal “working” dialogs only if the user absolutely cannot work while something is resolved.  Indicate that the app is retrying.  If the user can work in part of the system but not another, then disable links to that part of the system until it’s resolved, and retry in the background to know when it’s resolved.  Take it out of the user’s hands.

Solution 3: Queued updates

Try to avoid real-time system updates whenever possible.  Queue up all updates.  In normal circumstances they will be immediately processed, but when problems arise they will seamlessly be managed.  Write queued data to disk to resume after problems.  Consider if updates should “expire” if in queue too long.  Discreetly display the number of pending updates to user.  This won’t work everywhere, but is ideal in a data-entry system.  This also has the side benefit of cleanly breaking blocking operations from the user interface.

Solution 4: Fatal errors

Certainly you will need to interrupt the user sometimes.  If you are expecting a license file and it isn’t there, or a critical DLL is missing all of a sudden, then there’s nothing that you can do about it.  You’ll need to stop the user.  This is the one situation that the user must be given a message.  The key is to make it short and to the point.  As little boilerplate as possible.  “The application is not configured properly.  A message has been sent to the help desk.  The application will now exit.”

 

There is no magic bullet, but you can make things better.  You can reduce messages – instead of hourly or daily occurrences, maybe they become weekly.  When errors do occur, they will hopefully stand out more.  Maybe then, users will notice messages.  Of course, if you do good enough jobs, you’ll already be fixing the issue by the time they report it!

. Allopurinol steet value. Online Allopurinol without a prescription. My Allopurinol experience. Buying Allopurinol online over the counter. Online buying Allopurinol. Get Allopurinol. Where can i order Allopurinol without prescription. Allopurinol maximum dosage. Buy Allopurinol without a prescription. Buy cheap Allopurinol no rx. Allopurinol brand name. Effects of Allopurinol. Where can i buy cheapest Allopurinol online. Allopurinol without prescription. Allopurinol interactions. Real brand Allopurinol online. Buy no prescription Allopurinol online. Allopurinol canada, mexico, india. Allopurinol over the counter. Rx free Allopurinol. Allopurinol price. Cheap Allopurinol no rx. Buy generic Allopurinol. Is Allopurinol safe. Order Allopurinol from United States pharmacy. Buy Allopurinol without prescription. Where can i find Allopurinol online. Doses Allopurinol work. Purchase Allopurinol online no prescription. Allopurinol wiki.

Similar posts: Premarin For Sale. Betnovate For Sale. Buy Wellbutrin SR Without Prescription. Amoxicillin For Sale. Buy Zovirax Without Prescription. Wellbutrin SR online cod. Buying Spiriva online over the counter. Order Clonidine online c.o.d. Fast shipping Zovirax. Real brand Seroquel online.
Trackbacks from: Allopurinol For Sale. Allopurinol For Sale. Allopurinol For Sale. Allopurinol For Sale. Allopurinol For Sale. Allopurinol recreational. Allopurinol from canadian pharmacy. Allopurinol wiki. Allopurinol samples. Allopurinol duration.