Tomorrowland wallpaper 1 Tomorrowland wallpaper 2 Tomorrowland wallpaper 3

Dartegnian's main blog|Where dreams are penned|Stories are written|Ideas are built|And set in motion

My First-Ever Hackathon

Programming (and computers in general) has always been a passion of mine. For me, it's always such a delight and a wonder when you are able to write something in order to make your computer do something. I always get that giddy feeling when you are able to debug and execute code until you (finally) make it work. This is why I chose my course, Computer Science—and, more specifically—this is why I code.

Now, that doesn't necessarily translate to me being good at programming (rather, I'm quite far from being good at it), but it gives me the necessary motivation to do well in the field. Which is why I'm always looking for the "next place to learn" in the field of computer science. Last year, I stumbled upon online tutorials, and, eventually Harvard's introductory course into computer science, CS50.

Little did I know that my next stop in becoming a computer scientist would come in the form of an event. Now, this event wasn't small, by any means. This event was huge, and this event was the Microsoft Hackathon earlier this year.

Before the Hackathon

It was a whole week before the hackathon when my friend, who is a Microsoft Student Partner, talked to me about a training seminar for members of the APC Microsoft Community (APC-MSC). I'm not quite fond of attending events, but once I heard that the training was going to take place inside Microsoft Philippines' headquarters, I didn't even hesitate to say yes.

Once I was at this training seminar thing, I was briefed on the various roles an officer of the APC-MSC should do. It was weird because I didn't really aim to become an officer of the APC-MSC, but it was a good lecture anyways. The lecturer, which was my friend, also talked about several Microsoft events and then eventually got to talk about the upcoming hackathon.

The upcoming hackathon would last for 2 days, starting February 25 at 8 a.m. in the morning, and ending on February 26 at 4 p.m. It will also be held at Microsoft Philippines' headquarters. You would have the option to sleepover there or you could go home and return in the morning. Plus, you would need a team of 4, and your app idea should tackle on one of the requested problems.

After hearing that, my friends and I called on 1 other person to add to our team, and he came up with the name for our team, "ECOde." (Because the problem we would be tackling on was related to the environment.) I came up with the idea of the app and its name, and I became the leader of the group, plus I submitted the registration form as well.

Creating an Entry

The process of creating an entry for the hackathon was the hardest part for me. I had to think of something that is, as much as possible, as original as it can be. Adding difficulty, the idea would have to tackle on one of these problems: education, unemployment, pollution, climate change, healthcare, poverty, community building, or disaster resilience.

I first chose a field that I might have an easy solution for: education. After a few minutes, nothing, nothing good came up. So I scrapped that field and then thought of a solution for pollution. After a few minutes or so of thinking, I came up with our submission.

