Kevin Coughlin (F'12)

Objectives and Key Results (OKRs) for the Fall 2012 Semester
Objective 1: OpenComment User Interface


 * Key Result 1: Mock UI for the necessary screens, test, and decide on best options
 * Key Result 2: User Account creation and management
 * Key Result 3: Implement administration page for Users and for Chunker / OpenComment
 * Key Result 4: OAuth with Facebook and other solutions (Github, Twitter?, etc)

Objective 2: Implement Source code 'chunker


 * Key Result 1: Prototype source code chunker that can tie in with administration page
 * Key Result 2: Store results either in database or some type of file system

Object 3: Launch OpenComment ---
 * Key Result 1: Launch OpenComment system before end of Fall '12 semester
 * Key Result 2: Implement unit tests (Need to remember to implement tests with Cucumber - https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Cucumber)

Notes
 * User is able to submit their own comments after performing a certain threshold of activity
 * Board that fosters community

Timeline

9/02/12
 * Drawing UI Mockups for: Admin, Comment, and User Account Creation / Management screens.
 * Prototyping Git source code chunker using Node.js
 * Prototyping Web app (mainly user account functionality) using Rails for now

9/09/12
 * Getting User accounts set up
 * Using [Devise](https://github.com/plataformatec/devise) and [OmniAuth](https://github.com/intridea/omniauth)
 * Successfully implemented user accounts, going to try to implement omniauth now for multiple account providers (Facebook, Github)

9/10/12
 * scrapped twitter auth because I was getting problems. Got facebook auth working using http://github.com/mkdynamic/omniauth-facebook

9/19/12
 * Implementing five star rating and joining the two methods of authentication (email and FB)
 * Migrating to Heroku and MySQL SaaS

9/20/12
 * Having serious issues with PostgreSQL drivers for Rails on my OSX install. Stopping me from deploying to Heroku
 * Heroku uses PostgreSQL by default without addon needed so I may stick with that and convert later if we decide to go to MySQL.
 * Hope to make a lot of headway tonight. 

9/21/12
 * Was finally able to install postgresql gem last night using the command: sudo gem install pg -- --with-pg-config='/Library/PostgreSQL/9.2/bin/pg_config'
 * Had to point it to PostgreSQL config file

9/22/12
 * Installing rails admin for admin panel to web app
 * https://github.com/sferik/rails_admin#readme
 * Finishing up Heroku bugs
 * Should implement alternative light weight server in production such as Thin, http://code.macournoyer.com/thin/
 * Yay! was able to deploy to heroku at http://comtor.herokuapp.com/ .. many of the errors were asset compilation errors. Need to look into how to properly do that.
 * Currently using postgresql
 * Has admin functionality and Devise login system.

9/23/12
 * Migrating database
 * For now, separating code into code chunk and comment as basic data model
 * User accounts seem to work for facebook or email

9/24/12
 * Going to roll out updates
 * Looking into Rail's Asset Pipeline - http://guides.rubyonrails.org/asset_pipeline.html
 * Reading Pragmatic Programmers guide to Ruby on Rails
 * Looking into caching
 * Fixing landing page and making it work and lead to registration
 * Working on CSS a tad
 * Split key entities to: Users, Chunks, and Opencomments
 * Current model is: User has many opencomments, Code chunks have many opencomments, user creates opencomments

9/26/12
 * Started working with has_many relationship to link opencomments with users and code chunks
 * Still some issues with the has many relationship but they should be resolved soon
 * Removed old unnecessary models

10/1/12
 * Goals for Today:
 * Create DB Seed (DONE) located in app/db/seeds.rb
 * Generate JSON API while app is young (DONE)
 * Implement Tests
 * Regular and Functional Tests
 * *Complete prototype of app flow

10/2/12
 * Goals for Today and tomorrow:
 * Implement AJAX (Done, Kinda)
 * Confirmation e-mail?
 * Separate into packages

10/3/12
 * Goals for Today
 * Finally got the has_many relationships to work correctly, was a giant pain in the neck but good now that I understand it. Now organizing code chunks under projects/packages
 * Require Authentication for Opencomment creation
 * Push to Heroku
 * Goals leftover from yesterday

10/5/12
 * Goals
 * Changing User models as per suggestions in Pragmatic Programmer's Ruby on Rails book
 * Finish up cleaning up views
 * Push to Heroku
 * Functional and Behavioral Tests
 * User System

10/08/12
 * Goals
 * I will get user accounts to work... I repeat that I WILL get it to work.
 * Got opencomments creation and views working correctly with has_many relationship.
 * Still can't access Devise's User model and controller methods... going to post to StackOverflow

10/10/12
 * Goals
 * User accounts (when will it end)
 * Grouping code chunks via projects and offering interfaces to reach them
 * Getting serious about Design of front end, sketching and designing it to fit modern trends and not be a bootstrap option

10/11/12
 * Goals
 * Got user accounts working FINALLY. I DONT KNOW HOW. I DONT KNOW WHY. BUT I DID IT. IM DONE FOR TONIGHT. JESUS...

10/12/12
 * Goals
 * Working on Chunk and Opencomment views
 * Server Side Syntax highlighting as per this railscast: http://railscasts.com/episodes/207-syntax-highlighting-revised?view=asciicast
 * Using Pygments.rb

10/15/12
 * Working on End-to-End first user experience
 * Eval and Comment

10/16/12
 * Implemented Pages controller with, welcome, home, and find actions
 * Show welcome page with call to actions if not logged in, home if logged in
 * Added model "evaluations" so evals are linked to code chunks through the evaluate action
 * Added attributes to chunk, the 5-star rated attributes 1-5
 * Migrated DB
 * Evaluation work flow working, "Comment" workflow working
 * Think I figured out a direction for the workflow, Fivers or Quests, put an MMO spin on it
 * Kill/Bring me X of _____ and get Loot / XP
 * Do 5 evals or 5 codes and get xp or points
 * Implementing this system now, basically a shopping cart that holds X number of activities then rewards when max reached

10/17/12
 * Implementing the "Shopping Cart" or Activity Journal
 * This will contain "Quests"
 * Adding ability for quest completion to benefit user
 * Get AJAX stars to work instead of plain form inputs
 * Start looking into Single Table Inheritance for Journal > Tasks > Eval / Comment / etc.

10/18/12
 * Worked on User View that shows comments and evals attributed to them

10/19/12
 * Implementing User Activity Stream
 * Helper to return random chunks, random chunks that have not been evaluated
 * Implemented using https://github.com/spilliton/randumb
 * To get ajaxful-rating working with Rails 3 => http://stackoverflow.com/questions/6359992/ajaxful-rating-in-rails-3

10/22/12
 * Refacing the main pages of the web app
 * Started implementing ajaxful star rating system again
 * Some other things that I forget right now, but overall light day

10/24/12
 * Got ajaxful star rating system to work, repo and install instructions arent correct for Rails3
 * Continued refacing site
 * Started implementing user activity stream for main page if logged in
 * http://www.slideshare.net/danmckinley/etsy-activity-feeds-architecture
 * http://stackoverflow.com/questions/202198/whats-the-best-manner-of-implementing-a-social-activity-stream
 * Email confirmation when user registers

11/26/12
 * Modified code base to be clean deploy to Heroku
 * Updated documentation with heroku deploy readme
 * Working on rating system

11/27/12
 * Creating seed files
 * Rating system
 * Views

Useful Links


 * Implementing Achievement / Badge system in Ruby on Rails
 * http://stackoverflow.com/questions/885277/how-to-implement-an-achievement-system-in-ror
 * http://stackoverflow.com/questions/1010096/rails-badge-type-plugin-tutorial
 * Achievement System Libraries / Links
 * https://github.com/mrb/achievements
 * https://github.com/scottburton11/Badgeable
 * https://github.com/paulca/paths_of_glory
 * http://teachmetocode.com/screencasts/building-a-star-rating-system-in-ruby-on-rails-with-jquery/