Skip to content

pb-/gotypist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

925d43a · Nov 24, 2021

History

99 Commits
Jan 25, 2018
May 17, 2020
Mar 26, 2017
Nov 12, 2017
Nov 12, 2017
Apr 8, 2017
Nov 24, 2021
Nov 24, 2021
Jan 29, 2018
Nov 24, 2021
Apr 10, 2019
Nov 24, 2021
May 17, 2020
Nov 24, 2021
Apr 13, 2019
Jan 29, 2018
Apr 5, 2017
Jan 30, 2018
Jan 29, 2018
Apr 15, 2017
Apr 15, 2017
Apr 24, 2017
Apr 13, 2019
Jan 29, 2018
Jan 29, 2018

Repository files navigation

Gotypist Build Status

A simple touch-typing tutor that follows Steve Yegge's methodology of going in fast, slow, and medium cycles.

Screenshot of a Gotypist session, normal mode

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!