Labels

Monday, 2 February 2026

M C Escher

Intro


As a child / teenager I was fascinated by the drawings of M C Escher.  I had a book of his graphic art which I often enjoyed looking at.  Recently it occured to me that Escher doesn't seem to be well-represented in the the art world despite being well known.

I purchased a Taschen book "M.C. Escher The Graphic Work" for a few pounds on ebay.  It contains the same works I recall with much fondness from fifty years ago: tesselations; infinity representations; plausible but impossible scenes; transformation and evolution of shapes.


Escher and Penrose

Escher spent many years refining his skills creating intricate woodcuts and lithographs, mainly traditional scenes and landscapes, some of which were plausible but unreal.  At one point, whilst at a Mathematics conference, Sir Roger Penrose visited an Escher exhibition and was intrigued by his work. The interest developed into correspondence and a friendship.  Escher was very taken with Penrose's mathematical study of tesselations (patterns covering a surface) and developed them into shapes, figures and animals interlocked and transforming in space.


Penrose narrated a fascinating BBC Scotland documentery about Eschers work, "The Art of the Impossible", in 2009 and participated in an Oxford lecture on the subject. There is also a Sky Arts documentary Journey to Infinity (trailer) narrated by Stephen Fry. It turns out that Eschers interest in repeated surface patterns was stimulated by a visit to the Alahambra in Granada, Spain.  I have also visited and been enthralled by these patterns both at the Alahambra and in Marrakesh, Morocco.  



The Art World

Escher considered himself a graphic artist working in wood and metal.  He had no mathematical or scientific education but had some deep intrisic understanding and the ability to translate these ideas into a visual form with fantastic technical skill.
He has been completely overlooked or ignored by the art world with practically no works on display or public exhibitions.  His works certainly qualify as good art in my understanding: great technical skill; the ability to communicate significant ideas; thought provoking concepts. There are a number of 20th Century "geometric" art movements during the period he was working as well as surrealism and its derivitives.


I think he was insufficiently "arty" and certainly didn't promote himself as unique visionary whose work you needed to buy.  Perhaps the traditional techniques of woodcut and lithography were not trendy, or the ability to make hundreds of prints from a woodcut lowered their value and interest to collectors.
He was popular with the public during the "hippy" sixties and seventies with work featured on a number of album covers.  I  predict he will become more appreciated in future.



Favorites

I have tried to identify my favorite works but I find it difficult as they cover a number of different subjects and techniques.  For the list below I have chosen those which stick in my mind most clearly.  Images are taken from "M C Escher The Graphic Work", but I found "Kaleidocycles" and "The World of MC Escher" interesting.


















Sunday, 1 February 2026

Docker on Risc-V

 Intro


My most recent  Risc-V development board is the VisionFive 2 Lite.  It isn't particularly powerful, but is probably similar to a RPI-3.
Interestingly the VF2L image comes with docker included.
I decided it would be useful to see how this compares with my other docker setup PI43+OMV


Images Available


There is an Docker Official Index of 48 riscv64 images as of January 26.  There are various programming languages (Go, Ruby, Perl, python etc), a few OS guests (Debian, Ubuntu, Alpine), some webservers (Apache httpd, tomcat, nginx) and some others mainly technical utilities and a few applications (e.g. nextcloud).


Other examples have been created, usually, they are geared towards multiple architectures and include riscv64.  For example I wanted a container I can SSH into so I googled "docker riscv64 ssh" and found woahbase/alpine-ssh.



This is based on the alpine docker image.  I ran the image to build a container and I was able to ssh in to use it.  This is excellent.
An alpine image is only 7MB size and including SSH only increase it to 14MB.
Docker doesn't create a complete VM, it uses the linux host kernel and syscall interface to provide an environment.
Alpine linux comprises a minimal set of utilities to make it useful, so it combines well with docker and is widely used.

Add applications to an image


Previously on my PI43:OMV server I have used docker compose to create images.  I have pasted in configurations and used compose to build an image and run the container.  I dont have docker compose or "standard" images on VF2L so I need to think and learn a little bit more about docker.

For my images / containers I start off from a minimal Alpine Image. I run this image as a container and I can access the container through a shell, enabling me to install software, create files, bring up Services etc.  

My first experiment was to create an Alpine lighttpd container.  I started by running a "raw" alpine:3.23 image.
I needed to add the openrc package plus a couple of extra commands allowing me to start services (this is a wrinkle in alpine setup).
I could then add the lighttpd package and start the web server on port 80.
In a web browser I can see the lighttpd installation placeholder page.


Create a lighttpd image


Now I know how to configure a container running a lighttpd webserver I need to create a new image including lighttpd which I can start up as a web server.

