When this website becomes its own story:
When I retired from Manukau Institute of Technology in 2020,
they gave me a present of a "Raspberry Pi" ultra micro computer. The
"Pi" is well known to educators and engineers as a "robot
brain" device. This however is the latest version 4 which with 4 cores and
8 Gb of RAM can take on the "mini server" role. I therefore set out
to migrate this website on to the Pi. It was on a PC with some green quality
because it was recovered from recycled parts - but this PC idled at 40 W power consumption,
and Pi idles at 4 W. "Idle" is relevant because websites like this typically have only
small bursts at the moment of visitor connection with little or no load while a
visitor reads a downloaded web page.
The Pi is small enough to hold within the palm of my hand.
In this photo I have created my own enclosure for it adapting a plastic
container and adding a small cooling fan.
This website was a challenging candidate for migration to Pi
because the tech was "Microsoft WebForms DotNet Framework" which is
very much Windows tech. In programming terms this this about the most distant we
can get from Pi and its Linux operating system.
In brief, what worked was a radical migration to
"DotNet Core 5" which is a major reinvention of DotNet programming including
making it Linux-friendly. Which means it can run on a Pi.
My old website had a "Microsoft SQL Server"
database. Microsoft has recently released a version that can run on Linux including
Ubuntu. I could not install it and on much searching discovered that it is
incompatible with the "RISC ARM-64" CPU silicon chip at the centre of
the Pi. The fix for that was a database migration to "Sqlite".
I went at first with a migration using
"mono" to run on the "pi". "mono" is an system
that duplicates most of the functionality of "DotNet Framework" for
Linux and some other non-Windows systems. This worked well but while it required minor code changes,
I found the configuration and setup on Ubuntu to be hard work.
My other programming is all on the latest "DotNet Core 5"
and most of my programming community has also moved on to that leaving only a
small population interested in the framework version of mono. I therefore took
on the next level challenge and "got current". Fortunately my website
makes only limited use of "WebForms" which are not supported in
"DotNet Core 5". I was able to replace them with "Razor
Pages" which have a similar arrangement where we build 1 web page as 2
files: a "client side" page based on html, and a "server side
code behind" page in the "C#" ( c-sharp) programming language.
I tried a little trick that worked, which was to keep the old
aspx extension as part of the new name.
e.g. an old page with files "NoticeEdit.aspx" and
"NoticeEdit.aspx.cs" becomes new files:
"NoticeEdit.aspx.cshtml" and "NoticeEdit.aspx.cshtml.cs".
The extensions "cshtml" and ".cs" get hidden under
"DotNet Core 5" so the effective names are the same as before and the
old menus still work.
We may need to change the razor home directory from "Pages" to
"wwwroot" so that html and cshtml pages can co-exist. If most of the
pages are .aspx webforms then "Pages" is OK with its security
advantage of being a step removed from the visitor-accessible wwwroot.
Stress testing the Pi by serving video
Serving video across the internet is high demand for both a mini-server and its
programmer (me). So I had to try it. Most videos on this website are relayed
from Youtube or Vimeo. There are 2 of substantial size that play direct from the Pi.
Amandla! The anti-rugby-tour protests of 1981 (Excerpt) 150 MB
Chase Plaza - ASA School of Art students 1989 120 MB
(1) getting these to play and (2) being able to navigate
the timeline to play any part of it, aka "scrubbing", are impressive if they work - testing time!