Ramblings of General Geekery

SiloRider 0.3.0

I haven’t talked about SiloRider in two years, and even then it was the only time I mentioned it on this blog since I announced it eight years ago! I’m obviously not good at advertising or project management. But I’m decent at coding, and if you looked at the repository, I’ve been slowly maintaining SiloRider all this time. After all, I’m using it daily with this blog, which crossposts to my social media.

It’s been long enough that I need to re-introduce SiloRider: it’s a Python command-line utility that parses your blog’s homepage for microformat markup, and cross-posts your content to social media platforms. Basically, it’s how I post here on my blog, and everything then shows up on my Bluesky and Mastodon accounts.

Anyway, I was way overdue for a new release! SiloRider 0.3.0 is now available on Pypi, in case anybody out there wants to try it out. But watch out, this is very much a “works on my machine” kind of project, so you need a bit of technical know-how to get it running. I would happily welcome contributions to make it more user-friendly.

Notable new features since 0.2 include:

  • Posting to Bluesky. This includes support for rich text, such as hyperlinks in your skeets.
  • Posting to Facebook Pages. Posting to personal accounts isn’t supported, since Zuckerberg shut that down a few years ago to try and keep you inside his silo. But Pages, used by brands and businesses and so on, do support automated content.
  • Automatic resizing of pictures in a micropost, for silos with file size limits.
  • Generation of “social cards” for links in your posts, for silos like Bluesky who don’t do it themselves.
  • Converting GIFs to MP4, for silos like Bluesky who only support “proper” videos.

And of course, a whole bunch of bug fixes. So many bug fixes, especially around the finicky ways of determining character counts for those silos with character limits.

I’ll try to post more regular updates about SiloRider going forward, but most of it will be bug fixes, unless something notable happens in the social media landscape on par with the exodus from Twitter.


POSSE is in the air

Cryptocurrency critic, technology researcher, and software engineer Molly White recently published this great primer on the “POSSE” philosophy in her “Citation Needed” newsletter:

A simple technique offers the best of both worlds: total control over your own work, while still maintaining a presence on third-party platforms.

POSSE is a pretty bad acronym (standing for “Publish (on your) Own Site, Syndicate Elsewhere”) describing a pretty good approach where you publish your writings, status updates and cute pet photos on your own website before some sort of (preferably automated) system posts a copy to various 3rd party proprietary services (aka “cross-posting”).

The next time a new social media site comes along, you can plug it in to your existing system. And the next time a social media site dies or becomes untenable, you just disconnect it. With this model, even when a platform goes under, you lose relatively little: your posts still remain live and under your control on your site, even if the copies of them on the disconnected website are abandoned or deleted.

There are many advantages and inconveniences about the POSSE philosophy, and Molly outlines the main ones very well. For what it’s worth, I’m with her when it comes to engaging in conversations originating from the 3rd party services: I don’t “backfeed” replies from Mastodon or Bluesky or whatever into comments on my website, and instead I just check those services every now and then and reply there. Anyway, check out the original article if you’re new to that sort of thing, and share it if you’re not!

I’ve been following the POSSE approach for about 8 years. Like most people, I’ve written my own ad-hoc tools to implement it, and for a bit more than 6 years this tool has been SiloRider, available on Sourcehut (using Mercurial) and Github (using Git).

The interesting thing (to me) about SiloRider is that it works independently of your website. It fetches and parses your blog’s HTML markup, looking for microformat information, which most blogging engines implement, at least partially. SiloRider extracts your latest updates from that, and can cross-post any new ones to a variety of services. It currently supports Mastodon, Bluesky, Twitter, and Facebook Pages. When I moved away from PieCrust and returned to WordPress, SiloRider kept chugging along.

Of course, SiloRider isn’t super user-friendly: it’s a command-line tool written in Python, and is therefore meant for tech-people. Sure, I have a super barebones WordPress plugin that invokes it after I’ve published an article, but that plugin is so rough I hesitated a bit before making it public just now (as usual, it’s available on Sourcehut and Github). But if someone is motivated enough, it should be feasible to make it user-friendly enough for a vanilla WordPress user.

Anyway, if you want to give POSSE a try, SiloRider might do the job! I may even reply to questions and bug reports…

I’m always impressed by people who treat their online presence as easily discarded stuff. They abandon their Twitter accounts with the same shrug as when they abandoned Yahoo Mail or Live Journal or whatever, leaving all their emails and posts to rot. I suppose that life is too short to care about emails from 2004 or DMs from 2011, but I so often find myself grateful to be able to refer to some of those old archives that I can’t see myself ever discarding anything. Does that make me a digital hoarder?


Announcing SiloRider

Lately, I’ve been spending my free time making PieCrust (the static website generator powering this blog) support Indieweb things like Micropub and (incoming) Webmentions. But while being on the receiving end of things requires intimate knowledge of a CMS’ storage format, other Indieweb concepts put your website on the sending end, and that generally doesn’t rely on anything else than the final HTML markup… it’s therefore CMS-agnostic.

To implement that side of the Indieweb coin, I decided to write a new tool, independent of PieCrust: it’s called SiloRider1!

What it does right now is let you adopt the POSSE model with your website. After you’ve published a new article or post, you run SiloRider and it will syndicate (or “cross-post”) that out to “silo” services – right now it supports Twitter and Mastodon.

For instance, this recent update from my blog was syndicated like this on Twitter and like this on Mastodon:

In the future, it will probably send Webmentions out to websites you’re replying to, and other such things that can be done by parsing the just-published pages on your website.

In PieCrust, I integrate SiloRider simply by making my default publisher run a script that bakes the website, rsyncs it to the publicly served folder, and invokes SiloRider – this way, it works whether I post from a client app like Micro.blog’s iOS app, from the PieCrust admin panel, or after pushing my blog repo to my server (since I have a hook that runs that same publisher). You can similarly run it after your Hugo deployment, or whatever it is you use to make your website.

As with all my other projects, the documentation is up on BOLT80, and the code is available on GitHub and Bitbucket, depending on whether you prefer Git or Mercurial.


  1. It’s named like this mostly because I’m bad at naming things, and after
    spending a long time trying to come up with a name, I suddenly became very
    frightened I might take longer to name it than to code it, so I picked
    whatever popped in my head next. ↩︎