Freedombone Blog

Freedom in the Cloud

Freedombone and IoT

Recently support for MQTT notifications has been added, so within your local network it's now possible to have IoT devices which support MQTT subscriptions listen for admin notifications coming from the server and then do something with that.

I've added an Arduino code example for an ESP8266 board (WeMos D1) using MQTT over wifi to listen for backup status messages from the Freedombone server. It then controls two LEDs which can be used to indicate whether the backup has succeeded or failed.

Note that the admin notifications aren't especially security sensitive. They only contain generic messages such as "Disk space low" or "USB device detected". So even if there are rogue IoT devices on your local network they can't glean anything very sophisticated from the messages.

There are many fun things which can be done with IoT at not much cost. Buzzers. Solenoids. Wearables. If you have a smartwatch which supports MQTT then you could also receive the notifications that way, although it would only work within your local wifi network.

Epicyon performance improvements

Things were getting too laggy and so this week I've been focusing upon getting timeline updates as quick as possible.

Previously the conversion from json formatted ActivityPub posts to html was done on demand. That is, whenever you select a timeline. But in some cases, such as Announce activities or posts where the actor needs to be downloaded, this can involve lookups which slow things down. So now the html is generated at the time when a post is received by the inbox and then cached. When you select a timeline the relevant cached html files are then merely looked up and delivered, without any additional overhead. This also reduces strain on the CPU since any lookups only need to be performed once.

I've also added indexes for timelines, and this improves performance a lot. Previously the index was just the directory listing in descending order of status number, but creating this listing when you have a lot of posts in the inbox directory can take time. Instead it's better to just make an index file which is prepended to whenever a new post arrives. when generating a timeline the system then only needs to read the first few index entries, and doesn't even need to load the entire index file into memory.

The combination of cached html and indexes now makes timeline delivery about as fast as it's likely to get. So the only limit is really just the speed of your server disk storage and how much internet bandwidth you have.

A manifesto

Like it or not.

Personalities notwithstanding.

There isn't an alternative to free software.

Solidaric coding.

Or rather.

The alternative is total subjugation. Total loss of control. Of communities. Of knowledge. Concentration of power like you've never seen it.

There isn't a future free from struggle.

The powerful will try to take everything from you and turn you into a commodity.

Software is one thing they don't yet fully control. Corporate coders with comfortable incomes are not equivalent to motivated activists.

Don't give them an easy ride.

Epicyon Calendar

Going beyond the usual functionality of fediverse servers, calendars have now been added to Epicyon. This is part of the effort to add features useful for organizing social events.

When creating a new post you can now optionally add a date, time and place description. The information gets attached to the post as a tag, using the ActivityStreams Event and Place activities.

There is now a calendar icon which then shows the current month.

Events posted by people you follow will show up there, and selecting particular days then gives you a list of events. If you just want to create reminders for your own use then you can send a DM to yourself containing a calendar event.

Epicyon calendar

This makes organizing events very simple, and you can use message scopes to set up public or private events.

Users of Zot based networks will be yawning at this stage, because this sort of functionality has existed since Friendica, but as far as I know it's new within ActivityPub based systems.

Improving Notifications

The notifications system within Freedombone has been updated and can now send alerts for Epicyon DMs or replies and also will work with the Matrix app.

If you have Matrix installed then notifications will appear under a section called System Alerts within Riot. There is also a bug within Synapse such that if you close the Server Notices room then it won't be re-generated when a new notification happens and the only current way to fix it is to restart the matrix daemon or reboot the Freedombone server. So if you are using the Riot (web or Android) app remember not to close that room.

Progress on Epicyon

There have been a lot of bug fixes and features added since 1.0. Now there is support for:

  • Audio and video attachments
  • Multiple languages
  • Themes
  • Timeline showing all replies to your posts
  • Better display on mobile screens
  • Avoiding repeated follow requests from the same person
  • Automatic tagging of music posts

There is also now a dedicated website, although there's not very much on it other than basic instructions.

Epicyon screenshot with the hacker theme

The previous meta refresh on the web interface has been removed and update of the timeline is now a manual button press. This makes the system a lot more suitable for mobile since it doesn't drain the battery. Having a moving timeline was also annoying.

Now only posts by clearly identifiable users appear. That is, URLs with paths that include /users/username or /profile/username. This helps to avoid situations where previously the posts of blocked users could sometimes appear.

There is experimental support for authenticated fetch, which will be in Mastodon version 3. It's off by default, but even if turned on it doesn't make a large difference to the security because if you're not authenticated and not an approved follower then you already only get a limited preview of public posts and follows, and not the entire social graph. This kind of arrangement should limit the usefulness of the data to marketers and surveillance capitalists.

I notice that Mastodon is adding hashtag trends in version 3, but I have no plans to implement that in Epicyon. In my opinion trending or going viral are antithetical to the kinds of communities we ought to be trying to encourage. They're artificial incentives which tend to result in dysfunctional behavior and dubious economies, as seen on Twitter.