To do this I create a "Dockerfile" which contains commands to execute whilst building the image.  These can include software installation using the Alpine "apk add" command and bringing up Services.  A working image includes all necessary software (executables, configuration files, working storage etc).  Based on the interactive setup I used the Dockerfile as shown here to build a "alpine-lighttpd" image for my webserver.
 
There is a small downside which needs to be dealt with; the raw image has no persistent storage.  The container uses temporary files for all the storage it needs and this is deleted when the container is removed.  So if I added some html files to the container they would be lost when I removed the container.

The answer is to create one or more volumes to contain our data.  For my lighttpd web server the home page will be stored at /var/www/localhost/htdocs/index.html.  with the command "docker create volume VarWwwLocalhost" I created a volume.  I then mapped the volume to the home page directory in my docker run command which starts the container.
Now I could add index.html and other web pages within the container and they remain available each time the container is loaded.

In fact I can also access the volume from VF2L outside the docker container so I can look at or edit files from VF2L before starting the container.  My first effort is shown below.
A vital feature of docker is that it allows you to redirect ports.  When I run the lighttpd container I specify that I want to map VF2L port 8080 to my container port 80.  Then any URL which specifies port 8080 is directed to the container port 80.


Outro

It is very useful to be able to create my own images or amend standard images for my requirements.  Docker is an excellent tool for making these images and running the associated containers.  VF2L has proved itself capable of running docker and docker containers.  It is wonderful to separate the host OS linux from the image so that I am in total control of the container.  VF2L runs StarFive linux but my images are built on alpine, but they could be built on Debian or Ubuntu.

So far I have built containers for lighttpd (described above) and for ssh access so that I can ssh into a test alpine server.  I have also quickly started up nginx and nextcloud containers to experiment with them.  I am quite amazed at how quick and easy it can be to start a complete application.  If there is an appropriate image it is much simpler than adding linux packages to the operating system and configuring them.







Tuesday, 20 January 2026

PI43 : OMV : Docker

Intro

A key reason for choosing OMV for my NAS is that it also provides an environment for docker containers.  Although docker is widely used I know little about it and it seems likely that I can benefit from using it on my new server.

I searched for suitable application which have been packaged for docker which I might find useful.  My initial list included Jellyfin (a media player), pihole (an ad blocker) and opencloud/nextcloud (dropbox replacement).

Installation

There are lots of docker install tutorials.  I needed to pick one which installs docker using OMV7.  I found a good youtube video from db tech

The first step is to install omv-extras, which gives you a list of plugins that can be added into OMV.  In addition to docker, I was directed to add OMV scripts and docker-compose "extras".

Next I setup three OMV shared folders for compose, backup and data.  I had a problem setting up the compose share, with OMV repeatedly complaining it couldn't do it.  After some time I discovered that my drive is formatted with NTFS as it was formatted for Windows storage. I moved the docker compose share to the linux OS SD card and the system was happy again.

With the pre-requisites complete I could click on the "install docker" button to create my system.  Finally I setup a user, dockuser, which should be able to to manage my system.




Although we used OMV to install docker and will use the it to create containers we do have access to docker through the command line so OMV doesn't get in our way of using any docker capability.

Overall this was a very straightforward install using OMV, with very little technical thought involved.



Sample Application 

The tutorial I followed used a simple web app docuwiki as an example to get started.  This was very helpful though not useful.  It shows that you start by cut-and-pasting the container definition into docker compose, defining disk storage, allocating ports and setting userids.  You then "spin up" the container; software is downloaded, configured and the app starts.  It is wonderfully straightforward and the app is independent of the local system and any complications or dependencies related to it.  The one constraint is that containers are architecture dependant.  Many / most images seem to have an arm64 version which is what my RPI requires.

 Bittorrent

For a proper test I setup the Transmission bittorrent server.  I can use this to replace an old version I have on an old server.  

Step 1 is to create a container definition and copy the docker compose definition from the linuxserver site.
I created a Samba shared folder for transmission files in OMV.
I then amended the docker compose definition for my own UID, GID, Timezone and my storage volume.  I didn't need to change any of the port numbers.



I then started the transmission container. As usual the software is downloaded, configured and then initialised.  


PI43 port 9091 allows you to see the transmission web interface so that you can add torrents to download files.

As the downloads are saved to a Samba I can access and copy them to any device.

In fact I dont need to use the web interface as I have a windows Transmission client which I use for managing torrents.

On the new transmission system I now have lots of space for downloads.  It turns out that my downloads can be 5-10 times faster than the old system, upto 10MBps.

Pi-hole

