Feross Aboukhadijeh virus.cafe

Virus Cafe: Make a friend in 2 minutes  ↦

Hey folks! I built Virus Cafe to help you make a friend in 2 minutes! My goal is to help people stuck indoors because of COVID-19 (or police curfews) to make meaningful connections with strangers.

Here’s how it works:


  1. You are matched with a random partner for a video chat
  2. You’re given a deep question to discuss. You have 2 minutes!
  3. The only rule is: no small talk!

Small talk is the worst and I’m on a mission to eradicate it. I’ve expertly crafted over 200 questions designed to stimulate good conversation and skip past the boring introductions.

Here are a few samples:

  • When in your life have you been the happiest?
  • What would you be willing to die for?
  • What is the biggest lie you’ve told without getting caught?
  • What is a belief you had as a child that you no longer have?
  • What human emotion do you fear the most?
  • If a family member murdered someone, would you report them to the police?
  • What absolutely excites you right now?

I hope you use Virus Cafe to meet a new friend and make a deep connection today.


Discussion

Sign in or Join to comment or subscribe

Feross Aboukhadijeh

Feross Aboukhadijeh

San Francisco, CA

I’m Feross Aboukhadijeh, an entrepreneur, programmer, open source maintainer, startup founder, and mad scientist.

I build web apps like BitMidi, a free MIDI database, and Play, a music video app, and Study Notes, a site to help students study better and get into college.

I also build WebTorrent, a torrent library for the web, WebTorrent Desktop, the best desktop torrent app, and Standard JS, a JavaScript linter.

2020-06-04T19:41:50Z ago

Here are the technical details in case anyone is interested:

The video and voice chat is powered by WebRTC. The getUserMedia API allows a browser to access the webcam and microphone of the device. I used my own simple-peer (https://github.com/feross/simple-peer) library to make WebRTC a bit easier to work with.

The server is Node.js. I’m using Next.js for the first time on this project. I usually use a custom Express server for my projects. I’m a fan of several of Next.js’s decisions – it feels really nice to use, if a bit limiting sometimes.

I use the ‘ws’ package (https://github.com/websockets/ws) to implement a WebSocket server which is used to help the peers get connected over WebRTC. Once peers are connected, all video and video is transferred directly in a peer-to-peer fashion.

Except sometimes the connection can’t be established, so to improve reliability of WebRTC you need to set up a TURN relay server for those situations. I used coturn (https://github.com/coturn/coturn) for that.

Lastly, I used Chakra UI (https://chakra-ui.com/) as my React component library.

Really happy with how the easy the app has been to build.

The most difficult part was getting it to work on Safari for iOS. I spent about 50% of the effort working around various bugs in the Safari media stack. https://twitter.com/feross/status/1263544033135038464

Hope this was informative! Lmk if you have any other questions!

Feross

Jerod Santo

Jerod Santo

Omaha, Nebraska

Jerod co-hosts The Changelog, crashes JS Party, and takes out the trash (his old code) once in awhile.

2020-06-04T19:46:02Z ago

I love the concept! I’m not 💯 on the name, though. Has anybody else pushed back on it? It just doesn’t seem like a welcoming place. Why would I want to go a Virus Cafe?

Feross Aboukhadijeh

Feross Aboukhadijeh

San Francisco, CA

I’m Feross Aboukhadijeh, an entrepreneur, programmer, open source maintainer, startup founder, and mad scientist.

I build web apps like BitMidi, a free MIDI database, and Play, a music video app, and Study Notes, a site to help students study better and get into college.

I also build WebTorrent, a torrent library for the web, WebTorrent Desktop, the best desktop torrent app, and Standard JS, a JavaScript linter.

2020-06-04T22:00:14Z ago

Yeah, there’s been some push back. But the name also draws attention and it’s topical. Eventually, I agree that I’ll probably have to rename it.

0:00 / 0:00