惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
C
Cyber Attacks, Cyber Crime and Cyber Security
Security Latest
Security Latest
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
S
Schneier on Security
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Full Disclosure
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
Hacker News: Ask HN
Hacker News: Ask HN
G
Google Developers Blog
H
Heimdal Security Blog
O
OpenAI News
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LangChain Blog
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
IT之家
IT之家
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Know Your Adversary
Know Your Adversary
博客园 - 聂微东
The Cloudflare Blog
C
Check Point Blog
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Tor Project blog
T
Threat Research - Cisco Blogs
T
Tailwind CSS Blog
P
Proofpoint News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
A
About on SuperTechFans
小众软件
小众软件
Cloudbric
Cloudbric
A
Arctic Wolf

Lobsters

Lunacy | Red Vice CIFSwitch: a non-universal Linux local root vulnerability RIPE NCC session fixation: poaching logins with an Atlas probe GNOME 2.20 but its Web Components Agentic Search for Context Engineering – Leonie Monigatti Garnix is shutting down [not OC] akashina.tngl.sh/jjc Concerning Emacs (and Jazz) Nitpicking the shell history scene in ‘Tron: Legacy’ What's cooking on SourceHut? Q2 2026 The tenth OpenPGP email summit Package managers that package package managers Clojure on Fennel part three: parsing WordPress at 23 Finding Miscompiles for Fun, Not Profit GitHub - creusot-rs/creusot: Creusot helps you prove your Rust code is correct. Announcing Rust 1.96.0 | Rust Blog A Love Letter to Neovim sqlite AGENTS.md Am I a Bad Friend? CSS vs. JavaScript • Josh W. Comeau Erlang Ecosystem Foundation - Supporting the BEAM community A brief note about slot access cost in Common Lisp Keyboard latency probe Rethinking the GNOME clipboard issues Back to the Building Blocks’ Building Blocks Tech Notes: Theseus: translating win32 to wasm Fast is better than slow Content-addressed Rust builds (or, what kache actually caches) Intent to Prototype: Embedding API Canada’s Bill C-22 and the security cost of collecting more data 5 PostgreSQL locking behaviors that trip people up okmij.org Stop advertising in your commits! | AksDev GitHub - mplsllc/macsurf: A modern web browser for Classic Mac OS 9 PowerPC. Real CSS3, ES5 JavaScript, native HTTPS — built with CodeWarrior on the Carbon API. Introducing DoomBench - Can Your Data Stack Run DOOM? What are some of your favourite developer tools? Building a Scalable Ingestion Pipeline with Temporal (Part 1) Converting shallow Git bundles into normal repositories Are you a member of any professional associations? What is a harmonic? An interactive comic about additive synthesis How Virtual Tables Work in the Itanium C++ ABI Using SwiftUI to Build a Mac-assed App in 2026 Rust (and Slint) on a jailbroken Kindle. ~jack/lambda-on-lambda - Serverless Haskell on AWS - sourcehut git Human proof for FOSS contributions Extremely simple internet radio controlled via IRC Announcing BABLR Splitting Konsole views from Helix to run tools | AksDev GitHub - yugr/rust-slides Serving files over HTTP three ways: synchronous, epoll, and io_uring update docs with information about building with build.py (#979) · astral-sh/python-build-standalone@c9c40c5 A Simple Makefile Tutorial On C extensions, portability, and alternative compilers Just How Bad Was The Intel IAPX432? Nix's Substituter List Is Not a Routing Table Accelerating copy_if using SIMD Lambda on Lambda: Serverless Haskell on AWS | Blog Announcing feed-repeat v1.0 Scaling Akvorado BMP RIB with sharding EYG news: A host of CLI improvements, new guides and new effects The social contract of writing JS Crossword C array types are weird; and related topics Flatpak will depend on systemd – OSnews Migrating from Go to Rust | corrode Rust Consulting A portentous reunion Vivado Licensing Options How my minimal, memory-safe Go rsync steers clear of vulnerabilities the entropy layer of a wavelet codec, on its own GitHub - nferhat/fht-compositor: A dynamic tiling Wayland compositor. Debian SE Linux and PinTheft Does bulk memmove speed up std::remove_if? (No.) 声明式部分更新 | Blog | Chrome for Developers Fully in-browser container builds Dianne Skoll's Web Site - Remind The Architecture of Open Source Applications (Volume 1)Berkeley DB Pardon MIE? - ironPeak Blog “Long-Term Support” doesn’t mean what you think Jira IS Turing-Complete May I recommend thinking of Emacs as your Fortress of Solitude hershey Floodgap Gopher-HTTP gateway gopher://thelambdalab.xyz/1cuneiforth/ HP QuickWeb, Singular And Pointless That one time I used Go panics for flow control A new suite of modern tools coming for editing and publishing RFCs From the Tabletop… The Digital Antiquarian Building a Host-Tuned GCC to Make GCC Compile Faster Are we self-sovereign PKI yet? Claw Patrol: an open-source security firewall for agents | Deno Revised^7 Report on Scheme, Large: Procedural Fascicle Draft is now public A Network Allow-List Won't Stop Exfiltration — André Graf From AFSK to Goertzel – µArt.cz Software For My New Home Server Introducing Neptune: Direct3D virtualization for QEMU AI Agent Bankrupted Their Operator While Trying to Scan DN42 - Lan Tian @ Blog mimalloc: A new, high-performance, scalable memory allocator for the modern era Making wl_shm fast The Soul of Maintaining a New Machine - Third Draft | Books in Progress What is Git made of?
Switching to Colemak | Pedro Alves
pta2002.com · 2026-05-25 · via Lobsters

