Quarter 3: COMPLETE

Sarah Hanson
6 min readAug 12, 2017

--

Ramen Tatsu-Ya celebration time!

I haven’t gone this long without writing a blog post since I started blogging. I feel awful! But I have an excuse!

Last Wednesday (8/2), our cohort embarked on our Q3 projects. The only guideline provided by our instructors was that we had to come up with the most ambitious idea we could think of, one that we didn’t think we could finish — and finish it in a week.

After a couple of brainstorming sessions, Amanda, Abby, and I came up with an idea for a mobile app that would aid users in grocery and restaurant budgeting. We wanted users to be able to take photos of their grocery and restaurant receipts, upload it to the app, and have the data fed into a detailed, informative graph. We wanted users to be able to manipulate the graph in order to visualize potential savings, e.g. show the user how much they could save if, say, he or she stopped dining out, stopped going to Starbucks, or stopped buying particular types of items.

First of all, none of us had any mobile development experience. Secondly, we hadn’t ever messed with OCR (Optical Character Recognition; basically, software used to read and return text from images). These were just some of the initial challenges we faced.

Initially, we thought we would use React Native for mobile development. Although I had started learning React and React Native on my own time a couple weeks ago, we only had one class lecture on React. Nonetheless, I was tasked initially with setting up the project in React Native and assessing how feasible using the framework would be. It wasn’t long before I realized I wouldn’t be able to do all of the major front end work on my own, and because of the short runway, we didn’t have a lot of time for everyone to come up to speed.

We began researching other mobile frameworks, notably NativeScript and Cordova. We were excited when we discovered these because both of them allow developers to use Angular, a framework that all three of us are comfortable with. The initial excitement was dampened when we each tried digging in and quickly found how difficult they were to setup. We left on Friday feeling defeated and a little hopeless. Our goal over the weekend was to do more research with the different frameworks and make a decision by Monday morning.

Things started looking up on Sunday when Amanda reported that she had finally been able to get a project up and running with Ionic (a framework that makes use of Angular for styling and templating with Cordova). She said she had a hell of a time trying to organize the project structure in a way that we would be familiar with. Additionally, she had completed the majority of the back end routes (we used ExpressJS and Postgres, things we were already super comfortable with). We were able to finally make progress!

Abby had been researching OCR and came across TesseractJS. Tesseract appears to work really well as long as the images are “cleaned”: processed to be enlarged, converted to black and white, contrast increased, etc. She and I worked together to incorporate it onto our front end, and we eventually got it to work with an image we had pre-processed ourselves (the text wasn’t quite perfect, but we built in the ability for users to manually add/edit/remove the receipt items). The issue with it on the front end was that we would not be able to make use of the image cleaning bash and python scripts she had found. We decided to work on moving it to the back end later on.

In general, Amanda worked on D3 and the back end, Abby worked on styling and image processing, and I worked with the rest of the front end in Angular. We didn’t have trouble dividing up the work or working as a team. Whenever one of us hit a blocker, we came together to solve it. I joked around about us being so compatible because of our Myers-Briggs personality types (our cohort including the instructors all took the assessment one day just for kicks), but there might have been something to it. We also didn’t have too much trouble working with GitHub in a group setting, either. There were many times where one of us was “accidentally” working off the master branch, but because we remembered to pull before each push and because we were all working in close quarters, there were no disasters.

I think we really transitioned from being stressed out to actually having fun sometime around Tuesday. We didn’t really have to stay on campus too terribly late on most days, except for on Thursday (the final day before presentation). It was 10PM, we were all tired, hungry, delirious, and desperate to get the image processing on the back end to work. We all agreed we were pleased with that we had accomplished, but we really wanted to get this last piece to work too. Eventually I made the executive decision that we all walk down the block for some pizza and then get back to work. I didn’t stay much longer once we got back, and neither did the others. Unfortunately, we didn’t quite get the problem figured out. Nonetheless, we knew we had a presentation-worthy project.

On Friday morning we worked on some final touches to the project and to the presentation slides. I was able to make a demo video on my Nexus 6 to include in the presentation. When it was all said and done, everyone seemed impressed with both our project and with the other team’s project (a music trivia Alexa skill game). It was clear that everyone worked hard, and that we all had earned our break!

Graph view
Receipts view
Edit receipt view

Stretch Goals

  1. Back end image processing
  2. Social login
  3. Graph enhancement (add additional graphs)
  4. Organize receipt view (search/sort/filter)
  5. Code cleanup
  6. Add a web front end

What We Learned

This was our first group project, so we gained valuable experience with working as a team. I’m very grateful that we took the chance to dive into mobile dev, another “first” for us. But what I’m most grateful for is the high expectations that our instructors set for us. We learned that we could set seemingly impossibly high goals — and achieve them.

Quarter 4, Capstone, and Beyond

It’s hard to believe there’s only one quarter left. We will be focusing on Computer Science as well as our capstone projects in Q4. I pretty much know what I want my capstone project to be, and I know I have a lot of research ahead of me. It will also be time to focus more on job searching; to that end, I would like to make it a goal of mine to attend at least one networking event each week.

Over my break week, though, I’m looking forward to relaxation, completing chores, and delving more into React and React Native.

--

--