New project: Frog Chorus
Together with Viviane Schwarz, I am releasing a new social network for frogs. It’s called Frog Chorus, and it’s a place where all you can do is ribbit.
The initial seed of the idea and the illustrations came from Viv, and the coding & the rest of the design were done by me.
The site is a social network for frogs. Open it, and you will see yourself sitting as a frog in a pond. You can click to ribbit, and you can hold down to do a really big ribbit. And you can see and hear other frogs ribbiting in the same pond. It’s the smallest satisfying online social space that I can imagine.
The last few years have been difficult, for reasons that I am sure will be familiar to many of you. Alongside the typical sense of isolation brought on by Covid precautions, I developed chronic fatigue, and have had to be very careful about my energy expenditure. This has meant I have spent a lot of time online—even more so than I usually do. And—there are a lot of opinions online. There’s a lot of things people share, a lot of Takes, a lot of Content. This is, on the whole, a good thing. But sometimes, when you’re tired and overwhelmed but also you still have this real thirst for connection… you want a way that you can be in the presence of people but also not have to say anything. You want to just be able to ribbit, and maybe recieve a ribbit in response. Or to leave a pond open in a tab, occasionally hear a frog plop in or ribbit, and know that someone else is around.
So that’s the motivation behind the project. Why is it built the way it is?
- it’s designed to give you just enough control that you feel able to express yourself. You can choose when to ribbit, and you can choose how big a ribbit you want to do. And that’s enough? Or at least, that’s a lot. It allows you to reciprocate. Someone does a big ribbit, you respond with a big ribbit. You heard what they were saying, and you responded in kind. I am generally very sceptical of people saying particular bits of human behaviour are innate, but I am pretty sure that “repeat after me” is.
- it’s also designed to be very sharply limited in terms of how much expression is possible. There is a term used among designers of games where users are able to express themselves and then share that content with other players - it is “Time To Penis”. As in, how long does it take a player to make something that looks like a dick and share it. Or a swastika, if they want to go for fascist abuse rather than sexual. Frog Chorus is not completely immune to this, because nothing is, but it is resistant to it. You can’t choose your username, you can’t choose your colour or pitch, you can’t choose where you sit within the pond. I guess you could Morse code out the letters P-E-N-I-S, but that’s not very satisfying.
- but there’s still a sense of persistent identity. Even though you might not know who the person controlling each frog is, you can still recognise that they are the same frog each time. You have a sense that you are there with specific people, and get a sense of their personalities from how they ribbit and how they respond to ribbits.
- I love a minimal interface, and I love letting people discover things. Generally as a developer I have more fun figuring out the smallest set of things I need to build to make an experience compelling than I do figuring out the largest set of things I can provide without the experience collapsing under its own weight. And of course, the fact that it’s much less work that way is also very appealing.
- finally, and very much not least: it’s funny. I’m happy with the goofy ribbit samples I recorded, I think it’s fun to be a frog, I think it’s good to be in a space that is playful online.
I hope you have fun being a frog too.
And a quick technical rundown, for those of you who are interested:
- the site is running on a boring Linode VPS (that I plan to migrate my personal site to, once I get round to it)
- the backend is written in Rust, pointed at by Apache running as a reverse proxy. The backend is essentially a heavily modified version of some example code showing how to use actix with websockets to make a chat room.
- and the frontend is built in Typescript, using my homebrew vector utility class. There is a bit of fussing to try to keep performance reasonable — some stuff with multiple canvases and dirty flags to try to avoid re-rendering unnecessarily — because I hope that people will keep this open as they go about their day, and it’s good not to waste computing power unnecessarily.
Mon Apr 25, 2022