Saturday, February 24, 2018

Two years of Colemak

It's been more than 2 years since I learned to type using Colemak, and I am still happily using it. I have nearly no interaction with QWERTY aside from my phone, the occasional shared machine where I can't use my AutoHotKey mappings, and the meaningless default letters on all the keyboards I use but never look at. I never actually achieved my goal of 70 WPM, but I also never really properly trained for speed. But, I can typically type all day with no back of hand pain, and that was reason numero uno! Although, it should be noted that I also switched to a trackball so I cannot fully attribute my lack of RSI pain to Colemak. I now touch type with all ten fingers, rather than my gimpy QWERTY variant that I self-taught in 2nd grade when my fingers were too small for home row on the keyboard. I'm not really sure why it's taken me two years to blog a follow up about this (more about my poor blogging habits than my typing ability, I can assure). I was pretty solidly proficient in my Colemak adjustment by month 2 of my transition - by March 2016 I was up to a passable 40 WPM. But those were two brutal months. Absolutely brutal.

Some notes about what I learned/now know/struggled with:
  • I like that the transitional Tarmak layouts are available for learning, but for me it was all or nothing. I never used this method because getting proper touch typing technique down made the experience different enough from QWERTY that I learned quickly and did not confuse which layout I was in.
  • Having a labeled keyboard cover helped immensely, especially when it came to passwords. Without this, I would not have been able to switch wholesale and learning would have taken much longer. While I no longer need the labels, having the cover is still really nice, and I have bought multiple over the past two years. Plus, sometimes you are lounging on a couch and not wanting to deal with proper form. Labels mean I can be sloppy occasionally if I want to.
  • Microsoft Windows is pretty hostile in its lack of Colemak support compared to MacOS. Thankfully my home and work machines are all Macs, but I get around okay in Windows with the help of AutoHotKey. My config is here.
  • The "r" and "s" placement was by far the most difficult part of my transition. Moving the "s" into the QWERTY "d" position meant that I was always hitting "r" accidentally when I meant "s". I was still doing that sometimes for a good 6-8 months into my learning process - well beyond where I was proficient with everything else. I have thought many times about just swapping those two keys.
  • At two years, unfortunately I still average about ~55 WPM, which was my pre-Colemak speed on QWERTY. I peak much higher than I ever did with QWERTY at ~75 WPM bursts, but my average is sill brought down by mistakes and inconsistencies. Also, I was never the best speller. I'm more a numbers guy.
  • I did not lose any speed typing on my QWERTY phone, but I did wish I had a good iOS Colemak keyboard in the early days, if for nothing else to give me the exposure to help me memorize Colemak placement. There are a few, and this was the best one I found.
  • On the rare occasion where I have to type QWERTY on someone else's machine in front of them, I feel gimpy and could never achieve anywhere close to my prior typing speed. The less I use QWERTY, the less I can go back to it.
  • I learned that there is a lot of help, blogs, and interesting info in forums, or even chat rooms. But truthfully, I learned way more by just practicing and doing what worked for me than from all the advice. Each learner has their own path.
  • I do not regret switching at all, but I also do not find myself actively recommending to others that they switch, nor do I find that I push Colemak over other options like Dvorak. In fact, I often find myself talking about smaller swapping options or even Minimak because truly - almost ANYTHING is better than QWERTY. QWERTY does manage to beat one purposely awful layout, so I guess it could have been worse. But not much.
  • The new layout kept me from using vim/neovim for a really, really long time. Vi, being a modal editor with both mnemonic AND positional keys like HJKL for movement was too much to manage while learning. Had vim been my primary editor, I probably would not have even switched from QWERTY. The switch was painful enough without blowing use of my favorite editor out of the water.
  • With Colemak, everyone talks about inward rolls and two-letter combos called bigrams and all these nerdy concepts that are pretty techno-babbley, and that's fine. For me, as a beginner, no argument was as compelling as the simple "Wheel of Fortune" argument - remember RSTLNE? The most common consonants plus a vowel? Well, the 10 most common English letters are actually e-t-a-o-i-n-s-r-h-l-d. Have a look at the Colemak home row: a-r-s-t-d-h-n-e-i-o. They are all there on home row with Colemak! There are so many words you can make without even leaving home row. Since your fingers will spend most of their time there, it is so comfortable to type.
  • Optimized bigrams and inward rolls are super nerdy concepts, and I never understood how awesome they are until I was more fluent in Colemak. Now that I am I appreciate how Colemak handles them so much. The joy and comfort of Colemak typing has not worn off. And I'm not the only one. Barstool. Barstool. Ahhh.
