Wednesday, December 24, 2008

The very last post

Yup, this is the very last post on this blog. No, I don't give up :) I just moved my blog to free hosting service I was writing about (and now my blog is being powered by WordPress engine ;)

So... this is the address of my new blog: http://notonlyzeroesandones.site40.net/

See ya.

Monday, December 15, 2008

Usability & User experience

A few days ago I wrote a short note about the importance of GUI. But GUI alone - the set of graphical widgets, that present information and allow to perform actions - is not everything one should consider when creating application. The second, very important thing while designing application is to focus on how this application will be used, make it as easy as possible, create interface that will be easy (so easy, that users will not have to read documentation just to get to know how to perform some tasks, that application is capable of performing), interface that will not be annoying (avoid forcing user to click in many places to perform one action) and many more. Wikipedia's definition of usability is: "Usability is a term used to denote the ease with which people can employ a particular tool or other human-made object in order to achieve a particular goal. Usability can also refer to the methods of measuring usability and the study of the principles behind an object's perceived efficiency or elegance." So, I think, there is no need, to explain further what 'usability' (in terms of designing software) is. Let's face some real-world examples:

Control Panel link in Start Menu (Windows 95)

Windows 95 GUI was fresh, and gave much better user experience than the old GUI designed for Windows 3.x. Although there were a lot of small 'bugs' or things that were possible (not at the first sight) but were not easy to achieve. One of them, was creating a menu (link) to control panel in Start Menu. It was possible. The only things one should do, was to find proper key in Windows Registry (well, not the key, but it's GUID was to be found), and create a folder, which name was GUID itself. This kind of folder pointed directly to the content of Control Panel. The same trick worked for other special folders. Anyway, the thing is, that some of my friend, that were proud Mac owners at the time, claimed, that it 'stupid'. Stupid, because it so hard to do, and Mac allows to do such things just using drag & drop technique.

Fonts in cmd.exe

When you look a little bit closer to cmd.exe (or command line console - if you prefer) you realize, that this ugly bitmap font (the default one) hasn't changed for a long, long time. It is default font, and it looks the same (or rather: is as much ugly) in Vista and in Windows 95. Can't it be changed? Of course, it can. And again, it could be made by digging and changing Windows Registry.

Where does my tab-close button go? (Mozilla Firefox)

Firefox was one of the first browsers that incorporated tabbed browsing - something that many of us can not imagine surfing without. But there is some strange behaviour of Firefox, when it comes to tab-closing button. If you have only few tabs open - it is always placed on every tab (on the right side on the tab title). But what happens, when user opens more, and more tabs? Well... the button disappears! Simply, none of the tabs has it. Why? I don't know. What's the solution? Ctrl+T for new tab, in the address bar type famous "about:config", browser.tabs.closeButtons' value should be 1 (to show tab closing button for all tabs), and browser.tabs.tabClipWidth's value should be way smaller than default 140 (this value is the minimal width of the tab title, if its smaller, tab close button is being not displayed).

Did you expect that there is still so many to do in the field of user experience, usability? Is there anything that software designer could do, to make their applications better? Of course! In the first two examples the changes are obvious. In the first case, managing special folders should be the same as 'normal' folders, so copying them, linking to them should be possible - there is even better solution: a wizard that will let anyone personalize its start menu (similar to what it is being done right now in Windows XP and Vista, but it could be a bit more user friendly, IMO).

I am wondering, what is so hard in making 'Courier New' or 'Lucida Console' (both of them are TrueType fonts) the default font for cmd.exe? Those fonts look a lot better than default bitmap font (which is so ugly, that I wonder how anyone can actually work with console that has this font set).

And the last issue... I assume that the worst thing in the case of 'disappearing tab close button' is that it is silent. You're just surfing the web, opening more, and more pages, maybe close your browser, and restart it the very next day... and there is a moment, that you realize the buttons are gone. And it's so strange, because 'they were always present, on all the tabs', right? So first of all, I think that Firefox should warn user (but not with standard message box dialog that nobody ever reads) that tab closing buttons will not be displayed anymore (as long, as tabs are so narrow). I think, this message box, should have some animation showing that the button is being 'kicked off' from tab titles (it's not hard to do, just a small gif containing about 8 frames of animation will do). The message box (or dialog box - better) could provide a smart wizard, that will let user choose how the browser should behave. That's it. I think, it would be much better, and less confusing for many people.

Usability could be taught on example, there are dozens of applications around, and it is sometimes a good idea to think if they work the way users expect, or users are just used to applications' design? How many clicks does it take to perform a simple action? And how many different ways exist that allow to perform a specified task? Are all the ways obvious? Does user need to go over and over to some kind of menus to change some properties during work? Are the most common tasks and options grouped? How? Are messages easy to understand to anybody (not only some techie guys)? There's definitely more question that software designer focused on GUI and usability should ask while (re)designing.

At the very end I would like to point that there are some books that should be interesting for people who think that designing GUI and usability is not just a waste of time and resources. First book I think is worth reading is "User Interface Design for Programmers" by Joel Spolsky (it is also worth to take a look at his blog). The other book I think is worth reading is "Why Software Sucks And What You Can Do About It" by David S. Platt (there is a sample chapter available on David's book page). Have you ever thought that there is no point in thinking about some small parts of the application? David presents great example: the message that user gets when they want to close application and their work was not saved. Is the standard message easy to understand to anyone? It definitely should, right? There is a thin line between sticking to standard solutions used in GUI design we see in modern apps, and the need of improving user experience. If nobody at Microsoft thought that problem of Office was in its poor GUI - Ribbon would never appeared. The same thing is with context menus: why options (entries, whatever) are being placed one under another? Is it really comfortable? Or was it the most simple solution (rendering rectangle is the simplest what you can actually do in graphic environment). I've seen lately some proposals to change standard context menus to circles (all the options are equally available in terms of 'mouse distance'). There's a lot more to think about. I just hope that modern apps are going to be more and more easy to use (so they make us all more productive, and we'll all have more time to relax and enjoy our lives).

Thursday, December 11, 2008

FreeMind alternative, really?

For quite a long time I have been using FreeMind as a mind mapping software for day-to-day basis. I am used to it, but its ugly user interface (and especially those ugly fonts!) keeps me searching for replacement from time to time. Recently I spent another hour searching for alternative. I have found XMind. XMind was a commercial only application before, but now a free version is also available. The differences between PRO and free versions are not crucial for me, and I didn't even thought about spending money on the PRO version (you may check detailed feature comparison). Anyway, lets start testing it. First impression? Whoa! It is beautiful! Ctrl+Shift+Esc... and hm... XMind allocates about 60MB at the very beginning. A bit too much I think... (and I didn't start working! I just run the app!) A few more clicks (importing my mind map created in FreeMind) and... yup, definitely it is eye-catching. Fonts on the mind map are very well antialiased, all the shapes looks very nice, same as connecting lines. The whole structure is very clean, icons are big enough to notice them at the first sight. Mind map is actually colored but it does not look like a fireworks during fiesta - no need to be worry about it ;) The impression while using are, although, mixed. The app looks great, but sometimes user does not have good experience of application's responsiveness... what am I talking about? I have tested both apps (XMind and FreeMind - just for comparison) with the same mind map (created originally using FreeMind). This mind map consists of 76 object (including the 'root' one). The maximum depth is 6 levels. As you see it was not very complicated. And while using XMind I had the feeling that my quite new cpu (2.6GHz Core2Duo) is lacking some power... yes ;) Collapsing / expanding and moving whole mind map (even if big part of it was already collapsed - so not visible) was quite slow. Much better impression is being made while scrolling with scrollbars than "dragging workspace" (right-click & drag). There are two panes that I think should be incorporated into FreeMind: outline and properties. Outline is special view that lists all objects on workspace in hierarchy. It would be great if clicking on anything in outline made it active in main view... It does not work that way at the moment (it is very strange, because one expects that). Properties pane is used to quickly change properties of workspace and how it is being rendered. It allows changing outlook of workbook (workspace), user may change default shape, default type of connector lines and font. Properties pane makes a lot of work easier and allows to quickly change whole outlook of current workbook (workspace) in very convenient way (it is very easy to see how the structure will look if one uses different font or connector lines type). A few minutes passed, time to see how much memory does XMind consume... 180MB. Well... it is way too much. Working with XMind is easy. One do not have to search through help to find how something should be done. User interface is really well designed, there are dozens of predefined shortcuts, so most of the work could be done without touching mouse. It may be a power of being used to, but I think that +/- (XMind) for collapsing / expanding is worse than just hitting space bar. But customizing XMind's shortcuts is really easy, and there is always a possibility to revert all changes and restore default settings. XMind allows using one of predefined themes - bunch of predefined colors and properties, that change the way your scheme looks like. Another couple of minutes... and XMind uses about 290MB (hey, and some said that Vista's memory consumption is huge, so how do you call that?). The best thing about XMind is that is not only a mind mapping software. It allows creating many different types of structures: fishbones, spreadsheet, organizational, tree and logic charts (and mind maps of course ;) There are a few more things that XMind has to offer: markers, notes, creating relationships, boundaries (creating a special shape around selected objects) and a few more.

FreeMind is much smaller application than XMind. Working with FreeMind sometimes fools user: application behaves as if it was doing a lot of hard work, even if the only thing that is happening is just mouse cursor moving over objects. The (default?) behaviour of selecting object that mouse cursor is over gives user kind of a quirky feeling... the selection is not immediate, and it seems lto be a task very hard to achieve. There are a lot of useful shortcuts in FreeMind (and personally I think that they are much better designed than those in XMind). Creating and managing mind maps is easy, but one has to stop focusing on how ugly the app and mind maps created using it are... Being the opposition of XMind - FreeMind consumes only a fraction of memory that XMind does. At the beginning it allocates about 50MB, and if minimalized, this value drops to only few MBs. Sometimes (after using it for quite a while) it take about 20-30 MB more, but I didn't see it allocating more than 100. The biggest issues with FreeMind are related to its poor GUI design and ugly outlook. The fonts look horrible and whole mind maps too (fonts are not antialiased, so as shapes and connecting lines). If you select all objects on mind map and try to change font - be aware that those object which are not visible (collapsed) will not have its properties changed - not really nice surprise after expanding.

So... Is XMind worth trying? Definitely yes. Am I going to give up using FreeMind? No. Two biggest issues are: memory consumption (it is hardly possible to use it as a background app with almost 300MB allocated by such a simple app) and lack of possibility to export created mind maps into FreeMind again. Mixing FreeMind (and especially its small resource allocation) and xmind (almost everything else ;) is the way to create the perfect mind mapping application.

So, just to sum everything up:

FreeMind:

Pros:

  • free
  • small
  • available for many platforms (written in Java)
  • small memory & resource consumption
  • shortcuts are very well designed, for most of the time one does not have to use the mouse at all

Cons:

  • ugly (especially fonts - not antialiased (even if one sets up antialiasing for all apps)
  • GUI is far from being convenient
  • responsiveness while selecting objects... one may sometimes feel some strange delays
  • still in BETA
  • if there are some objects hidden, hitting Ctrl+A (select all) and changing font (for example) does not have any effect on those objects that are collapsed... don't like it.

Xmind:

Pros:

  • free
  • beautiful
  • creates very good looking mind maps / charts
  • it is much more than mind mapping software - it could be used for designing variety of things structures
  • outline view is definitely a big plus (or rather to say it will be a good thing if they improve it a bit)
  • properties view - very good idea
  • imports FreeMind's and MindManager's mind maps
  • able to store mind maps online (but hey, who really needs this kind of feature in the era of free online storage services?)
  • based on Eclipse, so it is easy to use to all those people used to Eclipse environment
  • available for many platforms: Windows, Mac, Linux...
  • portable version available (quite big, but it has java included, so it may be possible to use it on machine that does not have Java Runtime installed)

Cons:

  • huge, HUGE, AMAZING, ridiculous... memory consumption (it may be related to using Eclipse framework, which itself is memory hungry app, but... 300 MB?)
  • lacks export to FreeMind and /or MindManager (it seems that even PRO version is lacking this functionality)
  • slow (while moving mind map around, collapsing / expanding - even if animations are turned off)
  • selecting object on outline view does not select the same object on the main workspace, so outline is somewhat useless...
  • portable version is HUGE: ~110MB of free space is required
  • you have to register to download it (God bless GuerillaMail? ;)

Last minute news: at the time of finishing this note, XMind was allocating 450MB... no comments...

Sunday, December 07, 2008

Color customization in CodeRush XPress

A while ago DevExpress introduced a new, totally free product for developers using Visual Studio - CodeRush XPress. I found it quite helpful, so it became one of the plugins I am using during my day to day developer activities. However, I was looking for possibility to change default colors (I have black background in my VS environment, so not all the colors are easy to notice), and couldn't find one. Recently, I have found the solution on DevExpress site. It's a pity, that one must be aware of this magic key combination, instead of being able to configure plugin behaviour from VS options menu. Anyway, after pressing Ctrl+Shift+Alt+O (easy to remember, right? all the modifier keys and 'O' as in Options ;) you will see an option dialog, with dozen of things to change (or better: 'personalize'):

CodeRush XPress' option dialog.