I’ve always been a fast typer, easily reaching the 100wpm mark when doing a typing test, so I’ve never really felt like my typing speed was holding me back. What I never really learned to touch-type properly, and so I’ve accumulated some rather nasty habits that have been leaving me with aching fingers after a lot of typing. In partiular, despite being right-handed, I do almost all of my typing with my left hand, and basically only use my pinky in my right hand (honestly, it’s a wonder I ever managed to hit those speeds…)

So I wanted to learn to touch type properly and get rid of these habits that were on track to giving me RSI. But despite how many times I tried forcing myself to use the “correct” fingerings for my keyboard, they never stuck, and I kept coming back to my awful keyboard posture.

Looking more into touch typing and ergonomic keyboards, I decided to try switching to a better keyboard layout than QWERTY. I’d tried this in the past with Workman, but it never stuck, and I wanted to give it another shot. Looking through various reddit threads and blog posts lead me to the [Colemak-DH], which is supposed to be a better variant of the Colemak keyboard layout without some of the drawbacks of Workman.

The Colemak-DH keyboard layout

I am writing this blog post as a sort of diary as I get used to switching to this new layout, so let’s get started!

Day 0

Typing speed: 22wpm

So as to not go in cold turkey and leaving me unable to work until I got used to the new layout, I started out by using keybr.com, which teaches you the keyboard layout progressively by starting with the home row and unlocking the next letter once you’re accurate enough with the existing letters.

Screenshot of keybr.com. Pretend I took this on day 0 and not much later when I already typed pretty good.

It has the very useful features of emulating a keyboard layout, which meant I could try out Colemak-DH without having to install it on my computer. Another nice feature is that it shows the keyboard at the bottom, color-coded with the correct fingers, which is a great reference while I don’t memorize the layout.

I found the progression a bit slow, and it took me 4 days to unlock all letters doing ~20 minutes per day per day, but it definitely helped me get a grip on the layout.

Days 1-4

Typing speed: 45wpm

Over these days, I slowly worked over the lessons on keybr, without switching my main keyboard from QWERTY. In the end, I got a decent typing speed, but I’m still making a lot of mistakes, with an accuracy rate of around 95%. That might not sound like a lot, but it means one in twenty letters is incorrect, which leads to a lot of corrections and a signifficant hit to my speed.

