UI Design and Consultation – Komodo 6 Projects Debacle

I’ve used ActiveState Komodo as my IDE for Python and Ruby for a while, starting when I found Eclipse and PyDev irritating especially for debugging.

They recently decided to significantly redesign the Projects feature within Komodo, as part of version 6, and it serves as a great negative example of what happens when you don’t consult your users or put out prototypes but just inflict a design on people. For many users, including myself, the new approach loses functionality and makes the program significantly more painful to use, as you can see in the discussion forum.

Continue reading

GraphViz for UI Flow

I created this diagram (mainly by hand) for a client last year but don’t have permission to post a non-obfuscated version. As I’ve been talking recently on Stack Overflow about using GraphViz for casually tracking logic, I wanted a good sample. It is an accounting application and this shows how different buttons and menu options take you to other screens.

The image below was created by sizing a preview to fit at a non-readable text level and then taking a snapshot. The original PDF is 72KB and allows you to cleanly zoom in to see the flow.

Clicking the image will let you see a larger version but still obfuscated.
Continue reading

SproutCore – Impressive but it is still just a Web App UI experience

PaperCube is touted as a great example on the SproutCore blog, PaperCube is a great example of using SVG and advanced CSS rendering to create a rich graphical experience. It’s a bit shocking when you use this app to realize that he has created this entire experience using only JavaScript and native web technologies. Who says you need Flash or Silverlight for a great visual experience!

I was led to the SproutCore blog by one of a series of postings in Roughly Drafted which raves on about how much SproutCore solves problems for web developers with some hyperbole: If you were waiting for the resurrection of Yellow Box or Cocoa for Windows, stop waiting and start coding. SproutCore brings the values of Leopard’s Cocoa to the web, domesticating JavaScript into a functional application platform with lots of free built-in support for desktop features.

Being based on open web standards and being open source itself means SproutCore will enable developers to develop cross platform applications without being tied to either a plugin architecture or its vendor.

It took me only a few minutes with the PaperCube example to see that, whilst it is a pretty example of a web-app, it’s still nowhere near a desktop experience.

I find it extremely ironic, after decades of people bashing the Mac for its single-button mouse, to see so much pressure for web apps which often abandon the right-button and often the scroll-wheel, for other than scrolling the page (if the app doesn’t fit).  Google apps, such as maps, make good use of the right-click context menu as well as scroll-wheels. Another superb example is Kerio’s webmail interface.

When it comes to development, SproutCore is a JavaScript framework. The develop is still going to have to work in a radically different framework and probably different programming language to write the backend data processing, for most business applications. The dancing bear is more graceful, but there is still an elephant in the room.

Podcasts ain’t Music – UI Idiocies of the Nokia 6120 Classic

Amongst the ongoing discovery process of what minor features are missing on the 6120Classic is the quirky UI of the the media player particularly for playing podcasts. A blog discussing the built-in media player suggests that whilst other S60 phones have been updated to add Pause, this feature is not available on the 6120C. That’s not actually true but there are many other problems with the player.

Continue reading

Culling Features to Ship – Rotating Shapes

When I review the list of bugs in my generic shape editing source, many of them are related to either the behaviour or the final rendering effects of being able to rotate shapes. Rotating shapes in an editing environment, especially those with text, involves a lot more work than people may at first consider:

  1. Rendering the rotated shape, which may require an additional level of masking on Windows and Linux.
  2. Drawing drag-shapes as rotated or at least rotated rectangles.
  3. Drawing the selection outline and handles at rotated positions.
  4. Changing the cursor type as you mouse-over rotated handles, once you have rotated past 90 degrees.
  5. Changing the behaviour of constrained resize handles, depending on the angle, as X movement may now for example imply changing the height of the shape rather than width.
  6. Changing the behaviour of constrained resize or drag, if modifier keys held down, similarly based on shape angle.
  7. The dilemma of whether to implement rotated inline editing or to jump to a straight edit box (which maps to the issue of using edit boxes for inline editing or rolling your own behaviours).
  8. Possibly changing or enhancing the behaviour of nudging shape positions with the arrow keys or menu option (I always like to include a menu equivalent). If a shape is rotated, do the arrow keys move it along the XY axes relative to the canvas on which it is drawn or relative to the shape itself or do you give the user the ability to choose as a preference or runtime toggle?

When I consider the domains in which the generic editor is going to be used for our initial products: report-writer layout, screen layout and possible diagram editor, rotation becomes a lot less desirable than the original arbitrary editor required. However, dropping rotation from the common editor does constrain all of those products for now.
Decision: retain rotation code where possible, to avoid too much culling, but remove the UI for the feature so any related bugs can be deferred until the next version.

Minimalism with a nod to Generation-M

I’m a minimalist in design and especially in user-interface design.However, a lot of my market will hopefully include not the Gen-X or Gen-Y but the current Gen-M (M for MyXXX). The denizens of MySpace, FaceBook et al are possibly the first group of conforming non-confirmists who can truly say we are all individuals. So, assuming some of them share my own sensible taste for minimalism, how is an application design supposed to satisfy the rest?

Or, to put it much more aggressively, how can a modern application justify not providing umpteen ways to customise the look and feel and a healthy aftermarket in plugins, templates, art and trivia? The easy answer is the FaceBook answer – provide things as an online application and let the users hack at it with web technologies.How close to that customisability can a modern desktop app go?

Deciding a Documentation Tool

Why and How to Write

I’m trying to decide between the various tools I own in which to write the user guides for my various products. As well as thrashing out design ideas here on the blog I think actually writing stuff down is a good way to end analysis paralysis aka designer dithering.In the course of writing this evaluation (I really do think with my fingers) it became clear that one of the simplest deciding factors between publication tools is their internal and external referencing facility and how well it scales.

The other unsurprising dimension to my evaluations is that I’m deciding between document production and WYSIWYG editing tools. Productivity in writing is often increased by less control over layout, during the actual writing phase :-)

Continue reading