My First Hackathon

I spent a weekend at HackISU. Here’s how it went down.

One of the things I really wanted to do in my sophomore year was to go hackathons. Doing would connect me with other Computer Science students from different universities.  Since my college doesn’t pay much attention to the CS department, we don’t really have many activities focused on programming so the best thing to do is to visit other college’s and see what they’re doing. Since I just got a car as well as a free weekend, I decided to sign up for HackISU, a hackathon hosted by Iowa State University.

The Day Before: Preparation

The day before the hackathon, I put together the stuff I would take to the hackathon, more specifically:

  • My laptop (with it a cracked bezel)
  • An Arduino Borard with a bunch of wires and stuff (which I’ve never really used)
  • A 10,000 mHA battery pack
  • A spare battery for my Galaxy S5
  • A sleeping bag
  • A pillow
  • A whole lot of energy drinks and mountain dew and,
  • A bunch of cables and stuff.

I also put together a playlist for the drive there. Having packed, I caught up on a bit of homework so that I wouldn’t be behind once I got back on campus.

4:00pm: The drive to Iowa State

As soon as I was finished with calculus class, I went straight to my car, set up my phone and after a brief stop at Walmart, I headed out to Ames. Since I just got my license, I had to drive before, let alone for 100 miles on the highway. Worst still, it was raining hard, making it really hard to see outside on my already fogged up windows. Throughout the drive, I kept playing some trap music while being overtaken by nearly everyone, even a couple of lorries.

About two hours later, I finally got to Ames. A couple minutes after that, I got to the Iowa State Campus and navigating it was crazy. I managed to mount a curb, miss two stop signs as well as nearly crashing into a bus after driving past one of them. Once I found the hackathon location, I parked by the side of the road, for my bag and headed for registration.

7:00pm: Registration and Dinner

Registration wasn’t too complicated, it was just a matter of confirming some information and picking up some HackISU swag (although they ran out of t-shirts). Once I got a seat, I looked around to see what others where up to. On the left was a dude playing Hearthstone. On the right were a bunch of open laptops with API documentation. To the front were more laptops downloading essential hacking software- Android Studio, Django, Flask and the like. While looking around, I was telling myself “damn, these guys are set  to go while I’m just like derp”.

After a bit more waiting, they finally gave the introduction where they set the agenda for the weekend, played down the rules and introduced the sponsors and MLH representative. Once that got out of the way, it was time for a pizza dinner from Papa Johns.

8:00pm: The hacking begins

Once I had dinner, it was time to look for a team. Since I didn’t come with anyone else and it was my first time at Iowa State, it was hard to find someone. Every single time I walked around the Engineering building, I saw people who were already in groups. All this left me feeling sad and hopeless because I couldn’t find a team to join, then again, I didn’t really say much so I couldn’t expect anything else.

Eventually, I got bored and I decided to explore the Hardware Lab. I got to the lab when I heard a chime. Turns out that it was programmed to do so whenever someone walks across a sensor, which is quite fancy. Once the novelty had faded, I started to ask about random stuff. While they had Arduino boards and a bunch of other stuff, they didn’t have a Raspberry Pi which I thought was rather strange.

I left the Hardware Lab once again to try and look for more people, but then I came up with an idea. Why don’t I make something that sends a notification once someone knocks on the door? After all, people keep complaining how I never answer the door because I’ld be blasting really loud music through my phone. Instead of lowering the volume and preserving my ears, why don’t I make a convoluted hardware solution just because I can (SPOILER ALERT: We could…for two minutes before it all went to crap).

As soon as I felt all hackers- I went back to the hardware lab so. Hopefully they would know what I would need to make my idea real. They didn’t get it. Fortunately, some guy (an Electrical Engineering student, called the EE guy here on out) was eves dropping and recommended that I use a Pierzo Element which is able to convert a force into an electric charge. Hopefully this would allow me to pick up a door knock. I thanked EE guy for his suggestion and he asked me whether I was working on a hardware project, which I hadn’t officially decided upon yet. It turns out that this guy also didn’t have a team so we joined forces and became half a team.

10:00pm: When two become four

Now that I wasn’t alone anymore, we looked for two more people to join the team while sharing some ideas. Eventually, we found a nice spot in this big computer lab (TLA) where we also found two other guys (CE guy and CS guy, who are majoring in Computer Engineering and Computer Science respectively) who were also thinking of stuff to make. I noticed that the one guy was downloading OpenCV (a Computer Vision Library) and got kinda intimidated at the fact that he wanted to perform image recognition. Fortunately (for my self-esteem anyway), he had no idea as to what to do, so we just kept brainstorming.

We played back and fourth with ideas, ranging from stupid web apps (think Yo) through to stuff that couldn’t be done in one weekend, like a recreation of DOOM in Virtual Reality. As we were talking about our ideas, an employee from Rockwell Collins,a government contractor and we asked him if they were making drones for the government. Turns out they weren’t (unless it’s classified, they they were).

