Minimal Political
The Problem
Politics is a dreadful topic. It’s not exactly something that can be easily talked about among friends and family to which one might be able to better understand it. Yet it is one of the most important subjects in the past, present, and future. Actions taken in politics now will impact the world for generations to come. For the average American, their greatest impact they can have in politics is being an informed citizen and voting. As much as I take to heart the importance of being involved in politics, I very much dislike it. So much of being an informed citizen is paying attention to current events and watching what those in power are up to. The issue is that there is only so much information that a person can process and too much can be mentally fatiguing. Why can’t I just get the bare minimum information to be an informed voter and then expand from there? There should be a way that makes being an informed citizen just a little bit easier. Make basic information more accessible on things such as a voting record of a politician, what kind of committees they may be on, and what bills they sponsored. Offer the most bare minimum, yet important, information for those too lazy to do thorough research but still want to have a basic understanding.
It seems as if there always a lot going on in the realm of politics but 2020 and beginning of 2021 seemed to be extra crazy. On top of everything that’s happened outside of politics; the entirety of 2020 was filled with a volatile and contentious presidential election, in all 50 states there were protests against police brutality and a broken justice system, and there was an insurgency at Capital Hill while the presidential election votes were actively being certified. Now more than ever in recent times have Americans been confronted with the importance of being involved in politics.
Analysis and Solution
A study published in 2019 has found that 40% of Americans have attributed their exposure to politics as a reason for increased stress. Another study published in 2020 has found that 80% of Americans follow politics casually or not at all. Despite this vast majority casually/not at all following politics this past presidential election saw more Americans vote than ever before with 155 million casting their ballots. It seems to me that there is a growing amount of involvement and attention to politics. In order to keep this up there needs to be a way to absorb political information in a easy way as well as introduce those who don’t want to do thorough research of politics. My solution to this problem is a website, Minimal Political. Minimal Political will empower average voters by offering effortless access to important information on US lawmakers by presenting it in a simple, easily digestible way. For the average American, their greatest impact they can have in politics is being an informed citizen and voting. In order to keep those in power accountable, we have to know what actions they take. For example, how they vote on bills. But getting access to things like voting records of particular politicians can be very mentally fatiguing and more stressful than it needs to be. Minimal Political will offer a unique way of researching politicians’ track records by focusing only on unbiased, factual data and offering the bare minimum, yet important, information to avoid overwhelming the user.
The Technology and Challenges
The website is built off a Flask backend with the frontend having a Bootstrap basis which is templated using Jinja2. The data of the lawmakers is sourced from ProPublica’s Congress API. As of right now the website is still in its infancy stages, lacking many MVP features, but one of its core functions is working (for the most part); the ability to search for a lawmaker (either in the Senate or the House) and see their recent voting records.
One of the main challenges I faced was working with a large amount JSON data. With the ProPublica API, I was able to make a request for a full list of members within either chamber of Congress. Not only are there 535 individual lawmakers in Congress (435 House members + 100 Senators) with unique names in the list, there are tons of other data for each individual such as their twitter account, fax phone number, and their personal website. Before I was able to make a request for a particular lawmakers’ voting record, I had to retrieve their unique government ID from the full list of members. My brute force solution to this was to loop through the list, matching either the first and/or last names of the lawmakers with a user’s search query. From there I was able to then get the lawmaker’s ID for which I would need to make a request for the data for that lawmaker’s voting records.
Future
Having pushed this project to production with Heroku (link) I can now see how the load time can be negatively affected by sorting through the API data even with just a relatively small amount of JSON data. For many future features that I’d like to implement (basically more data), the time complexity of sorting through all this data will need to be prioritized. I plan to use more efficient algorithms other than just looping that will allow for minimal load times. Another appealing future feature could be background loading where the program will load and display the highest priority data first and then go down the data priority list so that the user can get the webpage in front of them ASAP.
Some examples of future features that are much more long term but interesting are filtering through voting records, display timelines along with the data, and compare lawmakers.
If you’d like to follow this project, here is it’s Github