Gotypist
A simple touch-typing tutor that follows Steve Yegge's methodology of going in fast, slow, and medium cycles.
The TL;DR of this methodology is that you make three passes for each phrase.
- Fast - type as fast as you can without any attention to proper technique or correctness
- Slow - use proper technique at all costs, go as slow as needed to achieve that
- Normal - type at target speed, try to make no mistakes
Gotypist will score each pass accordingly: errors do not matter in the first pass, speed does not matter in the second pass, and both matter in the final pass. Check out score.go
for details (which are subject to change).
This project was mainly motivated by trying out termbox-go, but it is definitely ready for productive learning.
Installation
From source
Go version 1.16 or newer is required.
go get github.com/pb-/gotypist
Using a package manager
Debian
Grab .deb
from barnumbirr/gotypist-debian, then
dpkg -i gotypist_<version>_amd64_<debian_version>.deb
Usage
gotypist [-f FILE] [-s] [-n PROB] [-c] [WORD]...
WORD... Explicitly specify a phrase
-f FILE Use FILE instead of a built-in dictionary
-n PROB Sprinkle in random numbers with probability 0 <= PROB <= 1
-c Tread -f FILE as code and go sequenntially through the lines
-d Run in demo mode to take a screenshot
Key bindings
ESC quit
C-F skip forward to the next phrase
C-R toggle repeat phrase mode
C-I toggle finger usage hints
Code organization
The code loosely follows an Elm-like architecture. In a nutshell that means all interesting and Gotypist-specific code resides within pure functions. This is quite experimental and some corners were cut since Go is not primarily a functional language, but it still enjoys a lot of the benefits of this architectural style!