Dinosaur Riding Scrum Ninja Jedi Masters

Agile is so last year...

Meeting 15

ON

Goals

  • Finish up attribute scoring weights

Discussion

Alex was almost finished adding all weights for current attributes. Alex wanted to add a separate page for setting mechanics and category weights.

Alex requested that Chris add scoring and explanations on the weight attribute. Ideally, the all games would be scored on their weight, so a closeness fit function needs to be used to score the real valued differences between weights.

Results

Chris successfully added a scoring function as hoped for weights.

Alex added a page where users can modify the tag weightings and modify the explanation for any tag. The negative and positive tag weightings can be independently modified.

Outgoing Responsibilities

  • Add full explanations to different weight scores — Chris
  • Populate tag weights and explanations — Alex

Attendance

  • Alex Burkhart
  • Chris Powers (scribe)

Location

Campfirenow Chat

Meeting 14

ON

Goals

  • Determine how to include simple stats and neural network results.

Discussion

Despite not having good results from the neural network thus far, replacing our network output data with the simple statistics data was undesirable. We are somewhat hopeful that the neural network will perform, but since the simple statistics shows good results we want the user to use it if they want.

Results

On the results page and the similar search page there are toggle buttons that allow the similarity provider to be selected.

Outgoing Responsibilities

  • Create UI for provider selection — Ryan
  • Train and push output data for both collections — David

Attendance

  • David Albert
  • Ryan McGowan (scribe)

Location

Google Chat

Meeting 12: Preparing for Interviews

ON

Goals

Prepare for interviews, provide updates on coding.

Discussion

Alex set up 4 more interviews for us the following week. In addition, Alex informed everyone that CABS is tonight, so everyone is invited who wants to see what we’re building a system for. Chris agreed to come. David suggested that interviews should be straightforward, and that it’s more important to have our experts for training the system. Ryan said he could record the interviews again if David couldn’t make it. Chris said that the most important thing to get out of the interviews is the attributes of the games used in matching preferences.

David implemented the basic interfaces for allowing experts to train the system and for building a query. Chris said that he would work on populating some of attributes. Alex said that he has pulled all the necessary information off of board game geek, but that he’ll just need Ryan’s help to properly import it into Mongo, since he has no experience with it.

Results

Chris will visit CABS tonight with Alex to see what the system is like. He will also populate some of the attribute records and touch up the expert training interface. Ryan will help Alex import the records into a Mongo instance.

Attendance

  • Ryan McGowan
  • Chris Powers (scribe)
  • Alex Burkhart
  • David Albert

Location

Dreese Labs

Meeting 11: Feature Selection & Interface Design

ON

Goals

  • Determine interface design for game recommendation and expert training.
  • Determine how to convert game attributes into a vector for machine learning. Decide what features do we select.
  • Create consensus on terminology used for the machine learning component.

Discussion

At this point, there are two interfaces that need to be designed.

Recommendation Interface

The first interface is the users normal route to interact with our system. It is the recommendation interface. It takes in some user specified attributes and returns a list of recommendations.

Since many attributes that a user may specify will not be used in every query we do not want to clutter up the page with input fields. This sends the wrong message about fields being optional (or at least makes it harder to indicate), it is ugly and it is distracting resulting in an interface the user will not enjoy using. This we want a way to allow the user to opt into filling out parts of the form (or select sub-forms). Chris came up with two ideas for this. Both ideas simply provide a graphical way for the user to indicate which attributes they want to specify.

  1. Accordion – Display each attribute as a section in the accordion. Allow the user to open multiple sections. An option section indicates that the user will be filling in its fields.
  2. Sidebar Buttons – Instead of unrolling sections, the user would hit buttons in the sidebar describe the attributes he or she wants to filter on. Each button would be stateful (i.e. buttons toggle between a pressed and unpressed state). When pressed, a form appears in the main column of the page for that attribute. Multilple pressed buttons means multiple forms.

In general, the team gravitated toward the sidebar idea. It makes the distinction between used and unused forms clearer.

Expert Interface

