Goldfish Memory

It's live goldfish.dev and almost usable!

An app I made over Christmas and the lockdowns, its designed as a simple flashcard memory app. Based on the super memo algoirithm, like Anki. It reminds you to remember what you've forgotten. I've been frustrated with my rate of learning. Online courses are great but if you don't make an effort to remember the material it's like you didn't study it in the first place.

Goldfish

Features

Open Content

One of the important features I wanted was to allow deck creation to be done in the open. Decks are a git repository made of markdown files. Each card file contains a separator <!--question--> splitting the question from the answer. Updating decks is done via git, pulling a new commit and updating the cards. Importantly this allows the history of the cards to follow the git tracked card.

Semantic Tree

Another import features was the idea that knowledge is as a tree. The great Elon Musk said in a Reddit AMA:

One bit of advice: it is important to view knowledge as sort of a semantic tree — make sure you understand the fundamental principles, ie the trunk and big branches, before you get into the leaves/details or there is nothing for them to hang on to.

File structure plays the role of the tree. Top level folders being reviewed first before going into nested levels. This provides a framework for introducing the core concepts before going into deeper cards.

Generating Data

"Countries" is a deck of 760 cards to help learn each country and their flag and capitals. It's generated from Wikipedia data and shows how cards could be created. Code for generation is included in the deck. Checkout the deck here.

Tech Stack

Serverless backend in Go with a React/NextJS frontend. Hosted on Google Cloud, Firebase for hosting and CloudRun for compute. Git services are done using the git-go library modified for remote storage. API is programmed with protobuffers and my larking library to create REST bindings.

Future Work

A lot of features are needed to make this more useable to a general audience of people, especially for help in creating cards. For me, its a useful revision tool and I'll try to keep using it and iron out the friction. Please try it out and let me know!