Pi-hole is a popular ad-blocker.  I have tried it before but it didn't seem to work well for me.  Setting it up in a docker container enables me to start and stop it at will.  As usual I pasted a default configuration into docker-compose.  In this case I had to make a small change to set the HTTP port to 8081.


The container comes up cleanly and I can signon to the web interface to see what is happening.


Initially pi-hole doesn't do any work.  I tested it by pointing the iPad at PI43 for its DNS and the iPad continued to work ok.  I then changed the router so it pointed to PI43 for its DNS.  Now all devices use pi-hole.

It works well, it doesn't interfere with normal browser operation and shows blank spaces instead of adverts in web pages.  If I want I can take down pihole and devices will use google DNS (8.8.8.8) instead.

Jellyfin


I am most interested in setting up Jellyfin as a media server.  It is widely used and liked.  The configuration is very simple, I just need to set up a shared drive for movies and tvseries.

Once the container had been started I could sign on to the admin interface on browser port 8096.
There is an admin user to setup and confirmation is required for movies and tvseries as the initial folders.

Installing the Jellyfin client on a PC is easy.  For some reason Samsung make it slightly complicated to install the app on the TV but I googled a solution.

Jellyfin provides a very professional interface, as good as Prime or Netflix.  It finds a thumbnail image for shows and is pretty good at discovering descriptions about individual episodes to help you choose what to watch.

I can add shows easily by copying them across to the Jellyfin shared folder.

I will call this my killer app, it makes docker worthwhile.






Thursday, 15 January 2026

PI43 : Open Media Vault : NAS : Backups

 Intro


I have had a new Raspberry Pi 4 sitting in a drawer and an urge to look at Linux again so I thought it would be a good time to set it up.  The particularly good feature of RPI4 is that it doesnt need a fan.  I have a smart electric blue metal case for it which can dissipate heat and keep it safe.  As usual I will run it headless.  I could probably have a reasonable experience using a desktop but I have an RPI5 waiting which will be better suited.

I  want PI43 to do something useful for me and I aim to leave it as a server switched on and unattended.  I already have a web server, application server and database server.

A few ideas come up repeatedly, a media server (jellyfin), a backup server (rsync), NAS (openmediavault), cloud server (OpenCloud) and containerised applications (docker).

As OpenMediaVault will potentially work well as a backup or cloud server and allows me to use docker I will set it up and see whether it meets my needs.  It will need external USB HDD or SSD.  If I had an M.2 hat for PI43 I could have faster SSD storage, but I dont think I need it.  I will use an existing Samsung 1TB HDD.  I was concerned this wouldn't be appropriate for a NAS, but confirmed that it wont be spinning continually so it should be fine.


OMV Install

pidiylab.com and pimylifeup have simple detailed tutorials on setting up OMV. I mainly followed the pimylifeup tutorial as it mentioned that I need to use RPI OS Bookworm version (rather than Trixie, the latest version) with the current release OMV7 in November 2025. (OMV8 supporting Trixie, the latest version came out in December).

Using RaspberryPi Imager, I created a new Bookworm SD card build and set PI43 up with an ethernet static address.

OMV is installed using a couple of scripts.  It has a very simple web interface allowing me to configure disks, file-systems, sharing protocols, shared folders users and permissions.

I connected a 1TB Samsung M3 USB portable HDD which have previously used for backups. 
I then enabled Samba in OMV, setup a shared folder on the samsung drive and created a backup user.
I also set the "spin down" time to 5 minutes and enabled S.M.A.R.T. drive monitoring.

The Samsung drive was half full of old backups so I moved them across to the shared folder using linux file move command.  I can now access the "samsung backup" shared folder from Windows file explorer  and from RPIs using a mount command.




NASmusic

Now I have lots of storage readily available to my local users / systems I setup a CIFS/SMB shared folder NASmusic  to contain my music library.  Initially I just copied a load of music across so it is sitting there waiting for me to use it from whatever device I choose.  In due course I can consolidate my music in this one place and use it for various home music players.

Review

At its simplest, all I have done is setup a Samba folder on PI43 which I can easily access from Windows.  I can also use it on iPad (using Files), Android (Samsung MyFiles) and Linux (mount command).  OMV improves on basic Samba by letting me setup multiple shared folders on the same drive through a simple interface.  I can easily setup users and permissions for appropriate access.  Usually with Samba I faff around each tiime I need to access a drive.  OMV makes Samba a lot more friendly.

The OMV install hasn't "taken over" the server, I still have the usual PI OS capabilities available to me.  It is a bit more than an app and a less than an OS.

Backup

My first use for the OMV NAS is to improve my existing RPI backup arrangements. Until now backups have been totally inadwuate based on very occasional rpi-clone system copies and sometimes copying zipped directory structures to other systems.  Even if a backup exists I have trouble finding it.

