Piero V.

Retrocomputing a bit with Windows 2000

Many years ago, I had some old machines, and I wanted to play with them to test Skolelinux’s capabilities in a small network. I decided to install Linux on some and Windows on others.

I must have thought that one of them was particularly old, and I decided to install Windows 2000 on it. But the real reason might have been that it was one of the few Windows versions I had never played with 😜️.

Then the whole project stopped because I did not have enough peripherals. Moreover, it would have continued for a few days, and I did not have room to occupy for a long time.

But as you may know, sometimes I get a desire to experiment with antique software. And a while ago, I remembered I still had never played with Windows 2000.

Testing it in a virtual machine

Virtual machines and emulators are a great tool to experience old software again. They can even add some isolation for improved security.

A pair of years ago, I tried to install Windows 98 into a VM, but it gave me some trouble, especially with the display drivers. I have tried again with DOSBox-X, and it was a much simpler experience. … [Leggi il resto]

hubiC as a Duplicity backend in 2022

Warning: these instructions are given without any warranty.

If you decide to follow them, you are on your own, and it is your responsibility to verify that everything works as expected.

I do not take any responsibility for data losses or any other consequences.

TL; DR

Duplicity supports Rclone as a backend, and Rclone is compatible with hubiC in turn.

First, follow these instructions to configure a hubiC remote in Rclone.

Then pass something like rclone://hubic:/your-backup-container to Duplicity as a target.

Notice the second colons! Firstly, I missed the second one, and it did not work for this reason.

Also, notice the lack of a trailing slash: if you add it, the first backup will succeed, but the following ones will fail.

Fortunate and unfortunate coincidences

You know they say «💩️💩️💩️💩️ happens.». For example, data centers catch fire.

That happened last year to OVH, and my VPS was hosted at the said data center. … [Leggi il resto]

Certificate auth on WeeChat with a passphrase

In the latest months, I have been using IRC almost daily.

Before, I had used it only a few times. I only knew that this protocol is old, actually older than me 😄.

And I immediately saw that it lacks many of the features of modern systems.

Certificate authentication

One above all is registration and authentication. Many networks implement it through the NickServ user.

However, the authentication would involve sending the password as a message. Therefore, another mechanism based on a self-signed certificate is often preferred.

I am on OFTC, and t hey have a guide, which I initially followed (except for the algorithm: I changed rsa:2048 with ed25519).

Beware that this command does not ask for a passphrase! This was good enough for me since I was running HexChat on my PC, on which I use full-disk encryption.

You may want to encrypt the private key instead, and it is best to do it at the creation time.

Offline messages

But sadly, IRC does not have a feature that many (me included) take for granted today: offline messages. … [Leggi il resto]

Constructive Solid Geometry in JS

From time to time, I like playing with 3D graphics, especially from a programmer’s point of view.

Constructive solid geometry, or CSG, is a modeling technique involving combining simpler objects with Boolean operations to obtain more complex ones.

A while ago, I found an implementation as a JavaScript library: CSG.js.

It really is brilliant because it is a complete tool in less than 600 rows, half of which are explanatory comments.

Its foundations are the clipping and the inversion operation. The former removes parts of a BSP tree inside another BSP tree, the latter swaps solid and empty space.

CSG.js combines them cleverly to implement Boolean union, subtraction, and intersection.

Even from a software engineering perspective, its author made some acute choices. And as a result, this project did not need to be updated in the latest ten years!

For example, library users can implement vertices with custom properties thanks to duck typing. They just need to implement a few methods and have a pos member. In this way, it is possible, for instance, to manage texture coordinates. … [Leggi il resto]

Linux cryptsetup and rEFInd

TL; DR: create a /boot/refind_linux.conf file with the following content:

"Boot with standard options"  "root=UUID=uuid-of-unencrypted-root-partition ro cryptdevice=UUID=uuid-of-luks-partition:volume-name:allow-discards quiet"
"Boot to single-user mode"    "root=UUID=uuid-of-unencrypted-root-partition ro cryptdevice=UUID=uuid-of-luks-partition:volume-name:allow-discards quiet single"
"Boot with minimal options"   "root=UUID=uuid-of-unencrypted-root-partition ro cryptdevice=UUID=uuid-of-luks-partition:volume-name:allow-discards"

The rest of the article is a nice story about why I needed this 😄️.

More fast storage!

I built my current desktop two years ago with the first money I earned during my internship. So, I was on a budget, and cheapening on the storage is always a way to save some bucks.

Therefore, I bought a WD Black 250GB SSD to dual boot my systems and a 2TB hard disk for the data.

Recently I changed job, and now I use my personal desktop to work. And I need more fast storage.

So, since I was already upgrading, I finally switched to full-disk encryption and btrfs. … [Leggi il resto]