On the bus ride back from Yale in between my naps I asked myself why I still go to hackathons. If you don’t know what hackathons are the whole idea sounds kind of interesting but the reality is somewhat different. Hackathons are draining, you stay up for way too long working on a project that you might have thought up only a day or two before. Stressing over getting a section of code working correctly at 4 am, 4 hours before you have to submit, or hoping that your project doesn’t break during demos. It’s usually worth it though when you come out with something, something you can show to people and say “I made that”.
I went to YHack this year with the team that brought Attention Passengers to the world (Andrew and Tevin) and this time we built the YHack Slack Pack. It rhymes! It’s a bunch of microservices that you can interact with through Slack. We only ended up getting two integrations working, Venmo and Tinder, with one basically completed but not integrated, Uber. We were planning on also writing a SMS integration that would you allow you to text people through Slack, a Twitter integration that would allow you to send tweets through Slack, and a Dominos integration that would allow you to order pizza through Slack. I was really looking forward to the Dominos integration but in typical hackathon fashion we ran into issues and out of time
The two major parts of our project are a bot that connects to Slack and the microservices that interact with Slack through the bot. The bot lives on a server and connects to a Slack team through their Real Time Message API. The bot then waits for a Slack user to send a direct message to the bot. Once the bot receives a message the bot checks to see if there is an integration that corresponds to that message. If there is the bot sets up a message queue (we used RabbitMQ) and then launches the service, sending the message to the newly created service. The service then does actions based upon the message and once it is done it sends a message back to the bot using the message queue. The bot picks up this message and sends it back to the appropriate Slack user as a direct message.
The integration the judges liked the most was our Venmo service. The service allows you to check your Venmo balance, pay or charge people for money, check pending requests, and complete pending requests all over Slack. For example, you could enter “venmo pay $10 for lunch to jeff” and shortly after a Venmo payment for $10 would be sent to jeff on Venmo. One of the sponsors there (the Braintree team, part of PayPal, who also owns Venmo) liked our Venmo integration so much that we won a prize, a Sphero Star Wars BB-8 Droid! Apparently it lights up, rolls around your house, and bumps into walls. You can also control it with your iPhone or Android smartphone. Since I still have a Windows Phone I can’t use it at all but it’s still a cool prize.
Like most of the hackathon things I’ve helped build I can see myself interacting with the bot on a day to day basis. Now I have no excuse not to pay my roommates back on Venmo because I don’t even have to leave Slack now. The modularity of our design also lets us create any number of integrations easily without having to change any of the bot code. There are however a ton of issues with our code still so we couldn’t immediately set this up on our Slack team now. One of the last things I attempted to do, at 3 am this Sunday, was to rewrite the message queue system for the bot and integrations so that the queueing would work correctly and would be more flexible. After failing horribly for 2 hours I gave up and went to bed for an hour, woke up, and helped put back the old message queueing code so that we could present.
Overall YHack this year was comparable to YHack last year. Similar to HackMIT the hacking arena was a gym. There are only a few places where you can fit 1500 people into a reasonable space. This however means that the hacking experience is only OK. It really helped that YHack last year was held in a place that had individual rooms. The ability to shut yourself into a quiet room with only teammates so you can try to solve a problem is invaluable. Large hackathons usually can’t provide those affordances. Unfortunately, there was one really annoying thing that happened this year. At around 1 am on Sunday there was a rap concert held in the main hacking arena. Apparently it was supposed to happen in another side gym but it was forced to relocate somewhere else. That somewhere else was a gym filled with tired and stressed people that only had 7 hours to finish projects. It was so loud I could not hear Tevin who was a foot or two away from me. The organizers realized the issue quickly and ended the concert about 20 minutes after it started. Besides that incident, being able to do something you love for an entire weekend and come out with a project is always a great time.
I’m really (really) looking forward to HackBeanpot this year. I think I’m done with large hackathons. Unless I have a great idea beforehand I’m probably not going to go to large hackathons anymore. Hacking in a gym with 1000+ other people isn’t for me. I feel too disconnected with the people there and it seems like the organizers are always stressed. At small hackathons (HackBeanpot) I feel way more connected to the people there. There is actually time for me to go around and talk to all of the teams. Also for the last two years it’s been held at the C3 which provides a great space to work. There are some people though who live for large hack events like YHack or HackMIT. They are fun events, you can meet way more people, and the largest tech companies usually sponsor these events. At the end of the day though we all live for the feeling we get when we finally fixed the bug in our code that we had been working on for 4 hours at 2 am on a Sunday. And that’s why I still go to hackathons.