Meanwhile, the team next to us were working on some really complex shit. The team were connecting a bunch of wires to this guys arm with pieces of velcro and electric tape. Turns out they were trying to make hot potato, which would slightly shock you if this padded pall lands on your arm. Seems safe. Now that I had a slight idea of the competition, I worked on connecting to the internet, which I was told could only be done through Internet Explorer (which was a lie). With that sorted, I was ready to learn some new stuff.

11:00pm: Eureka!

The hardware had just arrived from MLH when we got an idea. Why not create an Occulus cobtrolled black-bean torret that fires on the flick of the wrist which would be detected by a Pebble Watch? It not only covers all of the things each of us were good at, but it would make an awesome learning experience!

With that sorted, I was off to get the Rift and Pebble. While waiting, I met up with an employee from Workiva, a web company that makes productivity software which is used by lots of Fortune 500 companies. We talked about a few ideas whilst looking at people trying to run a Rasberry Pi and failing…badly. Once in front of the line, I saw some other cool things on the table, stuff like:

Being able to use all that stuff was really cool, distracting me from what I was support to get. Once I passed over my driver’s license and credit card details for collateral, we got everything we needed and we were set to go.

12:00am : High hopes

Once we got the stuff and CS guy joked about getting a free Rift (at my expense), we were ready to hack. EE guy would make the turret, I would program the Pebble Watch, CS guy would work with the Rift and CE guy would find a way to put everything together.

Soon enough, I was able to get the CloudPebble SDK, an amazing web based IDE running and I even made a simple “Hello World” program, which was nice considering that I have never worked with the C programming language. EE guy was able to design the 3D prints for the turret, which would shoot small airsoft pellets. CS guy was able to get the DK2 running on his laptop, even running a simple yet nauseating game. As for CE guy, I honestly didn’t know what he was doing. He was a rather quiet guy, so whatever he was doing must have seemed very important.

Having gotten the basics down, we now had to find a way to stream video through to the DK2. While it was already hard enough to actually get video on the DK2, it was even harder for us to get a 2D image (instead of 3D). At this point in time, I got really tired since I had only had 4 hours of sleep the day before on top of having to drive in the rain. I decided to call it a night and go to bed at 2:37am.

6:30am: A not-so-rude rude awakening

I suddenly woke up at 6:30am extremely groggy. Although I wasn’t woken up with a tap on the shoulder or something obnoxiously loud, the gentle wakeup by the event staff made me feel like shit somehow. Being borderline awake, I packed my stuff and went back to the TLA. EE guy said that he was able to find a way to stream video to the DK2 and that the only issue was the really bad latency. Fair enough, I thought. I’ll just focus on making the Pebble recognize a flick, while EE guy keeps working on the turret, CS guy works on the Rift and CE guy just…ummm, works on something (CE guy was very quiet) couldn’t be hard right?

Anyways, once we all knew what we were working on, I set up my dev station with a pebble and a monitor in order to spend a day hacking away. I got a rather delightful breakfast of caffeinated Rice Krispie bars, fruit, coffee and muffins. Once I was back to my dev station, I set up the CloudPebble IDE which is used for developing the Pebble Watches, which is an amazing web IDE. CloudPebble comes with a good text editor, git integration, a GUI creator that generates the code required to render the User Interface as well as a useful debugging system. All of those are powered through the cloud.

Before I tried to make the Pebble detect a flick, I went through their beginners tutorial, which was very helpful, especially for someone who has never programmed in C before. Working with pointers and having to close states to preserve memory were a bit more complicated, but they were totally managable. As soon as I tried to work with the accelerometer however, things got a whole lot more complicated. Firstly, it was really hard to understand how to get the accelerometer data in the first place. So hard in fact, that I ended up just using their source code. Even with their source code, I spent the next two hours trying to figure out how to make the Pebble detect a flick for absolutely jack.

To make matters even worse, CS guy didn’t come back, so we wouldn’t be able to use the Rift anyway, making our entire project unfeasible. Fortunately, we had another idea. One problem I’ve always had was that when people would knock on my door, they wouldn’t be able to hear me wince I would be listening to music on my phone. So what I thought we could do was that we can make a system that can send an Android notification. So, instead of me just turning down the noise, we can make a convoluted solution that isn’t actually nessesary. But before we could do that, we had lunch from Subway again.

1pm: Getting advice and progress

So after I ate lunch, I headed to the Rockwell Collins booth since they were doing resume critiques. Before I went to the hackathon, I printed out a bunch of resumes in case one of the companies were interested in giving me an internship. I didn’t get an internship to be exact, but I got a bit of resume advice. Mainly it had to do with putting an objective statement, making more projects and some layout issues. Although one thing I find strange is that there is so much resume advice out there that it can end up being contradictory. For example,I hear how objectives are unnecessary, but these guys here said it was pretty much required.