Our submission was this: A reward system for recycling stuff. I was first dismayed when I searched for "recycling reward system" and a bunch of results came up. But I then tried to make my idea for a recycling reward system unique—in that it would be easy to implement and easy to understand. After much thought and a couple of searches (to make sure I wasn't copying an existing recycling reward system), I had the core of our submission.

I'm pretty sure you've seen numbers on/under plastic bottles, right? Those numbers from 1-7. For those who don't know, those numbers indicate the composition of the plastic. And, if you organize them accordingly, you can actually recycle them depending on their composition.

Using this, I wanted to make a system that organizes bottles and other plastics accordingly, and rewards the user based on the weight and type of plastic they dispose. I then thought of this trash can that would scan for the type of plastic, but it was hard to implement in software, so I went for the next best thing, QR codes!

QR codes are a wonderful way to store data in a single image. They're ubiquitous, and can usually hold a large amount of information—from numbers, text, and even links. So my idea was this:
A QR code would be printed on the plastic and, once the item is ready for disposal, it can be thrown to a special trash can that scans for the QR code. This scanner can determine the type of plastic it was made out of, the product, and the company where it came from. From this, the trash can could calculate how much points the user would get. 
The trash can would then generate a different QR code that the user would scan on their phone. This QR code was different, and is encrypted, and only our special app can decode it. Once decoded, the QR code then translates to points within the user's account. The user can then use the points to turn into real-world money or buy items online. The points can be converted and sent into a bank account, turned into Steam Wallet money, exchanged into Western Union for real money, and more.
Sounds simple, right?

Day 0: The First Day

I originally thought I was late for the hackathon, and I panicked when I saw the time. At first, while commuting, I thought of the words "Filipino time." Since the event would be hosted in the Philippines, it was sure that the event would start late, and it sure did. When I got there, the real event wouldn't start until 9 a.m. or so, maybe even 10 a.m.

Once some lectures on Git, Microsoft Azure, and about the event in general was over, it was time. We were told about the rules of the hackathon, and we were told that it was necessary for our project take advantage of the Microsoft Azure platform. The Microsoft Student Partners had prepared the room, added the tables, fixed the chairs, and given us extension cords. We were all set, and the event formally began at 3 p.m.

Initially, I was scared as fuck on the task ahead. Think of it: we were told to create a prototype of a system. This system would take advantage of 3 programming languages: Java, C#, and SQL. Also, it was imperative to make the project use Microsoft Azure—a platform no one of us had used or was familiar of before.

Our team first thought of who was going to take care of what. There were four of us: Andrey, Jason, Eric, and I. We were all skilled in generally different fields, so I assigned different tasks for us. Eric was going to be making the Android app, Andrey and Jason would be the ones to handle the algorithm for the 2 distinct types of QR codes as well as creation of the data involved, and I was going to work on the scanner for the trash can part.

We then argued for a while, haha. We talked about the logic and flow of the program, and how it would work in real life. We spent around a good hour and a half of talking about the program in its entirety until we got to developing the real system.

The first few hours were okay for me. Although I wanted to code in Visual Basic, I then realized that no QR code and generator APIs would be available in VB, so I moved to C#. Although they're different programming languages in general, I have good knowledge of Java and VB, and that was good enough, apparently. I used a QR code scanner API that was able to use a laptop camera, and got a QR code generator.

I first read the documentation, how they worked, how to make NuGet install them, and integrated them both in. My program worked like this: you would scan a QR code into the camera, and that would return a value, x. After getting x, my program would calculate it and return yY contains the necessary data for the Android app to scan and turn into points. Y's data would then be used to generate a different QR code, which the Android app will have to decode and turn into points.

Around "halftime" (3-4 p.m.), my friend and I decided to buy snacks. We weren't able to find a convenience store nearby, so we went for the grocery store. Since we were nearby Glorietta, we decided to go to the SM store nearby. We bought a lot of snacks, Gatorade, chips, and stuff to keep us awake throughout the night. We returned with a bunch of stuff later—with caffeine-laced goods abound—and we were ready to continue working.

It was already around 8-9 p.m. and I was already struggling to code, to be honest. My eyes were starting to strain from the screen, and I was constantly getting various camera errors that I had no idea how to fix. I tried looking at the documentation several times until I finally worked it out, I had intentionally disabled my laptop camera (because I was afraid that some fool would use it to spy on me). After enabling it and restarting my laptop, it worked!

The others seemed to have a hard time with their programs as well. Andrey and Jason were having trouble with connecting to Azure for their database, and Eric was having trouble connecting to Azure as well to implement the login feature. I then had minor troubles along the way, such as using switch (true) case in C#, but I was able to overcome them easily.

Day -1: The Second Day

It was around 1 a.m. and I was starting to go mad from the exhaustion. Simple lines of code turned into abstract concepts that my brain was struggling to understand. When Andrey and Jason was finished with the algorithm, I was struggling to keep up with it, and how to convert it into usable data.

After asking some of the MSPs for help (and drinking a fresh cup of Gatorade and water), my head was back to normal, I believe, and I continued to code. At around 5 a.m. or so, I was finally done with my program. It looked ugly (basic) at that time, so I spent around 2 more hours or so to further develop the UI of the program.

While I was finishing up, my teammates were struggling with Azure. It was not an easy task to connect to an Azure database, mind you, and it was their first time using the technology. Eric was the one who was having trouble with Azure the most, because it was necessary for the Android app to be able to log in and upload data.

The others tried to sleep to regain strength, and I generally took a breather. I walked around the wonderful place, that is the 8th floor of 6750, and was one of Microsoft's main office. It was wonderful to be in the place, to say the least.

A few minutes later, I settled on just sleeping on the carpet and cuddling my bag as my pillow. I was able to sleep for 30 minutes or so, but then, in my dreams, I started to panic about the project, and that jolted me out of my sleep.

It was already the second day of the hackathon, and we were all starting to feel the strain of programming overnight. Finally, by some stroke of a miracle, Eric was finally able to make his Android app communicate with the Azure server, and was able to log into the app using Azure.

I was amazed on how complete our project was at the time. I was just amazed by it all. Yesterday, it was just an idea. A few moments later, it was a buggy mess, but had the foundations. And now, the idea that I once imagined, had become a reality.

I was super giddy on how great our team was doing—and how each one of us contributed wonderfully to the project. It was like a dream come true, a team where everyone actually worked. Recently, I was in teams where I was the only one who worked, and there were instances when I was influenced to be lazy in a team—and I hated that so much. There wasn't a single person in our team who didn't do well, plus we all worked hard, and I'm proud of our small team from Asia Pacific College.

After what seemed like a long time, we finally finished our project. We finally made its features work, and I cleaned up the UI of the program I worked on. Whew, a full project done in a day and a half.

Once we were done, we all ate breakfast, which was garlic rice with beef tapa (I believe) and egg on the side. It was delicious, to say the least, and was seriously one of the best breakfast meals I had eaten.

We just chilled there for a while, talking about the difficulties of our project, while I nagged on about this cute girl I encountered. I told them about how I was just strolling around the place when a girl went out of a room, looked at me, and how we both laughed at each other for no reason. Needless to say, the guys told me various stuff, and we had a laugh about it.

So, after breakfast, we polished up the programs and the general UI a bit, and we were ready to present. We were told that the judges would be two people high up in Microsoft Philippines. Initially, I was scared, and I almost had a panic attack. "Jee whiz, someone high up in Microsoft would be reviewing the system we made?" I thought, and I struggled to gain composure for the presentation.

After a while, we were given the order of presentation, and we were second. I was troubled at first, but then we were presenting. We were given a small lecture and some tips about presenting and we were ready.

The first group had finished presenting and it was our group's turn to present. I took around 3 minutes to talk about how the program worked, and I was shocked when the person keeping time told me that it was time for the Q & A session. Q & A session? I thought that it was 3 minutes to talk about the program and 3 minutes for the demo. In all of my time in a public speaking and debate organization, nothing had ever prepared me for that mistake.

My blood ran cold when I realized that simple mistake, but continued with the demo regardless, and we were asked some questions, but luckily we were able to answer them all accordingly. Sweet! We were done and it seemed the judges were interested in our project.

We waited for a while before we would get the final results. I played Overwatch for a while as a treat, and we all played some games before the results would be delivered. We were showed the prizes for the Junior Microsoft Student Partners (us) and the Microsoft Student Partners. The MSPs would be getting Windows Phones and the JMSPs would be getting some goodies. I wished that I was an MSP because I needed to replace my aging Lumia 900, but goodies were fine.

Then, after a while, it was time.

"And the team that won the Junior Microsoft Student Partner category is team.." were the last words I heard before my entire world changed. The beginning of that sentence and the end stretched for what seemed to be an eternity. Then, it was revealed. "And the team that won the Junior Microsoft Student Partner category is team ECOde!" I paused for a millisecond, and then looked at my teammate beside me and I screamed.

"I couldn't believe it! There was no way we won! We won?" were all the things I thought afterwards. I almost blacked out, but my entire team and I were shocked to find out that we won.

We took a picture and we were given some gifts, and we were done! The hackathon came to a close, and it was a very good night afterwards.

In hindsight, although my team and I weren't the best at programming, it was amazing to see us pull through in the end. Additionally, the experience of joining a programming-oriented event was exhilarating. It was truly a memorable experience that I'm sure my team and I enjoyed.

Oh, and, if you currently are in the field of computer science, I.T., or some other programming-related field, I suggest you participate in hackathons or events near you. It's not really a prerequisite for everyone in the team to be good in programming, to be honest. Just a simple grasp of the foundations of programming is good enough, to be honest. So, if you haven't joined one already, make sure you do! Who knows? Maybe I might see some of you join hackathons soon.

That's all for now, thanks for reading on my first hackathon experience! :D

P.S. Sorry for not thoroughly proofreading this blog post before publication. I was in a hurry to publish my post because we were going to eat. I'll thoroughly proofread stuff next time, that's for sure.

Share this