Creating My First App (Sort of..)

Source: Deep Learning on Medium

First page: On the first page, users can sign-in or sign-up.

Second page: Once the student is signed in, the app will prompt the user to take a photo of the item they want to sort, stating that the item must be held as still as possible to take a picture. Above, you can see how the app will look like once a picture has been taken and SORTit has correctly identified where to sort the image. The student can tap the “cancel” option to return to the camera screen.

Third page: After the SORTit has correctly identified the item, the app assumes that the student has correctly sorted their waste. It will automatically give the student one point. The student can redeem their points, which can be used to receive discounts at their university’s food services or campus stores. The Rewards page also notifies the student about how many points their university and other Canadian universities and colleges using SORTit have earned.

The complete app will have more pages, but these were the main features that I wanted to incorporate.

Developing

My desire to ensure that students with both Android and iOS operating systems were able to use SORTit led me to learn about React Native. React Native is based on React, Facebook’s JavaScript library for building user interfaces. However, instead of focusing solely on the browser, it also targets mobile platforms. To break it down, this means that web developers are able to write mobile applications that visually appear and feel truly “native,” all from using the JavaScript library. Additionally, the code can be shared across both Android and iOS platforms, which minimizes costs, time, staff and resources.

How Will SORTit Correctly Identify Waste?

I wanted to learn about how SORTit would accurately classify the waste that the students will present it with. I learned that it would need to be trained to be able to classify images such as cardboard, glass, metal, paper, or trash. The way that this will be achieved is by training CNNs on a large data set of images of cardboard, glass, metal, paper, and trash and make the Neural Network learn to predict which class the image it is presented with belongs to.

To understand what CNNs are, I learned about deep learning (DL). You can roughly think of DL algorithms as the information processing patterns found in the human brain. DL algorithms can be taught how to identify patterns and classify various types of information, similar to the brain. To correctly comprehend information, the brain tries to break down the information that it receives by labeling and assigning the items into categories. Every time the brain is presented with new information, it tries to compare it to a known item it has seen before and tries to place it in that category. This is the same process that deep learning algorithms use. Artificial Neural Networks (ANNs) are a type of algorithm that imitates the way our brain makes decisions. CNNs are a type of ANNs, which specifically recognize and classify image using a model that will have to be trained, validated, and tested. Libraries for DL exist in many languages such as Python and Javascript. I will not be going into detail about the trained, validated, and testing stages in this article.

Agile Method of App Development

The most interesting thing that I learned about project management from writing this article was about the Agile method of software development. In this method, a team manages a project by breaking it up into several stages and consistently collaborates with stakeholders to make continuous improvements at every stage. A subset of the Agile methodology is the Scrum framework. It is the most widely used framework for Agile development, which requires the use of development cycles called sprints. A sprint is the time period, usually two weeks to a month, when the scrum team works together to finish what has to be delivered.

Scrum Framework Roles

To develop SORTit using the Scrum framework my team will consist of a Team:

· Scrum Master who acts as a facilitator of an Agile development scrum team. They motivate the team and maintain efficiency to ensure that the project is completed in a timely manner.

· Product Owner/Product Manager to ensure that the clients’ requirements are not compromised. They are responsible for managing product backlogs (the priority list of user requirements) and ensuring transparency at all times.

· React Native Developer to lead the software development of the application.

· Engineering Manager acts as the bridge between the Product Owner and engineers to ensure that they are not overworked and that they have all the resources they need from a coding perspective.

· User Experience (UX) Specialist to conduct user research, interviews, and surveys to ensure that users’ problems will be fixed. They use the information they collect to create customer road maps, wireframes, and prototypes of the product.

· User Interface (UI) Designer to ensure that every page and every step a user will experience in their interaction with the finished product will conform to the overall product’s vision. UI designers are responsible for making UX designers’ visions a reality.

· Project Manager to manage the project’s budget, set deadlines for the team, and maintain strong relationships with external stakeholders.

Using the Scrum Framework to Create SORTit:

I will begin by working with the Product Owner to create SORTit’s Product Backlog. This involves creating an ordered list of everything that is known to be needed to create SORTit, and it acts as the source of requirements for any changes needed to be made to the product.

To create a sample Product Backlog, I began by learning about the concept of user stories. User stories quite literally describe functionality from the point of view of your user. An example of how they are structured are:

  • As a (user), I want x (to do something), so that (I get some value)

Product Backlogs consist of estimation, which refers to the amount of effort, complexity, and risk of uncertainty required in satisfying the requirements of the user story. Estimation is measured in story points, which can be thought of as relative time estimates. User stories can be estimated so that they can be completed in one sprint, however, some user stories may involve multiple sprints. These user stories can be split into epics, which are basically like larger user stories with multiple smaller stories underneath them.

Below is a sample of a Product Backlog that I made using Excel that involves an epic focused mainly on SORTit’s sign-in experience for users. In terms of the estimation time, I used the Fibonacci sequence to estimate relative complexity, risk of uncertainty, and effort. Stories larger than eight points usually have to be split into multiple sprints.