News for hackers. Stuff that matters.
Re:Resolutions for programmers by parfe on Tuesday January 03, 2012 @10:57AM (#3420020)
Learn Dvorak - I'd warn against bothering with Dvorak. Huge time sink with dubious claims of speed improvements. While a mythical programmer may exist who feels his raw typing speed limits his productivity, I never met that unicorn. While learning you have an increased error rate, run into incompatibility with other programmers and programs (emacs or vim... good luck) and end up needing to defend something no one actually cares about.

Back Up Your Data - I'd argue the resolution should be "Restore Your Data". Everyone has "backups" but that doesn't mean they have a valid restore procedure that they know works.

I like the list overall. It definitely has some interesting suggestions. The dominant arm in a sling sounds fun.

Re:Resolutions for programmers by mattmight on Tuesday January 03, 2012 @11:05AM (#3420055)
I learned Dvorak to help with RSI.

It worked.

I'm fast at Dvorak after 4 years (90 wpm), but not as fast as I was with Qwerty (120 wpm).

Dvorak has a pleasant "rolling" finger feel and my wrists never ache, so I've kept it.

What fascinated me about learning Dvorak was that I felt like a stroke patient. Suddenly, I could not do something I had been able to do for years.

It made me consider the cost of a keystroke.

Great experience.

Re:Resolutions for programmers by parfe on Tuesday January 03, 2012 @11:16AM (#3420099)
>I learned Dvorak to help with RSI.

That makes sense.

>What fascinated me about learning Dvorak was that I felt like a stroke patient.

That's a perfect explanation of the learning process. I just don't think people should be playing the stroke patient with their livelihoods.

Re:Resolutions for programmers by barrkel on Tuesday January 03, 2012 @02:29PM (#3420937)
Woah, that's some massive hyperbole there; learning Dvorak does not risk your ability to earn a living in this industry.
Re:Resolutions for programmers by guelo on Tuesday January 03, 2012 @05:12PM (#3421560)
I think he was just referring to the productivity hit during the learning curve.
Re:Resolutions for programmers by barrkel on Tuesday January 03, 2012 @09:28PM (#3422452)
Yes, because while you're learning one style, you completely forget the other style and are left unable to type fluently. </sarcasm>

(I'm still able to type in both.)

Re:Resolutions for programmers by gcr on Tuesday January 03, 2012 @11:42PM (#3422787)
I learned dvorak. After doing this for ~2y, I'm much (twice?) faster in Dvorak than QWERTY presently, and am slightly faster than my old QWERTY typing speed.
Re:Resolutions for programmers by Groxx on Tuesday January 03, 2012 @12:58PM (#3420552)
I used to have wrist pain after particularly-long coding bouts. Then I decided to type like you play piano - hands up, wrists straight, move arms rather than wrists to punch keys in other locations.

No pain again. Ever. Only later did I find out that it's the recommended wrist posture. I still cringe a bit when I see people buying keyboards with wrist-rests (and using them), especially "ergonomic" ones - why improve one ergonomic point while intentionally worsening another?

Re:Resolutions for programmers by morganpyne on Tuesday January 03, 2012 @06:54PM (#3421917)
Hah! For years when I played the piano, I held my hands like I now type; relatively flat fingered and straight wristed. It never affected my ability to play anything complicated and the only real problem was that my piano teacher insisted that this was not the 'correct' way to hold my hands while playing. Never suffered from RSI during the many many hours I've spent at either type of keyboard.
Re:Resolutions for programmers by mahyarm on Tuesday January 03, 2012 @01:41PM (#3420730)
Whenever I try that position, I quickly feel muscle fatigue in my arms from having them suspended in the air for an extended period of time. I think that is why most people don't type in that position mostly.

I might be doing it wrong somehow, but how do you deal with arm fatigue?

Re:Resolutions for programmers by Groxx on Tuesday January 03, 2012 @02:12PM (#3420863)
A good part of it might be that my upper-arms are essentially straight down, so it's just biceps. Holding your arms out / forward will tire you out, and it's pretty easy to do that in a lot of desks / setups, especially if they're too high. That, and I tend to move around and/or stop and think a lot. In part because I should, in part because otherwise I get stiff. That tendency to not sit still for long has helped in a lot of other ways too, though it makes me hate long drives :|
Re:Resolutions for programmers by hmottestad on Tuesday January 03, 2012 @01:29PM (#3420688)
hmm..I just tried this and I felt that my wrist were nice and relaxed, but my shoulders were not.

Maybe it's just because I'm using a laptop.

Re:Resolutions for programmers by Groxx on Tuesday January 03, 2012 @02:08PM (#3420853)
You might be sitting too low, and holding your arms up with your shoulders rather than at your elbows. Keeping your shoulders back seems to help too, another of those things that everyone should be doing but few (myself included, the vast majority of the time) actually do.
Re:Resolutions for programmers by technomancy on Tuesday January 03, 2012 @04:43PM (#3421445)
> I learned Dvorak to help with RSI.

Indeed, it always bothers me when Dvorak enthusiast pull out the speed claims; the comfort advantages are much more compelling in my book.

Re:Resolutions for programmers by ArbitraryLimits on Tuesday January 03, 2012 @11:39AM (#3420197)
I know what you mean about the stroke patient thing.

I had (still have, actually) RSI-ish problems in my right wrist but not my left, so I started mousing with my left hand and it felt exactly the same. Years later, my day-to-day productivity has fully recovered, but I still can't play mouse-intensive games like Minesweeper without getting confused and clicking the air with my right hand when I meant to use my left.

Re:Resolutions for programmers by freehunter on Tuesday January 03, 2012 @12:39PM (#3420452)
To help with RSI from the mouse, I got a trackball. It lets me keep my hand at a comfortable position and just roll my thumb ever so slightly to move around. My wrist never needs to touch the desk, so carpal tunnel is mitigated.
Re:Resolutions for programmers by rmc on Tuesday January 03, 2012 @12:26PM (#3420399)
I switched from right handed mouse to left handed mouse and after about 2 days I was able to use the mouse normally, and am still pretty good at it.
Re:Resolutions for programmers by slowpoke on Tuesday January 03, 2012 @07:24PM (#3422040)
You might just be ambidextrous with a strong right hand. My strong hand is the left, but besides more complex things like writing I can also do pretty much everything with my right hand without having to train.
Re:Resolutions for programmers by guelo on Tuesday January 03, 2012 @05:17PM (#3421576)
The Evoluent mouse helped me get rid of right hand pain, http://www.evoluent.com/
Re:Resolutions for programmers by dennisgorelik on Tuesday January 03, 2012 @12:08PM (#3420317)
Have you tried using ergonomic keyboard to help with RSI?
Re:Resolutions for programmers by rmc on Tuesday January 03, 2012 @12:26PM (#3420398)
I got a bount of RSI, and switched to a egonomic keyboard (Microsoft Natural 4000), and it helped immensly.
Re:Resolutions for programmers by dennisgorelik on Tuesday January 03, 2012 @12:39PM (#3420454)
I use Microsoft Natural Ergonomic Keyboard 4000 for years and do not suffer from RSI.

Another thing that probably helps is that I use table with enough depth, so between my monitors and edge of my table there is enough depth to not only fit my keyboard, but also extra ~15 centimeters space for my arms.

Re:Resolutions for programmers by gtani on Tuesday January 03, 2012 @02:21PM (#3420907)
Excellent advice, plus i need to ahve a small hand towel rolled up under my left wrist OTW i get pain.
Re:Resolutions for programmers by technomancy on Tuesday January 03, 2012 @04:46PM (#3421454)
I switched to that keyboard after I was bothered with RSI. A few years later I started using my laptop a lot more, making it impractical to lug the keyboard everywhere, but I found that the Natural had forced me to improve my posture in general, keeping myarms at 90 degrees from each other with wrists straight.

Now I can type without pain on any keyboard, which is a relief since after using a Thinkpad the mushy key response of the Natural drives me nuts.

Re:Resolutions for programmers by fady on Tuesday January 03, 2012 @04:34PM (#3421393)
i'm going to try dvorak out. i started experiencing rsi symptoms last year and decided to switch my mouse hand to my left hand. it took almost 6 + months to train my hand to have the precise motion i had with my right (even when using adobe design products) . one year later, i have very little pain, if any. though, after reading this article, i'm now curious to try the dvorak layout.

also, i love my apple keyboard and was worried about using something else, as i use them on all my machines, including linux boxes. did some research and found this:

http://www.kbcovers.com/servlet/Detail?no=154

ordered three. thanks mattmight.

Re:Resolutions for programmers by vacri on Tuesday January 03, 2012 @04:42PM (#3421438)
Colemak is supposed to perform slightly better then Dvorak as a layout, and be easier to learn for a qwerty typist.

http://colemak.com/ http://en.wikipedia.org/wiki/Keyboard_layout#Colemak

Re:Resolutions for programmers by yoos on Tuesday January 03, 2012 @11:31PM (#3422755)
Second vote for Colemak here! I spent the first two of my high school years in Japan essentially being homeschooled. I had developed shoulder pain and a ganglion cyst in my wrist due to lots of typing and playing tennis, so I took the opportunity to try both Dvorak and Colemak.

I used to average 110 wpm on Qwerty. I started at 30 wpm Colemak and reached 80 in three months. After fourish years, I'm back at 110 wpm, with no more cyst or shoulder pain.

I tried Dvorak for a week but disliked that 1) it emphasizes hand alternation (as opposed to Colemak's emphasis on finger mashes) and 2) it was so difficult to type "ls -l".

Re:Resolutions for programmers by vacri on Wednesday January 04, 2012 @02:32AM (#3423205)
I haven't actually tried an alternate keyboard layout yet so I can't vouch for it, but Colemak seems to have the edge on Dvorak.

I also do the ls -l thing all the time and finally succumbed to just uncommenting the relevant alias in my .bash_rc. 'll' just makes it easier; I don't know why I resisted enabling the alias...

Re:Resolutions for programmers by fady on Tuesday January 03, 2012 @04:49PM (#3421467)
thanks for the link vacri!
Re:Resolutions for programmers by crazygringo on Tuesday January 03, 2012 @01:49PM (#3420767)
I learned Dvorak in my teens, and can touch-type fluently in it.

But I've found it doesn't provide a lot of speed improvement, and for programming (with all its punctuation) I still use QWERTY. Since programming isn't primarily normal English language text, Dvorak really doesn't help, plus you have to touch-type.

What I use Dvorak for is for proper, sit-down, full-screen writing. I'm not sure it's much faster, but it's far more comfortable to type. QWERTY always "gets in the way" physically a bit when I write, but Dvorak lets my hands basically disappear as a barrier between brain and page. It just makes writing feel effortless.

Also -- Dvorak is useful for English only. When I write in Portuguese, it's not nearly as useful.

Re:Resolutions for programmers by barrkel on Tuesday January 03, 2012 @02:35PM (#3420959)
I use Dvorak everywhere. For programming, I frequently use editor macros to enter paired braces; but that's to save on effort on alignment and indenting. For other punctuation, there's little to choose between Dvorak and Qwerty. The square brackets are slightly further away, but equals is closer. That's about it.
Re:Resolutions for programmers by colonel_panic on Tuesday January 03, 2012 @05:33PM (#3421624)
"Since programming isn't primarily normal English language text, Dvorak really doesn't help"

Here's a late Christmas present: http://www.kaufmann.no/roland/dvorak/

Re:Resolutions for programmers by dudurocha on Wednesday January 04, 2012 @06:54AM (#3423748)
Man, do you have any contact info?
Re:Resolutions for programmers by silentbicycle on Tuesday January 03, 2012 @11:07AM (#3420066)
There's no problem using Dvorak with Emacs - in fact, it spreads out a lot of keyboard shortcuts that are otherwise scrunched down it the bottom-left corner. (I can use vim fine with Dvorak, too, but I mostly use Emacs - I'll leave it at that.)

And: it's not about typing speed, it's about typing comfort.

Re:Resolutions for programmers by Jtsummers on Tuesday January 03, 2012 @11:58AM (#3420279)
I was going to say this. Emacs + Dvorak is very comfortable to use. Vi(m) isn't bad either, but the directions (hjkl) are spread out which used to (and still does as it's not my everyday editor) cause me some difficulty. A particularly nice thing (for me) with Dvorak and Vim is that the `:` is in the lower left, right next to the shift key. I find many sequences easier to type.
Re:Resolutions for programmers by silentbicycle on Tuesday January 03, 2012 @12:10PM (#3420325)
About ":", agreed.

The new positions for hjkl actually feel more natural to me (jk are adjacent, on Qwerty's "cv" keys, and hl fit a pointer/pinky right hand rocking motion), but that's a matter of taste I guess. Either way: not a big deal.

In 5-6 years of typing Dvorak, the only thing I've never adjusted to is the non-keypad diagonal movement keys for nethack. I used the numeric keypad with Qwerty too, though.

Re:Resolutions for programmers by thebrokencube on Tuesday January 03, 2012 @05:49PM (#3421685)
> The new positions for hjkl actually feel _more_ natural to me

I completely agree with this sentiment. Everyone I know who uses dvorak+vim has a lot of remaps (so it matches the qwerty stuff) but to be honest, I don't find it necessary, and I really like jk being just there as those are the directional ones I use most (for moving left/right I use stuff like w, b, etc.)

Re:Resolutions for programmers by silentbicycle on Tuesday January 03, 2012 @08:04PM (#3422182)
Aside from searching, I tend to move by word, too. The position of those on Dvorak is analogous to the jk position. Hadn't noticed that.
Re:Resolutions for programmers by rue on Tuesday January 03, 2012 @05:09PM (#3421542)
I've htns mapped to <^v>. There's no need to restrict yourself to the default mappings.
Re:Resolutions for programmers by hudibras on Tuesday January 03, 2012 @11:42PM (#3422785)
I've got htns mapped to the direction keys, too, and it works great. I think it's even easier than qwerty's direction keys because you don't have to move your right hand at all; you have to move the forefinger left to hit 'h' on qwerty. It's a happy coincidence that the 'unmapped' keys aren't used very much, except for 'n' and you can remap that to the Dvorak j, k, or l.

Playing QWOP is impossible on Dvorak, however.

Re:Resolutions for programmers by tomjen3 on Tuesday January 03, 2012 @11:06AM (#3420062)
As an Emacs and Dvorak user I disagree. Yes people don't understand my choice, but so what?

As for incompatibility, switching keyboards is literally just ctrl+shift.

And no, it is not about speed but about handcomfort -- I move my hands much less and have less awkward resting positions.

Re:Resolutions for programmers by jules on Tuesday January 03, 2012 @12:54PM (#3420533)
Learn Colemak [1] instead. The change in comfort when typing is incredible. The difference in how much you need to move your fingers when typing is big. Typing with QWERTY feels you moving your fingers all over the place as fast as possible; typing with Colemak feels like letters flowing off your hands. Whether it is faster I do not know (obviously after years of using Colemak and rarely using QWERTY I type faster on Colemak, although I can still touch type on QWERTY -- something that most Dvorak typists seem to lose). The big difference is with comfort. Colemak is also much easier to learn for programming if you already know QWERTY because the punctuation (and some of the letters) stays in the same place.

http://colemak.com/

Re:Resolutions for programmers by vacri on Tuesday January 03, 2012 @04:44PM (#3421449)
How do you find the two-backspaces-no-caps-lock thing?
Re:Resolutions for programmers by jules on Tuesday January 03, 2012 @06:55PM (#3421922)
I've remapped caps lock to ctrl instead of backspace, so I don't have experience with that.
Re:Resolutions for programmers by tjoff on Tuesday January 03, 2012 @01:15PM (#3420629)
I've always felt that the biggest gain in learning a new layout is getting rid of old bad habits. Learning something new from scratch allows you to do it right from the start.

The reason for why I've not tried this is probably mainly because it would scramble all keyboard shortcuts. Shortcuts are designed for qwerty (a shortcut that you can't perform with your left hand anymore is a huge loss) and many combinations are a huge part of the workflow of many applications. I found this to be a complete showstopper.

I think there are ways to automatically switch to qwerty when ctrl/shift/alt was pressed and maybe I didn't research it enough but it felt like a cludge and I wan't something that is platform independent and easy to enable on any machine.

Re:Resolutions for programmers by jerf on Tuesday January 03, 2012 @02:43PM (#3420997)
That is the one reason to learn Dvorak; it naturally causes you to touch type, because there's no sane reason to have your hands wander around the keyboard; all the keys you use are on the home row. QWERTY affords hand wandering and hunt & peck. If you want to "learn to touch type" it's probably more effective to "learn Dvorak" and let the touch typing take care of itself.

I'm not sure about the virtues of paying the stiff startup fee of learning Dvorak if all you know is QWERTY, but if you have already paid I certainly wouldn't suggest losing it. And I'm very, very tempted to ensure that my kids, who are all too young to be typing at all, simply start on Dvorak. If you're starting from scratch entirely the choice is pretty clear to me.

The thing about shortcut scrambling is oversold; I think it sources from people theorizing about what the problems might be if they switched, not people talking about their experiences. In my actual experience, relearning the keyboard shortcuts was a negligible part of the experience.

Re:Resolutions for programmers by tjoff on Tuesday January 03, 2012 @03:22PM (#3421150)
I can't be the only one that very often have my left hand on the (left part of the) keyboard and the right on the mouse doing a lot of shortcuts while navigating the GUI.

Such as ctrl+z, ctrl+c, ctrl+v, ctrl+w, ctrl+t, ctrl+n, ctrl+s that requires two hands on dvorak ("especially" on an ergonomic keyboard) - or at least requires the right hand (=> you can't use the mouse) or you have to reposition the left hand (not acceptable).

This is not something that you can just relearn and this is something that seriously hinders at least my workflow.

Re:Resolutions for programmers by spiffytech on Tuesday January 03, 2012 @09:35PM (#3422465)
There is a way to configure your Mac (with the program Ukulele, I think) to activate a QWERTY layout when you hold the Ctrl or Alt keys, thus preserving your one-handed shortcuts. Custom keymaps on Linux and Windows could probably accomplish the same thing.
Re:Resolutions for programmers by fceccon on Wednesday January 04, 2012 @09:50AM (#3424300)
On a Mac you can use the "Dvorak - Querty ⌘" layout to achieve that, it works only with the Command key as far as i know.
Re:Resolutions for programmers by jules on Tuesday January 03, 2012 @07:09PM (#3421979)
Colemak keeps those keys in the same position, except S but S goes where D is on QWERTY so it's almost the same. Try it out.
Re:Resolutions for programmers by enimodas on Tuesday January 03, 2012 @12:21PM (#3420376)
And if you still want to learn an alternative keyboard layout, I recommend colemak. It's more modern, and has some additional upsides [over dvorak]:

-keeps ctrl-zxcaw at the same place

-claims to be easier to learn if you're already fluent in qwerty

perhaps more, here's their site: http://colemak.com/

Re:Resolutions for programmers by colonel_panic on Tuesday January 03, 2012 @05:50PM (#3421696)
The thing about Colemak is that if you ever have to use somebody else's computer for a moment, you can be absolutely certain they don't have it installed. Dvorak, I think, strikes the most acceptable balance between efficiency and widespread availability. Sure, as a hacker, you should set up your own unique keyboard layout/.emacs file/guitar-pedal-to-USB modifier keys/saccadic eye motion detector/whatever to absolutely maximize your efficiency for how you spend most of your working hours, but if the day ever comes when I'm the only person who can override the Doomsday Machine, I could do without the hassle.
Re:Resolutions for programmers by Tsagadai on Tuesday January 03, 2012 @11:54PM (#3422828)
That's why I set my vim shortcuts to keyboard positions and not letters. I switch between keyboard layouts a bit but I am using Colemak again. Keeping shortcuts the same across layouts is very important because they are usually muscle memory not some combination where you are thinking about pressing keys. Also, keep the drivers on your phone/USB so you can install them everywhere.
Re:Resolutions for programmers by Periodic on Tuesday January 03, 2012 @12:14PM (#3420342)
I'd go as far as to say that typing speed has never really been the rate-limiting factor in programming. That is exactly why Dvorak is easier to switch to for programmers than some other professions. We have the luxury of a profession where even a significant inefficiency in typing isn't a real hinderance.
Re:Resolutions for programmers by Androsynth on Tuesday January 03, 2012 @02:31PM (#3420942)
Sitting in a nice chair doesn't help you program better, but it sure is comfortable to sit in.

I learned Dvorak a few years ago and I love it. I wouldn't go back at all; it is just too comfortable.

It takes a few months to get back up to qwerty speed (at a logarithmic slope though). If you plan ahead, its not that time consuming. For example, if you have a coding job that you could do in your sleep, that's a perfect time to learn. If you just started a company and need 110% mental effort, don't learn. Personally, I switched about 2 months before I started on my masters thesis and it worked out really well.

However, if you often use other peoples computers (or vice versa), you should seriously think twice about whether it is worth it for you.

One last thing, I would recommend programmers dvorak over regular dvorak. :)

Re:Resolutions for programmers by elviejo on Tuesday January 03, 2012 @12:19PM (#3420369)
I'm an emacs + dvorak user too.

It all started when I saw three colleagues get surgery for Carpal Tunnel. And I started to develop similar pains in my hands and wrist, so after googling and reading a lot I decided to try dvorak. The change was really hard 2 or 3 months but now I can say it is totally worth it my hands and wrist have never hurted me again.

As developers we have very few health risks associated with our profession. We won't get hit by a rock as in construction or rolled over by a car in repair shop. But we still need to be vigilant of:

Obesity Stress RSI Back problems

If we want to keep developing software and walking by the time we are 50 or 65. So we should take preventive measurements. Dvorak is one of those.

Re:Resolutions for programmers by mfonda on Wednesday January 04, 2012 @12:46PM (#3425038)
As a programmer who has spent the last three months learning Dvorak, I'm glad this topic came up and would love to share my experience.

Before learning Dvorak, I used QWERTY, but did not fully touch-type. I could type quite quickly, and without looking, but I did feel limited at times, and wanted to learn to touch-type correctly. I decided on Dvorak because I had heard good things and wanted to be forced to touch-type and break my old bad habits. To learn, I used an open source typing tutor, klavaro, and found it worked quite well.

The first week or so was painful. After a few days I had learned the position of all the keys, but typing had become a strenuous mental activity. Simple tasks such as writing an email became very difficult because I was so focused on how to type it that I could not focus on what it was I wanted to type. The other difficult part was passwords. It usually took a few tries before getting them correct, and sometimes I even had to resort to copying and pasting to make sure passwords were correct.

As others have noted, typing speed may not be as critical for programmers as it is for others. While this may be true for coding, I found the initial slowdown when IMing/emailing coworkers to be frustrating.

After around a month, these difficulties went away, and typing started to feel much more natural. I'm still not at the speed I was before, but typing feels so much betters now. Overall, I am happy I switched to Dvorak, and would definitely recommend it. I notice my speed improving everyday, and I actually enjoy and look forward to typing now. Using emacs with Dvorak has not been an issue for me. In fact, I would say it feels better now.

Another change I made that I feel has boosted my productivity is remapping caps lock to ctrl. Caps lock is in a great location on the keyboard but performs a somewhat rarely used function. I would highly recommend remapping caps lock to something more useful.

Re:Resolutions for programmers by Permit on Wednesday January 04, 2012 @03:37AM (#3423320)
I've always wondered why people were so concerned with improving typing speed in the first place. Perhaps it's just the fact I'm a young programmer and have only been doing it for a few years, but the bottleneck for me has never been how fast I can type.

Most of my time is spent planning things out, thinking things through and debugging, never typing.

Re:Resolutions for programmers by gcr on Tuesday January 03, 2012 @11:36PM (#3422766)
What about machine stenography? It's harder to learn, but apparently has a much higher payoff in speed, accuracy, and ergonomics. http://plover.stenoknight.com/

The author of this program has a wonderful series on her blog about what steno is good for: http://plover.stenoknight.com/2010/03/how-to-speak-with-your...

Re:Resolutions for programmers by gcr on Tuesday January 03, 2012 @11:39PM (#3422777)
Dvorak ain't so bad. I learned it and I'm not faster, but I do find it much more comfortable.

Emacs? The keys aren't arranged spatially so no harm there. Vim? It's not so bad -- H and L are under the index finger and pinky of your right hand, similar to before, and J and K are right next to each other on the left hand too.

Plus, it's absolutely hilarious to watch other people try to use your computer.

Re:Resolutions for programmers by alinajaf on Tuesday January 03, 2012 @03:33PM (#3421188)
I've been using vim for years and I've met textmate, emacs and sublime text editor users who are a hell of a lot faster than me at editing code. What keeps me in vim is that it's comfortable, not that it's fast. I imagine that the switch to Dvorak would have a similar effect.