All Projects → blindpad → Blindpad

blindpad / Blindpad

Licence: apache-2.0
Collaborative text editor (like Google Docs or CoderPad) with integrated semi-anonymizing voice chat intended to help reduce bias in technical communication.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Blindpad

Peer Base
Build real-time collaborative DApps on top of IPFS
Stars: ✭ 208 (+8.9%)
Mutual labels:  collaboration, crdt, peer
Discovery Swarm Webrtc
discovery-swarm for WebRTC
Stars: ✭ 56 (-70.68%)
Mutual labels:  webrtc, peer
Ios P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 31 (-83.77%)
Mutual labels:  webrtc, peer
Technical Interview Guide
My learning material for technical interviews!
Stars: ✭ 76 (-60.21%)
Mutual labels:  interview, coding-interviews
Circuit Sdk
JavaScript and Node.js SDK for Circuit
Stars: ✭ 18 (-90.58%)
Mutual labels:  collaboration, webrtc
Cs Fundamentals
🎓 Data structures and algorithms
Stars: ✭ 869 (+354.97%)
Mutual labels:  interview, coding-interviews
Subethaedit
General purpose plain text editor for macOS. Widely known for its live collaboration feature.
Stars: ✭ 1,183 (+519.37%)
Mutual labels:  collaboration, text-editor
Briefing
Secure direct video group chat
Stars: ✭ 710 (+271.73%)
Mutual labels:  webrtc, peer
Libcrtc
WebRTC C++ library built on top of chromium webrtc.
Stars: ✭ 89 (-53.4%)
Mutual labels:  webrtc, peer
Technical Interview Megarepo
Study materials for SE/CS technical interviews
Stars: ✭ 1,480 (+674.87%)
Mutual labels:  interview, coding-interviews
Leetcode Sol Res
Clean, Understandable Solutions and Resources for LeetCode Online Judge Algorithm Problems.
Stars: ✭ 1,647 (+762.3%)
Mutual labels:  interview, coding-interviews
P2p Media Loader
An open-source engine for P2P streaming of live and on demand video directly in a web browser HTML page
Stars: ✭ 822 (+330.37%)
Mutual labels:  webrtc, peer
Bigbluebutton
Complete open source web conferencing system.
Stars: ✭ 7,160 (+3648.69%)
Mutual labels:  collaboration, webrtc
Rocket.chat
The communications platform that puts data protection first.
Stars: ✭ 31,251 (+16261.78%)
Mutual labels:  collaboration, webrtc
Hlsjs P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 759 (+297.38%)
Mutual labels:  webrtc, peer
Android P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 70 (-63.35%)
Mutual labels:  webrtc, peer
Algorithms Leetcode Javascript
Algorithms resolution in Javascript. Leetcode - Geeksforgeeks - Careercup
Stars: ✭ 157 (-17.8%)
Mutual labels:  interview, coding-interviews
Fuck Coding Interviews
How on earth can I ever think of a solution like that in an interview?!
Stars: ✭ 464 (+142.93%)
Mutual labels:  interview, coding-interviews
Kodexplorer
A web based file manager,web IDE / browser based code editor
Stars: ✭ 5,490 (+2774.35%)
Mutual labels:  text-editor, collaboration
Codility lessons
Codility Lesson1~Lesson17 100% solutions with Python3 除正確解答外comment裡有解題的思考過程
Stars: ✭ 87 (-54.45%)
Mutual labels:  interview, coding-interviews

Blindpad

The publicly hosted version of Blindpad is available here: blindpad.github.io.

What is Blindpad?

Blindpad is an open source collaborative text editor (like Google Docs or CoderPad) with integrated semi-anonymizing voice chat intended to help reduce bias in technical communication.  In particular it can be used to extend the concept of “blind auditions” to software programming and technical design interviews.  It is inspired by economists Claudia Goldin (Harvard) and Cecilia Rouse (Princeton) who concluded in their 1997 paper that the introduction of blind auditions in professional orchestras is likely responsible for about one-third of the 250% increase in female membership between 1970 and the mid 1990s.

For more information:

Blindpad

How does it work?

Semi-anonymizing voice chat

