Quizme Design

Sunday, Dec 23, 2018

The idea of quizme started with a need to learn R more effectively as I could not spend more than few hours a day outside of my regular life. My first approach to the problem, while I thought was neat, needed a lot of manual intervention. In this design, I had two text files - one containing questions and another containing questions and answers. A simple function would randomly select 10 questions. You would open this test file in a text editor, write code to test your understanding, then go back to the file containing answers to see if your answers are correct. This approach had some serious drawbacks:

  1. There is no way to evaluate if you are improving; the function just randomly picks 10 questions.
  2. You have to maintain two separate files containing same information.
  3. You have to switch between files to check the answers.
  4. It is not efficient to share just the function with other users without proper documentation.

Design Goals and Solutions

Quizme was my solution to address these drawbacks. I drew some ideas from books I read earlier on the subject of memory and learning (Make It Stick and A Mind for Numbers: How to Excel at Math and Science) and a software solution I had used before, Anki. I set out with the following design goals and the solutions driven by these goals:

  1. Simple I do not have any formal training in UI/UX design but in my current job, I get frequent opportunities to discuss what a good design should be. While for some applications (graphic design tools for example) it is unavoidable to have many buttons and dialogs, many others can do without (linux utilities for example) fancy UIs
  1. Intelligent There has to be some way of recording the performance so that tool can schedule the next quiz intelligently to minimize the time needed to learn a certain concept
  1. Ease of use If you have to do more work to learn or remember how to use the tool, it becomes a distraction that can potentially take away our limited amount of cognitive energy
  1. Fast As the data grows, it should not slow down the response which can become frustrating enough to give up on the tool
  1. Expandable If i need to improve/change the algorithm later, the metadata has to be kept separate from quiz data
  1. Shareable Not only this would allow me to share the tool with others, it makes the documentation and maintainence easier and allows for collaboration to make additional improvements


  1. Easily add question-answer pairs
  2. Active learning respository and total number of questions are separated so you can freely add as much learning material
  3. Topic tags
  4. Image answers
  5. Cloud synchronization
  6. Week ahead status
  7. Control of number of new questions to learn

Learning More