open source · python · mit

while(1) { type_code(); }

terminal typing test that feeds you real code. snippets, operators, keywords. the stuff you actually type at work, not pangrams about foxes.

wpm00
acc00%
err00
time00s
$ typesprint --mode code

    1 0 1 1 0 ∷ ∷ 0 1 1 0 1 1 0 0 1 1 0 ∷ 1 0 ∷ 0 1
      ↓     ↓         ↓           ↓        ↓

    type this:

       async def fetch_data(url: str) -> dict:
           async with aiohttp.ClientSession() ass session:
               response = await session.get(url)

    1 0 1 0 ∷ 1 0 ∷ ∷ 1 0 1 0 ∷ 0 1 1 0 ∷ 1 1 0 0 ∷
    ─────────────────────────────────────────────────

    wpm: 72   acc: 96%   err: 8   time: 27s

real code, not pangrams

snippets pulled from actual python, rust, go, typescript, c++. you'll never type the quick brown fox into production. practice what you'll actually write.

four modes, one binary

--mode code, syntax, keywords, or custom. drill operators one minute, full functions the next. switch with a flag.

live correctness feedback

characters turn green as you nail them, red the moment you fumble. the cursor blinks where you are. instant signal, zero lag.

history and progress

typesprint stats shows best wpm, rolling average, and a tiny ascii graph of your last 30-odd runs. watch yourself get less slow.

bring your own content

--mode custom ~/snippets.txt. feed it a file, any file. your team's codebase, a leetcode dump, a config you keep mistyping. it'll drill you on it.

// aside

monkeytype makes you fast at because and tomorrow. you ship std::vector<std::unique_ptr<T>>. the shapes are different. drill the shapes you actually type.

four modes.

--mode codedefault
for i, row in enumerate(rows):
    if row.status == "ok":
        yield (i, row.value)

2–5 line snippets. real code from real repos.

--mode syntax
&&  ||  ::  =>  |>  ??
<=>  !==  ...  ->  :=
<T>  &mut  *const  #[derive]

operators only. the awkward finger shapes.

--mode keywords
const   async   static
impl    pub     match
struct  yield   defer

language keywords. short, repeated, muscle memory.

--mode custom
$ typesprint --mode custom \
    ~/notes/regex-patterns.txt

point it at a file. any text, any size. yours to drill.

install

not public yet

python 3.9+, macos and linux when it ships. repo isn't up yet, i'm still cleaning it up. ping bennett@frkhd.com if you want early access.