Software products with distinction RSS 2.0
 Friday, July 03, 2009

Every software that you know of has prompts, and they’ve been there since the begining of UI interface, some prompts are there for errors, some are information prompts and others are notorious exception/crash prompts which every programmer hopes or rather wishes would never happen to their code J.

What I really want to focus here is on UI prompts which appear when the software disallows the action that you performed for example you try to paste a file which you’ve already removed and explorer will throw up this dialog.

Another example is when you try to rename an entry in RegEdit and it already has a value with the same name under that key it will show you a big bold prompt like this

The same flow has sort of penetrated throughout the software world and has kind of become accepted principal look at xml notepad when you try to put some nasty characters into an xml name it would show you instead a big nasty UI prompt to tell you in big words that you can’t do that.

Now count the steps you enter into edit mode either by clicking twice on an xml name or pressing F2

1.       You type whatever you wanted to type without knowing if it will throw an error

2.       You press enter.

3.       Software throws an error saying you can’t do it.

4.       If you are lucky the focus will be on the OK button and it will require another Enter or space to dismiss the dialog.

5.       If for some reason the focus is not on the default button you are out of luck either navigate using Tab key or take your hand off the keyboard find wherever your dear mouse is hiding and bring it out to do the click to dismiss this dialog.

6.       Then you go back to editing where you were.

Now consider another scenario if you made the mistake of entering something not valid for that edit box and you decide to move away from it, some software will actually block your move to another edit control until you rectified that problem or hit a cancel button (Esc Key) to explicitly say. Please let me leave this edit box I won’t dare to come to edit it again.

Other software will let you go away but still show the prompt saying you made a mistake and when you dismiss the prompt you would have or could move to another control.


SnapConfig Way of handling UI prompts: 

All of these prompts are annoying at best and break a user’s flow of editing and performing of the action that use intends to do, when designing SnapConfig it was my desire to come to a prompt less UI which will flow smoothly with user and won’t hinder a user even when it has to show errors.  

So if you want to rename an xml name in SnapConfig and enter invalid characters and hit Enter SnapConfig will show this

But if you type another character this error tip will go away automatically hence requiring exactly “0” steps to dismiss an error prompt and yet it’s in your face prompt clearly letting user know what is happening. These prompts are shown in all validation when entering any text on the in place edit control. The tip itself is .Net balloon tip just a little bit of extra handling is done to move it out of the way when not needed. 

There are other kinds of prompts for example you drag and drop an xml attribute or registry data node that already exists under the parent. This is an error condition how does SnapConfig get away with this situation?

Simple it has a message pane specifically built for that, so a lot of error messages which are not suitable for tip prompts go in there hence again it requires exactly “0” steps to dismiss or confirm the acknowledgment of the error.

It is these little things that matter to users and I think this is a UI model that is far more user centric than any of the others commonly used in software development of all kind.

Friday, July 03, 2009 4:48:08 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
UI | Usability
 Friday, June 05, 2009
If you've developed a software product how do you market it the best?

Well you've to develop a website, and get visitors to come there, in the old days people would've a website with lots of wording in it, and hardly a screen shot or two, why? well bandwidth was extremely expensive, and most shared hosting plans gave you peanuts in bandwidth so you fill up your website with text and hope people will buy from the words, or better yet try a trial version and will be impressed with it.

Now a days the number of products coming into market is an order of magnitude larger than it had been before, and consumers are getting bombarded with a lot more information than ever before, so if you've developed a good product, and have managed to get the consumer to your website, how do you get them to make a decision before they jump off to the next cool thing.

One thing increasingly popular is a flash based demo, more than the screen shots. Screen shot images only get so much information across, whereas a demo can get a lot more within a short time.

With software like Camtasia Studio its increasingly easy to create a working demo, but there are certain things you still need to do to create a great demo, which are?

1. Script
2. Script
3. Script
4. Rehearsal

Yes you need to script the demo, remember a demo is a production much like a movie, music or a speech and you need to get the best impression across in the shortest time possible. The shortest time also works to your additional benefit by using lesser bandwidth overall.

You need detailed script not just an empty steps. For the second SnapConfig demo here are some of the steps that I wrote and practiced over and over to create the demo

Create New xml file
add stuff from example xml
Comment UnComment nodes
Save xml file

Create New Registry file
Add values
add to manage
copy file path
setup a command regedit /s
run command
Show RegEdit

Create new ini file
add stuff from example
change comment string

With the script I also created files where I would copy certain texts like the xml block that I copy into a comment field or the name of registry keys. I also setup all my applications like RegEdit and explorer to dimensions of the demo, and I made sure a single click on taskbar or Alt+Tab would get me right where I wanted.

In the end I think those steps have created a much concise demo which shows a lot of stuff in a short time and hopefully you can do the same with your product demo.


Friday, June 05, 2009 4:50:02 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
Marketing
 Monday, May 18, 2009
Since Windows default Tab Control is quite primitive, every once in a while you'll need the ability to be able to close the individual tab pages in the control.

SnapConfig has this ability and I thought I would share some aspects of how this is done.

One of the problematic issues in drawing buttons yourself is to take care of themes in windows but still be able to support non themed desktops.

following is the code that does that

   
public void DrawTabCloseButton(System.Windows.Forms.DrawItemEventArgs e, Rectangle rect, VisualStyleElement style, ButtonState state)
    {
      if (VisualStyleRenderer.IsSupported)
      {        
        if (VisualStyleRenderer.IsElementDefined(style))
        {
          VisualStyleRenderer renderer = new VisualStyleRenderer(style);
          renderer.DrawBackground(e.Graphics, rect);
          return;
        }
      }
      ControlPaint.DrawCaptionButton(e.Graphics, rect, CaptionButton.Close, state);
    }



The rect parameter is where you want to draw the button,

The VisualStyleElement can be VisualStyleElement.Window.CloseButton.Hot or VisualStyleElement.Window.CloseButton.Pressed or any of the others supported if you are handling that logic.

ButtonState can be ButtonState.Pushed or any other.

This section only handles the actual drawing, there are other things which are done on the fly by SnapConfig that is maintaing the state of button on each tab, for example if you press and hold the mouse and move away from a close button it will become normal but if you come back while holding it will again press down, which is standard windows behaviour.

to get onDrawItem you need to set

DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;


Monday, May 18, 2009 4:37:22 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -
Code
 Friday, April 04, 2008
So I've also decided to jump into the blog world, If you want to know why we developers blog try this.

So the blog plenty of bits has started. I've deliberately avoided using wordpress and have decided to go with dasBlog. I'll probably make an entry about my experience installing and bringing it up and running on my shared hosting account at LunarPages.

Friday, April 04, 2008 7:56:08 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0] -

Navigation
Categories
Archive
<July 2010>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
Blogroll
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Sajid
Sign In
Statistics
Total Posts: 4
This Year: 0
This Month: 0
This Week: 0
Comments: 0
Themes
All Content © 2010, Sajid
DasBlog theme 'Business' created by Christoph De Baene (delarou)