After the discussion I had with the engineers, I went back to EE guy to see what he was up to. Turns out he was able to get the Arduino to pick up a door knock with the help of an oscilloscope. His solution wasn’t perfect, but it was good enough considering the crazy solution he had to come up with. Knowing that it was going well, I then went back to CE guy and worked on getting an Android app running, which is so fucking difficult. I mean, this guy gets it:

Getting the ‘Hello World’ app to run wasn’t any easier given that my Galaxy S5 refused to connect to my computer.

5pm: Giving Up

So, at this point, we were able to get the ‘Hello World’ app running, although we had absolutely no idea how to work with push notifications. At this point, I just gave up with the whole project entirely. I mean it was clear that the whole project wasn’t going anywhere so I decided to let go of my efforts and go to Buffalo Wild Wings and Starbucks for some food. Once I came back, I just messed around for a couple of hours, routinely checking in on CE and EE guy. At this point, I wasn’t really of much use.

EE guy came back and told me that he needed to setup a server, in which we were able to find someone to help us with that from another team. EE guy saw how difficult it was to set up the server and then remembered something that he learned from one of his personal projects and went ahead to implement that in our contraption of a project.

11pm: Spying on the Other Teams

Since I gave up, I just went around asking what people were working on and they all seemed pretty cool. There was one group that were making a speedometer/odometer for a bicycle, another group working on a craigslist like service for textbooks, another group were working on a VR instrument kit with the DK2,another one making a local Redbox like DVD dispensing system and a couple others. The one group that stood were a group of high school students working on a Chrome Extension Game ‘Wiki Race’ where the goal is to go from one random wiki article to another. I thought it was cool that guys in high school were taking the initiative to go to a competition to improve their programming skills. It made me regret the time I wasted as a kid. Then again, I was running a really small business in high school so that makes up for it.

At this time, there was no way I could make anything . I just decided to do something random with the remaining time, like resetting my phone (which was so worth it btw!). I then remembered we still needed to add stuff to our DevPost page before 9am. I got EE guy to help me answer questions and at this point, he was just done with it. Here’s a sample:

Me: What was the best thing that happened in this hackathon?

EE Guy: The window is still intact and our laptops are in one piece.

I would have asked CE guy, but he was still trying to figure out how to get the Android App to say Hello World. With that, I was looking for a reasonable amount of sleep so I hit the sack.

8am: Another rude awakening….and projects!

Once again, I woke up feeling like crap even though I wasn’t awakened violently. I got the other team and I only found CE guy because EE guy vanished. CE guy told me that the whole thing worked, including the notification…for two minutes before everything blew up (metaphorically). Now that we had nothing to present, I went around looking at some of the other projects and found (I forgot the exact names):

  • Feed Me: An app that orders food for you after asking two short questions. I tried to get myself a large pizza, but their credit card info didn’t work so yeah…
  • A YouTube Playlist Manager: #meh
  • Get Me Food: Similar to the Amazon Dash Button, only difference being that the products can fit a college students budget.
  • Minecraft Mod: These guys made a new mineral. If I recall correctly, I think it was a diamond sword.
  • Textbook App: Really well built and designed app that allows students to sell textbooks to each other without a middle man. Complete with messaging functionality and Vemno API integration.
  • Dancing robot: Cool toy that comes with NFC enabled cards which you tap onto the toy so that it can dance.
  • VR GarageBand: Really awesome music work place make with the DK2.
  • Are you there?: A Pebble App that let’s you check in with your friends. If you don’t check in at a certain time, a missing request is sent.
  • Redbox for me: DVD dispenser, except for home use for a time when physical media would be long gone
  • Reliable Client Side Encryption: I didn’t quite understand what it was, but it looks safe and it didn’t use a lot of resources.
  • Self Balancing Toy: This thing which never topples over and balances itself.
  • Mad Mapper: A map that shows localized sentiments analysed from Twitter.
  • Holographic Fighting Game: Glass dome + Unity + Controller + Monitor = Dope Ass Game 
  • Illuminated Longboard: A really cool looking longboard which can be controlled with a Pebble Watch 

All these projects seemed dope but in the end, the VR GarageBand, Dancing Robot, Self Balancing Toy, Textbook App, Client Side Encryption and Are You There won prizes, with Mad Mapper and The Illuminated Long Board getting first place. After the awards ceremony, I returned some outstanding stuff and drove home incredibly fatigued. Somehow I lived through that, but I really shouldn’t have.

Although I feel sad I didn’t make anything of value, it was a really fun experience overall. I got to meet some cool people. I went on to another Hackathon at the University of Minnesota- St. Paul. I won’t write about it any time soon, but it was a worthwhile experience as well.

Next semester, I’ll be at more hackathons. If things go to plan, I’m set to go to HackISU at ISU and SwampHacks at the University of Florida next semester. Hopefully then I would have made something worthwhile.

Wow! 3,383 words! This is waay longer than it’s supposed to be and it took so much time to write. Either way, I’m happy this blog post is finally finished so I can ship it an work on the next one. I hope to publish every Saturday night, so stay tuned for my next blog post.


2 thoughts on “My First Hackathon

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s