Web publishing for yourself

This paper lays out a unified framework of the ergodic animage, the rule-based and interaction driven part of visual representation in video games

I do sometimes wonder if other people browse the web in the same way that I do.

I was following a thread by gilest on mastodon about making publishing on the web easy, fast and non-technical, following his post about a mac-only tool for making web pages, Palm and came across Publii which is a great cross-platform desktop application for making websites – having looked at a load of other tools in this category (including web hosted) I wasn’t expecting to be impressed, but I was, it’s a brilliant tool.

In the process of doing that I found a collection of other personal content management (or manipulation) systems that I’d never heard of, or only in passing. Each of these has the novelty of being unique or interesting in some way – there is so much variety!

Although I understand a desire to organise and form communities, I’ve never liked the “Indieweb” framing of so much around self-publishing – it makes it seem like people need to understand something new; maybe it has initiation rites? Maybe it’s complex and technical in the way that Giles was raging against above? It feels like digging an artificial moat, or applying a purity check – are you in or are you out?

Just publish and be damned. Use whatever tool you like, just write.

Art and science

I open a lot of tabs. A lot. Maybe as many as you.

Every now and then I have to plough through them and close down stuff I’ve either dealt with, bookmarked, or just forgotten why I opened it in the first place. I’ve given up doing this on my phone where my Firefox tab count is permanently ∞ (literally).

So here are some interesting tabs I’ve had open this week:

Also lots and lots of things about OPML, which chimes nicely with some recent thinking I’ve been having about managing blogrolls. More on that in another post I think. 

RSS for fun and the public good

I follow Steve Messer’s blog – he’s a product manager in the UK Civil Service, making land and housing data easier to find, use and trust. And he writes weeknotes which I enjoy reading.

He mentioned this week that his team’s blog doesn’t produce an RSS feed. Well, I’ve just been doing that for my own blog so I thought, how hard can it be?

An hour later and I opened my pull request.

The Digital Land blog is an interesting beast, being built by a custom-built Python static site generator using gov.uk components and rendering with Jinja.

It’s been a couple of years since I last looked at much Python (probably whilst I was at GDS working as Head of Technology on the Clinically Extremely Vulnerable People Service) and I don’t think I’ve ever used Jinja, so my code is probably terrible but it does work on my machine!

Hopefully what I’ve done will be at least the right shaped answer, but I imagine one of their actual Python experts will fix up my PR nicely.

(also, it’s an Atom feed that I generated, not an RSS feed, but the title didn’t scan as nicely)

UPDATE: It’s merged! Look on my works ye mighty.

Reanimating a Little Printer project

I’ve made a little app which generates an image for you to display or print how many people there are in space right now. The code is here.

This is based on work that the excellent design and technology agency BERG did a decade ago with their Little Printer.

Little Printer was a wonderful little service which used a network-connected thermal printer with a personality to send little messages of wonder and joy into your house.

Little Printer on a bookshelf

It was released in 2012 and as all these products inevitably do, the servers went offline a few years later and the service went away. BERG released their code and a little community sprang up to help liberate the devices and keep them running, which you can see at https://tinyprinter.club/ and additional work from design invention studio Nord Projects.

In the 12 years since Little Printer, desktop sized bluetooth-connected thermal printers have become a thing, and you can get one delivered to your house for less than £20 from Amazon or Aliexpress. I have this nice cat-themed one:

Thermal printer with a stylised cat face next to a Lego superman minifig for size comparison

When tidying up my repos in GitHub I found I’d forked one of the Little Printer repos many years ago, so now that I’ve got a thermal printer wouldn’t it be nice to get that running? This one prints out a little picture telling you how many people are in space right now. I can’t find a photo of this working on a Little Printer, so let’s give a spoiler instead:

Printer publishing "How many people are in space right now?" on paper

Let’s have a quick look to see if the decade-old Ruby code runs out of the box (although with low expectations it will). No surprises, it doesn’t:

  • Ruby version is too old
  • Dependency compatibility is broken
  • The tumblr RSS feed it relies on doesn’t get updated any more
  • We don’t have a server to send the rendered content to the printer

So let’s see if we can rewrite this app! 

  • Find a new service with the number of people in space
  • Make a simple Sinatra web app
  • Point the existing app which sends content to the printer to the web app
  • Press print
  • Done!

Here’s the code.

The Fun Print app that supports my printer allows me to print directly from a URL, so I just give it the address of my web app, and it prints out nicely, as you can see above, and because my printer came with several rolls of sticker paper, I can simply peel it off and stick into my Techo!