So... would I switch if I had it to do over again? Absolutely. Would I choose Colemak? Pretty sure I would, though I am jealous of how much better Dvorak is supported and evangelized. All the good articles are Dvorak related. Are you thinking I am absolutely crazy, or are you thinking of switching? Both?

The best argument I have for you is that if you are a programmer, you are a typist first. For me, making myself a better and more efficient typist pays me back in comfort and longevity. Did I get as fast as I thought I would? No, so maybe that's not worth it to you if that's your goal. But as for RSI, anecdotally I can put a big fat check in that box. Now, off to work on typing speed again.

Sunday, January 31, 2016

Colemak - the slowest way I could write a blog post (for now!)

I am in the process of learning Colemak, an alternate keyboard layout. There are lots of great reasons to do something that seems so masochistic, but it would take too long to type them here (literally). I've gone from ~55 WPM, to about ~15-20, but my goal is ~70 COMFORTABLY by the time I'm done. The top of my right hand especially hurts after prolonged QWERTY use.

A couple guys at work use Dvorak, which I tried to learn in 2005. But as a developer, the punctuation moves killed me so I gave up after a couple of months. Plus, Dvorak was designed without the aid of computers and without any concern for the learning curve coming from QWERTY. Colemak has been easier to learn than Dvorak for me because:

  • Only two keys changed hands: E and P
  • Only three keys moved far from their QWERTY positions: E, P & Y
  • The useless CAPSLOCK key becomes backspace, so you have a way to fix mistakes on homerow
  • Only 17 keys moved in total, and only one on the bottom row
  • WAY more words can be typed without moving from homerow
  • L is more accessible with stronger fingers
The biggest problem for me has been relearning frequent letters like E and S. S has been especially brutal.

Here are the resources I used to make the decision to switch:
All the online resources suggest learning to touchtype over QWERTY keys with the new layout. Hogwash. Last time I put stickers on my keys, and I still touchtyped, but didn't get stuck or frustrated nearly so much as I would have without labels. This time, I have (and highly recommend), this:

(this post was not easy to type, so when/if I get better, I'll follow up).

Monday, January 25, 2016

Microblogging and the false need to write big, profound thought-pieces

I haven't blogged in like 3 years, and it's for one simple fact - Facebook took over as a way to give and receive informal updates, blowing the need for a personal blog out of the water. I, like many others, found that personal blogging lacks meaningful feedback and instead attracts trolls or worse, silence. But Facebook became its own evil, forcing me to make a decision last year to quit that entirely - the obsessive status checking, the self-promotion, the addictive encouragement, and of course, the incessant behavioral tracking. I've never found value in Twitter - too little can be said with too many people saying it and for what exactly? So, maybe the result of all this discovery in the age of social media is that, for someone like me who lacks any real sense of FOMO and naturally experiences JOMO before it was a thing, maybe it's time to not worry so much about presenting a perfect self or a perfect thought or perfect written prose on that thought and just share what I have on my mind today and let that be good enough.

Saturday, November 16, 2013

Sugar! Ah, Honey Honey!

This is, at its heart, a diet story.  Sorry for that.  I have no doubt that it will annoy some of you to read this, unfortunately.  Why do I say "unfortunately"?  Well, this really isn't some product promotion, self-promotion, health promotion, or even diet promotion.  I'd keep it to myself entirely and enjoy the personal victory, except that there's some brain science and nutrition science and people science here that is undeniably interesting.  Hidden within all the talk about diet within our chronically overweight society are some serious myths about food, exercise, and dieting that continue to confuse and frustrate those of us who want to be healthier, but lack the willpower, drive, knowledge, or ability to do so.  Also, this is a story about ME - consult your own doctor if you want to try anything described here.

I have 3 goal weights.  I've had them for the past 10+ years.  My first goal is to get to a BMI less than 30.  My second, to reach my wedding weight.  And my third is to weigh no more than 10 pounds more than I weighed my Sophomore year in college; the year after I reached my current height and man-build, so it's not terribly unrealistic (BMI <25).  Each of these goals is about 15 more pounds than the other, for a total of 45 pounds.  I have essentially 180 McDonald's quarter pounders strapped to my belly, butt, and face.  I also have a sweet tooth, a sedentary job, a sleep disorder, higher than normal biometrics, and a stubborn man-attitude about doing things my way in my own timing without being told what I should do with my life.  Needless to say, I've not been very successful at attaining any of my 3 goals.

I've tried exercising at the workout room at work.  I've tried doing a daily workout routine with a Wii Fit and making it a game.  I've tried walking 10,000+ steps a day with a FitBit One.  It always somewhat worked (s...l...o...w...l...y...), but a small regression over a holiday weekend would offset the whole thing.  I've tried counting calories, which proved too hard too.  There's too much you can't get a calorie count on, even when crowd-sourced through apps like My Fitness Pal.

On Tuesday, October 29th 2013, I made a real change that I'm happy to say actually works.  This morning, 11/16/2013, I have hit my first goal.  I now have a BMI less than 30.0, which moves me from obsese to merely overweight!  That's 18 days for 16.3 pounds.  And, I'm not being fancy, faddy, or dangerous about it.  I'm quite simply counting daily carbohydrate intake, and using a FitBit Aria wifi scale to track my progress.  I've been eating as much as I want, as long as it does not contain bread, starch, or added sugar.  Currently, I am limiting my intake to less than 20 total grams per day.

If it sounds like I'm just talking about Atkins or South Beach or any of the other for-profit fad diet solutions, fine.  So be it.  I'm essentially doing that, but I've made it simpler than all that.  No books.  No special packaged and labeled food.  No changing my fast-food lunch trips.

Here are my simple rules:
  1. Do not be hungry!  Ever.  Eat anytime I want to; just drink water first to ensure I really was hungry since often we mistake hunger for thirst.  Cravings are okay.  Hunger is not.
  2. Know (with reasonable certainty) how many carbs are in anything I eat prior to putting it in my body
  3. Do not exceed 15 grams of carbs per day with a +5 gram buffer to compensate for incomplete data on rule #2
  4. Weigh myself at the same time in the same way daily using my FitBit Aria.  If I keep losing, stick to eating the same tasty things that worked, and change course if it appears I accidentally got into some sugary/carb-y foods the prior day.
Why is this working?  I think it's pretty simple, actually.  Our bodies were designed to store sugar as fat, but our bodies don't turn ingested fat into body fat.  Sugary fruits were only available in the warm summer months and served to provide us what we needed to make it through a long winter.

"Consuming fatty foods makes us fat" is a huge lie, and low-fat foods are the thing that is actually killing us by trading that fat for added sugars and high carbs.  Don't believe me?  National Geographic recently published an article about sugar and how our bodies process it and how humans have never had such free access to this poison as we do in modern society.  It's an insightful read, but the astounding takeaway is that on average Americans eat 77lbs of sugar annually.

So again, how is this diet really working for me?  Well, for one thing, it's causing me to eat a lot fewer processed foods.  Processed foods have too many hidden carbs.  It's also EASY to NOT BE HUNGRY!  Wonder of wonders!  Foods higher in fiber, fat, and protein are more filling.

Cheats:  Let me caveat that this is not Atkins.  While I am seeing Induction-like loss in my first weeks, I have not cut out caffeine, diet coke, nuts, or tomatoes.

Myths: This is not a meat diet.  Though I could do that, it's bland and boring and not good for me in ways other than my weight.  I eat lots of veggies, and get most of my allotment of carbs from those.

Downsides:  I won't lie to you.  The first week was hell.  Not because of the food, but because I couldn't have my morning Starbucks.  Though I was having caffeine, I never liked unsweetened coffee so I didn't have any.  The headache was beyond brutal.  No sane amount of diet Coke will fix it, though diet Mountain Dew might have.  Regardless, it took 7 days to get through my caffeine withdrawal.  It also stinks throwing buns and bread away.  It feels wasteful.  I also crave fruit.  I miss bananas.

Pleasant surprises:  Though I have no gall bladder, I have had no digestive problems with this diet.  I also was pleased to discover that I can have Chipotle, as long as I avoid tortillas, corn, beans, rice, and the chips.  A salad bowl, no dressing, with fajita or tomatoes, meat, sour cream and cheese is still an option.  Yum!  I also have a lot more energy, and don't feel worn out.  And I'm hunger pang free, and have discovered the art of using spices to flavor my food in ways that beat the heck out of sugar.  I can have tabasco and do so regularly.  Raw veggies aren't required - I can cook them in plenty of olive oil and season them appropriately.  They're tasty and low-carb.  Ranch dressing is good too.

Guts:  If you notice the dates, I'm doing this through Halloween, Thanksgiving, and I'm planning to break on Christmas Day and assess my next steps.  Passing on the candy wasn't too tough.  Passing on the stuffing, sweet potatoes, mashed potatoes, cranberry sauce, rolls and a whole lot more at Thanksgiving will be tough, no doubt.

Lifestyle:  There's no doubt that this is a lifestyle change.  Even when I have attained my goal weight, I need to be careful adding carbs back.  Each person's metabolism can only handle so many carbs per day, and the trick will be finding that balance.  Perhaps I can have my Starbucks, but not white sandwich bread.  We'll see.  When I'm not lugging around all this weight, building some muscle to increase my body's ability to process carbs will be next on the list.

Weight from Oct 22nd - Nov 16th Diet started Oct 29, the top of the cliff

Saturday, August 31, 2013

iPython Notebook and LinqPad

I attended PyOhio 2013 in July.  The week prior to the conference, I was on vacation and discovered Python.  Call me crazy, but I like programming - it's what I'm built for, even if it's not my official day job now.  So anyway, I'm on vaca and playing with Node.js trying to accomplish something that should be easy, but the libraries are immature and the documentation is lacking or flat out wrong in places. I got frustrated with trying to actually get something done with Node.js and in a fit of insanity opened up PyCharm and made a Django project and started fresh.  Boy was I glad I did.  I'll probably write more about this later, but essentially, I've been hooked on Python for a couple of month's now having picked it up for the first time in a fit of Node rage and then shortly thereafter stumbling into one of the best tech conferences I've attended - PyOhio.

One of the big takeaways for me from that conference was learning about iPython Notebook.  What a great tool!  Go see what I saw here.  All the talks from the free PyOhio conference are posted for free too.  Like I said - great conference!

Back to iPython Notebook - it let's me develop a little working bit of code in small chunks, testing and trying things along the way.  While Visual Studio is hands-down the best IDE out there, I wouldn't call it the best development experience.  Often I find myself hacking out a solution to a problem in LinqPad of all things.  Perhaps this is similar to what the "Test-First" TDD crowd is trying to sell, but doesn't quite get all the way there.  With iPython Notebook, I can do what I want when I'm hacking, which is build small, working, lego-like structures in code and assemble those into a larger whole.  It's a beautiful thing, and doing that highlighted for me the frustration of developing with statically typed compiled languages.  The edit-compile-run-test-repeat cycle gets to be tedious.  It's nice to get away from the .NET ecosystem and see what else is out there.  Doing that makes me a better developer all around.  And LinqPad has become my iPython Notebook for .NET.