On Jan 13, 2018, I attended my first hackathon, graciously organized by the amazing people at StartupStorm. We had approximlatey 850 attendees, and I was luckly to be one of them. Somehow, probably due to the high caffeine intake, our team managed to create a final product that we call Huddle.
Prior to the event, I had organized a small team of friends, but they bailed last minute for extraneous circumstances, so I was bit daunted when I joined a team filled with strangers. I had little idea of what contributions each of us could make, so when the hacking hours began we spent some time thinking of ideas. One goal each of us had was to, at the very least, finish the hackathon with a finished product. Some of the ideas we came up of were:
- A very flexible and adaptatable key-value website designed to do anything from storing personal dictionaries to be able to support third-party plugins like quizzes.
- Mobile OCR technoology backed with machine learning to coninuously adapt to the user's writing. With the proper context, we envisioned that scanning written documents to editable Word documents would be simple.
- A decentralized app to bring strangers together in fun games, such as implementing the game Mafia using just mobile devices.
The last idea was the goal that we decided on. Each of us enjoyed the idea, but it was also an idea that qualified some of the sponsor challenges. To work towards this goal, we took a step back and decided to build the core functionality before adding the game-specific implementations. We talked to some of the sponsors at the hackathon, and saw that RighMesh's API made mobile connectivity simple for us to use. Without having to worry about networking, WiFi/Bluetooth protocols, and other issues like concurrency, the RightMesh API allowed us to dive right in to working towards our app. Big shout-out to Jason at RightMesh for helping us out and for the workshop.
Speaking of apps, none of us in the team of four had every developed in Android before. I had some Java experience due to CPEN 221 and XML from the co-op that I was in, but none of us had much idea of where to start and where to go. So, we spent quite a bit of time reading up on the Android development experience and the environment, and a few hours later we had a functional GUI and back-end button functionality. The RightMesh API enabled us to construct a network using just mobile devices that are connected together using Bluetooth and/or WiFi.
We then reshaped our idea to build a simple app for people travelling in groups or performing group activities in which it may not be possible to keep an eye on every person at all times. Using hiking as an example, should a person lose their way or unexpectedly travel the wrong path or slip to an unfortunate fate, the app would notify all members of the party that two or more people have disconnected from their internal mesh network.
By 1AM, twelve-hours after idea generation, planning, and Android development, we had our first somewhat working build of a simple application that used RightMesh's API with a lot of help from their example source code. We all decide to take a break and went outside to stroll around the UBC campus a little bit and to test the range of Bluetooth and WiFi. We were glad to see that WiFi had no issues between these devices of over 100 meters, but Bluetooth worked within 10 meters.
The remainder of the hackathon consisted of ironing out other features of our app such as group formation, group joining, message alerts, disconnect errors, and more. We also had a team member quite proficient in digital media, and so we had tremendous help from her in creating a "brand" for our app, a promotional video, and a theme for our app. Other than that, we spent a lot of time debugging and investigating why we kept receiving NullPointerExceptions.
More debugging was encoutered with issues specific to the RightMesh API. Currently in closed beta, we had some issues when running our app on the latest Android systems with the latest SDKs. We believe it was mostly due to changes in the way Android handles permissions and system modifications. We eventually got our app to work with Android KitKat and Lollipop devices, provided by RightMesh.
Our app was packaged and ready for demo at the 1:00 PM deadline. 24 hours of learning and hacking, we all just laid back for a solid 30 minutes while the other hackers went to get lunch. I thought at that very moment that I had actually managed to stay awake for 24 hours doing nothing but developing this app, and that there was still the project demo and closing ceremonies to attend. Yes, we had hiccups during our demo. No, our app was not perfect. Yes, we had a great time looking at other's projects and learning from their experiences.
During the closing ceremonies, our app won the Best Use of RightMesh SDK award. I was ecstatic. We all were ecstatic. Four strangers placed together with zero previous Android development experience had created a winning submission. I couldn't have asked for more from my wonderful team and the wonderful mentors at the hackathon that guided our project. Our team learned a lot from this hacking experience and each of us hopes to return to create more in the future. There are still more things to work out from our Huddle app, and hopefully a V2 is in the horizons.
RightMesh's Nwhacks blog post: https://medium.com/rightmesh/the-largest-hackathon-in-western-canada-our-recap-of-nwhacks-2018-c2d92a917696