b-log – betriebsraum weblog

Software Development, Human-Computer Interaction, Projects…

Demo Video of AS3 Marking Menus

December 17, 2009

In my last article “Extremly Efficient Menu Selection: Marking Menus for the Flash Platform” I wrote about a powerful (but surprisingly rarely used) interaction technique called marking menus. A short demo video showing marking menus in a Flex application can now be found on www.markingmenus.org. Release of Flash/Flex components and source hopefully in 2010…

Extremely Efficient Menu Selection: Marking Menus for the Flash Platform

December 11, 2009

This is a topic I wanted to write about since a while now: Marking menus and their implementation in ActionScript 3.0 for the Flash Platform. I had the chance of extensively studying this menu technique over the summer and developed a fully working solution for the Flash Platform, i.e. for use in Flash, Flex and AIR applications. Marking menus have proven advantages compared to other interaction techniques, but they are still underused in applications and standard UI component sets lack appropriate components (which might be part of the reason that they are relatively unknown). With the recent interest in gestural interaction and multi-touch applications (Flash Player 10.1!), the topic becomes even more relevant. One of the main aims of this article is to increase the awareness of one of the coolest menu forms around and highlight a few aspects in terms of technical implementation.

Fundamental Facts about Software Engineering

December 4, 2009

Interesting article about “Frequently Forgotten Fundamental Facts about Software Engineering” on the IEEE website.

CommunityCommands: Command Recommendations for Software Applications

November 22, 2009

Actually, this should be one of my recent “Paper of the Month” posts but I’m not really fond of that title and the structure of my past posts any more. I’m going to keep on presenting new papers, which I find interesting and worthwhile, in a more informal style from now on (in software terms: I’ve removed the hardcoded “Paper of the Month” prefix to allow myself for more flexibility regarding posting frequency ;)

Here’s the paper:
Matejka, J., Li, W., Grossman, T., Fitzmaurice, G. (2009) CommunityCommands: Command Recommendations for Software Applications. UIST 2009 Conference Proceedings: ACM Symposium on User Interface Software and Technology, pp. 193-202.

The authors show how their refined collaborative filtering system can generate command recommendations for software applications, a technique that can be valuable for applications with large communities. When the collective intelligence of all users of an application is utilised, each user can be provided with a customised list of recommendations and pointed towards actions that are related to the current task and haven’t been discovered yet.
Integrating such functionality in a sophisticated and unobtrusive way is what this paper is about (with unobtrusive meaning: quite the opposite of the much criticised “Clippy” agent in Microsoft Office). Considering that lots of applications get more features over time and introduce new task workflows, recommender systems can be built in to increase the users’ awareness of prior unused areas and commands – all by taking advantage of the combined, evolving smartness of the entire user base.

Design by Contract framework for Flex development?

October 27, 2009

On InfoQ, there’s an interesting presentation by Greg Young on how Design by Contract (DBC) and Test Driven Development (TDD) can be combined and complement each other. Using a Microsoft framework for API contracts, he talks about how DBC can be used to eliminate a large number unit tests by setting up constraints in your code and using TDD/BDD to only test behaviour and business value. Another added benefit of DBC is that a theorem prover can (to some extent) verify that a contract will always/never be violated at compile time. As far as ActionScript 3.0 and Flex are concerened, there are unit testing frameworks around for TDD but no DBC libraries (at least I’m not aware of any…). Opportunity for a new open source project? Luckily, for many of the three-letter acronyms in software development, such as Asshole Driven Design, no additional code development effort is needed… ;)

Paper of the Month: Faster Cascading Menu Selections Using AAMUs and EMUs

October 11, 2009

Actually, this post deals with two papers that I want to briefly present here (since they are closely related to each other). Download links and a short introduction below:

The papers
Tanvir, E., Cullen, J., Irani, P., Cockburn, A. (2008) AAMU: Adaptive Activation Area Menus for Improving Selection in Cascading Pull-Down Menus. Proceedings of ACM CHI’2008 Conference on Human Factors in Computing Systems. Florence, Italy, 5th-10th April 2008, pp. 1381-1384.


Cockburn, A., Gin, A. (2006) Faster Cascading Menu Selections with Enlarged Activation Areas. Proceedings of Graphics Interface. Quebec, Canada, 7th-9th June 2006, pp. 65-71.

