Monday, 3 November 2014

YHack 2014: First Ever Hackathon + YOCHECKIN

Last Friday at 6:00am, I got on a twelve-hour bus ride down to New Haven, Connecticut to attend YHack at Yale University! After having missed Waterloo's own Hack The North earlier this year, I was thrilled to finally experience my very first hackathon. For those of you unfamiliar with the term, hackathons are programming competitions where participants team up to create projects in a short, condensed amount of time (commonly over a weekend). These events are notorious for sleep deprivation, but are a great way to not only compete for prizes, but for programmers to come together and focus on something new and learn a lot. I was especially for YHack because it meant getting to see many Google CSSIers again! After going off to universities across the US and Canada, it was awesome to catch up with many of them again.

Before I knew it, we'd arrived at Yale's West Campus:

The weekend went by in a whirl of activity; before I knew it, time was up and it was time to submit our projects. I had so much fun over the weekend, getting to not only develop my programming skills but also going to talks by various companies, and hearing about ideas from people across the country. The enthusiastic atmosphere of the hackathon was contagious; everyone was so passionate about their projects and willing to help us with ours. The crazy environment of the hackathon was very motivating, because everyone was having a great (albeit sleep-deprived!) time.

Our Project: YOCHECKIN
The inspiration behind my team's project came from wanting to taking Yo, possibly the simplest application in the world, and making something more complex and useful out of it. If you've never heard of Yo before, it is essentially a no-character communication app where users tap a button to send a "Yo" message to another user. That's all there is to it. However recently, Yo was updated so that in addition to a mere "Yo", users can also choose to send their location, or a link to a website as well.

We wanted to take such a simple mode of communication and turn it into a useful, hassle-free service. We came up with a situation that we'd all found ourselves in before; we're going out, and our parents want us to check in with them to make sure that we were safe. For some kids, it may feel annoying to take time out of hanging with friends to text their parents; furthermore, how could their parents verify that their children were where they said they were? YOCHECKIN is a solution for both of these issues. After entering in you contact phone numbers on a simple web application, all you have to do is "Yo" your location to YOCHECKIN, and everyone on your contacts list will receive a text message to notify them of your location. We felt that this was a great way to integrate Yo users with people who didn't have the application, to increase the functionality of the app.

The Programming Process
We used the Yo API, Google Geocoding API, Twilio API, and Google App Engine to create YOCHECKIN.

The first half of our coding process consisted of learning how to use the Yo API. It was initially fairly easy to understand because the code is quite simple when using Python (which we'd already had experience with from CSSI); however, the code in the available documentation used Flask (a Python microframework) to send Yo's from the service, which wasn't supported by Google App Engine. To circumvent this issue, we had to determine how to use the Python urllib and urllib2 libraries instead to replace Flask.

After learning how the Yo API worked, it was time to combine everything together. In essence, our project consisted of the following steps:
  1. User enters contact phone numbers, which are stored in an Google App Engine datastore
  2. User Yo's their location to YOCHECKIN
  3. The latitude/longitude coordinates are converted into a street address through reverse geocoding with the Google Geocoding API
  4. If the user can be found in the datastore, text messages are sent out to the user's contacts via Twilio 
  5. Otherwise, the user receives a Yo back with a link to the website, to enter their contacts in
After working on separate parts of the process, we all regrouped to piece together the final product. Our team worked together really well to overcome all the challenges that we faced while developing our project. In fact, before I knew it, we'd worked almost twelve hours straight from 7pm on Friday night to 7am Saturday morning! Thankfully, we managed to finish our project in around 24 hours total, meaning we were able to get a lot more sleep on Saturday. By the end, we'd created a service that we truly believed would have a beneficial purpose.

The Final Product
Our final product comes in two parts: the website (http://helpyofind.me/) where users go to save their contacts, and the Yo service itself, YOCHECKIN on the Yo application.

The user interface of the website, modeled after the simplicity of the Yo application itself.

The source code of the entire project can be viewed on GitHub. I am really proud of how this turned out in a short period of time and how much we learned as a team throughout the process. There is definitely room for more improvement; depending on how much time we have to work on it in the future, I definitely have ideas of ways to increase functionality and error-checking user input on the site.

One of the other exciting aspects of our project is that we actually got to speak to the CEO of Yo himself about our project and he was interested in adding it to the official list of Yo services, the Yo Index! I hope that we will actually be able to get it up on there soon, as it'd make our service a lot more accessible to Yo users.

All in all, I had an amazing time at YHack 2014; it felt really nice to be able to dedicate a weekend to focus solely on a single programming project. I will without a doubt be going to more hackathons in the future! But until then:

No comments:

Post a Comment