Before joining a pad the app has an simple (one-time) audio calibration screen where the user is asked to read a few phrases.  During this process Blindpad attempts to measure the fundamental frequency of the user’s voice.  With this information Blindpad can perform a slight pitch-shift to an ambiguous frequency in the range where many male and female voices overlap.  This can help reduce bias in an interview setting (potentially in both directions) although studies have shown that pitch is not the only factor that human brains use to classify the gender of a speaker.

Multi-way blind

All participants in a pad are anonymized: usernames are randomly generated pseudonyms and no account sign-up is necessary.

Peer-to-peer and ephemeral

Blindpad users connect directly to each other using peer-to-peer technology (via the WebRTC API).  This makes Blindpad fairly inexpensive to host (and thus free to use) and guarantees no intermediary exists that needs to know a user’s real identity or contact information.

Reducing “stereotype threat”

The typical user flow avoids stereotype threat as much as possible by removing the focus from the user’s identity and placing it on the workspace.  Besides the name, the core app doesn’t provide any indication of a special purpose beyond similar text editors.

No special configuration

Applicant Tracking Systems or recruiting coordinators need only decide on a URL to share with with all parties before an interview.

How can I use Blindpad?

A public version of Blindpad is hosted at blindpad.github.io.  Blindpad can be hosted on your own servers quite easily: you only need to serve the static content and host a small (~100 line) NodeJS signaler (used for peer discovery).

What’s the long-term goal of the project?

The overarching goal of the project is to build a community capable of producing, hosting, and maintaining excellent free tooling that reduces bias in evaluation and communication.  This is a really hard problem and while a perfect solution might not be possible incremental progress is straightforward.

An important next step would be to produce (or lobby for) anonymizing plugins for popular Applicant Tracking Systems (like Greenhouse, Lever, Jobvite, and Taleo).  With sufficient resources we could also start to produce an open-source ATS designed from the ground up to anonymize certain steps of the hiring process.

How can I contribute to the project?

If you’d like to support the project financially you can click here to donate. Donations will be used to upgrade the public hosted version of Blindpad and to fund ongoing development.

If you’re inclined to contribute creatively (with code or design help) feel free to check out the repository, read over the project’s roadmap, and/or submit a pull request.

Lastly: if you have any ideas or feature requests on how to make the app more successful feel free to open an issue on Github.

What should I do if I have a problem or run into a bug?

For all problems please open an issue on Github. If possible please try to include simple steps to reproduce the problem.

Who developed Blindpad?

Blindpad was developed by Ryan Noon. It leverages many other open source projects, including Typescript, Angular2, and libraries by @mikolalysenko and @nkohari.  See comments in the code for full attribution.  Blindpad is free software under the Apache License.

Setting up the code

# clone the repo
git clone [email protected]:blindpad/blindpad.git

# install dependencies
npm install

There's an npm script for all of the common operations.

# start a local dev server for the app (using the public signaler by default)
npm run dev-app

# do a development build of the app and signaler
npm run build

# do a production build of the app and signaler
npm run prod

# run available unit tests (focused mostly on audio processing)
npm run test

See Protocol.ts and Auth.ts for configuring your installation: they hold all of the options you'll need to setup a signaler and point a frontend at it. If anything isn't clear please file an issue.

Roadmap

  • [ ] Better hosting for the public version.
  • [ ] Standard in-app textual chat / messaging.
  • [ ] Investigate improved robustness and flood protection on the signaler.
  • [ ] Recovery after network outage: restart the pad if the user detects that the swarm has timed them out. (Or gray-out the screen and prompt the user to refresh).
  • [ ] Listen for dead audio, show an alert about the Chrome + Mac bug and prompt the user to refresh.
  • [ ] Audit for accessibility / screenreader support.
  • [ ] Translation into other languages.
  • [ ] Undo doesn't work as most users would expect (you can undo remote changes). Possible solution with Codemirror is linked documents (where each remote user object symbolically has their own). See here.

Long-term ideas

  • [ ] Drop resource files to share in the workspace.
  • [ ] Run certain languages in the browser via emscripten ports (where available).
  • [ ] Some form of more advanced voice anonymization (more subtle gender quirks?, non-native accent modulation?).
  • [ ] Anonymizing video chat (using some sort of mo-cap or masking?).
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].