Inspiration

We saw the approval rating systems of Facebook and Twitter and realized that, while they are a good indicator of quality, they are not very good for comparing two messages directly against one another; they are more of an indicator of popularity. As well, if a person likes two different posts, it is impossible to tell which one the person likes better. By directly comparing two posts, we take it from which post a person likes to which a person likes more. Scaling that concept to a larger population, one can find which message in a set is the best according to the opinions of the people.

What it does

When a user enters the site, they are prompted to enter a message and their name if they desire. If they enter a message and name and press submit, these two pieces of data are saved to a database for future judging. They can opt not to submit a post, but either way they proceed to a screen where they vote on the last hour's posts in a head to head system to determine which post is superior. Each post is given a score based on how many posts it beats. To make the system more egalitarian, the posts from the hour are stockpiled and disbursed at the same time, so that a post released early doesn't trump any other posts based only on longevity of the post. As well, all of the matchings are randomized, and the order of the matchings are randomized as well. The user can then keep voting until the posts run out, or cut their voting short and go to one final screen. This screen shows the user the top ten highest rated posts submitted in the last hour.

How we built it

First, we defined all of the parameters and required information that would be used to ensure the project's success. We planned out the required user inputs, screen layouts, database structure, and redefined objectives and constraints inherent to our skill levels, the equipment and the environment we were working with. With plan in hand, we began coding, splitting up the front end and back end segments of the code. A preliminary database was created in this time period and we began to build our site around it. After a workable copy of the backend was created, we generated test cases to be run against the code. By running these tests we were able to expose numerous flaws with our logic and realize different aspects of our code related to the experience of using it. With this newfound knowledge, the original prototype was improved through an iterative process of prototyping and refining the idea until we were able to create a copy of the backend that met our demands. We then meshed the front end segments with the back end segments, and another iterative prototyping process began, mainly focused on the front end end but not disregarding the logic driving it. This was how our project took its final form.

Challenges we ran into

Before the project even began, we had an issue in that we didn't have very many programming languages in common. This meant that developing an idea to pursue was hard, as we weren't sure if one team member would be able to keep up with the other if any one language was used over another. We solved this by integrating multiple, easy to learn languages across the course of the project. We also had an issue with the number of page refreshes, on one system we used we had entirely too many server calls, with the page refreshing after every vote in the second screen. We solved this by making one call at the beginning and end of the voting process, and dynamically generating the voting comparisons based on the precompiled data.

Accomplishments that we're proud of

We're very proud of the final design of the product. We feel it works well both functionally and aesthetically. We're also proud of the progress we made learning new languages and integrating the work of programmers of varying expertise in the languages selected. Finally., our time management and organizational skills were very satisfactory, as we were able to complete one of the larger projects we've ever worked on at a comfortable rate, and we finished fairly early.

What we learned

Aside from the obvious development of our coding prowess, during this project we gathered valuable experience in collaboration, teamwork, communication skills. Neither of us had worked on a project like this in a team before, so realizing how to split tasks efficiently and integrate them at a later time took a lot of foresight in the initial planning phase, and required constant communication and revision throughout the project. It was a lot of effort, but the experience gained was very applicable in real world coding scenarios, and the environment created by our SpartaHack peers, mentors, and organizers made it thoroughly enjoyable.

What's next for Yammr

The next steps we have envisioned for Yammr are to involve popular social media sites such as Facebook and Twitter. In pulling popular posts from their sites, we will be able to rank relevant social media and connect people with better quality online content. We also want to host this online and try to accrue more interest, as our program functions better with a larger user base.

Share this project:

Updates