Project Proposal
Closed this issue · 2 comments
krisnova commented
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
- Come up with a user story for the project
- Come up with a name
- Come up with a diagram for implementations (Directory watching, chrome plugin)
- Come up with abstraction for websites (GitHub, Wordpress, etc)
vkorbes commented
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:
- User types in the card.
- The program checks whether that's the correct card in order.
- If it is, it displays the next card.
- If it isn't, the user can either try again; OR
- Skip that card and try again later; OR
- 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.
- This step goes:
- 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.
vkorbes commented
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:
- User types in the card.
- The program checks whether that's the correct card in order.
- If it is, it displays the next card.
- If it isn't, the user can either try again; OR
- Give up, have the program show them the correct answer, and count it as a mistake.
- This step goes:
- 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.