Notes for August 3-8
I have a problem. Or, rather, I have two problems:
- I have been spending far too much time messing about with AI instead of reading.
- I end up zoning out in front of YouTube and, even with serious attempts at curating my feed, I spend far more time than I should there.
I’ve griped about this before, but this week I decided to take some time to fine-tune the friction around those activities–removing or adding it as needed.
E-Ink and Calibre MCP
My Calibre library has grown somewhat out of hand, either due to automated additions (I have been getting the web edition of The Economist delivered through it for well over a decade) or lack of proper curation, so I decided to use AI to see if I could remove the friction involved in finding something to read (or re-read) and have it either e-mailed to my Nomad via Kindle or easily accessible on my Xteink X4.
That mostly meant figuring out how to get an MCP server working with Calibre, but it ended up including a parallel side quest to improve bun-readlater-epub and bun-opds-server to see if I could make it easier to queue up and download long-form content.
As an aside, recent revisions of CrossPoint have a Wi-Fi bug that prevents the Xteink X4 from joining our Wi-Fi (apparently because it fails to use a coherent MAC address), so I have to import things via its hotspot (which automatically optimises the EPUBs). I suspect I will eventually have to fix it myself when I have more time, because the maintainers have been unable to do it for two releases now…
The real improvement, though, was how I decided to design my own MCP server for automating Calibre. Most existing implementations out there are either sidecars that can’t manipulate Calibre data or CLI wrappers that inevitably contend with Calibre access to its library databases, so I took the plugin route and built one that runs inside it and can thus use everything: metadata editing, conversions, moving books between libraries, e-mailing them to me, the works:

This effectively means I can now point any AI agent to Calibre and tell it literally:
- find me the last three books by X and e-mail them to my Kindle address
- grab this URL and import it into the Incoming library
- change ratings programmatically
- find and remove duplicates across libraries…
There’s no practical limit, really, although I might need to hack a few more things in. And since it uses the native job engine, everything works correctly.
The biggest quality-of-life improvement is that I don’t need to access the UI anymore. Since I have been running the extra-clunky Selkies-based container (which streams the desktop using its own thing and works very poorly on the iPad), there’s no more browser logins, slow wading through listings, or finicky right-clicking.
As an encore, since I wanted to maximise the time I could spend on the Nomad, I also updated picoflux and tweaked the e-ink theme I bolted on a month or so ago.
Old-Timey TV Shenanigans
That removed a lot of the friction around reading. Next, I needed to add friction to watching YouTube videos.
I recently spent a little while fiddling with Jellyfin–partly because I do that on occasion to see if it’s finally a decent alternative to Plex (spoiler: not yet, by miles), but also due to my infrequent investigations into the state of hardware video decoding (go-264 will eventually go down that path).
This time I wanted to hack it into a sort of anti-YouTube setup and see if I could replicate the old-timey, “synchronous” TV-watching experience, so I literally told piclaw:
I want you to create a Debian 13 LXC in radxax4 to host Jellyfin, mountingsmb://zfs/videoas a read-only remote media library (so keep the LXC filesystem small, please). You can pick the best way to deploy Jellyfin as long as you manage to get hardware video processing working and document it in Obsidian. After that is done installjellyfin-plugin-livechannelsor a similar TV simulation channel and create appropriate “channels” based on the contents of the media library.
Fifteen minutes later, I had the entire thing working. Not half-assed or poorly installed, working, with the media mounted read-only (twice, once on the Proxmox host and again inside the LXC), QSV hardware transcoding and a full installation and configuration brief in Obsidian (the output is a tad long, but here’s the last part):

Of course Jellyfin immediately filled the filesystem with artwork and people metadata, so that was (automatically) upgraded, but hey, it was a valiant effort.
Then I went to town on the original plugin and decided to bolt on Invidious as a YouTube source:

I call it jellyfin-livetube, and it’s been working pretty well–even the standard library-backed channels have been a surprising amount of fun (I ended up rewatching Flash Gordon purely by chance).
wrdp’s 15 Seconds of Fame
Speaking of YouTube, Wendell Wilson (hi there!) featured my new wrdp project in the latest Linux weekly video, which was fun to see (especially since I found out over breakfast while checking my messages, before coffee kicked in).
Right now it is mostly working, even though I am still waiting on a critical PR to make it into IronRDP to improve internal session management. But login and Wayland session creation both work, it’s all hardware-accelerated (both EGL desktop acceleration and VA-API video encoding), and… there are all sorts of edge cases to sort through.
I will be poking at it irregularly over the next few weeks–I want to do ARM/Vulkan acceleration next and set up two separate remote desktops I use “regularly”, but first I need a bit of digital detoxing, which is something I am very much failing at.
Moar Agents! Minis Agents! Moar
Because I was clearly left unsupervised and can’t really stop doing agent-related stuff, I went down the rabbit hole of setting up Open Minis on my iPad Pro, and I did it in the most “me” way possible–I got it to connect to Memento and “learn” from the accumulated knowledge of all my piclaw agents, which is awesome because it proves two points:
- Memento works perfectly for the purpose it was designed for.
- It doesn’t matter which agent harness you use as long as you document things properly.
Thirty minutes after I began, I already had most of the SKILL.md files and scripts ported across, and an hour later I had “native” equivalents to manage Proxmox and Portainer and was doing various shenanigans to generate and post screenshots along with my link post drafts, which these days are posted using the GitHub API directly (again, refactoring an existing SKILL.md).
I can now confirm that Open Minis is, indeed, the Siri I have been wishing for. It’s by no means perfect, but with a SOTA model driving it, it can build its own tools, and… I really should stop now and go read a book or something.