Jonathan Lam

(Recently) Software Engineer @ Google Silicon
(Also recently) EE/CS @ The Cooper Union


5000 races in Colemak and keyboard debugging

On 9/6/2021, 5:29:59 PM

Return to blog

This post is broken up into two mostly-disjoint sections.

5000 races in Colemak

Follow-up to:

Progress has remained remarkably consistent. Most of my races are done on an old Dell Latitude keyboard (more on that later) and I can average about 120wpm over a long typing session (without quitting races).

WPM vs. race numberWPM vs. time

Some typing observations:

Keyboard repair

For college, I've decided to mostly use the Dell Latitude rather than the Acer Spin. The Spin is newer, uses less power, has a higher-resolution screen, doesn't have touchpad problems, has better RAM, has a camera, has USB3, and has a good battery life; but the Latitude has a much better build quality (including the keyboard quality and serviceability, as we'll soon see), better thermals, and is not noticeably slower for everyday tasks2.

As a result, I took to upgrade the RAM from the 2x2GB 2133MHz DDR3 to 2x8GB 2400MHz. I was able to get the new RAM for $40 on eBay and install it without a hitch. Within the next day, my keyboard started glitching -- keyboard events would get dropped intermittently for the duration of anywhere from a split second to several seconds at a time. Sometimes the key would get stuck on repeat, as if the keyup event was dropped (and it turns out, this was the problem.) Interestingly, it became more and more frequent over time, to the point where it was unbearable after three days (at which I tried to troubleshoot in earnest.)

Of course, the first suspect was the RAM. But after trying various combinations of the RAM, including using the old RAM, the problem persisted.

Maybe it was a kernel issue? No issue showed up in syslog. Maybe it was a software issue? My packages were up-to-date. Maybe an or evdev issue? evtest simply didn't show the events, which means that events were really being dropped.

If it was a hardware issue, I could try an external keyboard, but I didn't have one at hand (due to my current college living situation).

In a last-ditch effort, I thought I might try to debug the keyboard to check for a loose connection or short. The keyboard is fairly easy to remove on the Latitude. There was no loose connection. And then...

When the keyboard was not clicked into its slot, it worked normally!

After a half-dozen trial-and-error iterations of partially slotting the keyboard, I was able to identify that when the part of the keyboard closest to me touches the metal frame, the problem occurs, which probably indicates some sort of shorting condition. I was able to cover up the problematic metal contacts with paper, and my keyboard is working fine now!

The only question that remains is why this began right after the RAM replacement, and why it became more frequent over time. My only guess is that with the many typing races, there may have been some bending of the keyboard. (The keyboard is indeed malleable, as I discovered when removing it.) It's possible that the RAM replacement process catalyzed the bending.

Why am I sharing this story? It was one of the few computer-hardware troubleshooting successes I've had, and I think it was a good example of asking questions to troubleshoot.


1. As an analogy, imagine trainer shoes versus racing shoes. I can likely go a little faster on the Spin keyboard in the short term, but it isn't as comfortable and tires me out quickly.

2. Benchmarks suggest otherwise, but Emacs and web browsing feel the same if not snappier on the Latitude.

© Copyright 2023 Jonathan Lam