This is why I always loath buying a new laptop. The first thing I have to do is look at the keyboard layout. Where did these designers try to fit the cursor keys this time? Where did they try to innovate on space efficiency using those 'disposable' keys: Home/End/PgUp/PgDn/Ins/Del?
I learned on an IBM compatible 101 (now 104) keyboard. I trained my hands against the 'correct' cursor management key layout: the inverted-T and the cluster above. It's not optimal, but neither is the saxophone. That said, you don't see too many saxophone designers changing the placement of the keys or inventing new fingerings. Not so for keyboards. Most of the innovation happens because of some industrial design requirement or some designer's whim (e.g., why do we still have this insert key here? Nobody uses it! Let's get rid of it and add a larger delete key). I'm not referring to the more interesting innovation happening on behalf of heavy keyboard users, like those mentioned in the article.
It used to be somewhat difficult to find modern 101/104 keyboards. I thank the code gods often, now that we have such a rich ecosystem around conventional keyboard designs. I now have a problem where I look for an excuse to buy a new keyboard to try out for one of the spots that I program at frequently, so I can just move my laptop and plug in. My favorite so far is the Cooler Master QuickFire Tenkeyless.
Kind of off-topic, but ironically the saxophone is probably the most optimal of the woodwind instruments. It was designed much later than the others, and so Sax was able to take the best parts of the others and avoid all the annoying bits. The saxophone, for example, overblows an octave rather than a twelfth like the clarinet, so you can use the same fingerings in both registers. There's also only one key to be pressed by the thumb, unlike the 13 (!) for the bassoon (9 for the left thumb, 4 for the right). This engineering is one of the reasons all of the saxophones (soprano, alto, tenor, bari, etc.) have a similar sound, whereas (say), all the members of the clarinet family sound pretty different.
As the earlier X series 12" ThinkPads show, there is simply no reason to move keys around for "space". IBM showed it's easily done, that a full sized layout fits on a small device. These new laptops with compromised layouts are sad. It's just stupid mimicry or terrible "designers" putting questionable form over function.
Looking at available ergonomic mechanical keyboards, I think there must be a curse, that every kb designer must do something silly for no reason. I just bought a $200 ergo mech keyboard, and it comes with dedicated Undo/Copy/Paste keys. They actually added a key that sends CtrlZ, which is probably the easiest combo to hit, on a higher end keyboard aimed at pros. Wtf? (I'd pay hundreds for a MS Ergo 4000 with good switches.)
What I love doing - re-training myself to use a PC-101 keyboard after a week or some days using the rMBP on the road .. nothing funks up my flow more (in a good way) than going from the hotkeys of OSX to those of a moderately standard fvwm-based Linux desktop, and having a full keyboard switch-up to boot. I kind of think such small experiences are good for you, so I delight in it happening when it does ..
However, it terrifies me to use my friends' Dell and Lenovo machines, the key placement is often perplexing. I somehow think the layout is intended to bond the user to the platform, though, and few companies apply that as succinctly than Apple.
The ironic thing is that the "standard" layout was an "innovation" upon earlier layouts, and you can easily imagine a long-time user of the IBM AT keyboard leveling the same kind of complaints: "Having the function keys on the left was so much better! Why did those stupid arrow keys have to get in the way and make the numpad so much further away from the main cluster?"
Of course it's not really the same since the AT design hadn't been around for decades, but it's worth remembering that keyboard evolution stopped at an essentially arbitrary point rather than at some imagined pinnacle of design.
I wish Apple would adopt the Surface approach and just give me/us a Mac tablet. Would be great to have a Mac where I can raise the screen up to eye level (with an embedded stand) and use with my own custom keyboard.
laptops are a pain. I wrote a windows keyboard hook that users caps lock with ijkl for arrows u->home ;->end and space bar fort modal select. A bit like ergo Emacs. Tried vim mappings but modal editing doesn't work across applications. You end up pasting code into your chat window. Anyway I realised that a lot of the value of vim is just not having to leave the home row for navigation.
Honest question: do other software engineers write code so quickly that keyboard efficiencies really make a significant difference in productivity?
I agree that familiarity with a keyboard layout is important, as is familiarity and confidence with a given editor/IDE (frequent switching between keyboards/editors does seem to slow me down a bit), but beyond that, are you really feeling held back by the speed at which you can move characters from your brain to the computer? My own experience shows that much more time is spent just thinking about the problem at hand. Even when it comes time to write, I rarely (if ever) feel like the keyboard input part is slowing me down.
Is typing really such a big issue for programmers? I don't know about everyone else, but typing is perhaps 0.5-1% of my programming time. Is this different for other people?
Like everything else in life, everyone has their own style. I'm with you - typing is not an area that I worry about efficiency. I whiteboard high level designs, think things out in my head, go for a walk and think out the code, and finally sit down and type it out in a fairly short time. Later, when updating and debugging, navigating via keyboard gets more important, but still not a critical path for me.
But I do know other people who really do just type immediately when they start to code. They use the keyboard and screen as part of their thought process. For them, perhaps it makes a bigger difference.
Back of napkin math bring this at ~25 lines of code per day. Looking quickly at our Git history, this seems well below the average LoC/day me and my co-workers produce but our software is still in early stages and there's lots to do. Perhaps you are maintaining a more mature project?
It's a sizable issue for me. I write every piece of code several times: once to get a sense of the problem space, once to prepare it for review, once to incorporate feedback review and once to adapt it once a new customer has as similar need, an tweaking my code for a couple hours saves him a couple of days. The technical ability to type fast is critical, thus having good tools is critical. Several areas: typing comfort, code search, autocomplete, code refactoring, plus high signal / noise language.
I used to have a Happy Hacker keyboard and write Java (and other languages) in a customize emacs environment. These days I use a regular mac keyboard (so I can easily transition between my macbook and desktop setups) and run IntelliJ. And I feel like I'm a whole lot faster writing production-quality code. There are definitely a few annoyances when using the IntelliJ emacs key binds, but this is more than compensated by being able to do things like automatically download and jump to referenced packages and having the IDE suggest code improvements ("I've noticed that you could be using the Java 8 lambda syntax here..." / "Do you want to remove these unused imports" / "This value may be undefined"). And now I can't write Java without IntelliJ, and I'm going to fail my next whiteboard interview ;)
Interesting article, but the author mentions exactly why I could never get into a location-specific setup like a keyboard and foot pedal; I shift locations far too often (I'm currently working remotely from a Starbucks at the moment).
While maybe not going as far as becoming proficient in whatever setup could be considered the "lowest common denominator", I prefer to use a setup that is flexible across locations and environments. There's a lot of freedom in being able to move about between workstations and locations and still be fast and capable.
A foot pedal is no less discreet and portable than an external mouse, and those are pretty widely used and accepted at coffee shops (it could even be argued that the external mouse consumes more valuable space than the foot pedal - the mouse requires lateral table space and elbow room, while the pedal is literally on the floor beneath your feet).
Likewise I know developers that bring external keyboards like the Kinesis in their backpacks to wherever they want to hack.
Edit: that being said, you're right that it adds up. I believe the author of the article also uses a vertical mouse. That's a lot of gear to haul to Starbucks!
I built my own portable mechanical keyboard for precisely this reason; I got spoiled by a nice board at home only to be filled with disappointment every time I went out for a change of scenery at the coffee shop. Now I've got something that almost fits in the pocket, has a nice split angling of the columns, and is designed to work with Emacs from the ground up. (lots of thumb keys)
I'm going to guess and say that in any given city a lot more IT specialists work from a fixed workplace all the time.
Also I would guess that a big number of currently wandering IT specialists can switch to fixed workplace (e.g. - random cafeteria vs home/work place) but they currently don't want to for reasons unknown to me.
For me, when I was working on laptop on a previous job I would switch to desktop with ergo keyboard and normal screens immediately if possible. Being impossible I just switched jobs - it was that important to me (after money of course).
When two programmers compare preferences, it usually seems like they've reached the same level of fluency by standing on completely different piles of input devices, editors/IDEs, languages, plugins, transpilers, etc. Arguments about the superiority of one part of their pile assume that the other person is in a position to need those things.
"Textmate? CoffeeScript? But how would you ever navigate your 900-line files without Vim?"
Seriously, the thought about foot pedals had never crossed my mind, AT ALL, even after so many years of reading tech news, it's a completely new concept.
Disregarding the practicality or the actual use, I think it is a very interesting concept and possibility that could be explored.
Most Mac users on here are probably used to the US layout of keyboard. Check out the UK version for a mean bit of design. The left hand shift key barely exists and the return key is a remote sliver. I always buy the US keyboard when I get a new machine.
Huge fan of the conclusions. And many hackers do that already, spending hundreds of dollars for high quality key boards and mouses. But we certainly haven't reached the point were our tools are as professional as a pilot's.
I have a Kinesis and I've give it a good go. My main problem with it is that, while typing is absolutely wonderful and comfortable very quickly, you should keep your hands in the proper position the whole time, or you can't do anything.
For example, use a mouse and copy, or even just to use a mouse gets to you for the proper position. A typical use of c select with a mouse, copy, move the cursor and paste, is very weird.
Also something like write something with a pen and move pages up and down. A regular keyboard allows you to move right and use your left hand for right keys (cursors, etc). With the Kinesis, this is uncomfortable.
The pedal is also weird and needs a lot of adjustment.
I used it for a while, and encourage to everyone around me if they want to give it a go, but I moved back to a more regular keyboard...
I think there is not enough innovation happening in the space of HID's. Both the software and the hardware are limited. Sometimes you see innovative keyboards, but they are not revolutionary because they always think they have to provide the legacy 10x-keys design. And software always expects to receive those keys, which is a huge problem.
In Steam Big Picture you can type with a gamepad if you go to the friends-chat-mode. Why is this limited to Steam Big Picture? This should be functionality provided by the system to be used by all applications. And applications should adapt the input layout and themselves depending on the HID that is being used.
I wish it'd be possible to use text editors with a 3D mouse or pedals and a camera, without having to invest a huge amount of time to make it work.
The pedal sounds appealing.
But the lack of portability of all these hardware will not convince me.
I still stick to the unbeatable keyboard hack I described some days ago: https://news.ycombinator.com/item?id=9605791
(i.e arrows, return, pgup/pgdn, delete/backspace available at the middle of the keyboard)
Another feature that is quite interesting if you code with IntelliJ or Eclipse is the "Quick Access" key.
Ctrl+3 on Eclipse (hint: remap this to a more convenient key NOW!) or Ctrl+Shift+A on IntelliJ (same hint applies), and all you commands can be accessed by quick typing.
No need to go for Ctrl, Alt or any key combination.
Right now, I'm using that keyboard's less wealthy sibling, the kinesis freestyle. I've found that it's a lot more flexible, as I can stop, do other things, like use a drawing tablet or mouse, without the needing to put my hands in the bowls like i would with the advantage. Also, I have smaller than average hands, so I get the feeling that the advantage would not be as useful for me.
Now, what I'd really like to see is keyboards made with different key sizes. A 3/4 size keyboard that has proper mechanical switches would be very, very nice indeed. Hell, I actually like 15" laptops with full keyboards because that tends to mean that they've shrunk each key to fit, and it gets to right about the sweet spot in size for me.
I love the freestyle. First keyboard I've used without hand pain. I recommend rolling a t-shirt or putting a foam pad below your wrists to prevent strain.
I've been interested in Kinesis keyboards for a while now but am still undecided because the more I think about the whole problem of HCI from a programmer's perspective the more I question my own assumptions. I'm wondering if something far out like the Twiddler could really work for somebody living in a text editor with vim bindings most of the day. If anybody had to share their experience with it I would be very interested to hear it (e.g. experience working with your legs up).
Though I've never used the Twiddler, I did spend about a year using a different one-handed keyboard due to injury. It was a FrogPad. It's a fine device for typing out sentences, but perhaps not ideal as a code editor. I eventually set up a full-sized keyboard right next to the FrogPad because it just felt easier to hit certain keys and chords that way. There might be better one-handed keyboards out there for programming, but I'm a little sour on the whole idea.
During this time, I also did some experimentation with voice recognition. It worked really well when coding in lisps. This was over ten years ago, and I'll bet this would work even better now.
I also have experience with the Kinesis keyboards; I used the Freestyle—not the Advantage featured in the article—following my recovery for about six or seven years. Though it looks like a medical device, the ergonomics are excellent. The Kinesis is a better typing experience by about 1000x. I have since switched to the homemade Ergodox, but still recommend the Kinesis.
I'm a big fan of the Kinesis keyboard. I use Emacs, and I was starting to have some RSI symptoms from the ctrl/meta key combinations when I discovered the Kinesis. Moving the modifier keys (except for shift) to the thumbs is a huge improvement.
The arrow key layout is actually one thing I don't like about the default Kinesis configuration (the bottom row for the left hand is backquote, backslash, left arrow, right arrow, and for the right hand it's up arrow, down arrow, left bracket, right bracket). I remap these keys to put all the arrows on the right hand (in vi order).
The arrows are weird and the less-than-normal function keys are suboptimal (and I've used these keyboards long enough to run into some very rare firmware quirks and odd choices made by the maker). However, since everything else is so AWESOME - the hand position, being able to do CTRL+ALT with one thumb while keeping all the fingers in normal position and being able to map the other two mod keys to ALT, META, and then CapsLock to Hyper (for window management only, in my case)... oooh, this keyboard rocks for most things, including coding and gaming (assuming the game supports changing your keybindings to optimal keys - WoW does, for example). I think I have four of them, and my girlfriend prefers hers to normal keyboards. They've totally eliminated my incipient RSI. (rave, rave, rave). However, I do wish they'd fix the little issues that remain in some future board, so I don't have to keep musing over whether to buy a Maltron to compare.
I like this article, but what about the design of keyboard/mouse integration? There are still a lot of things you have to use a mouse for everyday. I feel like IBM hit a home run with the trackpoint, yet somehow it never hit mainstream. I would pay a lot of money for an ergonomic keyboard with a trackpoint. Microsoft sculpt or 4000 with trackpoint would be awesome. Just replace the stupid scrolly thing with a trackpoint.
I created my own keyboard design (http://atreus.technomancy.us) and have had a number of people ask me why I haven't put it on Kickstarter.
Ironically it's because the startup costs are so low, and gradually ramping up production makes a lot more sense to me than exploding onto with a huge bang that requires a lot of investment without knowing how the demand will hold up in the long-term.
I also have a Kinesis Advantage. I use colemak keyboard layout as well so I've customized the layout a bit. Because capslock is backspace in colemak, I changed the backspace key to control. VI sucks with colemak so I eventually moved to using emacs. It works very well for me - your thumb is always on control.
I hit the left Control key with the edge of my palm, and use my thumb to hit Alt. Those are the only modifier keys I use regularly, other than Shift(which I can comfortably hit with my pinkies).
This practice along with evil-mode and Vimperator means I barely have to move my fingers of the home row while operating my computer.
I've been using emacs for 9 years like that without a problem. I didn't realise you were supposed to swap your Caps Lock and Ctrl keys, so I never did. (And now I know you're supposed to, I just ignore it the advice. I don't think it's especially good advice, though, as always, if it works for you, feel free to heed it.)
[+] [-] Todd|10 years ago|reply
I learned on an IBM compatible 101 (now 104) keyboard. I trained my hands against the 'correct' cursor management key layout: the inverted-T and the cluster above. It's not optimal, but neither is the saxophone. That said, you don't see too many saxophone designers changing the placement of the keys or inventing new fingerings. Not so for keyboards. Most of the innovation happens because of some industrial design requirement or some designer's whim (e.g., why do we still have this insert key here? Nobody uses it! Let's get rid of it and add a larger delete key). I'm not referring to the more interesting innovation happening on behalf of heavy keyboard users, like those mentioned in the article.
It used to be somewhat difficult to find modern 101/104 keyboards. I thank the code gods often, now that we have such a rich ecosystem around conventional keyboard designs. I now have a problem where I look for an excuse to buy a new keyboard to try out for one of the spots that I program at frequently, so I can just move my laptop and plug in. My favorite so far is the Cooler Master QuickFire Tenkeyless.
[+] [-] theOnliest|10 years ago|reply
[0] https://en.wikipedia.org/wiki/Saxophone#History
[+] [-] MichaelGG|10 years ago|reply
Looking at available ergonomic mechanical keyboards, I think there must be a curse, that every kb designer must do something silly for no reason. I just bought a $200 ergo mech keyboard, and it comes with dedicated Undo/Copy/Paste keys. They actually added a key that sends CtrlZ, which is probably the easiest combo to hit, on a higher end keyboard aimed at pros. Wtf? (I'd pay hundreds for a MS Ergo 4000 with good switches.)
[+] [-] fit2rule|10 years ago|reply
However, it terrifies me to use my friends' Dell and Lenovo machines, the key placement is often perplexing. I somehow think the layout is intended to bond the user to the platform, though, and few companies apply that as succinctly than Apple.
[+] [-] technomancy|10 years ago|reply
Of course it's not really the same since the AT design hadn't been around for decades, but it's worth remembering that keyboard evolution stopped at an essentially arbitrary point rather than at some imagined pinnacle of design.
[+] [-] hauget|10 years ago|reply
[+] [-] discreteevent|10 years ago|reply
[+] [-] dperfect|10 years ago|reply
I agree that familiarity with a keyboard layout is important, as is familiarity and confidence with a given editor/IDE (frequent switching between keyboards/editors does seem to slow me down a bit), but beyond that, are you really feeling held back by the speed at which you can move characters from your brain to the computer? My own experience shows that much more time is spent just thinking about the problem at hand. Even when it comes time to write, I rarely (if ever) feel like the keyboard input part is slowing me down.
[+] [-] tormeh|10 years ago|reply
[+] [-] codingdave|10 years ago|reply
But I do know other people who really do just type immediately when they start to code. They use the keyboard and screen as part of their thought process. For them, perhaps it makes a bigger difference.
[+] [-] olalonde|10 years ago|reply
[+] [-] pacala|10 years ago|reply
[+] [-] tangled|10 years ago|reply
[+] [-] wilkystyle|10 years ago|reply
While maybe not going as far as becoming proficient in whatever setup could be considered the "lowest common denominator", I prefer to use a setup that is flexible across locations and environments. There's a lot of freedom in being able to move about between workstations and locations and still be fast and capable.
[+] [-] gkop|10 years ago|reply
Likewise I know developers that bring external keyboards like the Kinesis in their backpacks to wherever they want to hack.
Edit: that being said, you're right that it adds up. I believe the author of the article also uses a vertical mouse. That's a lot of gear to haul to Starbucks!
[+] [-] technomancy|10 years ago|reply
[+] [-] Yizahi|10 years ago|reply
[+] [-] zachrose|10 years ago|reply
"Textmate? CoffeeScript? But how would you ever navigate your 900-line files without Vim?"
[+] [-] Trufa|10 years ago|reply
Disregarding the practicality or the actual use, I think it is a very interesting concept and possibility that could be explored.
[+] [-] aidos|10 years ago|reply
http://i01.i.aliimg.com/wsphoto/v1/1853014535_2/Wholesale-5P...
[+] [-] erikb|10 years ago|reply
[+] [-] jaimebuelta|10 years ago|reply
For example, use a mouse and copy, or even just to use a mouse gets to you for the proper position. A typical use of c select with a mouse, copy, move the cursor and paste, is very weird. Also something like write something with a pen and move pages up and down. A regular keyboard allows you to move right and use your left hand for right keys (cursors, etc). With the Kinesis, this is uncomfortable.
The pedal is also weird and needs a lot of adjustment.
I used it for a while, and encourage to everyone around me if they want to give it a go, but I moved back to a more regular keyboard...
[+] [-] madez|10 years ago|reply
In Steam Big Picture you can type with a gamepad if you go to the friends-chat-mode. Why is this limited to Steam Big Picture? This should be functionality provided by the system to be used by all applications. And applications should adapt the input layout and themselves depending on the HID that is being used.
I wish it'd be possible to use text editors with a 3D mouse or pedals and a camera, without having to invest a huge amount of time to make it work.
[+] [-] ralfd|10 years ago|reply
http://www.anandtech.com/show/7125/kinesis-advantage-review-...
In Typing tests (granted Aesop's Fables, not programming) there isn't really that much difference. Even compared to a Laptop keyboard.
In 10-key typing (entering numbers) the Kinesis Advantage is really bad.
[+] [-] ralfd|10 years ago|reply
[deleted]
[+] [-] lolive|10 years ago|reply
Another feature that is quite interesting if you code with IntelliJ or Eclipse is the "Quick Access" key. Ctrl+3 on Eclipse (hint: remap this to a more convenient key NOW!) or Ctrl+Shift+A on IntelliJ (same hint applies), and all you commands can be accessed by quick typing. No need to go for Ctrl, Alt or any key combination.
With all this, any keyboard is efficient.
[+] [-] Sanddancer|10 years ago|reply
Now, what I'd really like to see is keyboards made with different key sizes. A 3/4 size keyboard that has proper mechanical switches would be very, very nice indeed. Hell, I actually like 15" laptops with full keyboards because that tends to mean that they've shrunk each key to fit, and it gets to right about the sweet spot in size for me.
[+] [-] hellbanner|10 years ago|reply
[+] [-] hoggle|10 years ago|reply
http://twiddler.tekgear.com
[+] [-] verisimilidude|10 years ago|reply
During this time, I also did some experimentation with voice recognition. It worked really well when coding in lisps. This was over ten years ago, and I'll bet this would work even better now.
I also have experience with the Kinesis keyboards; I used the Freestyle—not the Advantage featured in the article—following my recovery for about six or seven years. Though it looks like a medical device, the ergonomics are excellent. The Kinesis is a better typing experience by about 1000x. I have since switched to the homemade Ergodox, but still recommend the Kinesis.
[+] [-] bdarnell|10 years ago|reply
The arrow key layout is actually one thing I don't like about the default Kinesis configuration (the bottom row for the left hand is backquote, backslash, left arrow, right arrow, and for the right hand it's up arrow, down arrow, left bracket, right bracket). I remap these keys to put all the arrows on the right hand (in vi order).
[+] [-] erlkonig|10 years ago|reply
[+] [-] nhumrich|10 years ago|reply
[+] [-] melling|10 years ago|reply
A modern version of the DataHand would be cool.
http://octopup.org/computer/datahand
A controller like an AlphaGrip: http://www.alphagrips.com/
[+] [-] gkop|10 years ago|reply
[+] [-] tribe|10 years ago|reply
[1] https://geekhack.org/index.php?topic=41422.0
[+] [-] technomancy|10 years ago|reply
Ironically it's because the startup costs are so low, and gradually ramping up production makes a lot more sense to me than exploding onto with a huge bang that requires a lot of investment without knowing how the demand will hold up in the long-term.
[+] [-] fractallyte|10 years ago|reply
[+] [-] unknown|10 years ago|reply
[deleted]
[+] [-] ninjakeyboard|10 years ago|reply
[+] [-] wz1000|10 years ago|reply
This practice along with evil-mode and Vimperator means I barely have to move my fingers of the home row while operating my computer.
[+] [-] to3m|10 years ago|reply
I've been using emacs for 9 years like that without a problem. I didn't realise you were supposed to swap your Caps Lock and Ctrl keys, so I never did. (And now I know you're supposed to, I just ignore it the advice. I don't think it's especially good advice, though, as always, if it works for you, feel free to heed it.)
[+] [-] christianmann|10 years ago|reply