The Growth of OMRChecker
Contents of a branding post, link is in the article

The Growth of OMRChecker

Hello readers! This is the third post of a retrospective series 'Open Source Experience with OMRChecker'. Previous post: The Story Behind OMRChecker

This is a continuation of the story from Sep 2018. I'll cover a few milestones, how I set it up for growth and some wholesome experiences I witnessed when the project started to grow.

Sep 2018

My tenure as a Technothlon Chief Organiser was over. OMRChecker had performed well, we got our results ready a day before the official date. The team was also very happy to have successfully conducted yet another Technothlon. OMRChecker was tried and tested on a large scale. It was time to handover the project to the next year's team.

But my hunger for solving problems in this domain was not satisfied. I still couldn't keep OMRs out of my head, maybe because of the many OMRs lying around in my room, or perhaps because of the pinned tabs about image processing on my browser. I wanted to make OMRChecker more generic, robust, efficient and easier to use for everyone. I was craving to learn the depths of image processing and apply them.

It was my penultimate semester of college, we had to focus on placement preparations and final year projects - both of which are very time consuming. It seemed like there is no time to continue working on OMRChecker. But as they say,  

Where there is a will, there is a way 

I thought of making it my final year project! I approached a few professors in Image Processing domain and tried convincing them to work with me on an advanced OMRChecker. Eventually, I took up An OMR Checker For Mobile-based Images as my B Tech Project under Prof Pradip K. Das. Thus I hit two birds with one stone - combining my passion project & final year project.

Oct-Dec 2018

I found time to image processing in depth - learned tutorials by sentdex, examples from pyimagesearch, furthermore read into learnopencv on complex applications.

In my memos, I had written down many unsolved problems of the OMR ecosystem. The top one was about handling mobile camera photos of xeroxed sheets. My thresholding algorithm was failing on such images. 

With the guidance of my professor, we figured out a way to make it work for Mobile-based images. I documented this in a poster for my mid-year evaluation. I have shared more details on the project wiki on Github as well.

Jan-Feb 2019

I was now equipped with more advanced skills to tackle the problem. We solved the template alignment problem faced in mobile images using morphological transformations. Then to tackle problems in detecting bubbles in xeroxed OMRs, had some great discussions with my professor. It lead to the idea of trying out local variance techniques. It helped solved a lot of corner cases!

I further spent time to create some stunning visual outputs, it felt really satisfactory to have used all of my learnings from the tutorials. All of them made OMRChecker drastically better at handling a variety of images. 

Mar-Apr 2019

Now that we can support mobile images, my mind was flowing with more ideas - I wanted to make it practical. I figured to develop a helper app to auto capture & validate OMR sheets. Here's a demo video of the progress, where I had used a mini drafter(from engineering drawing) as a stand for scanning -

This auto capture app can be used simultaneously on as many devices as we want, making a radical change in the scanning process. 

May 2019

It was my very last month at the beautiful campus of Indian Institute of Technology, Guwahati. I had to make a tough call just after the end-semester exams got over - to apply for a research publication or to go for one last trip with friends in the northeast. Well, I chose the latter.

Of course, I initially tried the former, had prepared a very formal report. It even received a 10 pointer for the project. Fun fact: In my final semester I received every grade in my subjects, starting from 5.

So, why did I not apply for a publication?

The answer was being a perfectionist. I wasn't able to write the results section.

I asked myself, "how to formally evaluate OMRChecker to show that it is performing well?", I wanted the results to reflect its capabilities and honestly felt gruelling to do as I was not interested in research work.

Using the single OMR template I had wasn't sufficient, manually creating 100s of various OMR images. I even tried creating a script to generate them, but they were not realistic of course. Looking back, it might just have served the purpose.

I could ask in Technothlon team for access to create an anonymised subset data from past years. But that would still be biased towards one type of OMRs. The perfectionist in me had really paralysed me. I ended up reporting it on a set of corner cases and a few typical OMR sheets.

