July 20, 2010
FlexUnit provides support for asynchronous testing with the Async class. While this class works well for event driven tests, it doesn’t support callback functions like you might want it to. A typical event driven asynchronous test looks like this:
February 18, 2010
Just want to quickly point out an excellent reading for all software developers, architects, team leads or project managers: »Leading Lean Software Development: Results Are not the Point« by Mary and Tom Poppendieck. Although there is a chapter about technical excellence that covers architecture, TDD, evolutionary development etc., you won’t any code in it (a recommended reading with *lots* of code is Uncle Bob’s »Clean Code«). The book is full of practical (and extremly convincing) advice on implementing and leading successful software development in an organisation. Must read!
February 9, 2010
Whenever you have a Flex project consisting of several modules, you can take advantage of compiling those modules in parallel – provided that they don’t depend on each other – using Ant and the Ant-Contrib tasks. In a project with five modules, I’ve seen a speed increase of about 30% compared to normal sequential compilation. I haven’t tested yet how this setup performs with more modules but I guess you could run into memory problems when compiling too many of them in parallel (you could still compile them in batches then). Below is part of an Ant script which does the job…here a few notes:
February 8, 2010
When developing applications, often you need to set up some dummy data to test things without using real backend services. One particularly useful technique is described by Freeman and Pryce in their book »Growing Object-Oriented Software, Guided by Tests«: Using the builder pattern to construct complex test data and improve code readability. Let’s say you need a bunch of dummy (fake/mock/stub – whatever you call them) user objects and you already have a user object with a nested address object (say):
January 16, 2010
»Do not develop an attachment to any one weapon or any one school of fighting.« (Miyamoto Musashi) – this is directly cited from a very readable free pdf book by Henrik Kniberg & Mattias Skarin about two popular agile practices: Kanban and Scrum. Not only do the authors compare Kanban and Scrum to each other, they also make a strong case for thinking of them as tools – just basic tools that may help your organisation to accomplish tasks, rather than enforcing the dogma of one particular »school« that dictates how you should do your work. The more prescriptive rules of Scrum may not necessarily fit your team, so taking only few Scrum practices and leaning more towards the Kanban or event-driven approach might work much better in some situations. Generally, the Kanban way of doing things feels more natural to me. It always depends, though.
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…
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.
December 4, 2009
Interesting article about “Frequently Forgotten Fundamental Facts about Software Engineering” on the IEEE website.
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.
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… ;)