Welcome screen allows user to choose which category of events they want to receive scheduled tips for. (also shows our Android Studio code)
Buttons allow user to choose if they would like to receive sustainability tips for the previously selected category daily or weekly.
Clock view allows user to select the time when they want to receive reminders.
Displays the user's chosen time.
Allows user to select day(s) on which they would like to be reminded.
An example of a sustainability tip notification. This one was manually triggered by a button since our scheduling functionality is not done.
An example of a sustainable reminder notification for a user who scheduled a shopping trip.
As first-years at UC Davis, which is #3 in the world for Campus Sustainability, we were inspired by our school’s emphasis on sustainability to create an app that could help busy people like us remember to make environmentally-friendly choices throughout the day. We recognize that practicing sustainability perfectly would require a lot of effort and careful planning, but we believe that if enough people take simple, practical steps to practice sustainability even imperfectly, we can make a lasting impact. Thus, EnvironMindMe was born.
What it does
EnvironMindMe has 4 categories of common activities (meals, shopping, travel, and daily routines) that users can schedule throughout the week in order to be reminded of specific, practical, eco-friendly tips at the scheduled times. For example, if a user scheduled that they were going to lunch at 12:00 the next day, they should receive a meal-category notification at that time saying “avoid plastic utensils!” We have created a list of category-specific sustainability tips that randomly generate at the scheduled times.
How we built it
Once we had decided on our idea, our Cognitive Science teammate sketched on paper what each screen would look like, and made a flowchart of the logic that would dictate how one screen progressed to the next depending on which button the user clicked. Our strategy was to have our lead programmer work on one screen (activity) at a time, and to have the other team members work ahead to research the topics we would have to implement next in order to aid the lead programmer when she finished a particular screen. The general progression of such topics were event handling, assigning user input from a “time” text box to a variable, creating a tree map, storing the sustainability tips (which also had to be researched) in a tree map so that each tip corresponded with a number, randomly generating a number (in order to print out random sustainability tips for each category), and scheduling notifications. Finally, our Cognitive Science teammate began adding background colors, editing fonts, and implementing other UI elements as time allotted.
Challenges we ran into
The primary challenge came from learning the tools. In order to build our application, we had to learn the Android Studio IDE, the built in functionality, classes and capabilities, and the Java programming language. These were not mutually exclusive and offered a very complex challenge to face, not to mention a very steep learning curve. Given that we were all beginner programmers with very limited experience, there was a lot to catch up on. One particular challenge came from not knowing how to work on a project of such a scale. Granted, it is still a very lightweight application (probably no more than 2000 lines of code), yet we nonetheless struggled with it, most of us having only done small programming homework assignments. The scale came with not knowing how to do modular programming and object-oriented programming, so we had a lot to learn and little time. We struggled the most with implementing our scheduling functionality. Inheritance in particular was an issue, as it was difficult to communicate data across classes, since concepts of scope, importing, and interfaces in Java were for the most part foreign to us.
Accomplishments that we're proud of
Since we came into this Hackathon as first-years with limited programming experience, we are very proud of how far we've come in just 24 hours. At the start of this event, none of us had any Android Studio experience, nor had 3 of our 4 team members ever programmed in Java. Each of us worked hard to study from textbooks, watch or read tutorials, and write practice programs to learn and execute challenging concepts in a short amount of time. We successfully created a functioning app, even though it did not have all the features that we had initially envisioned. Furthermore, as college students in dire need of rest, we were proud of our ability to collaborate and communicate effectively and compassionately despite time pressure, sleep deprivation, and setbacks. Through HackDavis, we gained object-oriented programming and research skills while creating a product that we can continue to develop and improve.
What we learned
We learned how to use Android Studio and how to program in Java. None of us had ever used Android Studio before, and only one of us had any coding experience in Java. We learned about activities, event handling, classes, multiple inheritance (and that Java does not support multiple inheritance), interfaces (used to get around multiple inheritance), UI elements, tree maps, random number generating, and creating notifications.
What's next for EnvironMindMe
EnvironMindMe needs to have more utility. It is unlikely that someone would download an app to consume random environmentally friendly tips (a very limited number at that), so a step forward would be to achieve our initial agenda of having a functioning notification system, and also to have a larger database of sustainable tips. Apart from adding various functionality, next we would want to actually release our app on the Google Play Store, find a market, and advertise a compelling reason to use the app. Perhaps we could also implement some kind of incentive that rewards users for following through with the sustainability tips.