Obviously the real benefit of Little Printer is that it’s push-based. If I want to be able to push this data to the printer in the future I guess I’ll need to convert the web page into an image, so I’ve added some (currently unused) rendering with Capybara to the application. I might give some of the resources linked from https://tinyprinter.club a go in the future to try and get push working, but I’m quite happy with pull at the moment.

Free your mind

The absolute best thing about being able to hand over my Head of Software Engineering role to the wonderful Steve Newstead in favour of being a roving problem-solver (currently: incident management processes, procurement workflows, monitoring and alerting, line management coaching) has been the colossal amount of mental capacity it has freed up outside of work hours.

This means I have the space to do things like a) write this blog! b) write code! and most importantly c) read!

This means a resurrection of my feed-reading habits for a start (more on that another time) but also that when people I know and respect post linklogs I have time to actually plough through some of that material they’re sharing, and then read the links out from there as well!

I am always desperate to learn something new and interesting – it is my favourite dopamine hit. Whether it’s about strategy implementation, the differences in people’s visual imaginations, or services that “check for link rot in real-time, and fall back to the Internet Archive to restore broken links”, I love it all.

I’ll be off to my next contract soon, at which point work will be consuming all my spare mental cycles once again, so it’s a pleasure to try and make the most of my brain whilst I’ve got it to myself!

A brief experience with GitHub Actions and CatLight

After deciding I couldn’t get the URLs I wanted for my blog using Cloudflare Pages without some actual real honest-to-goodness rewrites I had to use GitHub Actions for the first time in anger.

An incredibly powerful platform with a misery-inducing YAML syntax. Little more to be said.

What was nice was the chance to use CatLight for the first time since reading about it a few years ago when Matthew Somerville first mentioned it. At the time he needed to write some code to make the output from GitHub Actions available, but happily this is now built-in and so whilst iterating on my YAML mistakes I was getting nice desktop notifications about it.

I don’t get the chance to write much code any more, but tooling that makes it easier to follow the process from local commit to being aware of whether your commit has worked is always a benefit.

Books of January 2024

First in what is likely to be a short-lived series.

The Murderbot Diaries books 1-7 by Martha Wells, mostly good, mostly novellas and thus totally overpriced at around 10p per page (most other books I compared to came in at between 2 and 5 pence per page). They’re good but not that good. Get them from the library or borrow from a friend.

Lockwood and Co books 1 and 2 by Jonathan Stroud: The Screaming Staircase And The Whispering Skull. These are the two books which made up the first 8-episode season of the Netflix TV show directed by Joe Cornish (which was definitely cancelled before its time). The books were good fun, and the premise (ghosts are overrunning the UK, but only children can see or fight them) was novel and well-executed.

The Kaiju Preservation Society by John Scalzi – more boring than expected given that it won the Locus award and was nominated for the Hugo. Multiverse traversal and kaiju sounds like a good principle. It does not pay off.

Tell me an Ending by Jo Harkin – what happens if you can have memories selectively wiped? And what if you can have the memory of having your memory erased, erased? A good story that I enjoyed.

That’s 11 books in January supported by a whole bunch of novellas in the Murderbot series, and a pace I totally can’t sustain, but it felt good to be reading this number of books again!

Preparing to move from WordPress to Zola

In Feb 2021 I said I was planning on moving from WordPress to Zola. I am still not done. Eking the work out really hasn’t worked. Who’d have thought?

If I didn’t care about maintaining URLs then I would probably be done by now, but I do because, y’know, I desperately want to be cool.

So, important URLs to maintain in priority order:

  1. Main entry point (/blog)
  2. Individual post entry URL (/blog/year/month/title)
  3. Feed URL (/blog/feed)
  4. Year URL (/blog/year/)
  5. Month URL(/blog/year/month)

Nice to have URLs:

  1. Tag URL (/blog/tag/tagname)

URLs I’m going to ignore:

  1. Category URLs (/blog/category/catname/) – I’ll merge this with tags
  2. All pagination URLs (blog/page/x/)

Of the URLs I want to keep only the feed URL looks impossible – I don’t think Zola can create a feed at two levels deep, which means I’ll need a rewrite, which needs I’ll need a host which supports rewrites which I thought meant I’d have to actually get a proper host (like Hetzner’s CAX11) but actually it looks like my plan of hosting on Cloudflare Pages is still good to go because they support redirects!

I’m using a custom plugin to get my content out of WordPress in the first place. I’ll write about that another time.