rsync is a widely used command line utilitiy for linux backups.  It is used to copy directory structures to another drive.   A regular backup will only copy any changed files across, so it doesn't use very amounts of storage.  It is perfectly suited to use Samba shares on a remote devices.

I found a suitable simple tutorial at jumpcloud and started to setup a backup for PI40, which is most in need of attention.  You specify a starting directoy (/home/pi in the example), folders you want to exclude and the target Samba folder.

You can run this script as often as you like and it will mirror any file/folder additions/changes/deletions across.  You can also specify a "dry-run" option which just shows you what would be backed up.  This makes it very easy to get the syntax and arguments just like you want them.

However there is a better way to use rsync.  rync can use ssh to communicate with the backup server.  I just needed to make sure that PI40 had ssh credentials for automatic signon to PI43.  After that I didn't need to worry about Samba shares.  Veronica Explains provided an enjoyable tutorial.

I quickly setup a simple backup.

After a little more trial and error I setup script to backup important PI40 folders that I didn't want to lose.
They backup to a folder PI40 on the samsung_backup share.


Finally I added this script as a CRON job to run monthly



Outro

We now have a new server which makes its storage available for easy use by other systems.
We also have a solid backup system which makes it easy to backup RPI files on a regular basis.

3D Levitation


I purchased a cool electromagnetic levitation gadget on the internet.  When powered up the electromagnets cause a magnet to float above it without any support.

In fact the electromagnets are fearsomely powerful and the floating magnet can easily crash into the base risking damage to the electrics.


It is a great application for a 3D printed plastic cover / protector.  It is simple to work out the internal and external diameters and the width of the four slots which leave gaps for protruding screw holes.

The first version was designed to fit neatly over the top of the magnet.  The second version was a taller to cover the gadget base completely.  It has a hole in the middle so that the floating cylinder can be placed correctly.

It takes careful thought to make the shape correctly in tinkercad.
1/ Create a cylinder the overall height of the cover.
2/ Create a hole 2mm shorter than the cover and lower it to the top of cylinder 1.
3/ Create the central hole and lower it to the workplane.
4/ Make a cuboid hole the width of cylinder 1/ and lower it to 2mm above the workplane.
5/ Copy cuboid 4/ and turn it through 90 degrees.
At each stage the centre of the objects is aligned and they are joined together in a union.


The final result was very pleasing and neatly covers the electromagnet.  I then decided to make a base which I could screw the gadget to.
  The cover fits nicely on top to make the whole rigid.



The result is very satisfying.  It is now much easier to set up levitation, the gadget looks better and I am much less likely to damage it during use.  I could do more, in particular making something to hold the floating disc would be fun.  One advert I saw had it incorporated into a floating Aladdins lamp!
However this does fulfull my requirement to make something useful, so I can stop here for the moment.




Wednesday, 14 January 2026

Mark Kostabi

 It is very rare for me to buy a picture. Thinking back over many years these are the ones that I have bought or Annette and I have bought together.

Chinese style landscape (now deceased), three impressionistic flower arrangements (Richard Akerman), two local park studies (Peter Boyle), a pool with overhanging trees (Mrs Ferguson) and of course lady watching TV (Lu J Son).











When we visited Tallinn in Agust I went to PoCo, their museum of contemporary art.  It was interesting and enjoyable.  There were one or two pictures by Mark Kostabi in the exhibition, which I liked and as I was leaving I saw that there was one of his prints for sale.  I was tempted to buy it but, as usual, I wasn't ready to make a quick decision.

Mark Kostabi is an American, living in Los Angeles, but his parents emigrated from Estonia so he has local connections.

 I thought more and more about the picture as we returned home and after a week or two I started looking online for prints by Kostabi that I could buy.  I am very happy with one I chose which now has pride of place in my personal gallery.


First off I like the lack of detail and smooth outlines of his characters.  Expressions, clothes, textures are not available to tell you anything about the participants.  Their posture, the positioning of limbs are the main source of clues.  For the dancers you could imagine them wearing leotards, tights, pumps and showing fixed smiles of concentration.

In my picture it is easy to see a couple who are very fond of each other, standing in an embrace and two more people in a state of abject despair.
So much is achieved by simple, gradual shading changes on their surfaces.  They could be mannikins which you can dress as you wish.

I like to think of the title as "hope and despair".

Mark Kostabi has produced many works some of which I have looked through.  Many are more complex or have more to say but I like these two.  Mark Kostabi himself faded somewhat from the art scene, some year ago because of balatant homophobic statements so I haven't looked further.