The octopus is an unofficial mascot in the RC community.

A frequent comment about the Recurse Center is "everyone here is so nice!" Perhaps due to careful admissions, or the social rules, RC participants strive to keep it a supportive community where people are open to others: working together, communicating carefully, and respecting each other. One mechanism for building the community is Niceties, a periodic opportunity to give compliments about your fellow Recursers. Typically calls go out for Niceties in the last week of a batch, and each participant has one Nicety read aloud at their Never Graduate ceremony on Friday.

Currently Niceties are administered through a Google Form, but once upon a time, some Recursers wrote an app for them. It lives at niceties.recurse.com and when I first encountered it, it was closed. I thought this was a sorry state of affairs and responded to a "good-first-issue" with a pull request, adding a note to the front page that the site was down. I'd been looking for an open source project to contribute to, and this seemed like a good candidate, so I tackled a few more issues. Luckily one of the maintainers, @jasonaowen, welcomed me to the project with helpful suggestions and an agreement to review my PRs. We set up a weekly meeting where we could prioritize issues, brainstorm together, and pair on tricky bits of code. This has been invaluable for me in learning to collaborate with other programmers, and helped me make slow but steady progress that really contrasts with the faster pace of a project where I'm the sole designer and programmer. I've figured out a reasonable git workflow and even juggled some tricky git rebase -i situations.

You would think that an app for saying nice things about people would be straightforward, but it's surprisingly complex in the edge cases. Some of the complexity comes from the fact that the app automatically calculates which users should be shown on the screen at a time, but users can change their batch membership at any time, by extending from 6 to 12 weeks or signing up for another 6 or 12 week stint at RC. Should a user who extends their batch be shown twice? Niceties are stored in the database with a unique constraint of author-target-batch, so if we only show the user once, which batch should their data be listed under? The app has a view for the faculty to compile all the niceties for each recipient and print them out, but currently they are emailing them instead of handing out paper. And, of course, the codebase uses Flask on the backend and 2016-era React on the frontend, and bringing that code in line with modern practices is a task all on its own. The app relies on queries to the RC API, which has been revised since the app was written, so those requests needed updating as well.

Most of the work I've done on rc-niceties has been towards fixing bugs, introducing a database migration scheme so we can make changes to the DB, and refactoring the frontend so we can upgrade React. Recently we had a lovely feedback session with some RC faculty to clarify use-cases and prioritize next steps. rc-niceties has one more round of DB schema changes and bug squashing before it's ready for re-opening, and I'm happy to say that @jasonaowen and I have recruited another Recurser, @tas09009, to work on it. I look forward to having the app working again and bringing joy to my community. (cf.Joy of Computing)