## Inspiration

Research shows that when humans are presented with too many options, it often makes it harder for humans to make an easier and quicker decision. So we want to minimize the number of options presented to users when they are deciding where to dine.

## What it does

Food Tinder!
After launching the app, the program will ask users for their preferences (location, what kind of food, distance, price). Then, the program will display the 10 best-matched restaurants to users one at a time. Swiping right means that the user likes the restaurant and wants to visit. Swiping left means that the user displays the restaurants. By displaying only one restaurant at a time, we hope that it will help users to be able to decide on a restaurant quicker and spend more time enjoying the food and not struggling to find a place to eat.

## How we built it

Yumm consists of two parts, backend and frontend UI. Our backend was made by incorporating the Yelp API into a Python program and then printing that on the terminal. Our frontend UI was made by using a combination of Kivy and Python. This Kivy window was the eventual final frontend, but we weren’t able to fully connect the frontend and backend.

## Challenges we ran into

We were happy with the progress we made throughout the weekend, but we encountered a few struggles along the way. Our main struggle was trying to use Kivy. We all had experience with Python coming in, but none of us had ever seen or heard of Kivy before researching for this project. There were a lot of syntactical intricacies that we didn’t understand and it was hard to get used to making .kv files. While we couldn’t fully finish our kivy animation, we were okay with our ability to make an animation.

## Accomplishments that we're proud of

We are all first-time hackers so we are all so proud of ourselves to be able to sign up for hack Harvard and be committed to this event. Even though we did not complete the project in the way we wanted to, we learned so much about python and just CS in general. Our CS skills definitely came out stronger than before and we are definitely going to join more hackathons in the future.

## What we learned

We learned a lot through doing this Hackathon. We learned how much coding goes into making an app, even a simple one. We also learned how to use an API, and how to pull data from different companies and utilize these data in our own favor. We also learned how hard it is to make a frontend UI program, as there is a lot of formatting and small details that need to be considered. We also learned that with a lot of people focusing on one issue, things can get done much quicker. If we only had one person coding this, we would not nearly have gotten as far, but given that we had three of us, we were able to divide and conquer and accomplish a lot more than we thought possible.

## What's next for Yumm

We want to finish Yumm on our own time to not only learn more coding and solidify our CS skills, but also to turn our idea into a real product!
## Inspiration

"Gexture" is a model prototype project of an accessibility device built to program simple gestures to complete tasks of daily life. Music is a tool we use every day to positively influence our mental health and wellness. We also realized that "nearly 5.4 million persons live with paralysis" (Armour et al., 2016) and many others live with physical barriers where every day is not the normal everyday most of us are used to. When daily tasks like listening to music and browsing social media are difficult to accomplish, we challenged ourselves to figure out the integration of a hardware and software solution that can bridge these gaps. Our project is built with the mindset of increasing accessibility, having fun with music and sound, and having both ultimately contribute to increasing health.

## What it does

Based on the gestures obtained through the gesture sensor, a specific kind of music (YouTube) is played
to enlighten the user's mood. It also includes an LED and a buzzer to indicate a particular state of mind of the user, i.e. Happy or Stressed.

## How we built it

Engineered a prototype using an Arduino UNO with a base shield to run a PAJ7620U2 Grove-Gesture Sensor that extracted data based on the user's gestures and printed to the Serial Monitor of the Arduino IDE. We analyzed the data using an algorithm to determine the symmetricity of the gesture sequence resulting from the user's finger gestures. According to the symmetricity, we decided to run a Python script to automate the playing of a specific kind of music, related to the user's mood (Happy or Stressed mood decided on the basis of the algorithm). We used pyserial library to extract data from the serial port of the computer and used the Google Youtube Data API v3 to search for Dance music or Soothing music based on the symmetricity results and to download random music of that particular category. After downloading the music, we used the python-vlc library to connect to our local VLC media player to play music. We used multiple Python libraries such as pafy, yt-dlp, python-vlc during this step. We used pyfiglet library to make aesthetically pleasing headers for our CLI (Command Line Interface) program (Gudabayev, 2021). We also hosted a virtual environment on our local computer for this project for security purposes (specifically for API).

We also used an LED to indicate that data extraction is complete and a buzzer to play different soundbites based on the state of the user's mood: Happy or Stressed.

In terms of the front end, we used HTML/CSS to build a product launch page that users can interact with.

## Challenges we ran into

1.) To design an algorithm to analyze the data of gestures sequence and determine the symmetricity to indicate the state of the user's mood. In order to overcome the challenge, we used different approaches by analyzing varied datasets of gestures.
2.) There was a bug in the older version of the youtube-dl library (2021 version) which was a hurdle in downloading the Youtube videos. We researched and got to know that there was the latest release (17th Feb 2023) of another library (named yt-dlp) which had that particular bug fix. So, we downloaded this latest release and replaced youtube-dl with yt-dlp in the library package files of pafy library.
3.) Most of the terminal commands that we received through online resources, were designed for UNIX terminal but we had a Windows laptop. So, we needed to search for alternative commands.

