Code Bubbles and the Keyboard

I was catching up on reading one of my favorite blogs today, Lambda the Ultimate, and was not disappointed in the least.  At the top of the list sat Code Bubbles, a whole new take on the IDE.  Code Bubbles shocked me because it’s visually manifest much of what I had in mind when I wrote almost two years ago on leaving flat files behind.  That said, I think Code Bubbles has a long way to go before it’s a reasonable platform to choose for active development.

From a high-level point of view, Code Bubbles is a modern programmer’s dream.  With organized tasks it would be much easier keep your mind focused on what you are trying to accomplish.  With code represented outside of its restrictive flat file format, you would need not repeatedly wade through piles of irrelevant cruft to reach the small pieces of code you need to change or consider.  Even the integration with bug tracking and email looks quite promising.

However, the actual process of using Code Bubbles looks to be an experienced programmer’s worst nightmare.  To be tied so extensively to the mouse would mean we all would need to move to one handed keyboards.  To organize everything by drag and drop on the screen would mean we would end up spending much of our time organizing the layout of code on our screen instead of its actual contents.  Also, due to the nature of the scroll-and-select interface, finding what you need in a large project could quickly become quite annoying.

Even at the most basic level, just reaching for the mouse has a huge impact on programmer performance.  Many think of it much like a cache miss.

The good news is that none of these problems seem insurmountable.  An intelligent keyboard shortcut scheme could be invented.   A snap-in grid layout would speed drag and drop, although automatic layout needs to happen eventually.  Perhaps the scroll and select could be made less frustrating with a textbox filter (ala Firefox config).

An even more far reaching solution to this mousyness might be something like NDepend style querying.  Even just Windows 7-style keyword search would be a huge boon.  The IDE practically screams for keyboard queries.

That said, I for one am looking forward to the day I can use Code Bubbles (or something similar) as a mature and robust IDE.  With the monstrous computing beasts we have under our desks, the layout of on disk or in memory should not limit the ways in which we are able to interact with our code.

Update: Additional commentary is available on programming reddit.

Enjoy this post? Continue the conversation with me on twitter.

Tags: , , ,

12 comments

  1. I think your claim that “just reaching for the mouse has a huge impact on programmer productivity” is fairly dubious. The linked discussion thread is merely an anecdote, and many of the replies don’t really see this as a huge problem.

    Yes good keyboard shortcuts are often faster and I agree that it is an important feature for any mature, “production-ready” IDE, but I think you are wildly blowing out of proportion the importance of the issue.

    I don’t think many would agree that the bottleneck of programmer productivity is not being able to physically write code fast enough.

    Sure there are occasions where the code is in your head and you just need to get it out, but the vast majority of the time the bottleneck is in thinking about what code to write.

    /mike.

    • Mike, I’d say it depends much on the type of developer you are and the language you use. For a .NET GUI developer, you are right. Much is done with the mouse anyway.

      However, most of my work is related to image processing and is usually in rather verbose languages (C++ or C#). My bottleneck when writing code is usually how fast I can type the language’s inane syntax. However, once I start writing, I’ve already spent a lot of time planning.

      I don’t know about you, but I consider thinking and writing code to be two separate processes with different bottlenecks. I would think those doing a significant amount of algorithmic programming would need a similar separation of processes.

    • Using the mouse vs keyboard is almost a different mindset for me. When I’m in keyboard mode I’m thinking, composing, writing code. Shift to the mouse and I’m searching, organizing, etc.

      It’s not so much about a drop in wpm, but instead a drop in concentration. I think the cache miss analogy is appropriate. I don’t actively avoid using the mouse but in situations when I need to continually switch back and forth my mind tends to wander.

      That said, I think Code Bubbles looks great and I can’t wait to try it for myself.

  2. >The good news is that none of these problems seem insurmountable. An intelligent keyboard shortcut scheme could be invented.

    That’s funny because at that point, all of a sudden, it starts looking like emacs all over again.

    I gotta say, watching that video made me get flutters and that is saying something given that I’m a jaded ol’ fogey. But I agree with your point about keyboard speed entirely. And what it all comes down to is simply knowing your key chords, and if you get to that point, there is nothing under the sun that is more powerful than something like emacs…

  3. I found it interesting because this is how I already work, using emacs windows – open code, follow, open, follow the path of execution, group windows together and be able to monitor traces. It is inelegant, and I’ve longed for something more organised.

    In eclipse, I made hundreds of bookmarks, and a scheme to allow myself to fluidly move around the files with keyboard shortcuts, but I was defining my own system, abusing something designed for something else.

    I hope this comes around, I will write something up for emacs and see if I can use an ipad to simulate a nice environment for this.

  4. the best keyboard for a touch typing programmer is an integrated pointing keyboard.

    an integrated pointing keyboard has the pointing performance of an optical mouse and has a scroll wheel.

    with an integrated pointing keyboard the typist never has to take one’s fingers off the home row.

    from the home row the typist has total control of the computer screens.

    one can point, type, click, scroll with a scroll wheel, backspace, del, and esc in any order all from the home row.

    i use icon macros for special key combinations. i just point and click. no ctl-…

    from my phd research on advanced input devices, one wastes about 5 minutes per hour repeatedly going from keyboard to mouse.

    40 minutes wasted per day times your hourly wage =

    say that 40 minutes is worth $10 per day.

    10 x 200 days working per year = $2000 wasted by using a mouse.

    i use my patent pending integrated pointing keyboard everyday for trading stocks.

    from the “father of the perfect keyboard”.

    twittering as stocktradr

  5. Yay Code Editor Lock-in!

    Fan-Fucking-Tastic.

  6. Regarding all the comments about how switching to the mouse wastes lots of time:

    I notice that you’re all reading a website during office hours?

    How does time lost surfing the web, reading personal email, getting a coffee, chatting with you co-workers, completing the latest pointless exercise from HR etc. stack up against taking your hand of the keyboard to use the mouse?

    • Quite an inflammatory post, but I’ll bite.

      I would agree in that much more of my time is spent dealing with office distractions than reaching for the mouse. In fact, the time I spend checking email and my own site from work is often when the office is too noisy to focus on more complex tasks. In other cases, I simply need to take a break from the problem I am working on so that I can return with a clear head. Thankfully, my employer encourages us to spend time on building online and community presence. I have this to thank for much of my personal success.

      This is not even touching on how your statement completely ignores the concept of flow. Productivity in programming is not linear with time. Interface hindrances have a huge cost in terms of breaking flow.

  7. What’s up, after reading thiis remarkable piece
    ?f writing ? am ?s well hazppy to share myy knowledge here ?ith friends.

  8. Social comments and analytics for this post…

    This post was mentioned on Twitter by martani_net: RT @rickasaurus: Blogged: Code Bubbles and the Keyboard http://bit.ly/9VjPPm

  9. [...] following video has got more to speak. Have a look and i recommend reading <this>  article [...]

Leave a comment