Can alternative input methods help?
As it stands today, most of us still use a keyboard and a mouse to convey our intentions to the software running on our computers. You might consider touch screens, popularized through the iPhone, as a novel way to interact with your gizmo, but that's just a variation of typing and moving, all at the same time. Although there already has been a lot of research in this area, alternative input methods have not hit the mainstream, yet. Speech recognition looks promising, but can you imagine dictating code to your IDE, out loud? Typically, specialized input methods only make sense in the niche they were designed for. Jean-Dominique Bauby wrote his book 'The Diving Bell and the Butterfly' by simply blinking his eyelids. Tragically, as he suffered from Locked-in Syndrome, it was the only method left to him. And despite all the research, some of the really appealing interfaces are only 'on display' in science fiction movies, such as the one Tom Cruise is gesticulating with in 'Minority Report', or the plug that fits snuggly into Keeanu Reeves' Occipital bone of the skull in 'The Matrix'. A company called Emotiv claims that the future is already here, however. They've come up with a head set, called 'EPOC', which translates your brainwaves to allow for some interaction with your PC. Great for games, apparently. And for switching Eclipse Perspectives, no doubt.


For those of you who might even consider more 'indirect' methods, such as trained animals, the only thing to remember is: 'Don't!' You might think that you can get away with kittens agreeing to EULA's. But isn't that you just being cocky? Because maybe, just maybe, once that paw hits enter, SWAT teams may invade your home and rearrange your furniture. You would end up living a life in fear, always on the look-out for laser pointers dotting your forehead through the venetian blinds (not to mention you would look cross-eyed all the time). And that's just cats. Ever since the unfortunate lab fire of '07, all research on the subject of 'coding through squirrels' has been banned. And rightfully so. Yes, they can generate sparks by striking flint stones against a stainless steel surface. No, they'll never get the hang of remote debugging. Just move on. It's either that, or watch the flames lick across the rooftop of your favorite Starbucks, next door. Squirrels: probably only put on the surface of the earth to prove Darwin wrong! No, you 'd better stick to finding new input methods using inanimate objects. And RFID technology. Yeah, that'll work. But will it work with Eclipse?

As the ECF project has already demonstrated with its 'Shared Editing' feature, the prevalence of the 'Command Pattern' in Eclipse's architecture makes it easy to invoke actions otherwise triggered through keyboard or mouse interaction. With a home-made set of plug-ins, actions can be invoked from inside Eclipse, by putting RFID-enabled objects on a connected RFID reader. The plug-ins come in two groups. One group is a set of pure OSGi bundles, containing all the services required to (1) detect RFID readers, (2) manage 'drivers' for all supported readers and (3) propagate RFID card events to interested parties. The second group is a set of RCP plug-ins, containing all the plumbing to (1) show visual feedback of the interaction in the workbench trim area and (2) manipulate the Eclipse command stack. The system records the necessary data, in case the command is parameterized. The plug-ins do not interfere with the normal operation of the Eclipse IDE. The workflow is straightforward, as demonstrated in the following movie. The reader in the demonstration is the ACR 128 USB reader, manufactured by ACS from Taiwan, and uses a PC/SC software interface.
Just to give you an idea of what can be recorded and replayed at the moment: (1) Refresh Workspace, Import/Export (without completion) and Add Bookmark (requires selection), (2) Undo/Redo and Select All, (3) Refactor History, (4) Navigate Back/Forward, (5) Build and Clean Project, (6) Run Last Launched and Run External Tool, (7) Customize, Save, Reset and Close Perspective and (8) Welcome, Help Contents, Dynamic Help, Cheat Sheets and About. A lot of commands respond to selection: they operate on a resource selected in one of the views or editors. Admittedly, a shortcoming of the current implementation is that the selection is not restored prior the invocation of the recorded action. That should be feasible, but the solution introduces another problem. The real power of the system lies in the ability to exchange a physical card with a colleague, in order to allow her or him to invoke that same action. Although this can easily be done using ECF, the need arises to synchronize state between two different Eclipse Workbench instances. E.g.: sharing a bookmark using an RFID card requires both the bookmarked file, as well as the bookmark itself available on both instances.

Coming up in part II: starting Mylyn tasks with rabbits!"