Why you should read them
Very often, cascading menus are used to execute commands in desktop applications or RIAs (or to navigate between pages on normal websites). A known problem is that they can be hard to use, especially if they contain a large number of items and several submenus. For example, if you use the bookmark manager in Firefox to browse through a hierarchy of categories or if try to drag single bookmarks within the menu from one category to a more deeply nested one, it can happen easily to deviate from the optimal mouse path and unintentionally select the wrong target category – or even unpost the whole menu. A common way to reduce selection errors is to delay the posting and unposting of submenus (which is what most commercial applications do). However, there are several issues with this technique, such as slowing down menu interaction. Several researcher have tried to improve and accelerate selection in cascading menus, with two of the more recent variations being AAMUs (Adaptive Activation Area Menus) and EMUs (Enlarged Activation Area Menus).

Without going into any further detail about how they work, I believe that it might be valuable to experiment with an implementation for UI libraries like the Flex framework. For example, a property on the menu component could be used to switch between different methods, maybe something like:
menu.activationMethod = MenuActivationMethod.NONE | MenuActivationMethod.DELAY | MenuActivationMethod.AAMU | MenuActivationMethod.EMU...
Anyway, the papers are quite interesting to read and one gets a feeling for how much research is being carried out in terms of enhancing menu interaction.

“Flash Engineering” – A book about software engineering with the Flash Platform

September 14, 2009

Recently, the book “Flash Engineering” by Sven Busse (2009) has been published. While it is currently only available in German, English speakers might still want to read on, since it is quite unique compared to other books relating to that technology. I don’t know if an English version is being planned (if not, it would certainly be a good idea).

The title “Flash Engineering” is well-chosen as this is what the book is really about: Software engineering, targeted at the Flash Platform. There have been books about Flash in general, Flex, AIR, ActionScript Animation, Object-Oriented Programming and Design Patterns but – to the best of my knowledge – none that discuss Flash development from a real software engineering perspective. It could be argued that such a book couldn’t have come out much earlier since the technology is still in the process of maturing as a software development platform – the topic was previously just not most important and relevant. Further, it could only be written by a person that has both a solid background in software development and profound experience with the Flash Platform.

What is your level in the “Programmer Competency Matrix”?

September 3, 2009

Somehow I’ve came across the “Programmer Competency Matrix
– a table that shows the author’s expectations and requirements for different levels of skills in terms of computer science, software engineering, programming, experience and knowledge. The matrix is clearly geared towards “classic” software development and I believe a matrix for RIA developers, for example, would have to look quite different. However, still interesting to have a quick look at…

Paper of the Month: Rethinking the Progress Bar

August 9, 2009

This is the second post in my series about worthwhile, freely available academic papers with practical relevance for application design.
Here you go:

The paper
Harrison, C., Amento, B., Kuznetsov, S., Bell, R. (2007) Rethinking the Progress Bar. Proceedings of the 20th Annual ACM Symposium on User interface Software and Technology. Newport, Rhode Island, USA, 7th-10th October 2007, New York, NY: ACM, pp. 115-118.

Why you should read it
Status indicators, such as progress bars, are frequently used to give users feedback about the time it takes for a process to finish. This could be something as simple as a standard preloader for Flash applications or a more complex progress bar to monitor backend and multi-stage processes in Rich Internet Applications. When displaying percentage completed, animation can provide meaningful information and in some situations cheating techniques can be used to convey the impression that progress bars appear faster. The paper tells you when it is appropriate to apply non-linear functions (for example “Fast Power” functions) to map progress to its visual representation more effectively and to be perceived faster by users. Interesting read (and only 4 pages).

Efficient Gesture Recognition and Corner Finding in AS3

July 21, 2009

Gesture recognition and corner finding are two techniques that can be useful for all sorts of things. For example, gesture recognition can be used to recognise shapes in graphics applications, to control the user interface on a mobile device or to build creative games. In this context, I’m referring to shapes drawn with an input device that may or may not leave an ink trail on the screen, and not to physical gestures, such as waving a hand (however, most of the time a drawn shape also implies a physical gesture). Corner finding is a technique that finds all corner points of an arbitrary stroke and can be used for shape simplification, node finding or another exciting field, which I’m going to reveal later this year… ;)