Day 5 - Actually using Colemak

Typing speed: 50wpm

Ok, enough exercises, let’s actually use Colemak as my keyboard layout.

Installation

My work machine is a Macbook Pro, and while macOS does come with a Colemak layout, it does not have the DH mod by default, so I needed to install it. There are layout files available in ColemakMods, and they can be installed with homebrew!

brew install --cask colemak-dh # Install Colemak-DH

After this, I needed to sign out and back in to have the layout show up in the settings. I set it up so that the QWERTY layout was still set up, and I could switch between them using the globe key or Ctrl+Space.

I did not move around the keycaps on my keyboard. This is my work laptop, and Apple’s keycaps don’t really seem designed to be removed, so I’m rather afraid of breaking them. I’ll probably print a layout reference to keep around.

Experience report

So, at the end of the first day using Colemak, I’ve got a lot of pain points. The QWERTY muscle memory is pretty ingrained, and it takes a bit for my brain to “switch” and I start writing a little faster. I’m doing relatively fine with the letters at the end of the day as I’m writing this (albeit a lot slower, with all the corrections I’m having to do!), but it turns out you use a keyboard for a lot more than just writing letters…

Keyboard shortcuts

I thought this would be a bigger pain point than it actually was, honestly! Things like copy, paste, undo, have all been fine after a few attempts, though I do keep opening new browser windows (Cmd+N) when I meant to select the URL (Cmd+L). Since these are mostly mnemonics based rather than position based, I think in a few days I’ll adapt quick enough.

Modifier keys

This isn’t really related to Colemak, but as I’ve mostly managed to use the proper fingers for pressing letter keys, I realized I basically only use the right shift key and that makes typing some capital letters on the right hand side really tricky if I am to always use the correct finger. Since I’ve been relying on the finger positions for remembering the layout, trying to use a different finger for uppercase letters because my pinky is occupied has resulted in considerably more typos in uppercase than in lowercase.

I’ve seen online the suggestion to use sticky keys, but for now I’m trying to be mindful to use the shift key on the opposite hand as the one typing a letter.

Symbols

What’s the issue here, you might ask? Alternative keyboard layouts typically don’t move around the symbol keys, and Coleman-DH mostly doesn’t either!

Well, the issue is, I’m used to typing with a Portuguese keyboard layout, and the Coleman layout I installed is based on the US one. The letters are all in the same place, but all the symbols are on different place!

I thought I’d get used to this relatively quickly, since I’m relatively used to the US layout due to setting up unconfigured Linux installs and already having gotten used to new symbol locations when I moved to a Mac from a PC, but holy shit, I’m probably typing like 10% of symbols accurately by this point, it’s being painful!

For whatever reason, in Portugal at least, Macs have fairly different symbol locations from PC keyboards. I don’t know if this is a thing in other countries, but after a little time getting used to it, I can safely say I prefer the Mac layout, considering the PC layout wastes a whole key with « and », which I don’t think I have ever used if not for complaining about the wasted key! (Supposedly that’s how you’re meant to do quotations in Portuguese, but everyone, books included, uses regular quotes.)

I’m also missing accents and ç, which are quite necessary for writing correct Portuguese, so I’ll probably end up creating a new custom Colemak-DH layout with portuguese symbol keys.

I did find a layout for Brazilian Portuguese which seems like it’d work, but I have no idea how to get that onto a format which works on a Mac.

Vim

I use vim keybindings everywhere (I’m writing this in Neovim!), and the hjkl keys are specifically chosen due to being in the home row in QWERTY keyboards, but they’re all over the place in Colemak, which is making using it a rather miserable experience (I’ve been using the arrow keys for now, which… yuck!). I’ve considered rebinding them, but they end up as mnei on Colemak, and the e and i keys are rather important bindings I use all the time, and those are mnemonics based (end of word and insert mode), so I don’t think it makes much sense putting them elsewhere!

