AngelHack was lots of fun.  We met lots of interesting people and got the chance to work on a flashcard application that I’ve had on the backburner for ages.  One of the people I met summarized my project pitch as:

“So, there’s tons of research out there about how the brain learns most effectively – we want to bake those into an algorithm and put that behind a flashcards application to help people learn languages.  Anyone who wants to help is welcome to join.”  Awesome.

Flashcard applications are of course common, but I didn’t find any that quite fit my needs. We started with the priority queue based algorithm that I use manually when studying.  After using a card, it is reinserted into the queue, its position based on a personal evaluation of how well I know the contents of the card.  Because the items that need most work would be inserted closest to the head of the queue, they would be cycled through more often.  As confidence grows in the knowledge, the cards that represent that knowledge would gradually creep back until all cards are reinserted with the same low priority at the tail of the queue, making a straight pass through all the cards possible.

This algorithm works well for me but there is some mental overhead in deciding where to reinsert the cards when I’d rather be thinking about the material, and anyone who wants to use it needs to learn the algorithm.  Embedding this in a flashcard application would remove that overhead and allow anyone to do this without being conscious of the algorithm at all.

We took this as an excuse to play with the Firebase API for storage instead of setting up our own databases.  It was surprisingly easy to use and has a nice web based interface.  When we found that we could not share the database with other users, a member of the Firebase team manually edited their user database ACL to allow for it by using their own web interface.  Talk about eating your own dog food!  We were impressed with how quickly and painlessly it was done and may well use Firebase again in the future.  They also have some great examples, including a two-player Tetris.

In the end, we had a good time, produced a simple working demo, and presented it.  The source of what we submitted is on github, and the feedback from the judges was very positive:

  • First project that actually seems useful.
  • Neat demo – need to think through tracking right/wrong answers and what overall business strategy would be but cool concept
  • Adaptive part is cool, it would be nice if it could validate the user’s response, too.  There are a number of flash card sites and apps already in existence.
  • Very simple application. But it works, which is nice.
  • This will run in any platform, looks kinda cool. Want to see how they’re integrating … Great idea tho

We neglected to mention that we had discussed right/wrong answer tracking but decided that it was out of scope given limitations on manpower and our priorities.  The point of us going to the hackathon was to have fun, try out new APIs, and gain experience, not build a new business 0r win the competition.  To that end, we were very successful and I look forward to future hackathons.

After the hackathon, I came across, which seems to have a fairly good vocabulary acquisition system in place, along with a community of people generating courses.  It’s not tailored to my needs and as far as I know, does not have a script for batch importing of custom courses, but I have nonetheless learned a few things.  Check it out!

Categories: Projects

Leave a Reply