My whole team works from home, as does a lot of the company I work for. Finding "watercooler moments" in my team at work is tough in the following ways:
- Planning them in a calendar seems a bit contrived, and the conversation tends towards the awkward.
- Pinging people on slack is a bit pushy and I'm forever worried I'll break them out of their flow state.
- As time goes on and people leave, and new people join the number of people I know well enough for a quick chat is shrinking.
Inspiration struck when I was cruising hackernews, and thinking "now would be a perfect time to hang out by the watercooler". The question was, "how do I reach other people that are also in a chat headspace?" As luck would have it, I received a browser notification at that moment. With that, the idea for brewbrake took hold
What it does
The premise of brewbrake is super simple. When you fancy a "watercooler chat" (aka a brewbrake) you push a button in the plugin. That shoots out a message to everyone else in the brewbrake team, and if any of them want to join, they do.
Conversations happen on the brewbrake.com website and are powered by Dolby.io.
Nifty features you might not notice
- Conversations are limited to 20 minutes - that way you won't get carried away
- Conversations are limited to 3 people - so you don't get drowned out by a cacophony of voices
- To avoid notification fatigue, you'll only get a visible notification 1000s after the last one
- If you're invited to a team you can change it to whatever name you want, without affecting the rest of the team. Only the initial creator can set the "default name"
- You can change your notification options if you right click on the plugin icon: either browser banner or animated icon
How I built it
It evolved quite a bit since the initial conception (which was just a browser plugin). After a time, and a bit of scope creep, it ended up being a website, plugin and a backend API that connects to a redis instance (for cheap database lookups).
Challenges I ran into
- Deciding between brewbreakapp.com and brewbrake.com i.e. dodgy spelling / grammar or a long name :)
- Flying solo on the build was quite a challenge. From copy, to design, to setting up infrastructure, writing code, etc.
- Every step of the way it's very tempting to over-engineer solutions.
- Firefox gave a few problems that needed some thought to work around as far as communicating between the team configuration page, and the plugin. I opted to not publish the Firefox version for this submission.
- Plugin permissions - it's tempting to be lazy and request permissions for all browser tabs (to see if/when a user closes the videocall tab) but that leads to a poor installation experience.
- Plugin review times can be lengthy. If I ship a new version today it can take days before the update takes hold. At the time of writing / submitting I have one such update pending :s
- Scope creep - there's so much cool stuff that can be done in this area - especially when you hand over the complexity of handling the video calls to Dolby.io!
What I learned
- Quite a bit more about the browser extension ecosystem (and Firefox's strict interpretation of the standards!)
- How quick and easy it is to integrate dolby.io (though I've submitted a couple of issues in github that can make things even better)
- It's the first time I've used redis in production and was surprised by how quickly that came together
- How to use keynote + iMovie to produce a demo video.
What's next for Brewbrake
I think there's plenty scope to be smarter about how people are grouped. If you have 100's of people in a group it makes sense to preferentially invite people that you chat with regularly. Also, it'd be interesting to dig further into the Dolby API to see if call stats are available (who speaks more, lower call latency, etc.). We could figure out if a particular brewbrake works well, and again preferentially invite those people.
There is scope to roll out paid-for features here e.g. vanity URL's, authentication, etc. Brewbrake can do wonders to bring people in giant organisations together while they sit far apart in a remote world.
Wider browser support wouldn't be too hard to roll out. Edge is a freebie as they use the same tech as Chrome. Firefox would need a little more work, but should be possible with a bit more time.
Right now there is up to a 15 second wait between someone sending a brewbrake request and the rest of the team receiving it. That can be reduced to a second or so with a bit of work.
A countdown timer needs to be added to the brewbrake videocall page so you know how much longer you have to chat.
As is usually the case in a hackathon project, what was built was built to work... not to be pretty. The code is okay, but there are some bits that were dead-ends that should be removed / cleaned up. The plugin can be made to be quite a bit more efficient in terms of network requests.