More testing = more confidence
I added a Python version testing matrix to the CI, as well as another manifest to build & validate the distribution packages. Now I can —more than before— confidently publish my updates to PyPI.
I added a Python version testing matrix to the CI, as well as another manifest to build & validate the distribution packages. Now I can —more than before— confidently publish my updates to PyPI.
I got tired of handwriting TOML and formatting raw HTML. I have been using LogSeq for real for about a year and I find great value in it.
Since the default approach in LogSeq is to journal, and the interface is nicer than plain text editor, why not rely on LogSeq's journals to directly generate my memos?
I've decided to, once again, revive/reset this project. The existing solution doesn't work that well. It's actually too limited, and I don't particularly enjoy writing content in triple-quoted TOML strings.
I still really want to have what I set out to develop here: a quick solution to document things and have them published without doing anything anywhere related to DevOps.
So, let's try again. Plain markdown as input, which means I can just use LogSeq for that.
End goal is to have a crawler of said plain text files to regenerate and update the static pages frequently. No thoughts given.
(Proxmox VE 8.3.5; UmbrelOS 1.4.2)
The current instructions are enticing but obviously generic enough (no specific virtual machine engine/hypervisor).
I missed the bit where they mentioned the EFI requirement (my fault), and wasted a few minutes trying with the default setting in PVE (which is SeaBIOS
). So, here goes:
OVMF
EFI firmware (not SeaBIOS
);VirtIO SCSI
(I chose VirtIO SCSI single
);All-in-all, this translates to the following Proxmox VE shell invocation:
VM_NAME="umbrel-test"
ISO_PATH="local:iso/umbrelos-1.4.2-amd64-usb-installer.iso" # Adjust name/version as needed
STORAGE="local-lvm"
DISK_SIZE_GIB="32" # That's really not much, this contains both system and data
VM_ID=$(pvesh get /cluster/nextid)
qm create "$VM_ID" --name "$VM_NAME" --memory 4096 --cores 4 --net0 "virtio,bridge=vmbr0" --scsihw "virtio-scsi-single" --scsi0 "$STORAGE:$DISK_SIZE_GIB,iothread=1" --ide2 "$ISO_PATH,media=cdrom" --boot "order=ide2;scsi0" --bios "ovmf" --efidisk0 "$STORAGE:1,efitype=4m,pre-enrolled-keys=0" --machine "q35" --ostype "l26"
qm start "$VM_ID"
echo "Open a console for '$VM_NAME' ($VM_ID) and install umbrelOS."
echo "After installation and shutdown, remove DVD drive with: qm set $VM_ID --delete ide2 && qm start $VM_ID"
TL;DR: Proxmox VE 8.2-2 (August 2024) uses the old NIC naming scheme. Updating the kernel will switch to the so-called "predictable" naming scheme, and so the network configuration must be updated.
I installed Proxmox VE tonight, on a spare Framework mainboard.
A specificity of Framework's laptops (also true with the bare motherboard when embedded in a laptop-shape case) is that it has four USB-C ports recessed in its shell (actually Thunderbolt 3 ports for my board). The customer chooses "expansion ports" to fit in, such as USB A, USB-C (pass-through), HDMI, Ethernet jack, etc.
I ordered two USB-C and two USB A extensions, knowing that I had an old 1 gigabit Ethernet-USB A dongle lying around. The other USB A is for rescue by means of external keyboard. I used my USB-C "dock" to plug both power supply and USB stick with the installer burnt on it, and plugged my external USB-C display to the remaining port. Went through the installer process, all good, rebooted, SSH'ed into the machine and decided I could move it to the shelf next to the router.
From there, the game was on. The router did not see the machine go online, the static DHCP address I pinned in its interface was not claimed again. The USB NIC was hopelessly dark, no network activity. After fumbling around for a while, I realised that the USB-C dock I used had its own NIC, and thus the USB NIC left in the mainboard was named eth1
(and not eth0
, that was the dock's own NIC). Uhh, still the old naming scheme? Okay, why not, let's make sure /etc/network/interfaces
refers to eth0
now that the USB-C dock is unplugged.
All good, the boards boot up and I can SSH in it again. Out of habit, I update the underlying Debian OS with a good old apt update
followed byapt-get dist-upgrade
. Quite a few updates, an updated kernel, okay let's go. The install is fresh and nothing is running on it, there is zero risk of breaking something after reboot… Wait. I broke my LAN connection again!
Turns out that update did switch to the modern NIC naming scheme. The USB NIC, given its fleeting nature and ever-changing address, is now named after its MAC address (which is way smarter!). Another trip with the keyboard/screen later, and I can start playing with Proxmox VE for real.
It took me a bit more than two hours of work but I came up with a simple engine. The data is read from a TOML file and spits out more-or-less the HTML I handwrote.
The real exercise here is to see if a single-file script can do what I want. I mean: no dependencies other than the standard library (Python 3.11 at the moment).
Somehow I always end up with tech ideas on Sunday mornings.
Is it because I am "refreshed" after a Saturday focused on chores and family activities? Or maybe it's the "relaxed" time it takes me to whip up the Sunday breakfast (waffles, pancakes, or crêpes).
I don't often take much action to follow-up on these ideas. Today is different. Today I am taking notes. Today I am actually doing something else than rambling in my heads. Today it is on paper. (And now digital.)
I have another project I would like to work on and I thought it was a perfect opportunity to finally push the "memos" online.
Of course plumbing is a pain: I just spent at least a full hour looking at DNS, NS records, static web hosting, and other unwieldy concepts. I ended up pushing the static files toa repository on SourceHut and using my domain with their hosting for now.
Now onto how to make it easier for me to publish… (Or should I simply spin-up an instance of microblog.pub?)
I am a big fan of the "reader mode" in Firefox. It couples a gentle sepia tone with distraction-free content, great for long pieces of text.
It turns out that you don't want to forget the basic HTML metadata such as author in the page header.
I already planned for a couple of features for a next version. Tags are well recognised in the blogosphere, they are a dynamic free-form of grouping articles together by themes.
Let's take a sneak peek at what it could look like with the current stylesheet.
It's not only for nerds but the facts speak for themselves: there is a"classless" version that simply styles all basic HTML tags. No additional classes needed.
Now, I am trying to tweak a few things such as aligning the date-stamp to the right.
I neither want nor need something complicated. Since the idea is to have aminimal engine to publish byte-sized content every now and then, I want to follow suit with the styling and not spend countless hours trying to get it perfect. It has to be simple, and easy to implement. (Wishful thinking!)
I will certainly look into minimalistic CSS solutions out there. I have almost no skills in that area and I know how painful it is to test and have it right. Been there, done that.
After a decade or two, I am back to hand-crafting an HTML page.
Today, I am prototyping the very page of this project: a list of memos. (That is so meta.) It turns out bare HTML is still as easy as pie, styling is the real deal.
I like the concept of leaving a log of short entries on a regular basis.
I am not so good at publishing blog posts frequently, somehow the barrier is too high for me.
Let's try with a shorter form, and also because it's fun to explore project ideas.
Stand-alone, short, and sweet entries following the idea of micro-blogging, but why follow the arbitrary limit of 136 characters? I will keep them short but that's because I want to.