Freedombone Blog

Freedom in the Cloud

Compute per Watt

One of my projects for 2019 will be to try running an SBC as a desktop machine, to see what's the minimum amount of electricity I can use and yet still have a reasonably good desktop user experience. Whether this will be practical for doing development on I'm not sure, but it's worth a try. If I can get electricity use low enough then maybe there's a chance that in future I could go solarpunk.

I've set up an initial test using a Rock64 (4GB version) running on an SSD via USB3. The I/O bandwidth might not be quite as good as SATA, but it's still going to be a lot better than microSD or EMMC. I've got an old ASUS monitor, a Kensington Orbit trackball, a Unicomp spacesaver keyboard and a USB wifi adapter (suitable for libre distros). There's a small 4 port USB3 passive hub plugged into the Rock64 and a USB2 headphone/microphone adapter for sound. The Rock64 is configured to boot straight from USB3 and is running Armbian (stretch) with XFCE desktop. It's powered by a 15W (5V/3A) supply which is soldered straight to the board rather than using the conventional 3.5mm socket.

Using a test meter the Rock64 with all peripherals plugged in consumes about 10W. With the monitor it goes up to about 40W, so as expected it's actually the screen which takes most of the power.

For comparrisson when running the desktop in a more conventional way with a circa 2012 AMD CPU (before the TrustZone backdoor was added) takes about 200W of power in total, including the monitor. So running on an ARM board really does make a big difference in terms of compute per watt. The Rock64 is undoubtedly slower than the x86 AMD box, but not by all that much and I think some of the slowness is just because the wifi adapter is 2.4GHz only and doesn't use the 5GHz band.

There is also a down side. Armbian on the Rock64 uses a not yet upstreamed HDMI driver and 4K graphics acceleration might be proprietary although I'm not too sure about that. Anything 3D is sluggish, but since I'm not a gamer I don't really care about that. There's also no Tor browser for arm64, so I might see if I can fix that.

No Golden Era

An amusing blog post about the terrible condition of contemporary software. Admittedly there is a lot of badness and many challenges. But there never was a golden era.

They talk about how small Windows 95 was, implying that was some time in which Great Engineers performed Great Deeds. Being old enough, I could do a similar rant, but from the perspective of 1995. It would go something like:

Windows 95 is 30M!!! That's a ridiculous number of floppies. I have to schlep this tower of Pisa of floppies around to get the thing installed on different desktops. What were Microsoft thinking? Amiga Workbench was a single floppy. ONE. Uno. Ten years ago the BBC Micro booted in two seconds. Flip the power button, beep, command prompt. And all before you can sip your coffee. If you had a Viewsheet ROM you were productive within 5 seconds. Windows 95 is like 60 seconds or more. Sometimes a lot more. What is it even doing with that time? I don't need fancy true type fonts. It's just superfluous fluff. And this OLE thing is a total disaster and never seems to work as expected. It's a cludge on top of a cludge.

If you could go back further in time to the beginning of Unix then you'd also find Thompson and Ritchie running out of disk space and clumsily moving their operating system files into the home directory on another disk. If you could ask them they'd probably explain that this was a terrible hack and that they would get around to fixing it later. 40+ years later the hack is still there.

So no matter what computing era you are in there are always problems, it's just the particular type of problems which change. From some people's perspective there was always a golden era ten or more years ago, but really that's just cherry picking, or remembering the good points but forgetting about the bad ones. The main thing is to just keep plugging away at fixing the broken things. Hopefully some day Electron apps will be a thing of the past, and language package managers will either no longer break horribly or be replaced by something more reliable.

Website Icons

A few tweaks have been made to the index page of the website.

Image description

Information about the mesh version now has its own icon and the Patreon icon has been removed so that there are two rows of four icons. The icons have also been made not so overwhelmingly gigantic. This makes the site look better on a small mobile screen in portrait orientation. The Patreon link has been moved into the FAQ.

Muted words

It's still experimental and not very well tested but I've been adding a new feature to the blocking screen of Freedombone which allows for messages containing certain words or phrases to be blocked. Twitter has this feature and calls it "muted words" and there's a similar capability within the Pleroma interface.

As an example, maybe I don't want to see anything containing the phrase "Black Friday" or "blockchain". There has been so much blockchain hype in the last year that posts on the topic are just another eye-rolling event.

I'm also expecting that as the fediverse becomes more popular that it will also become more adversarial with a greater amount of spammy posts. This type of word based blocking, combined with the existing domain/address blocking might help to mitigate that.

Emacs Workflow

Listening to the first episode of the LibreLounge podcast among many other things they describe their Emacs workflow using org-mode. I also do things in a similar way, so on the obscure off-chance that anyone is even the slightest bit interested in how I do it, it goes as follows:

My main editor for most things, especially "getting things done" type tasks is of course Emacs. I use org-mode for notes and also org-agenda as a TODO list. My Emacs configuration is a bulky menagerie of assorted modules and I started out with Sasha Chua's configuration from Github in about 2012 and then heavily modified it, removing some things and adding a bunch of other things. Maintaining this can turn into a yak shaving exercise, but fortunately I rarely reinstall Emacs these days since I'm typically using an Arch based desktop distro.

I have a personal git repo stored on the server which contains my org-agenda files and notes. Synchronization is just a matter of committing on one system and then pulling the changes on another. That might sound complicated compared to something like Syncthing, but in practice it's not much of an issue and avoids the type of conflicting situations described in the podcast.

On first running Emacs it shows my personal index page which is an org-mode document with embedded links to notes, cheat sheets, bookmarks and the current TODO list. Most commandline stuff I do within Emacs using eshell. I use git mostly from the commandline, but occasionally with magit to list commit history for repos or individual files. I also use golden ratio mode so that buffers change size automatically.

I did email within Emacs at one time, using Mew, but now I mostly use Mutt or the Freedombone webmail, which is a customized squirrelmail. Mutt is hard to beat for speed and simplicity, and has good GPG integration. Also logging in to the server via ssh or using webmail to read email avoids the need to expose any IMAP port and so reduces attack surface.

I've been an Emacs user since about 2010. Prior to that I mostly used gedit with its various plugins. I did try versions of Emacs in the more distant past - particularly MicroEmacs - but didn't use it as my main editor.

Tweaks and improvements

A few recent improvements to the Freedombone system.

XMPP server

The version of Prosody has been upgraded to 0.11.0, also with a corresponding update of the community modules. It looks like Prosody is gradually becoming more compatible with the Conversations android app and including the needed XEPs by default.

Some changes have been made to minimize the occasions upon which Prosody needs to be restarted. Restarting the daemon often seemed to break PEP. The upgrade to 0.11.0 may also help this situation because it has a more recent PEP implementation.

App installs

When installing an app there is now a progress bar shown. Previously there was an install and pray approach in which once you had got past the confirmation step you just had to hope that the app would show up some time later. This removes that ambiguity.

Added EteSync

A new app for synchronizing calendar and contacts across devices.

Added Zap

Zap is like Hubzilla, but with some features removed so that it's specialized as a social network system rather than a general web publishing system. It uses the latest version of the Zot protocol.

Better app icons

Previously the icons for apps had been added rather hastily and some of them looked quite blurry. The icons have been updated so they now have better resolution.

Fixed amd64 images

There was a catastrophic bug in the amd64 images which was preventing them from installing properly. This only applied if you were installing from a USB drive. At an early stage in the install the USB bus was being reset, which obviously caused dire problems and data corruption. That should no longer be an issue and the downloads have been updated.

App help screens

These have now all been added, although currently most of them are very basic. There's scope to make the help on these screens more comprehensive.