Hack OH/IO 2018 — A Learning Adventure
In October of this year, 3 friends and I took a weekend off studying to lock ourselves in Ohio State’s Student Union for 24+hours of coding and mayhem. Over Breakfast, “It’s Not a Bug, It’s a Feature” (that was our team name) broke down our product idea into manageable chunks, so that each person could work where they felt drawn to. We were most pulled to the Microsoft Challenge, which was to create the “Best AI hack utilizing Azure Cognitive Services.” Our initial idea was to make an application that let you push a photo to Twitter, Facebook, and Instagram, first screening it for inappropriate content.
Jon Soldan quickly assumed the role of AI development, working closely with generous and patient mentors from Microsoft to become familiar with Azure offerings. Bofan Wu led the team in front end development, while Nathan Smith worked to connect the two edges of the project. My main role was leveraging the Social Media API and testing of the application.
Because the whole team was familiar with Java, and not Swift, we chose to create this as an Android App. We used Git (and Github) for version control, assuming that it would be easy to work simultaneously on the same code. However, we soon realized that we had far less working knowledge of Git than we had assumed. At first, I was beyond frustrated at “wasting time” solving merge conflicts and fixing other Git related problems when I could be producing “more meaningful work.” This seems to be part of the Hackathon experience though. What fun would it be if everything went according to plan? All the pain caused by version control not only saved our project from catastrophe several times over but empowered us with that invaluable experience.
Still, as the day (and then night) went on, we encountered more and more obstacles toward our goal. For one, 24+ hours is a long time to work on one project. Constraints to the project kept appearing, such as the time it takes to get API access to Twitter, and Instagram’s nonexistent API access.
Originally, our app looked something like this.
Of course, we went with a dark theme. It’s simple, not elegant, and definitely MVP (minimum viable product). I pushed us to move quickly and minimally, as is called for in “The Lean Startup.” Iterating quickly, we were able to avoid wasting manpower on rabbit trails and find bugs quickly.
A huge example is this first iteration — When we realized we wouldn’t be able to implement Instagram and Twitter given the time constraint, we were able to just remove those buttons, before we had wasted time implementing their respective activities.
The challenge continued as we worked to allow the user to import or take a picture. Together, we learned to request files and camera permissions, and leverage that to get an image from the user. The Google Developer Docs were infinitely helpful for applying our Java knowledge to the Android ecosystem.
The next hurdle, of course, was to send the image through our backend, which picked and pulled countless data points from Azure Cognitive Services. Although we worked through the night, we ultimately hit a blocking point in connecting the front and back ends of our application. If we sent an image through our backend, it would successfully recognize nudity, alcohol, partying, and drugs, then return a probability rating. Separately, the user could take or upload an image, and send it to Facebook, via the Facebook app. Interfacing with Facebook took considerable time, as we did not find their documentation particularly intuitive. However, once we had everything completed, the transition to the Facebook app was incredibly natural.
Here, a bug in the screening is shown, where all images are flagged for nudity with a -1 error code
In the end, time became our greatest enemy. Although 24 hours felt like a long time, it was not enough to complete the user journey from image choice, to safety screen, to publishing. Separately, the safety screen worked with astounding accuracy. However, the App ended up only taking the user through image choice and posting. Our goal is to see the project to completion, and publish it to the play store! Regardless, we showed several sets of judges our unfinished product, describing our design process and choices. Although we did not win the Microsoft challenge, our app won the “Best New To Hackathon Award.” Also, we placed in the 96th percentile for teamwork, 91st for creativity, 89th for intuitiveness, and the 87th percentile overall. Hack OH/IO provided an incredible opportunity for growth, teamwork, and even networking! We all are looking forward to participating again next year.