Being a school that is high, finding love could be difficult. Likewise, finding individuals prepared to invest their week-end teaming up beside me at a hackathon may be hard as well.
At hackCooper 2016, we caused Isabella Berry to fix both of these issues with Github Dating Simulator, a software that analyzes compatibility between Github users using graph concept as well as the energy of love. It is perhaps perhaps maybe not just a dating simulator within the conventional sense—rather, it is an internet application that enables people shopping for hackathon groups discover individuals with comparable coding backgrounds to prevent the trouble of scrambling to get a group during the minute that is last.
Github Dating Simulator is available in two tastes. “Dating mode” permits a user to input two Github usernames to ascertain exactly just how suitable they have been. “Team generation mode” (the more mode that is practical enables a individual to enter a list of Github usernames, will get back perfect pairings for every single regarding the users. Additionally enables them to create options that are several such as for instance exactly how many individuals must certanly be contained in each team Dog dating sites.
For almost any match that Github Dating Simulator analyzes, it outputs a “compatibility” percentage, that will be simply the program’s confidence level that these two different people will be able to come together well.
Simply for enjoyable, it creates a directory of “first date ideas”, that are essentially arbitrarily created task tips in line with the typical languages provided between each individual to simply help kickstart the ideation procedure. (as soon as it discovers extremely matches that are compatible in addition outputs a summary of “first date areas”—a.k.a. upcoming hackathons.)
I happened to be in charge of the UI design therefore the technical implementation on this task. One of the most projects that are statistically intensive labored on thus far, Github Dating Simulator hinges on a variety of the Github API and graph algorithms to effortlessly and accurately set users.
Pairing Algorithm
To produce matchings, it seems during the language use of each individual and compares it for a level that is experience-based those associated with other users. Which means that somebody who features a great deal of repositories printed in Ruby is going to be marked as an “expert” while an individual who has just only written 70 lines of Ruby will soon be marked as being a “beginner”. This enables users become matched along with other programmers proportional for their level of skill, makes it possible for programmers to work well with individuals of comparable coding backgrounds, making for a much simpler hackathon experience overall.
(this might be a thing that ended up being extremely contested, as you might want to match people with an increase of experiences with particular development languages with those people who have less experience for a far more experience that is educational. Maybe an alternative for this kind of matching algorithm will be the next enhance.)
My records and sketches when it comes to UI design.
For a graph, each individual is plotted off their users with various paths of varying “lengths”. Each individual is really a node regarding the graph, and every course represents a language that is common two users. (If two users usually do not share any languages that are common they’ll not have paths among them.) Path length is determined by the mean square difference of each and every of the languages a person understands.
The algorithm attempts to get the quickest course (essentially, comparable experiences with specific languages) between two users. After that it aggregates every one of the paths between two users into a single “compatibility” metric according to a logarithmic scale, then starts producing matches beginning the compatibility percentage that is highest. When a person happens to be matched with another individual, it’s going to delete both users through the graph so they really cannot be matched once again. The algorithm continues until all users have already been matched or there aren’t any more available users to match.
API Usage
One of several challenges that are major we went into had been that the Github API has price restricting, which stops one from making a lot of API demands in a offered time period. To resolve this nagging issue, we applied a pseudo-caching system with a PostgreSQL database. With the Github API’s conditional demand function, we just make the full demand to Github when they inform us that the info at each location happens to be changed. Otherwise, we just depend on formerly kept information since we realize so it hasn’t changed.
Presenting Github Dating Simulator at the judging expo.