Tools for Online Speech logo
by Jacob O'Bryant

Platypub: back to square one

It's been almost two years since I made the first release of Platypub, my own little blogging/newsletter platform. I wanted something that gave me 100% control over the design and structure: "themes" in Platypub are actual programs, not just collections of template files. I also wanted Platypub to be accessible to anyone, so I built it as a web app that could serve many users (as opposed to WordPress or Ghost, where each user has to have their own installation).

That last part turned out to be a mistake! I've never had much time to work on Platypub, and the scope ended up being too large. Platypub has been half-baked since its inception. So I recently finished a complete rewrite. Platypub is now just a CLI tool, more or less like any other static site generator. Both tfos.co and biffweb.com are now built with it (source code for the latter). I'm writing this post from my regular text editor, but I've also found that Obsidian works well as an alternative markdown editor with support for inline images.

For the time being I'm going to leave Platypub in its bare-bones state, with only the features implemented that I need myself. If/when I have more time to work on it in the future, I see basically three different audiences it could target, in this order:

  1. Clojure programmers: people who want a static website + newsletter that's rendered via Clojure.
  2. Technical users: people who are comfortable editing YAML files and setting up a Mailgun account.
  3. Everyone else.

Phase 1 is pretty straightforward. There are a bunch of small improvements I need to make, and I might make a simple web-based UI to replace Obsidian—though it'd still be a desktop app that you run locally, not a (self-)hosted web app. The main thing would be to write documentation.

For phase 2... I'd probably write a default "theme" in Clojure that delegates to a bunch of template HTML files. So if you're just making a regular blog, you can edit the templates without needing to know Clojure and be on your way. But then if you want extra flexibility, you can learn a little Clojure and edit the base theme. (Could be a nice way to introduce people to Clojure!)

Phase 3 is a bigger jump. I think I'd still keep it as a local app instead of a web app, however there would need to be a web backend: we don't want to make people sign up for Mailgun, Netlify, and Google Recaptcha. Ideally you start the app and go through a (single) signup flow for Platypub, which would then provide the hosting and email.

The big complication there is providing email and dealing with spammers. Standard practice for email service providers, among plenty of other things no doubt, is to have a manual review process before new accounts can send email. That's OK for a business; less so for a side project. And to call Platypub a side project is overstating it: it's teetering off the edge.

One thought I've had: don't let people import pre-existing mailing lists. Provide an iframe snippet for handling subscriptions, so the Platypub backend would only send emails to people who have gone through its own Recaptcha-protected signup forms. For anyone who has a list and wants to migrate it, maybe they would just have to sign up for their own Mailgun/whatever account and then we send emails through that. Worse UX, but not necessarily a big deal if most people are starting mailing lists from scratch. Either that, or have mailing list imports be a paid feature perhaps.


My limited non-work-non-childcare time will continue to be spent mostly on Biff, but I am planning to get back into the Yakread codebase before too long. It's been almost a year since I stopped working on it full-time. There are a bunch of small-ish updates I'd like to give it, like dark mode, maybe some typography settings... but the two more significant things I'd like to work on are:

  1. Better support for short-form posts. Mastodon provides RSS feeds your people's posts, so you can technically subscribe to Mastodon accounts (and any other services that support with Yakread. The experience isn't great though: Yakread is designed around long-form content, so it'd be better if short-form posts were bundled together or something.

  2. Discovery. Right now, Yakread's article recommendations are sourced from other Yakread users. That's kind of OK, but it's also pretty limiting. I'd like to have Yakread take your subscriptions etc. and then go out onto the web and find things to recommend that are more likely to be inline with your actual interests. I guess scraping Reddit might not be an option anymore, but there ought to be plenty more things to try.


Reading recommendations:

  • Writers who operate (Irrational Exuberance). "Occasionally folks tell me that I should 'write full time.' I've thought about this a lot, and have rejected that option because I believe that writers who operate ... are best positioned to keep writing valuable work that advances the industry."

  • Bringing Competition to Walled Gardens (Open Web Advocacy). An explanation of how Apple is holding back the web; it's long but readable. I found it pretty convincing. I found this website while I was searching for an answer to the question "if I were to donate money to some internet-related cause instead of (just) working on my own initiatives, what would I donate to?"

  • Any Technology Indistinguishable From Magic is Hiding Something (Jason Velazquez). "Google, Amazon, and Microsoft control seventy-five percent of the cloud computing market. Meta and Google own half of the fiber optic cables supplying internet services across continents. ... [So now] they're doing what American corporations do best— selling us the biggest truck we're willing to drive off the lot. But instead of F-250s, it's raw computing power manifested into virtual reality conference rooms."

  • Yes, Social Media Really Is a Cause of the Epidemic of Teenage Mental Illness (After Babel). For quite a while my priors have been guarding me against a lot of the hand-wringing over social media/the techlash. I figure a lot of people are butthurt about you-know-who winning the 2016 election and, instead of trying to understand why that actually happened, decided to blame it on Facebook. However, I've recently started warming up to the idea that maybe social media really is harmful to some degree.

  • The 2023 Evil List of Tech Companies (The Klonickles). Speaking of Facebook, this piece has a great quote from Matt Yglesias on why Facebook is in fact the most evil tech company:

    Imagine a friend told their New Year’s Resolution was to spend less time socializing, less time sleeping, less time exercising, less time focusing on work or school or childcare, less time reading books and more time scrolling their Facebook or Instagram feeds. You’d think that was obviously bad news. And yet all the people plugging away at Meta to try to make their apps more “engaging” have to be crowding out something. And whatever that something is almost has to be something more worthwhile than scrolling Facebook and Instagram feeds. I think in some ways this company attracts a lot of unfair criticism from people who don’t have a realistic sense of how hard it is to do content moderation in a reasonable way. But it also doesn’t attract enough criticism for the fact that its core business is inducing people to compulsively waste their time.

  • Lessons from history’s greatest R&D labs (Answer.AI). Mostly some interesting stuff about Edison's and other labs.

  • Web Scraping for Me, But Not for Thee (Eric Goldman).

Published 17 Apr 2024

I write an occasional newsletter
about my work and ideas.

RSS feed · Archive

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.