One day...24 hours...1440 minutes...
What can you build?!
This was mindit's 2021 Hackathon challenge.
And every team involved rose to the task!
Hack-a-Team's project (we know, not very imaginative..but we're back-end devs) aimed to deliver an easy to use application, which would be accessible from anywhere at any time. The tool's goal was to combine tried and tested offline examination methods with the current context of a digitized world.
In order to reach this goal, we had "envisioned something" that would mix the hand-writing reading capabilities of current OCR tools with the search and compare results of ElasticSearch.
Now...I'll walk you through our project just as we ran through it over the week-end. It won't take 24 hours, don't worry. I hope :)
We'll start with the "envisioned something" - phase 1 of our project, what we could and would build within these 24 hours, was going to be a web-based application for teachers mixed with a mobile application for students.
Teachers would have admin rights over classes of students, they would upload the exam, the exam's documentation and they would set a start date and end date.
Students would then be notified through a push notification on their phones that a new exam is available for them and be presented with all of the required information to both prepare and take this exam.
Once the hand-written exam is ready the student would simply take a picture with their phone's camera, through our application, and upload it to their account.
Now this is where all the fun starts.
QuickExam would pick up all of those pictures, it would then apply OCR algorithms through Azure Cognitive Services, turn said picture into a PC-readable text(just like the one you're reading now) and start comparing every student's exam with every other student's exam as well as the teacher's documentation and any other sources of data that the admin wants to be part of our review. The result of this would be a weighted percentage of plagiarism.
Mind you, this would all be done with support in multiple languages.
Fast forward a couple of hours and a few brainstorming sessions and we had to drop multiple languages and only use English. While this feature is still available for later development(by simply integrating Azure's OCR language packs) the 24 hour deadline means that we had to make an executive choice :)
Push notifications were scrapped for the same reason although the student still has information about previous, current and upcoming exams within the tool.
The next part of our weekend was probably the longest, we had already picked up our tasks and it was time for the nitty-gritty bare knuckle development work. You'd mix in the occasional "I've been fighting with this for the past hour and it's still not working, HELP!" meetings but most of this time was spent working with the technologies required to build it; React Native, Redux and Expo for the mobile application; Java, SpringBoot and JHipster for the web app; Azure Cognitive Services OCR, Azure Blob Storage and ElasticSearch for the actual calculations.
About 10 coffees later (yes, we're keeping time in coffees now, deal with it!) every part of our app was tested successfully only...they all worked in their stand alone environments, our laptops to be specific. None of our creations were "talking" to each other...we had to teach them. I'm really not sure what time it was I can only say that it was dark and quiet out. This was the test...
Would the mobile app use the phone camera and capture the picture? Would the teacher web app properly open and close exams? Would the OCR read our hand-writing (hint...we had last written by hand years ago)? Would our calculations yield the expected result?
All this and more in the next episode...just kidding :)
As you would expect most of our individual apps could barely see each other let alone talk to each other. We did get OCR and ElasticSearch to work together and calculate the weight of plagiarism but we later found out that calculation was wrong and we had to scrap this requirement as well. We would simply check 20 word subsets against other 20 word subsets and present a Yes or No as the result.
You try building an app in 24 hours and see if what you designed is what you complete :)
By Sunday, 5 AM we got everything to work together...except our mobile app. We had 5 more hours to fix it, build a complete test plan, run it, build a demo, create a business plan, pitch and presentation.
You would think building an app only involves the development work, wouldn't you? That's probably the biggest part but the final parts of creating a proper solution all relate to how it looks, how you present it and how well it works.
A few of us had been getting a few power naps through the night but overall we were all alive and helping with the mobile app, even if it was just moral support.
Sunday, 8.45 AM, the final test. Fix a few IP problems, solve some typos caused by not sleeping, "hit Run"...EVERYTHING WORKED!!! We got it, we loaded pictures, we had read hand-written texts, we reviewed them, we provided results and we had a business plan...and 1 hour and so left.
One final hug, one final "job well done" and sleep...we were ready for the Exam :)