home industries $projects docs hoff.kitchen metapages

go2

Terminal-based ASCII art language-learning flashcard game written in Go.

Quality Status: Gold Master

Functionality Status: Iterative

License: GPL v3

go2 was the result of a trip I took to Japan in January 2024. Sitting on the metro and looking at the train station signs I thought to myself "I want to read that thing." So lying in bed in my hotel room at night, I whipped up this terminal flashcard game in under a week. The result? By the end of my trip I was reading the Hiragana and Katakana that made up street signs, advertisements and train stations. I'd say that's a pretty good result ;)

Heaps of flashcard games exist for language learning, so why does mine need to exist? For a few reasons:

  1. I wanted to play offline, specifically in my Terminal. No bloated electron apps please!
  2. Statistics: I wanted ALL the details. For example, how long did it take me to type out each character? What were my fastest, average and slowest times, etc.
  3. Using statistics to modify the game: I want my worst characters to show up more often!
  4. Different kinds of games! Yeah the normal "pop something up on screen and type it out" thing is cool, but I wanted to expand it in future and add variety.
  5. Isn't it just way cooler that the reason I could read a new alphabet is because of a game I personally made while in that country?

Over in Japan my MVP was just to have a simple game loop where characters flash up on screen, you type em out and it shows you the time per character. To be honest the MVP was sloppily made simply because of the time crunch: by the time I thought it up I had one week left in my trip. Recently I took the opportunity to re-do it and it's a much better product now. The supported minigames are:

  1. Time Trial: The character/word appears on screen and you type as fast as possible. Time between characters/words and the total time for the set is recorded.
  2. After Image: The character/word appears on screen for a user-defined time before disappearing, and you have to type what you remember. You're scored based on 'correctness'.

These features are present for all minigames:

Video Feature - How to Actually Start a Software Project!