June 2019

It was the month of my graduation, the past two years were great working on this dear piece of software. Still I was feeling that I had not given enough justice - I had invested so much time in it, but a very less amount was spent in branding it! Well, it still feels the same :')

I had some inspirations from a few existing open source projects I was following, my memos had ideas around how to set a project growing in the community. There was an innate need to chase something greater.

Before starting my first job at Mindtickle, I had a few days to spend on launching OMRChecker.

Since the project was already open source, I decided to gain new contributors.

  • Prepared the Project Readme as well as the Project Wiki.
  • Made the setup steps clear and added samples to get started quickly.
  • Rebased the Github repository with everything under 500KB.
  • Prepared new tasks out of the todo comments and notes to welcome new contributors.
  • Prepared Rich-Visuals and Block Diagrams, shared them on the wiki
  • Made my first call for contributors on Reddit.
  • Created a Discord server for discussing issues and onboarding new contributors.
  • Populated about 20 tags on the repo and created a crisp repo tagline.
  • Started sharing over social media and used meaningful hashtags
  • In the flow, I even shared it on Product Hunt - admittedly, without understanding what it's for, nevertheless!
  • Also gave finishing touches to the AndroidOMRHelper app to capture android contributors.

This is when my open source journey took off. The branding resulted in the first spike of GitHub Stargazers:

No alt text provided for this image
A special event in my open source journey.

I realised the time value of quality branding for the first time. Spending a few days extra on a project of years is definitely worth it. 

The discord server also started growing, new people were discussing issues and some were willing to work on the issues that I had listed out. This was a great foundation in the open source world for me.

In following months, received a motivating comment on my reddit post. From one of the first few external contributors of OMRChecker -

No alt text provided for this image
Comments like this was exactly what I hoped for :')

There was a lot more in later months, the exposure is covered in this post.

July-Aug 2019

While yet another Technothlon was being conducted, I was connected to my juniors as a mentor. And as we prepared fully, one of my mentors Revanth Chetluru shared this message with the team(sharing with permission): 

a message by an ex-head in our group Techno Parivaar
Wholesome moments with Techno fam <3 (yes, I still wished for a tech conference)

This time we were confident that OMRChecker would save time in scanning and reduce manual efforts. I connected remotely on a video call - It was a magical moment as the whole team was scanning OMR sheets together using my software :')

No alt text provided for this image
The magic moment

The team achieved converting the stressful 72 hour day-and-night scanning into an easy, enjoyable process of just 8 hours!

Here is a really wholesome video showing how relaxed everyone was during scanning -

At such a large scale, in only about 2 days we confidently generated results for the exam. Not only that, we also supported student review appeals as we can now easily display checked OMR sheets for any roll number.

To leave no scope for inaccuracies, a manual review was done for ALL of the OMRs in Technothlon 2019, using a visually aided diffing tool which speeds at-most 5 seconds per OMR for a member to verify. It was no more a big deal - due to the power of scaling up! The story about this tool - 'OMR Review Portal' deserves another post.

Today's story ends here. Thanks for reading everyone!



As great things never happen without help

I would like to tag everyone who helped in building in OMRChecker directly or indirectly (apologies if I missed anyone).

My co-heads for bearing with me: Jitika Rajpoot, Likhita Konjeti, Pratyay Nigam, Vishak Regu, Yash Gandhe

Techno Mentors for motivating me to work on the project: Abhishek Chatterjee, Akshay Alikanti, Akshit Ughade, Ajay Narasimha, Amogh Shankar Gupta, Aneesh Dash, Dhrubojit Bhattacharya, Goutham A G, Soumik Mukhopadhyay, Piyush Rai, Revanth Chetluru, Vasavi Madhurima

Techno juniors: Abhay, Abhishek, Aniruddh, Apurva, Deepak, Ishan Azad, K Harsha, Paranjay, Shambhavi, Sparsh, Vishesh, Yagyansh and the whole team at Technothlon

