vkorbes/ellenkorbes.github.io

Project Proposal

Closed this issue · 2 comments

For homework can we (Kris and Ellen) both come up with a project to work in Go.

Ideas

Mentorship idea (accountability)

  • Ability to show effort put into a project (time tracking)
  • Clock in / Clock out
  • App checks when you are working on something
  • "Today Ellen worked for 2 hours on this issue"
  • Check whether a file changes or not, update issue on github pages
  • Process would have to run on a user computer somehow

Detect work as when files are open/closed

Multiple implementations

User Story:

As a $user I can $feature because $reasons

Homework

  1. Come up with a user story for the project
  2. Come up with a name
  3. Come up with a diagram for implementations (Directory watching, chrome plugin)
  4. Come up with abstraction for websites (GitHub, Wordpress, etc)

I wasn't feeling it with the time tracking project. And I probably need to work on something silly at first just to help sink in all the stuff I came across on Gobyexample. So here's a totally stupid idea:

Deck Memorizing Helper Utility ♣ ♦ ♥ ♠

User Stories

  • As a user I can see all cards in a deck in shuffled order.*
    • They may be all displayed simultaneously, at once; OR
    • I can get one card at a time by pressing a key to show the next card;*
    • In which case I can choose between having all previous cards shown on the screen; OR
    • Have only one card visible at a time.*
    • I can choose any number of decks of cards. They may be displayed sequentially, one shuffled deck after the next; or all shuffled together in one big lump.
  • As a user I am prompted to type back the cards in order after having seen them on the step above.*
    • This step goes:
      1. User types in the card.
      2. The program checks whether that's the correct card in order.
      3. If it is, it displays the next card.
      4. If it isn't, the user can either try again; OR
      5. Skip that card and try again later; OR
      6. Give up, have the program show them the correct answer, and count it as a mistake.
    • The order may be either first-to-last or last-to-first;
    • And there's an option to change the order halfway through.
  • As a user I can see how long it took me in the memorizing step, and how many mistakes I made in the recall step.*
  • As a user I can see a list of which cards I got wrong.*
  • As a user I can have the program store the time/mistakes information under my username.
  • As a user I can see a progress comparison of days of practice vs. time to memorize vs. mistakes.
  • As a user I can see a list of which cards have historically given me the most trouble.

Items marked with * form the minimum viable product.

Silly name suggestions

  • What's The Deal
  • Officer on Deck
  • Replicant Deckard (Blade Runner reference. Ha. Ha.)
  • Cardquake
  • Brain RAM Benchmark
  • CARAMBA (Cards-assessed Mnemonic Benchmark)
  • Chads (From clubs+hearts+diamonds+spades)

Wishlist

Ideally the app would:

  • Be accessible from the web;
  • Have actual graphics;
  • Accept logins for different users;
  • Have a rundown of the whole Dominic Method instead of just being a little practice utility;
  • Have a leaderboard and/or competitions.

Spec

MVP user stories:

  • As a user I can see all cards in a deck in shuffled order.
    • I get one card at a time by pressing a key to show the next card;
    • Only one card is visible at a time.
  • As a user I am prompted to type back the cards in order after having seen them on the step above.
    • This step goes:
      1. User types in the card.
      2. The program checks whether that's the correct card in order.
      3. If it is, it displays the next card.
      4. If it isn't, the user can either try again; OR
      5. Give up, have the program show them the correct answer, and count it as a mistake.
  • As a user I can see how long it took me in the memorizing step, and how many mistakes I made in the recall step.
  • As a user I can see a list of which cards I got wrong.

Pseudocode

(Work in progress)


// Create an array containing all possible combinations in a deck of cards. 
// These are the suits, represented by C D H S, and the values, being
// A 2 3 4 5 6 7 8 9 10 J Q K. So for example, the clubs suit would have:
// CA C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK


// Shuffle the array.


// Display the first value, note down the NOW time, and await for user input.


// When the user presses a key, display the next card. If there are no more
// cards to display, note down the NOW time, and move to the next section.


// Display a message, and await user input.


// If the input matches the first value in the array, display the next value.
// If it doesn't, MISTAKES++, take note of which card the mistake happened in,
// and request that same card again.


// If the user presses the skip key, MISTAKES++, take note of which card the 
// mistake happened in, show the correct answer, and move on.


// Once the the deck is finished, display:
// The difference between the NOW times, the total MISTAKES counter, and which 
// cards were troublesome.


// If there was a filename argument, print the above into that filename, in a
// new line, prepended by the current date. If not, just exit.