(no title)
Papamanolis | 1 year ago
After years and years of wanting to start something and build a product, I’m taking a jab at it!
So basically, me and a few of my coworkers wanted to create a virtual book club since we are all working remotely and decided why not automate it.
I’ve been working on booktalk, a Slack app that makes book clubs easier to run. For now it will allow the team to get details and suggestions about books, vote on books that they want to read, set a timeframe for their reading cycle, and when the cycle ends, it reaches out with a few relevant questions about the book!
Has any of you organized or participated in a virtual book club before? What was your experience, any challenges that you faced or features that were missing?
Fire away!
PS: Let me know if you have any feedback about the website too, it was my first time creating a landing page!
digdugdirk|1 year ago
Ntrails|1 year ago
I don't, personally, think that works super well?
I don't want to join in at the tail of a thorough discussion and add my 2 cents to people who have moved on.
I also wouldn't want to keep getting dragged back to prior threads on bits I won't remember as well (most specifically where the spoilers start).
So, I could well be wrong, but it sounds awkward to me
fm2606|1 year ago
gostsamo|1 year ago
The biggest challenge for me is to accept when the team chooses an obviously bad book, but they will learn with experience. A feature about book details sounds good but depends on the source and if it is marketing or a good critical one. Finding the book in print would be a nice feature which is easy for english and big countries, but might be hard otherwise.
Edit: maybe consider a feature for setups where people rotate to choose the book if there is not one yet.
agscala|1 year ago
Also an anonymous thumbs up/down after the book is read could help the group choose a better next book
em-bee|1 year ago
em-bee|1 year ago
we use wechat for that because most of us are in china, and no other chat platform works for everyone. wechat has mini apps that we can use for voting, but collecting the nominations and setting up the votes each time is a manual and sometimes tedious process. once we used an external voting app, but there the problem was the lack of integration with the wechat users. we could not tell who already voted, and more importantly people could not tell for themselves if their vote was counted or not.
better integration would be nice. getting everyone off wechat into slack is probably going to be the biggest challenge though. i don't even know if slack works for everyone in china.
vcool07|1 year ago
WorldMaker|1 year ago
It's funny, but my "winter hobby project", between myself and my junior developers GitHub Copilot and whiskey, has been trying in the nerdiest way possible to convince my Book Club to switch from a Ranked Choice voting that was still a bit too much first-past-the-post (but easy to model in a Google Sheet) to trying the Schulze method [1], which is fascinatingly more robust and which provides some niceties like "vote on everything as 1-5 [stars/hearts/dolphins/what have you]" (encouraging lots of ties to get the most interesting "beatpath winners") with the ability to save those ranks between voting rounds because the ranks are personal and not "points". As a voting method, it also gives us a bit more flexibility to "predict"/plan for more than one winner at a time (many of our members use public libraries with long lead times to borrow books, so we like to plan two or three books ahead). But also as a voting method that encourages ties, it still allows for surprises/serendipity and changing minds/shifting winds.
Ever since ModernBallots [2] shut down (RIP) it's been increasingly harder to convince people to try the Schulze method for voting. For one thing the Wikipedia rabbit hole is full of way too much complexity of the intricacies of voting methods in general and the math looks way harder than it is. While I wouldn't want to do the math by hand, it's a really simple algorithm from a computer science standpoint: convert one user's ballot's ranks into an adjacency matrix representing which item (book) beats with other item (book) [1 for edge, 0 for no edge], add adjacency matrixes together (you get an adjacency matrix where the edge weights are number of ballots), then run a simply modified Floyd-Warshall on the matrix to find the widest paths (ranking the items by most widest paths to fewest). Floyd-Warshall is a classic, simple "textbook" digraph algorithm. So much so that GitHub Copilot knows it quite well. (I recall it came up three or four times in my own college experiences.)
While I've been working on this, so far I've been intentionally specializing it for this particular book club. I'm trying to keep it fun for myself and worrying about generalizing it into a product (such as a potential replacement for ModernBallots) has intentionally been something I've tried to avoid to keep from burning out on it. (Kudos to you on doing it and shipping a first version of it.)
I have been building it in the open, for a variety of reasons: https://github.com/WorldMaker/jocobookclub/
I think it's a cool codebase. The main site is SSG (to GitHub Pages), progressively enhanced with web components and some HTML templates for those web components. The API site is sent to Deno Deploy, using Deno KV as the database, and using Deno Queues for the vote calculation work which is probably overkill for the club's current scale but the engineering effort behind it felt like a good idea and makes me happy. The slowest loading things right now on the site are the Font Awesome icons in use to keep it fun/visually interesting, and as the number of icons in use stabilizes I expect to more cleanly subset it and drop that into the SSG build as well.
You can even browse the public (static) parts of the site: https://worldmaker.net/jocobookclub/
You won't see the actual voting tools light up, though without logging in, and for hopefully obvious reasons (small, private club) the registration links are restricted to invite-only. Maybe I should take a screenshot of them at least, to include in the README, but so far I haven't thought much about the public facing aspects of the codebase like that as it is still mostly for the benefit of myself and the club members.
In general, we probably don't talk about voting methods enough and first-past-the-post is too easy a default and too accidental a fallback even when you think you are doing something smarter like a Ranked Choice ballot. Sometimes the more complicated you try to make those rules, the less effective they are in reality. It's been one of my nerdier obsessions for a long time. I used to use ModernBallots a lot to try to convince people to stop using SurveyMonkey or Google Sheets and simple counts for something a little smarter and a lot wilder that finds answers that everyone collectively don't always realize they all mostly agree on/with.
[1] https://en.wikipedia.org/wiki/Schulze_method
[1] https://modernballots.com