LazyNoteTaker

The Winning Pitch

I hope you're ready for the off-the-cuff sales pitch that put me "in-charge" of a small team to bring my idea to life.

"Who here loves to write notes?" *2 people raise their hands* "I'm just going assume that you're lying. I'm proposing an android app that will make hand cramps and paper waste a thing of the past."

"A simple app that will take a photo of a whiteboard and convert it into editable notebook pages in plain text, all within the app. This eliminates the stress of trying to keep pace with the professor and the illegible handwriting that comes from writing too fast."

"This app will be written in Kotlin and be easily installable for all android devices, making it accessible to as many students as possible."


That paraphrased sales pitch made my app one of the top voted projects and helped to make it a reality.

The Team

Everyone in the class proposed a project and then created a wish list of which project they wanted to join should theirs not be the most popular. Using that method my dream team came to be.

Me

Look at that, I'm a part of my team. I pitched the idea and helped to steer the project direction and structure.

My main contributions were the UI design of the app as well as organizing added code to utilize clean code standards.

Gabriel Gomez

Kadejha Jones

Hi, I'm Kadejha Jones, a California State University, Channel Islands graduate. Who graduated in May of 2023 with my Bachelor's of Computer Science! Currently, I am working at a data center called Stack Infrastructure and am absolutely loving life. To know more about me click here for my website: https://www.kadejhajones.com/ 

Sheldon Rice

I am Sheldon Rice. I graduated from CSUCI in May 2023 with a Bachelor's in Computer Science. I am an entrepreneur with multiple companies founded, most notably VBN, Inc. I have worked in the cyber security space and have developed numerous automation programs. You can find me at https://www.vigilantbag.com/. 

The Beginning

At the start of the project none of us had any real experience working on Android apps let alone working in the new language standard of Kotlin. So we all dived into any crash courses we could find to get a working knowledge built to make the initial deadline. 

I spent this time working exclusively on the design for the app and making a basic framework for the rest of the project to follow, almost single-handedly creating the layout for the app.

The first sprint totaled out with us having a very basic notebook frame work with none of the text recognition features we wanted to include. We received some push back on this from the class and the professor since the text recognition is kind of a key selling point, but we felt that building a solid foundation and design language was more important this early on.

The First Glimmer of Hope

With the second sprint we felt we should do what we advertised. We spent a lot of time studying what API would best fit our project and in the end decided on Tesseract OCR. We dug though the documentation and found that it had been used for similar tasks before and was very adept at reading handwriting as well as cursive.

We spent most of the time studying and testing the software which left little time for our actual implementation. We got a rough version of it added to the app for a proof of concept to present, showing that we actually intended to deliver what we advertised. While it wasn't the nicest looking setup it certainly did the job.

The Home Stretch

Our final sprint was spent tuning and cleaning up our app. We had the basic function worked out, so now we had to make it play nice with the rest of the interface and make it actually useful to the end user. I spent much of my time here refactoring existing code from myself and others to align with the clean code principles we had decided on for the project. Taking the OCR program integrated by my team mates and making it match the design of the rest of the app. 

We then turned our focus to adding additional features to make the app more filled out, like cropping images, real-time editing of OCR data, UI tweaking alongside other long-shot goals we had for the project. Sadly most of them did not make it into production, but it did help us to learn how to be more realistic with our project goals.

One of the issues we struggled with the most was that Tesseract did not like anything that wasn't black on white or white on black. Usually resulting in junk data or missing the input all together. We worked on this problem for much of our final sprint to no avail. We tried fine tuning and training the OCR model and it never got any clearer. It wasn't until we were about to present that I turned to Sheldon and said "We could have just set the photos to black and white and increased the contrast." 

It can be easy to overthink a project sometimes.

The Final Result

I know what you're likely thinking, "What does this app look like?", "Why are there no photos?", or "I just scrolled to the bottom to look at the photos." The long and the short of it is that I didn't think to take photos along the way. The project was so constantly in flux and I always forget to take important photos. The only photos I have of me proposing to my fiancée were taken by another customer in the restaurant who happened to think to capture the moment. So in the end I have only the final product to show for this semester long uphill battle. From learning a new language, IDE, and how to properly use GitHub with other contributors I have a decently functional app that really only needs a little more time to get fully ready. Hopefully you like what you see below.

Unfortunately Tesseract is having issues in the app at the time of writing that seeing as it has been unsupported for around a year, but it worked well enough to earn a nice grade for software engineering. It is likely just a simple issue of the API calls in the app being to depreciated versions of the program. If I can jump in and get it running again in my spare time I will update with new pictures.