## Accomplishments that we're proud of

We are proud of our team's dedication to learning new things and approaching novel, risky situations with an open and determined mindset. This ultimately allowed us to produce Gexture despite it being our first-ever Makeathon. Also, each member of our group was able to learn and commit to doing something completely new to them. We think our solution will have a real positive impact on the world we live in but most of all, we're proud to acknowledge the importance of software and hardware and our solution utilizing the incorporation of both to pitch a product and solve a problem. It was also a 24-hour Hackathon, which posed an extra challenge with having to have something built (in the physical realm!) as well as integrate some sort of software/programming to interpret data and solve a problem within a short time span. And therefore, we are proud that we were able to collaborate together despite all being from different universities and programs.

## What we learned

We learned about hardware components and circuitry, implementing Python libraries with hardware, Arduino IDE, using Arduinos, soldering skills, and learning multiple new languages & approaches on the fly (!). We learned about prioritizing our tasks with open communication and approaching new ideas with an open mindset. We also learned to organize and break down tasks to maximize efficiency in the limited time we had to bring a project to life.

## What's next for Gexture?

1.) Incorporating more gestures and with higher accuracy by using an IMU or Computer Vision or building ML models
2.) The future of Gexture could also be used in designing an air trackpad which could allow the users to select, scroll and do other simple tasks with simple gestures. This could also involve using more advanced hardware components, more complex software and deeper integration between both of them.
3.) Gexture can be developed on the front end where users can have a UI/UX interface to customize their gesture to specific tasks.

## Citations

Armour BS, Courtney-Long EA, Fox MH, Fredine H, Cahill A. Prevalence and Causes of Paralysis-United States, 2013. Am J Public Health. 2016 Oct;106(10):1855-7. doi: 10.2105/AJPH.2016.303270. Epub 2016 Aug 23. PMID: 27552260; PMCID: PMC5024361.

Gudabayev, Tamerlan. “How to Create a YouTube Audio Player Using Python?” Tamerlan Gudabayev, Tamerlan Gudabayev, 5 Dec. 2021, <https://tamerlan.dev/how-to-create-a-youtube-mp3-player-using-python/>.
## Inspiration

Over 50 million people suffer from epilepsy worldwide, making it one of the most common neurological diseases. With the rise in digital adoption, people who suffer from epilepsy are at risk from online videos that may trigger seizure responses. This can have adverse health effects on the lives of epileptic individuals and inhibits their interaction with technology. Often, there are warnings on videos that may trigger seizures, however, not much effort is made to resolve the problem. Our goal is clear, to provide a solution that proactively solves the problem and increases accessibility for this target group.

## What it does

We built a chrome extension that interacts with YouTube videos and provides users with a warning in advance of seizure-inducing content and applies a filter to allow people to continue watching the video.

## How we built it

We first started off by building our flask server that has an open endpoint where the youtube video url is passed. This video is then downloaded to our server using PyTube and passed to openCv which determines the luminance values across the video. This dataset is then pre-processed and passed to the Azure Anomaly Detection model which determines anomalies in the luminance dataset. These anomalies represent portions in the youtube video where there are large discrepancies in light variation and hence, could trigger potential seizures for photosensitive epileptic users. The anomaly dataset is then processed to determine the timestamps in the video where these events occur. This dataset is then returned to a google chrome extension which overlays a dark filter over the video during these anomaly timestamps, thus preventing a potential seizure.

## Challenges we ran into

The first major challenge we faced was attempting to use Google Cloud Services as our anomaly detector for our luminance dataset as this service required us to package the data into a model and then create an anomaly detection model. As we were inexperienced in this subject, we were unable to complete this objective, this prevented us from using Google Cloud Services and caused us to lose precious development time. Another challenge that we faced was with the framerate of our downloaded videos. In our first iteration of creating the mvp, we were originally processing the youtube videos at a frame rate of 8 frames per second while creating the video timestamps on the anomaly data at a frame rate of 30 frames per second. This caused the extension to overlay the seizure warning filter at incorrect times of the video. Once we noticed that we were incorrectly downloading the videos at a slower frame rate, we were able to swiftly fix this issue.

## What's next for Epilepsy Safe Viewer

The first thing that we wanted to do as a team was some form of user testing on the product to determine the effectiveness of the product while also determining potential improvement areas. This would allow us to reiterate through our design process and make the product even better at solving our targeted user group’s problem. We also wanted to try applying our extension to users that face startle epilepsy by determining anomalies in the audio decibel levels of Youtube videos and normalizing the audio based on this. Lastly, we wanted to look into potential opportunities of expanding this product to other video platforms such as Netflix and TikTok, thus increasing the inclusivity and accessibility of this user group with technology.