Voting project needs RedwoodJS engineers ASAP

Hopefully this is okay to post here.

If you want democracy to thrive, and you’re a RedwoodJS fan, I’d love your contributions to a very time-sensitive web app made with RedwoodJS.

Certain states (Georgia, Texas, Ohio, Pennsylvania, Florida, etc) will be very important for this election.¹

But voters are daunted by long lines at the polls (sometimes 8-hour waits!). I’ve personally seen people leave without voting (especially people who are older and/or have disabilities) because they would be unfit for the long wait and long walks.

In some (many?) cases, the long waits might be a form of voter suppression (i.e. intentionally not installing enough voting machines in certain locations).

The app I’m building will help voters find the nearby poll location with the shortest wait.

I have a lot of work to do and not very much time, so send me a message if you want to join me in building something that could really help our democracy.

¹ 2020 Election Forecast | FiveThirtyEight says:
image
and

P.S. Even if you can’t contribute code, if you have suggestions for me (such as where else I should post this message, which organizations or celebrities could help promote the project, etc), I’d very much appreciate your tips! :smiley:

3 Likes

:100:appropriate to post this here @ryancwalsh I hope people are available to join in and help out!

Are you going to make this a public, open-source project? If so, that might make it easier for the community to jump in and provide help as well as troubleshoot. Regardless, please do keep us all updated.

2 Likes

You are awesome. I appreciate you supporting the post!

I am open to making it a public repo, and unless I soon get some messages from people saying that they want to contribute but only on the condition that it’s private, then it will probably be public soon. Thanks.

1 Like

@ryancwalsh Intersting project.

May I ask how you plan to:

  1. acquire the data for people wait times?
  2. verify the integrity of that info?
  3. validate official voting site locations?

I could imagine a crowd-sourced “Waze”-like system where people submit their current in line details and based on that data determine a more optimal option.

But, how might you discourage bad actors who would submit disinformation to discourage people from trying one location over another.

If people all say that Location A is great! but in fact it is not, then a voter could be directed to a site that may be over capacity – and risk leaving, being discouraged and not voting.

Thanks for these thoughts. Those are tough questions. I may not even be “lucky” enough to need to worry about abuse, though.

In my experience, it’s quite a challenge to get much traffic to a site.

Here is what I have so far, which is obviously very barebones and a work-in-progress:

https://votequickly.netlify.app/

1 Like

Ha, unfortunately my latest Netlify deployment of https://votequickly.netlify.app/ is showing in the browser console:

{"errorType":"Error","errorMessage":"Unknown type \"Bool\".","trace":["Error: Unknown type \"Bool\".","    at assertValidSDL (/var/task/src/node_modules/graphql/validation/validate.js:107:11)","    at Object.buildASTSchema (/var/task/src/node_modules/graphql/utilities/buildASTSchema.js:45:34)","    at Object.buildSchemaFromTypeDefinitions (/var/task/src/node_modules/graphql-tools/dist/generate/buildSchemaFromTypeDefinitions.js:25:28)","    at makeExecutableSchema (/var/task/src/node_modules/graphql-tools/dist/makeExecutableSchema.js:26:29)","    at makeMergedSchema (/var/task/src/node_modules/@redwoodjs/api/dist/makeMergedSchema/makeMergedSchema.js:149:63)","    at Object.<anonymous> (/var/task/src/api/dist/functions/graphql.js:26:37)","    at Module._compile (internal/modules/cjs/loader.js:1137:30)","    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)","    at Module.load (internal/modules/cjs/loader.js:985:32)","    at Function.Module._load (internal/modules/cjs/loader.js:878:14)"]}

for https://votequickly.netlify.app/.netlify/functions/graphql (even though everything worked locally and the deployment seemed to succeed without errors). So you can’t even see what little I have anyway.

So that’s what I’ll be investigating tomorrow. Getting some sleep.

Are you using Bool in a sdl? If so, it should be Boolean.

See: https://graphql.org/learn/schema/

GraphQL comes with a set of default scalar types out of the box:

Int: A signed 32‐bit integer.
Float: A signed double-precision floating-point value.
String: A UTF‐8 character sequence.
Boolean: true or false.

Also, in Typescript, it is Boolean: https://www.typescriptlang.org/docs/handbook/basic-types.html

1 Like

This is an interesting project.

Can you elaborate? Drafts, mockups, specifications, raw bumpy roadmap?

1 Like
Are you using Bool in a sdl? If so, it should be Boolean.

@ryancwalsh
You may want to consider making the repo public, especially if it’s a time sensitive project. If it was, I would have sent a PR by now to fix what @dthyresson is pointing out.

Good luck with the app!

1 Like

@dthyresson. @noire.munich, @jeliasson Thanks for your interest!

I made it public at https://github.com/ryancwalsh/VoteQuickly/tree/main