Colemak.org suggests using an “Extend” layer, which I’ll definitely explore in the future!

Random other stuff

I’ve been realizing I type a lot of stuff purely from muscle memory and not by thinking of the actual word. I’m noticing this because I’ve had OK accuracy with writing text (around 98% now) but absolutely abysmal accuracy with things such as command-line commands (I keep doing ds instead of cd and nn insead of jj!). Presumably, like with keyboard shortcuts, this will fade in a few days.

One thing I’ve had an awful difficulty with is passwords. Since I can’t see what I’m typing, I’m making all sorts of typos, which isn’t helped by the fact that all my typing of passwords is completely muscle-memory and I can barely remember what the characters actually are. I’ve just been switching back to QWERTY for that for now — after a few seconds or so, I’ve been quickly “clicking” back into QWERTY and writing at full speed.

I’ve also kept QWERTY on my phone. I mostly rely on autocorrect and swipe-writing, and it’s a completely different muscle memory to writing on a computer, and I’ve had no issue with it so far. Also, I suppose Colemak on a phone keyboard wouldn’t actually be solving any ergonomics issue, considering you’re only typing with your thumbs and not every finger except your thumbs. Presumably an “ergonomic” mobile keyboard wouldn’t look very much like a regular PC keyboard anymore (which only look like they do to imitate typewriters!), and would be closer to something like T9 with some extra keys and gestures.

Also, I’ve been doing so many typing lessons I’ve been getting some kind of Tetris Effect with typing… I’ll see a word and keep imagining myself typing it!

Days 7-8

Typing speed: 65wpm

This was the first time actually using Colemak full time, without switching back to QWERTY at all. I’ve been getting faster and more accurate, and without tripping up nearly as much. I’m still slower than I was using QWERTY, but am firmly within average person territory now, and am mostly just typing slower, but not typing wrong.

I’ve also gotten better about the symbols and using shift keys. I’ve been doing exercises on monkeytype with the “punctuation” setting, which is handy to get used to typing these. There’s also a way to have monketype enforce using the opposite shift key, which has been helping get used to that!

At the same time, I’ve mostly managed to avoid editing the layout, since I can type accents using Option/AltGr. For now that’s been good enough, so I’ll probably keep the layout as-is.

Days 9-∞

Typing speed: 85wpm

It’s been around two weeks since I started with this, and I can confidently say I am fastly becoming a way better typist. Hell, I’m improving ~10wpm every day and am close to my original speed! Where I’m still struggling most is with accuracy when I am holding modifier keys, since I tend to shift my hands around a bit and need to find the little ridges in the home row keys to get my fingers back into position. Still, I can definitely tell that Colemak is a much better keyboard than QWERTY simply due to the fact that I can actually keep my hands on the home row.

As for writing in Portuguese, it’s clearly not optimized for it, but that’s fine — it’s not worse than QWERTY, and on my computer I mostly write in English anyway.

I’ve been using the Extend layer and it’s been really nice. In short, I can hold Caps Lock + some other key to do actions (such as go back in a page, or press the arrow keys, or scroll the page!), and it’s so convenient to not need to leave the keyboard for a lot of stuff. I’ve even mostly gotten used to using Vim with it!1 This is applicable even without Colemak, so I recommend reading this article about it to learn more.

I think this is all I have to say! I’m still improving, but I have no doubt I’ll be able to surpass my original typing speed soon. If you spend all your time typing like me, and can handle the productivity hit for a few days, I recommend giving it a shot!

My progress on Monkeytype, from 35pm to 80wpm!


Thanks for reading! No AI was used to write or edit this post. Sorry if there are mistakes, as you can see, I’m still struggling to type properly :)

Footnotes

  1. Yes, I am technically committing the mortal sin of using Vim with the arrow keys… although that’s a heck of a lot nicer when the arrow keys get brought up to the home row :)