The second interface will be used to train SiGMa (Similar Game Machine) which is this projects machine learning component. We spent a while discussing the proper terminology to describe the data we are looking for. We decided that the term similar is not exactly what we want. Instead we are trying to find a relationship like “given game A how good of a recommendation is game B”. Our interface will reflect this, but there are no plans to change the name of the library.

The original interface proposed putting two games in front of the expert and a slider. The expert would then manipulate the slider to describe how similar the two games are. Besides changing the terminology used here from “how similar are these two games” to “how good of a recommendation is game A if someone likes game B” we also want to change the layout. Alex made the point that an expert might not know one of the two games we are asking them to prepare. Providing a skip feature would work, but it might mean the expert does a lot of skipping if they know 100 games out of the 1000 we are using in the system it could take awhile to find a pair of games that they know both of. Thus the excepted interface involves a two step process. The first step is a page that shows a group of around 10 games. The expert selects which of these games they know. The expert then continues to the next page which lists all two game combinations from their selections on the first page.

Results

  • Decided on two discussed interface designs.

Outgoing Responsibilities

  • David is to work on creating a tracer-bullet implementation of the first interface.
  • Chris is to work on creating a tracer-bullet implementation of the second interface.

Attendance

  • Ryan McGowan (scribe)
  • Chris Powers
  • David Albert
  • Alex Burkhart

Location

Thompson Café.

Meeting 10: Defining Requirements

ON

Goals

  • Get basic web/engine system working and interacting
  • Discuss progress made in learning and using Clojure and core.logic
  • Discuss ways in which we can translate our knowledge into rules and logic
  • Schedule an additional expert meeting
  • Determine what requirements we can define in concrete terms and put a cap on the scope of this timebox

Discussion

David shared some of the progress that he had made in learning and using core.logic to create facts and rules, applicable to the problem. Chris and David discussed some of the possible front-end interactions available to the user, including, but not limited to, what options the user should have available to them, what parameters we should entrust to the user and what we should allow the experts to define, and different UI methods for presenting this information to the user.

Alex shared his progress in the data scrape of BoardGameGeek and methods for storing and loading this data into the inference engine were discussed. Pros and cons of SQL vs. JSON based storage were weighed; the decision to go with MongoDB was made after further discussion with Ryan.

Design and implementation issues of the engine itself were discussed heavily, including logic related to weighting and scoring the different attributes that the user is querying on.

Results

  • A simple set of facts and rules written in Clojure/core.logic was demoed by David
  • A simple web interface with a form containing input fields was also demoed
  • The web front-end succesfully made a query to the inference engine
  • Alex presented the data he had gathered and uploaded it to Google Docs
  • New tasks for each member were determined for the coming week

Outgoing Responsibilities

  • Chris is going to make some wireframes for different UI layouts we can present to the user
  • David will consult with Ryan to get the entire dependency chain working
  • Alex will nail down an interview time and plan on interviewing one of the CABS experts with David and anyone else who is available
  • Ryan will write a script to import the BGG XML data into a MongoDB that can then be loaded as facts into the engine at app startup
  • As many team members as possible will try to attend the CABS meeting this weekend to gather information

Attendance

  • Alex Burkhart
  • Chris Powers
  • David Albert (scribe)
  • Ryan McGowan

Location

Dreese Computer Lab

Meeting 9: Starting Development

ON

Goals

  • Get development environment setup for everyone
  • Go over how we are using Clojure, Noir and Bootstrap to create our web app.
  • Plans for next week.
  • Post David’s machine learning thoughts.

Discussion

We discussed installing leiningen, a dependency and project helper tool for Clojure projects. The alternative to using leiningen is maven, which is a bit difficult to manage and more complex than we need.

We also discussed how Clojure, Noir and Boostrap fit into our web application. Clojure is a LISP that runs on the JVM. It’s general purpose but with Noir (a micro web framework written in Clojure) we can use Clojure to easily make a fully featured website.

Bootstrap assists by providing sane default styles and lots of additional Javascript based functionality. We will be generating our CSS resources using the LESS files included with Bootstrap.

Results

  • David got leiningen set up on his computer.
  • Chris and David are up to speed with the basic implementation design of the front-end.

Outgoing Responsibilities

  • Alex is going to contact our experts and set up interviews.
  • David and Chris on going to work on getting their environments set up.
  • Ryan will setup bootstrap and a nice default layout.

