Remember APL (A Programming Language)? It had it’s very own special keyboard that allowed the developer to code complex mathematical constructs with ease. While the language never really caught on, I was always fascinated by the concept of having a peripheral device above and beyond a simple keyboard and mouse as a development tool, with just a few simple additions to an existing keyboard you were able to drastically improve your code speed.

It’s not much and it does take some getting used to, but the end result was quite astounding, you could encompass Conway’s Game of Life in a single line of code …

life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

The idea fell to the wayside. It is a bit ridiculous to maintain a hardware platform parallel to a programming one. However, that doesn’t mean we have to abandon peripherals completely and I recently revisited the idea after injuring my mouse hand. I use Eclipse to write 99% of my code, and with most modern IDE’s come all sorts of attractive features for searching, refactoring, debugging, code templates, and everything can be bound to key combinations. This lead me to purchasing a game pad, so I could bind all those complex key combinations to a single touch of a button.

That’s right, I now code with a game pad. A Logitech G13 Advanced game board. It is better than it sounds, I can do four kinds of searches at the touch of a button, all sorts of common refactoring tools, code templates, and all my debugging and navigation in one spot. I’ll admit I got some looks at first but necessity is the mother of invention as they say and I needed a better solution while my hand healed. Once I got used to it, I never looked back. On top of that, two other developers followed suit, we now have three of the devices in our lab.

The game pad really shines in situations where you find yourself constantly navigating menus to accomplish a task. Once you can just tie that to a touch of a button you shave off a few seconds. It does not sound like much, but, for fun, during a debugging/bug fix session, I ran key press heat map functionality of the device, recording the frequency I was hitting keys. I was running about 20 keys per minute for the 10 minute session I recorded over. Each key press represented an operation that normally took a few seconds to accomplish, due to navigating menus. So the work I did in those 10 minutes normally would have taken me about 14.

Nearly a 30% increase in speed.

So not only does this thing give my mouse hand a break, but it makes me faster. I am surprised more people are not doing it. Once you get the hang of it, you can easily jump from one IDE to another – hell, from one language to another as long as you map similar functionality to the same keys. Using a game pad, and setting up the profiles from one IDE to the next, I can jump between Netbeans and Eclipse with little struggle or from Windows to Mac as their hot keys are slightly different. If I always map my rename refactor button to the same location then it doesn’t matter if I am in Netbeans, or Eclipse or even using Visual Assist X for VS C++, I always know exactly how to do something.

Plus it is just cool as hell.