My go-to people for discussing complex problems and their simple solutions: anurag, Ayush, Mukul, Neel, Prashansi, Sudhanshu

My BTP Guide: Dr. Pradip K. Das

For my learnings in Image Processing: Harrison Kinsley, Adrian Rosebrock, Satya Mallick

For sparking new ideas in Mindtickle cafeteria: Aditya, Aneesh, Jasveer, Kinshuk, Rajat - I'm still waiting for the rws services :)

My then mentor prashank Gupta, and manager Sandeep Rangdal to encourage me to work further on the project. Special kudos to Sagar who also pushed me to conduct an image processing workshop in our Tech Weekly Club. Thanks to Vikalp & Antim - I remember discussing an approach on using AWS lambdas with you.

Also thanks to the great culture at Razorpay: I can still continue maintaining the project. Special thanks to Abhay Rana for conducting Open Source Fridays. Thanks to Razorpay Engineering for helping with increasing the reach.

My friends, family and my coding cats - for being there for me in this journey: If you read till this point, you deserve to see their pictures :)

Artists helping me get in the flow: Arctic Empire, Arizona, Boyce Avenue, Illenium, Seven Lions, Tash Sultana to name a few.

Special inspiration from Martin Molin: his long-going projects of rabbit holes, feature creeps, philosophy has been the most relatable & his attitude towards failure has been just pure inspiration, my first youtube sponsorship goes to him(this & this post covers his art of work)


#btp #credits #culture #development #github #growth #iitg #impact #journey #omrchecker #opensource #project #reddit #scanning #story #takeoff #technothlon #thanks #throwback #visual #wiki #wholesome

Laxman Hampiholi

Co-Founder of ScaleYou,

2mo

Hello Bhaiya, we are working on the openCV part and need your consultation and guidance. Can you please help us.

Like
Reply
Adrian Rosebrock

Former founder/CEO PyImageSearch.com | PhD Comp Sci

1y

Incredible work, Udayraj Deshmukh. Congratulations!

anurag ramteke

Software Developer (iOS & Unity)

1y

Finally, it's here. I have been waiting for the third part for so long. As always, I enjoyed every word of it and the entire journey brought me some nostalgia as well. I know how crazy you are for OMRChecker, as every call and hangout would ultimately lead to its discussion. I hope to see the project reach new heights with some splendid new ideas (which I know you will) every time we get to talk about it. Best of luck and keep up the good work!!!

Udayraj Deshmukh

Software Engineer @ Razorpay | Ex-MindTickle | Technothlon | IITG

1y

I would like to tag everyone who helped in building in OMRChecker directly or indirectly. My co-heads for bearing with me: Jitika Rajpoot, Likhita Konjeti, Pratyay Nigam, Vishak Regu, Yash Gandhe Techno Mentors for motivating me to work on the project: Abhishek Chatterjee, Akshay Alikanti, Akshit Ughade, Ajay Narasimha Mopidevi, Amogh Shankar Gupta, Aneesh Dash, Dhrubojit Bhattacharya, Goutham A G, Soumik Mukhopadhyay, Piyush Rai, Revanth Chetluru, Vasavi Madhurima Boddu Techno juniors: Abhay K., Abhishek Suryavanshi, Aniruddh Bakshi, Apurva N. Saraogi, Deepak Gouda, Ishan Azad, K Harsha Vardhan Reddy, Paranjay Bagga, Shambhavi Das, Sparsh Dutta, Vishesh Arora, Yagyansh Bhatia & the whole team My go-to people for discussing complex problems: anurag ramteke, Ayush Jain, Mukul Verma, Neel Mittal, Prashansi Kamdar and Sudhanshu Ranjan My BTP Guide: Dr. Pradip K. Das  For Image Processing tutorials: Harrison Kinsley, Adrian Rosebrock, Satya Mallick

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics