In the past year, we as students have witnessed the awful effects of this country's deeply divided and polarized political landscape. We believe that a solution to this predicament is calm and rational discourse. Our application helps facilitate an environment where people of opposing opinions can do just that: engage in civil discussions about hot button issues.
What it does
Our application facilitates an environment for calm and rational political discussion. It's about bridging the divide, a divide that has only gotten wider in the past decade. The application first asks the user to pick a topic they would like to discuss. Currently, topics range from abortion to vaccines. Once the user selects a topic, they will state their stance on it via one of the following options: “strongly against,” “against,” “neutral,” “support,” “strongly support.” The user is then paired with another user who chooses the same topic but has an opposing viewpoint. Both users in this discussion are anonymous. Users can then chat for as long as they like and can easily end the discussion should one user want to leave.
How we built it
Our team started with a brainstorming session and then designed our app UI on Microsoft Whiteboard. We then proceeded to develop the back-end side of the project, which was developed in java using the Spring framework. After the server was completed, we created the HackMann Socket Protocol, in order to allow both our server and client to interpret the binary being sent between them and convert it into meaningful information. On the client, data would ultimately become json. On the server, data becomes java objects. Once we had this protocol established, we created the Python module to handle connecting and interpreting the information from these websockets. After that, we created the rest of the front-end, which was also done in Python, and we designed our chat page and opinions page using Pycharm and various plug-ins.
Challenges we ran into
Our development process encountered a few problems. First, images and buttons were hard to program, especially since all of our members were new to Python. However, we worked together and were able to create a streamlined approach to handling these buttons and other similar features within the project. Additionally, we ran into issues with moderation, an important element since without moderation our app has the potential to become a platform for hate. As a result, we added a feature for users to quickly exit out of a chat by pressing delete if they encounter a situation where they feel uncomfortable or threatened. Furthermore, if we were to make this into a full-fledged application, we would add additional chat filters and reporting systems.
Accomplishments that we're proud of
We are proud of many accomplishments we achieved during HackMann. First and foremost, we are proud of our chat features, which allow users to seamlessly chat with no visible delay. Furthermore, we are proud of the HackMann Socket Protocol, which cleanly and efficiently allows for websocket communication between two different programming languages and is also highly efficient. Finally, as a team, we are proud of all the new coding skills, specifically Python, that we learned during this competition.
What we learned
Going into this competition, all of our members had not used Python before or were very new to it. Therefore, it was a very informative experience to build an app using it from the ground up. We learned about Pycharm and Pygame, and different plugins such as Imageio. Additionally, we also learned how to better leverage websockets to more efficiently integrate our Java server with our Python client. All in all, everyone on our team learned a lot this year and we are very proud of everything we have accomplished.
What's next for Polarity
The issues that Polarity seeks to address are not going away anytime soon; therefore, we hope to expand Polarity and continue to develop it into the future. In order to make this a viable piece of software, we want to develop additional moderation features, as previously discussed. Some of these would include an automatic word filter, a bot to detect when conversations are getting too heated and to suspend them for a cooldown period, and a reporting system. Another feature would be to automatically generate discussion ideas so the app is continuously populated with relevant contentious issues. We would do this by integrating the Twitter API so we can import current issues from the trending page. We believe that there are many additional elements that Polarity can incorporate to make it an even better product going into the future.