Currently it only supports 2 counties (in GA) because those were the only ones I’ve found so far to scrape.

I have a https://github.com/ryancwalsh/VoteQuickly/tree/main#todo list of the more major parts of the project, such as allowing anyone at any polling location in the country to report their experience. I will flesh out my ideas for those tasks (probably as Issues) when I get a moment.

@ryancwalsh I’m asking around about data sources. I have some connections to people who work in politics and support Orgs focused on day-of voting support. TBD

Also wanted to make sure you know about this error affecting v0.19.3 deploys:

1 Like

Hi @ryancwalsh. I appreciate the intention, but I don’t think this is how voting works in the US. Each address is assigned to a precinct, and each precinct is assigned to a specific polling place. So if your polling place has a long line, you don’t have the option to go to a different one. An unfortunate situation.

Hi @qooqu welcome to the Forums! And definitely a great point.

I’m no expert on polling locations per precinct, but I wonder if it’s always a 1 to 1 across all states/counties/districts:

  • in Oregon, I could have sworn I had multiple options for polling locations available for my precinct
  • some states offer either polling or ballot drop off day of

If real-time data were available, and even if there’s no options to choose from, I’m curious how knowing the time would encourage or discourage people to go to polling location?

  • likely encourage if perceived “short wait”
  • discourage is also possible
  • subscribe to alert when wait is “short” would be awesome
  • even better, an indicator about “wait time” compared to closing time with an alert about the latest possible time to get in line

Lastly, if this data were saved and time stamped, this could make for possible analysis after voting is data. I could imagine journalists being very interested in reporting on “fair access to voting” across states based on this kind of data.

———

All of this is too much and not intended to add to the feature list. Offering to encourage thinking about the ways this could be of value. And welcome counter points as well. Both are needed to sharpen focus and goals.

1 Like

@qooqu Welcome, and thanks for your thoughts. What you’re saying is definitely true in some states. In other states (such as GA, where I live), voters can choose which poll they visit during the “Early Voting” period.

@thedavid Yes, I love ALL thoughts, thanks.

P.S. I bought votequickly.com, and it points to this project but the DNS apparently hasn’t propagated yet, which Ionos and Netlify say could take 48 hrs.

I didn’t realize there were options for early voting, but that makes sense. :+1:

2 Likes
DNS apparently hasn’t propagated yet, which Ionos and Netlify say could take 48 hrs.

It’s been propagated. You should also add DNS records for www.votequickly.com and redirect that to the apex domain (votequickly.com)

1 Like

Thanks. I’m obviously confused about something then.

Here is what I see:



Yet votequickly.com still doesn’t work.

You probabaly tried the domains before it was propagated, and your computer and upstream DNS servers cached that. Anyway, it’s propagated on the important resolvers, including the www.

1 Like

Thanks, it works for me now too!

Hi Ryan. Thank you for your interest in building technology to protect democracy. So much technology is designed for profit first, and not for societal benefit. It’s great to see more coders interested in civic engagement.

I have a lot of experience building these kinds of tools, and have worked on some of the largest voter registration systems in the US and internationally. It is hard work, and you are about to learn some of the tough lessons about data quality and unintended consequences of well-meaning actions.

First, the data problem. All voting is local in the US, so you’re just not going to find a national API for registration, wait times, or even polling places. Google Civic has some of that, but it’s coverage is spotty, and they are late to update because they wait for the individual counties to send in their data to the Voting Information Project. Sources like the DNC have better data, but it’s not publicly available, for partisan reasons. Outside groups like Alloy dot us have some as well, but that took a huge investment over the last year from big donors.

The second problem you’re going to face is unintended consequences. Even if you are able to get data about where the lines are long, since your goal is to INCREASE turnout you probably don’t want to discourage people. I’d suggest showing numbers in a simplified trafficlight (red/yellow/green) format, to avoid over-specification and inadvertently telling someone that they it will take them hours to vote.

The best you’re going to be able to do at this point is probably crowdsourcing. I did a project like this in 2008 and 2012 called VideoTheVote, and we were able to show anecdotal issues with documentary evidence, but it’s a journalistic problem to get that distributed, not a technical one. And again, the challenge of gathering data is huge. Check out related projects like the Police Brutality Archive on Github (2020pb) and see what it took to get thousands of videos together over the summer.

There are also lots of existing efforts that need help with only 19 days to go. Volunteer with the Election Protection Coalition answering phones at protectthevote dot net, or with your local area to understand the real-world challenges here. Or you can answer questions from voters via Slack with VoteAmerica dot com slash volunteer (can’t put links in my first post…)

I’m also happy to discuss this idea further online in these forums, or offline by email. I don’t mean to be discouraging, and again I’m really glad that you’re interested in applying your tech skills to helping save democracy.

  • Josh
2 Likes