Attendance

  • Ryan McGowan (scribe)
  • Chris Powers
  • David Albert

Location

Thompson Café.

Meeting 8

ON

Goals

Determine who is responsible for which tasks in Timebox #2. Bring David up to speed from the previous meeting. Arrange the first expert interview.

Discussion

Several minor bookkeeping issues were discussed in regards to the github and pivotal tracker accounts. Utilizing tracker to log our team and individual progress was emphasized, and the procedures for doing so were decided on. An interview time was arranged with our first expert, Ray Chandler, from the Columbus Area Board Game Society. A location and time were determined.

Results

The tracker was updated to include more detailed descriptions of the tasks due for Timebox #2. Ryan, Chris, and Alex are going to meet with Ray this evening for an interview. David is going to get started on the powerpoint presentation for the Tuesday status update. All members are going to complete any tasks assigned to them in the tracker: https://www.pivotaltracker.com/projects/630615

Attendance

  • Ryan McGowan
  • Chris Powers
  • Alex Burkhart
  • David Albert (scribe)

Location

Kafe Kerouac and Remote (via campfire)

Meeting 7

ON

Goals

Discuss the requirements for second deliverable. Set goals for each team member for the next week.

Discussion

We reviewed what would be necessary for the next milestone. In particular, we tried to nail down how we will model the data within the system.

We discussed how the data would flow through the system. We needed to determine exactly how we’d handle obtaining data from the user of the system, and how that would translate into a query for a recommendation.

We have tentatively proposed a system that involves multiple discrete components. A Filter step, a Inference step, and Learning step. Filtering would include removing games that do not match basic criteria such as Game Length or Number of Players. The remaining games would be sent forward into the Inference Engine. This is where we will use expert information to find games that fit the remaining criteria. Next we will send the games into a step that finds games similar to the games recommended by the Inference Engine. These games are then filtered again for basic criteria fitness.

This system has the advantage of separating the recommendations into independent components which we can provide a clear division of work, experiement with different ideas, and analyze the algorithms’ performance.

Results

Chris is going to upload photos of the dataflow charts we created. Ryan volunteered to make a digital version of the dataflow chart. Alex will begin scheduling expert interviews with CABS members, with special emphasis to members of the CABS Design Group. Alex will also publish this meeting’s notes on the website.

Attendance

  • Ryan McGowan
  • Chris Powers
  • Alex Burkhart (scribe)

David was unable to make it for the meeting time we had arranged. He let us know ahead of time that he would be unavailable.

Location

Physics Research Building first floor lobby.

Meeting 6: Team Deliverable 1

ON

Goals

Get all necessary content for the first team deliverable on the website

Discussion

All four members talked about the requirements of the deliverable. Chris had errors deploying the website, and David had errors previewing. Both of them noticed css errors on the website, which David wrote a fix for. Ryan brought up pressing matters of online music streaming services. Alex got clarification on his proposal expectations. Ryan figured out how to make the site prettier. David drew a striking likeness of a Dinosaur Riding Scrum Ninja Jedi Master for use on the site.

Results

Alex and David finished their project proposals. Everyone added their bios. Chris and Ryan uploaded all meeting notes to date, and added other pages and posts to the website. In particular, a front page for the website was added that introduces visitors to website and project.

Attendance

  • Ryan McGowan
  • Chris Powers (scribe)
  • Alex Burkhart
  • David Albert

Location

Online, through campfire

Meeting 5: Set Up

ON

Goals

  • Get everyone on the team set up to add content to the website and push to github
  • Divide work for first team deliverable
  • Start adding content to meet first team deliverable

Discussion

Alex helped David setup Ruby and other tools so that he could work on the website. Chris and Ryan already had setup the tools properly, so they began adding categories to the site and adding posts and pages.

Results

No major decisions were made, everyone just made sure that they were unblocked from contributing content. It was decided that David and Alex would each write up a project proposal, and Chris and Ryan would continue adding site content.

Attendance

  • Ryan McGowan
  • Chris Powers (scribe)
  • Alex Burkhart
  • David Albert

Location

Cafe Kerouac