Console #140 -- Interview with Udayraj of OMR Checker - fast & accurate OMR scanning
Featuring nanoGPT, You Plot, and Novu
🤝 Sponsor
This space is reserved for sponsors that support us to keep the newsletter going! Want to support Console? Send us a note at osh@codesee.io
🏗️ Projects
Browse through open source projects on OpenSourceHub.io, add your project to get more exposure and connect with other maintainers and contributors!
🤖 nanoGPT
The simplest, fastest repository for training/finetuning medium-sized GPTs.
language: Python, stars: 7574, issues: 20, last commit: today
repo: github.com/karpathy/nanoGPT
📊 You Plot
A command line tool that draw plots on the terminal.
language: Ruby, stars: 2320, issues: 10, last commit: last week
repo: github.com/red-data-tools/YouPlot
🔔 Novu
The open-source notification infrastructure for products. Add a notification center for your React, Vue and Angular apps.
language: TypeScript, stars: 17028, issues: 151, last commit: Today
repo: github.com/novuhq/novu
🤳 OMR Checker
Read OMRs fast and accurately using a scanner or your phone.
language: Python, stars: 405, issues: 18, last commit: last week
repo: github.com/Udayraj123/OMRChecker
Join thousands of other open-source enthusiasts and developers in the Open Source Hub Discord server to continue the discussion on the projects in this week's email!
🎙️ Interview With Udayraj of OMR Checker
Hey Udayraj! Thanks for joining us! Let us start with your background. Where are you from, where have you worked in the past, how did you learn to program, and what languages or frameworks do you like?
Thanks for hosting me! My name is Udayraj Shrikant Deshmukh. I am from Maharashtra, India. I am a Senior Software Engineer at Razorpay. I have done my B. Tech. in Computer Science from Indian Institute of Technology (IIT) Guwahati.
I learned programming during the first semester of my college in the computer labs. I am usually language agnostic, but Javascript and Python have been my comfort zone. My preferred frameworks are Next.js and Django.
Who or what are your biggest influences as a developer?
Martin Molin - who is not a developer, but knows the development process for sure. I believe every SWE should watch his videos to learn about structured ways of working on a big project
Zack Jackson - Got to know about him when learning about Module Federation, I feel inspired and awestruck seeing him make progress in strides.
Jack Herrington - His crisp tutorials and live coding session provide a ton of learning.
Two minute papers - It really makes you think “What a time to be alive!".
Ben Awad (Fireship) - For entertainment and learning, I like his 100 second videos.
My brother Yograj - He’s a passionate cricketer, and my source of inspiration to take risks while making progress.
What’s your most controversial programming opinion?
Development in Javascript is better than that in Python.
Yes, I’m aware of the memes about the confusing equalities, but we can’t overlook one of the main pros that come with JS - ECMAScript. I tend to be a perfectionist when it comes to coding standards, and so far only ES6+ standards have reached close to my acceptable range.
What is your favorite software tool?
Obsidian - best for making notes and relating concepts together, visualizing them.
VSCode - fast and focus oriented.
ZShell + P10k - a pleasant experience when using the terminal, I’ve made a small quotes plugin that prints cheerful two-word quotes on the right.
Webpack - it’s like a work of art that I can keep staring at and keep learning.
What is your favorite book and why?
I happen to consume knowledge through blogs, news and articles. So, I haven’t really read many books. Yet in the past I have read Elon Musk’s autobiography which did help me widen the scope of my thinking. As someone who doesn’t have a singular interest, delivering in one domain after another is what inspires me the most from that book. I also liked the Men-Mars-Women-Venus book.
If you could teach every 12 year old in the world one thing, what would it be and why?
Patience.
The 12 year olds now are Generation Alpha and they have the most exposure to digital devices. Increased screen time, especially on social media has caused low attention span in children. Having long conversations, ability to enjoy off-screen life, or enjoying doing just nothing, are really essential skills to learn.
I worry that in the future they will face difficulties running long term projects, or for delivering real impact in the world. Being patient is an essential life skill I would like to teach them.
If I gave you $10 million to invest in one thing right now, where would you put it?
If you ask for one investment, it’d be real estate for me.
And if you ask for a company - I’d look into Construction Management. It’s an untapped market especially in my country. Biggest problem to solve here would be saving time, the projects overshoot the deadline by months, if not years. And there is no transparency in the process. There is also a scope for applications of AR/VR.
I’d like to invest in such startups and see this domain evolve to the next level. One such company in my knowledge is Powerplay.
Another domain I could fund is nostalgic-but-premium consumables. And personally, I’m also looking to fund any startups/NGOs that help stray cats.
What are you currently learning?
Personally, I am currently learning Kalimba. It’s like a pocket xylophone, quite soothing and peaceful. Professionally, I’m exploring the depths of backend development.
What have you been listening to lately?
Imagine Dragons, The Weeknd, Maroon 5, ARIZONA, Boyce Avenue, Sanam the band, Minecraft, Arctic Empire, Michael FK (Chillstep), Wintergatan/Detektivbyrån, Lindsey Stirling, Caitlin DeVille...
Yep, all of them from my recent list.
Why was OMR Checker started?
This project was born out of a student-led organization called Technothlon. It is a logic-based international school championship organized by students of IIT Guwahati.
The OMR checking process is quite tedious, which we aim to simplify dramatically. We had just a single office scanner, each and every OMR sheet was scanned in small batches. To eliminate this bottleneck, OMR Checker was started.
Being a non-profit organization, and after seeing it work fabulously at such a large scale, we decided to open source it and share this tool with the world.
Full story in this blog
How does OMR Checker work?
This block diagram explains the main steps in the working of OMR Checker
Designed with robustness in mind, the Adaptive Thresholding technique holds the core logic of local variance. Visually these are the steps happening on a sample image:
Many more great visuals are present in the project wiki.
Why did you pick Python?
For ease of development and for OpenCV, which had primary support in C++ and Python. I picked the Python version as it had more online tutorials, blogs and good existing projects.
Are there any overarching goals of OMR Checker that drive design or implementation?
Not really, it was just made for solving one problem at the start, now made generalized.
What is the most challenging problem that’s been solved in OMR Checker, so far?
As such, OMR Checker is a collection of small solutions put together. Yet, the most challenging step was Adaptive Thresholding (see block diagram).
This is what sets apart OMR Checker from other existing solutions in robustness. It can detect bubbles even on a Xeroxed OMR sheet, and easily processes images captured by mobile phones having shadows over them.
Another challenging problem that I solved recently is implementing a generalized evaluation script.
What was the most surprising thing you learned while working on OMR Checker?
There have been many notable surprises over the span of past 6 years -
No existing open solutions for mobile images/generic templates!
Honestly the core logic is not that complex.Getting a 26 file pull request from a new contributor!
Realizing that the whole thing can run inside your browser!
Is OMR Checker intended to eventually be monetized? If so, how?
My intention to open source OMR Checker is to help others and to get recognition. That is why we participated in Hacktoberfest 2022 and a few Winter Of Code events like Codepeak, KwoC and Fossoverflow.
OMR Checker follows an open core model. Anyone could work on making a product out of it and to monetise it, I would be even glad to assist in making the product. As I find the time, I may monetise a user-friendly, hassle-free OMR Checking solution that provides services such as template designing, analytics on top of it.
Another approach I’ve considered is to get the project sponsored via platforms like open collective or github sponsors. This way, there won’t be a need for support/time commitments from me so that I can continue building new things.
What are you most proud of?
The moment when OMR Checker was used for Technothlon 2019 at a large scale with multiple mobile devices. I was on a video call to collaborate, seeing my own creation do its job smoothly was one of the greatest feelings to have. I have covered this story in detail on my blog
How has building OMR Checker helped you in your career and life?
Some recognition goals achieved:
- 400+ Stars and 185+ forks on github at the time of writing.
- Top result on google search for 'OMR Checker'
- Top result on github search for 'omr' topic
- Participated in hacktoberfest 2022, got featured on goodfirstissue.dev, and merged a total of 21 PRs from about 15 contributors.
- Participated in CodePeak, KwoC and Fossoverflow
- I have covered the journey in a blog series, which was shared by Razorpay, Technothlon and influencers on Linkedin.
- Now also publishing on substack. Thanks to Console as well for sharing my story :)I also learned that in life, passion is an evergreen fuel. I never felt bored or tired when working on this project! That helps me be passionate in general.
How do you balance your work on open-source with your day job and other responsibilities?
My employer actually encouraged open source development. On Fridays, we have a dedicated slot in office hours to work on open source issues. Also on many days, I was so engaged in working on OMR Checker that I would forget eating or sleeping on time! I learned to manage priorities over time.
Have you ever experienced burnout? How did you deal with it?
With OMR Checker - not much. In general - yes I have. I deal with it by going off-screen, just music and sleep, followed by a walk in the fresh air. Being a productivity freak, there were a lot of times I needed to stop working and practice doing absolutely nothing for a few minutes.
What is the best way for a new developer to contribute to OMR Checker?
A new developer may start this way:
Complete a 20 minute setup from the readme
Run OMR Checker on given samples.
Follow the User Guide from project wiki to understand how to customize new OMR templates, understanding the code flow while doing the same.
Once they are familiar with the system, they can checkout the list of github issues labeled according to difficulty.
They may reach out on the discord server any time to discuss any issues.
If you plan to continue developing OMR Checker, where do you see the project heading next?
Upcoming features include:
A flexible answer key support
OCR support
QR/Barcode based templates (a fossoverflow funded feature)
I also aim to get sponsorships for new developments.
Are there any other projects besides OMR Checker that you’re working on?
Well, I am working on a few related projects in the OMR ecosystem.
I am in the process of migrating OMR Checker into Javascript to make it run completely inside the browser.
Another one is Review Portal - which is to collaboratively verify OMRs really quickly, it ensures 100.0% accuracy in results(useful for large scale exams).
Where do you see software development heading next?
As Github Co-pilot is getting more powerful, ChatGPT is generating codes, etc. We can say Software Development is surely getting upgraded. The mass layoffs and hiring freezes are going to make way for using AI tools to make developers much more efficient. Also, I see that no-code tools will enable people with non-tech backgrounds to make complex software products too. And in creative works and similar domains, graphics generation tools like Dall-E, Stable Diffusion, Midjourney, Invoke AI are raising ethical debates over creating inspired artworks.
Where do you see open-source heading next?
I believe open-source is the way to set de-facto standards in the tech industry. It lets people avoid reinventing the wheel, use best practices and focus on solving the unknown problems in their work.
I also see younger generations interested in open-source development perhaps because of the increased number of open source events. I see a healthy community building powerful software on top of each other.
More businesses are opting to keep their projects open source to track down issues faster and build robust tech. Many research papers are also increasing the credibility of open source by publishing their work in github repos.
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at osh@codesee.io or mention us @ConsoleWeekly!
Wonderful read. Keep going, Uday.
Great job uday! Such a nicely answered ....