Bad muscle memory

When we say "muscle memory", we usually mean it in a positive way - something that you've learned to do so well, you don't need to think about it. Today, though, I want to talk about the bad muscle memory - habits that are automatic, but actually are unproductive and prevent further improvement. The scary part about bad muscle memory is that it can be very hard to notice and correct.

I recently switched to a new keyboard, first to Keyboardio Atreus and now to ZSA Voyager. Because these keyboards are much smaller, often only with 40% of the keys of a regular keyboard, I had to learn new positions for many keys. Moreover, these keyboards are fully programmable and encourage you to change the layout for your comfort. As I embraced the idea of tweaking the key positions on a whim, I came to a shocking realization that my most used keys are in terrible positions and I'm completely oblivious of this.

Take for example the Enter and Backspace keys. They are used all the time in the regular typing, yet pressing them requires a really uncomfortable stretching hand movement. Similarly, I rely on many keyboard shortcuts that use modifier keys such as Shift, Ctrl or Alt, and they are pressed with the weakest finger - the pinky.

Once I moved these keys to more comfortable positions and to stronger fingers, it was a strict improvement and I can't imagine going back. Moreover, I was able to replicate most of the gains of the new layout on my laptop with kmonad without any additional hardware. So the problem was really in my head and habits.

This got me thinking, how many other things in my workflow and life are like this, and how do I go about discovering and correcting such bad muscle memory?

The approach that have been working for me so far is to regularly try new things and get out of the comfort zone, for example:

  • Write Advent of Code in the unfamiliar programming language like Zig
  • Try using a new code editor Zed instead of the familiar Neovim
  • Learn a new Graphite keyboard layout instead of QWERTY

These exercises slow me down enough to start noticing my bad habits and motivate me to find ways to correct them.

I'm sure there are many more ways to achieve the same effect, let me know what works for you!

Project Euler Streak

I've just reached a 100 day streak solving a problem from Project Euler every day.

image

I've been a little worried that the difficulty will ramp up too quickly, but it happened to be just right - challenging enough to tickle my brain, but still manageable to solve within a day.

I'm solving the problems exclusively in Rust, as this is my main working language right now. I implement all solutions from scratch without relying on external crates (e.g. for BigInts), as my main goal is to build the feel/muscle memory for elegant Rust code. To achieve this, I usually iterate on a solution for some time after solving the problem to make it as simple as possible.

I plan to continue this streak until the end of November and then switch to solving Advent of Code. I will likely use Zig for Advent of Code as I've been looking for an excuse to learn the language for some time now.

You can find my solutions on Sourcehut.