Resolutions for programmers
matt.might.net
matt.might.net
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.
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.
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.
(I'm still able to type in both.)
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.
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.
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.
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?
Maybe it's just because I'm using a laptop.
I might be doing it wrong somehow, but how do you deal with arm fatigue?
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.
http://colemak.com/ http://en.wikipedia.org/wiki/Keyboard_layout#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".
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...
Indeed, it always bothers me when Dvorak enthusiast pull out the speed claims; the comfort advantages are much more compelling in my book.
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.
And: it's not about typing speed, it's about typing comfort.
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.
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.)
Playing QWOP is impossible on Dvorak, however.
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.
-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/
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.
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.
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.
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.
Here's a late Christmas present: http://www.kaufmann.no/roland/dvorak/
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. :)
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...
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.
Most of my time is spent planning things out, thinking things through and debugging, never typing.
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.
My only quibble: "Argue against something you believe" is not a special, part-time exercise. It should be a tightly-integrated element of your ongoing mindset, even in 'damn the torpedoes' dev mode.
I don't mean to sound snarky; that just feels like the best way to express my reaction to your statement. I don't disagree with the sentiment; I just don't think you have any idea what you're talking about.
Better advice: Find a mate (or a group), and find out why the other's implementation is broken. And go through some case studies first (see e.g. colin percival's postmortem in http://www.daemonology.net/blog/2011-01-18-tarsnap-critical-...)
For Prolog, try GProlog (http://www.gprolog.org/) - it has good constraint programming support.
(I've read about Mercury, but never really used it. I'm most interested in constraint programming, which doesn't seem to be part of it.)
1. Don't follow the conventional wisdom on RSI
I struggled with RSI for years, and did all the usual things (warmups, exercises, braces, a Kinesis with modified key layout, etc.) Then, in early 2010, I read (at Aaron Iba's suggestion) The Mindbody Prescription by John Sarno. Within a couple of days, I saw remarkable improvement; within a month, I was symptom-free. YMMV, of course. 2. Don't wear a brace of any kind.
I question the advice to wear a back brace. Over time, this leads to muscle atrophy and causes or exacerbates the very problem you're trying to solve.I don't warm up, don't wear braces, and have switched back to a Qwerty layout. I stay strong and healthy other ways, but I now ignore all RSI-related advice that doesn't acknowledge the "mindbody" nature of the problem. I've been symptom-free for more than a year. (This is an anecdote, so take it for what it's worth. The book's like $12, though, so you don't have much to lose.)
The central claim of this book (from reading Amazon reviews) seems to be that chronic pain may be caused by mental/emotional distress. To me, this seems like a remarkable claim, and I'm super-skeptical without some kind of evidence.
Out of curiosity, does the author offer any such evidence in the book? Are there other books on the topic?
However, despite me thinking the book was rubbish and tossing it shortly, my RSI problems disappeared. I guess the suggestion that pain wasn't actually physical in source was enough for the pain to stop.
I've gone from being dominated by RSI problems to not giving it much thought at all.
The placebo effect is real, sometimes even when the patient is aware that it's a placebo.
Note: I don't think the book is correct. There are plenty of phenomenon that we don't understand, and not having a real explanation is not reason to just make one up and assert its correctness without evidence.
I actually think Sarno explains quite well why the placebo effect works in many cases. It works because the pain is caused by psychological issues to begin with, so when you receive a placebo, your mind knows to make it go away and shift to a different problem. He actually calls it a "nocebo" because it doesn't actually make it go away. For example, you may have back pain, do some kind of therapy to address it (whether it is chiropractic adjustments, massage, medication, cortisone injections, or even surgery); it goes away, but then a week later you start having wrist pain, and the cycle continues (maybe with the back pain coming back) until you address the underlying repressed emotions.
Then however, they found that actually, those anomalies were just as likely in people experiencing back pain as in people with no symptoms at all. Now they were back to square one and did not know where back pain actually came from.
Funny enough, back pain can most reliably be lifted by seeing a doctor. It does not matter whether the dictor prescribes some medication, arranges for surgery or does nothing at all.
In many cases (not just back pain) simply seeing a doctor increases your chances of getting better way more than any particular therapy. Humans are weird animals.
http://aaroniba.net/articles/tmp/how-i-cured-my-rsi-pain.htm...
I'm a skeptic myself, trained as a scientist with degrees in physics from Harvard and Caltech. The technique from the book seems like it couldn't possibly work, but it did. As noted before, YMMV.
This is a TED video by Moseley: http://www.youtube.com/watch?v=gwd-wLdIHjs
And this is a good summarizing post about pain science: http://www.bettermovement.org/2010/seven-things-you-should-k...
I recommend reading the entire contents of conquerrsi.com (gone, but still accessible on archive.org), thinking about that while your read sarno.
I do think what Sarno writes is what is really going on in most cases of "RSI" and other types of chronic pain. It makes complete logical sense to me and makes sense of everything I experienced, even going back before I had the wrist pain (occasional unexplained back pain, neck pain, etc that would last for weeks - which I no longer have now).
a. Have a plan with dates, milestones and accountability mechanisms
b. Start small (Instead of one month using a different OS, how about day and go from there)
c. Make it meaningful, Know why you're making a Committment, Be Selective (Have an intrinsic motivation to make a change in your everyday life)
d. Stay the course (If you get off track, get back on)
edit: formatting, typo
Plus, working together with other people always gives you motivation to complete tasks, whether it be working out at the gym or learning a new programming language.
I have generally believed that, too. But, on second thought, wouldn't having more people complicate planning thus thwarting progress?
If you work with 10 people on a project, you are not as accountable because everyone else is responsible for the project as well.
However, if you are working with 1 other person, that person holds you accountable for everything; you have no excuses to not complete the project.
Finally, if you are working by yourself, you are only holding yourself accountable; this is bound to fail. You need some external influence of motivation to continue on, and oftentimes you need more than your own motivation.
Taking it to the extremes, if you work with 100 people to lear, then you probably won't have the motivation to do it. There are many reasons why, but to make a simple argument: the more people, the worse. However, if you work with just your friend, then you rely on one another to complete the goal. It is ment
For example, I might but an email reminder 4 weeks in advance, 1 in advance, and 3 days before for an important deadline.
http://derwiki.tumblr.com/post/15086471518/setting-yourself-...
tl;dr is "pick measurable resolutions, try a bunch in a staggered manner starting with the most achievable first to gain momentum, don't be afraid to cut and run if some resolutions aren't making sense as you try to incorporate them into your life"
If you have an ability to track your body fat with a decent precision, that would be a better metric.
To my downvoter, just curious: why? I thought my blog post was relevant, and it seemed better than taking 30 minutes to re-hash my thoughts into a HN comment.
I really want to give woodworking a shot this year.
But delving into another totally different subject like healthcare, or insurance, or psychology opens you up to a whole set of new problems and ideas. Whereas just learning technology helps you with the implementation side of things, not the high-level problem solving.
"Engineers need to learn how to measure what they can't count, instead of counting only what they can measure."
Most of us, programmers when get busy in work tend to ignore our families unintentionally.This pattern is not different than artists who pain pictures.
After watching the TED Talk by Matt Cutts(mentioned in my last post) and some serious complaints by my wife and kid, I decided to make a resolution of this year to give more time to family than I used to give last year. It's covering few things mentioned in the post:
1- Coming out of comfort zone: When I start coding or doing something relevant of it, I just forget everything and often work in wee hours. Now coming out of it is definitely not comfortable for me but eventually would turn out to make things sane around me.
2- Be social: When one gets social,even with wife and other family member, you got to face things which don't pertain coding. While things like that could be painful at times due to bad situation but it naturally makes your brain cells think about other things as well.
So, I request to myself and entire HN community to give more time to your family too. You never know how such "non-technical" moments make your technical journey more beautiful.
my 2 cents.
Try something more concrete like "Eat no more than 2 fast food meals a month".
Basically, your first resolution should be "Set 11 tangible goals".
I didn't get really serious about it until last year, but now I wouldn't code without it. The confidence it gives when refactoring code (run the test, see if you broke something) is pure gold. Plus, just writing the tests puts you in a frame of mind where you're questioning a lot of your assumptions, and you often discover flaws in your architecture that would be painful to fix if discovered later.
3. Embrace the uncomfortable. How about quit Facebook...
SICP (Wizard book),
Practical Electronics for inventors,
Code Complete,
Javascript: The good parts,
Programming Android,
Arduino Cookbook
Now the question is , what order to read them in?
Meditate Regularly
That said I think meditation would benefit a lot of people more than they realize, but they really need a proper introduction and guidance to actually do it in a way that is beneficial. This is extraordinarily hard to do on your own. (I started in my 20s and got a lot of out actual instruction at a retreat center).
If you do this, please go to restaurants and request a vegan meal. The environmental benefits of the vegan diet are well-documented.
The best way to enact change is to get restaurants to start listing vegan options.
Oh, and something slightly offtopic: if you have children, do not raise them with a vegetarian or even vegan diet. That should be classified and punishable as child abuse.
That's ridiculous. Would you not agree that vegetarian people are likely to be more conscious of their nutritian than the average person?
Here's an anecdote. I know three children brought up in vegetarian* family. All three were high achievers academically and athletically. It's worth noting that their mother was very conscious of nutrition, and did give them supplements.
*Pescatarian, actually. Though many pescatarians call themselves vegetarian, including this family.
That's certainly true, and actually a necessity for vegetarianism to be healthy in the first place (just removing meat from your meals isn't going to magically be more healthy, it's actually the opposite). It's still pretty much impossible to supply a growing child with the needed nutrients on a purely vegetarian basis. While it's of course possible for children to grow up into healthy adults this way, it's still not without heavy risks to the child's physical development.
If the above children are still too young for the alleged negative health effects, read up on older vegan children at [1]. If you want the American Dietetic Association guidelines [2]:
"Well-planned vegetarian diets are appropriate for individuals during all stages of the life-cycle including pregnancy, lactation, infancy, childhood and adolescence and for athletes."
Instead of "pretty much impossible", I would say it's quite easy to provide all needed nutrients. All parents, not just vegan parents, should read up on childrens' nutritional needs. But it doesn't matter if the protein comes from meat or kidney beans, or if the B12 and calcium come from cow's milk or fortified oat milk.
It seems to me that that kind of diet is not appropriate for the majority of the population.
Why? A good number of children in India are raised with a vegetarian diet. Of course, Indian cuisine has a large number of diverse and flavorful vegetarian dishes (unlike most other countries) The lack of availability of good vegetarian/vegan food could also be a concern, but again, that does not hold true in India. In fact, there are diets way more stricter than just vegan/vegetarian which are fairly common as well. http://en.wikipedia.org/wiki/Jain_vegetarianism for example.
Still, that's not taking away from running, many people really enjoy it and there is no denying it a cheap way to get fit.
- all you need is a pair of decent trainers and shorts
- you don't need a partner
- you make obvious and steady progress
- most people unused to exercise need to work on cardiovascular stuff, not six packs
- you get to go outside, not stuck inside a hall or somewhere
That's subjective; I like running outside. It lets me clear my mind like no other form of exercise. (I hate running int he gym, though)
> it destroys your knees
Only if you do it wrong. Unfortunately, 99.9% of the people do it wrong. I had started to develop some knee pains (only while running) after a healed knee injury. And then I discovered the Vibram Five Fingers, and after two weeks the knee pains were gone for good.
They take a while to get used to, but they're worth it.
tl;dr run with an impact front-to-back, toe-to-heel.
front-to-back toe-to-heel is the key. The vibram is a way to get there.
The other important feature is "high-resolution" impact transfer - you need precise ground feedback for your muscles to compensate for an uneven terrain.
If you have (as an extreme absurd case) a super-hard graphite/plexiglass sole, then you have no cushioning, but are not likely to avoid delivering impacts to your knees even if you run on the balls of your feet.
Supposedly, Vivo Barefoot, Nike Free and Newton are as good. But I only have experience with the Vibram FiveFingers, which is why I recommended it.
> I just couldn't buy into having plastic between my toes
Me neither, but I just had to try, and I actually like it, even though I don't like "toe socks" inside a regular sneaker.
> or not having option of wearing some liner/socks
There are injinji socks; but I prefer the VFFs unsocked if I can properly wash and dry them (I use socks when I don't have wash-and-dry facilities).
> since mine look more "normal" or let's say less "goofy" I can confidently wear them in any environment.
That's a definite plus. (On the other hand, if you're looking for a conversation starter, the vibrams are hard to beat!)
Most forms of exercise will not give you a visible sixpack. The biggest thing that matters for a sixpack is body fat %, which requires a healthy diet more than anything else.
As for running, I HATE running for any significant amount of time, and I chalk this up partially to my body-type - I'm very good with short sprints and have large muscle mass in my legs, which is the opposite of most serious [distance] runners who have leaner legs, but similar to track stars who do the 100M and such.
At the moment I usually walk up, across and down a few floors in my building.
This is a myth.
http://well.blogs.nytimes.com/2009/08/11/phys-ed-can-running...
^ as I understood the paper I read last year, which I now can't find but it might have been mentioned in the NYT
The only downside is that it won't actually get you fit in the traditional sense. I can pull into a front lever using two fingertips, but I can't run a mile to save my life.
Still, it's exercise that you'll actually do. And unless you live in Nebraska, there's a climbing gym within a 20 minute drive of you right this minute.
Continuous bouldering again is a great way to work your cardiovascular while also stimulating your core. Slow top roping on the other hand won't be the same.
As seems to be the grandparents goal, you will definitely get a sixpack from rock climbing.
And FWIW, I've been climbing 2 times/week for 3 years now and have no where near a six-pack :)
Also the only way to have a six pack is have low body fat, one of the many ways to achieve that is through running.
I don't think one should assume exercise means running but your points against running are wrong as well.
There is also this whole puzzle solving aspect to rock climbing that I was unaware of before I started climbing. You can mostly brute force your way through a route if you are strong enough but there is always a more efficient way to do it that uses a fraction of the energy. Figuring out the right way to do a route is very satisfying to my inner nerd.