Show HN: Communal Growth, find others with similar interests in books or papers

communalgrowth.org

2 points by CarpaDorada 6 hours ago

Throughout my education and beyond, I always wanted to find buddies to study books and papers with. For various reasons, this has never materialized for me. Aside from academia, I've received a lot of help on IRC, and I'm aware that there's Reddit and Discord communities where people discuss Mathematics, Physics, and Computer Science (among other topics), but even there it is very hard to find people who wish to study together with you a specific article or book chapter.

With Communal Growth, I'm hoping to zero in specifically on the interests of people down to the granular level of article and book titles. Are you (for example) interested in studying /New Directions in Cryptography/ by W. Diffie and M. E. Hellman? The process is simple: find the DOI (also: ISBN, arXiv) of the paper (e.g. with WorldCat) and send an e-mail to subscribe@communalgrowth.org with body doi:10.1109/TIT.1976.1055638. Your e-mail is added to the article set of subscribers, and others may search the article and find your contact information. (Or perhaps you'd like to discuss a novel? Grab its ISBN!) Importantly, no conversation is taking place on the server. Does this UX sound unusual? Read on...

At a high level, I made the decision early that I did not want user accounts, partly because I was unfamiliar with web dev, and partly because /bringing people together on the basis of common interests/ sounds like Social Media, which I knew I would fail at. On the other hand, user accounts are annoying and with an increasingly complicated global legal landscape (GDPR, CCPA, etc) I wished to steer away from them, which is why I decided on an e-mail hook system where all actions (apart from search) are done by users e-mailing the server. I had to go down a rabbit hole...

Turns out that e-mail is really complicated. I studied the DNS and SMTP RFCs, (I even wrote a mindmap program for RFCs; see e.g. <https://createyourpersonalaccount.github.io/blog/img/dns-rfc...> for DNS, it's such a maze!) and invariably I got distracted by DNSSEC (since I like cryptography) so I studied that too. I spent a lot of time tuning Postfix, Dovecot, and Rspamd; I wrote my own policy daemon for quotas in Python to prevent certain types of abuse, and a milter daemon to verify RFC5322.From alignment to DKIM SDID (too strict for general e-mail, but needed to avoid user spoofing). Finally, I had to write an IMAP daemon that monitors the mailboxes and acts on messages received (in particular, looking up the ISBN/DOI/arXiv identifiers in online databases and subscribing users to the corresponding document). After all that work I discovered that I'm still blacklisted from sending e-mail (due to IP block reputation?) but it was never my intention to send e-mail anyway.

The other technical details are that I used Litestar with Psycopg 3, SQLAlchemy 2, and PostgreSQL, all async, deployed with NGINX.Unit (with certbot automated over daily systemd timers!). This is overkill, but it was fun. The pages are Jinja templates, and I do not use JavaScript. The entire source code for the website is available at <https://github.com/communalgrowth/webserver>, which may be a useful example of the above technologies working together. (I decided that I wanted the website source code to be freely available.)

This is also my first business company (LLC). I learned how to obtain a business license from Michigan LARA, then register for an EIN from the IRS (later had to complete BOI for FinCEN), and finally open a business bank account. I had a lot of help from Michigan SBDC for all of that. I was then able to buy all of the assets: domain name, and VPS, costing about $60/yr.

Please give it a try if you'd like. Let me know what you think! I plan on advertising it via word of mouth and with brochures to local colleges, libraries, and coffee shops even. This project took me over a year to finish; I'm proud to have contributed a business to Michigan.