Piero V.

Zbar, GTK and Python 3

Last week, we had Hackweek at Tor. Instead of doing what we usually do, we worked on small Tor-related projects for 5 days. I chose to work with intrigeri and boyska from Tails to help them improving the pluggable transports on Tails.

There are several ways to get Tor bridges. One is requesting them to BridgeDB through email. The answer contains the bridge lines both as text and in a QR code. So, the first objective of our Hackweek team was to create a proof-of-concept to load these QR codes through a webcam.

Tails’s connection wizard is written in Python. A trivial approach is capturing frames from the webcam with OpenCV, then decoding them with pyzbar. This would have worked, but Tails is a live system, and an OpenCV installation requires a lot of space.

I soon discovered that OpenCV is the de facto way to deal with webcams in Python. I have tried some other alternatives, but they did not work. I have also tried to use a low-level approach based on the V4L2 API. But dealing with the conversion of color spaces and creating a generally reliable solution is burdensome. … [Leggi il resto]

WebRTC on the server side with Pion and FFI

WebSockets and WebRTC

At the beginning of the year, I played a little bit with WebSockets and Rust. I tried to create a backend for a browser game implemented with Three.js.

However, things did not work very well. A friend and I did some tests, but his connection was underperforming, which is actually an advantage for testing. Its delays were very high, packets kept accumulating and being applied all at once. Moreover, I had implemented everything with unbounded queues. Therefore, the server program running on my PC occupied several GB of RAM at a certain point. Good thing we found all these problems soon.

The first suggestion you find when you start programming multiplayer games is that you should use UDP if you can. So, I finally decided to try WebRTC.

I soon discovered that WebSocket and WebRTC are completely different. The former is a protocol for full-duplex communication, usually between a browser and a webserver. The latter is a series of APIs for real-time communications, and spans from media capture, streams, screen sharing to data channels, which is the capability I was interested in. … [Leggi il resto]

Firefox 100

A long time has passed since the last time I have written about a software version update. And I published the last one about Firefox almost 10 years ago.

But this is a special occasion: last Tuesday, Mozilla published Firefox 100. So, congrats, Mozilla! 🥳️🎉️

Now that I think of it, Firefox is the first open source software I have ever used and probably the program that introduced this concept to me. It also “saved” me from Internet Explorer 6 and taught me that the web must be developed following standards.

The first version of Firefox I used was either 1.5.0.x or 1.0.x. Many, many years have passed since then.

Now I have a job tightly connected to Firefox and to Mozilla. This allowed me to contribute back, at least in a tiny way, and it was acknowledged in Firefox 97 release notes, which makes me super happy! (Even though, to be completely honest, that effort was not only mine but also of other Tor community users).

We need Firefox because only alternative and independent browser implementations can guarantee freedom and openness to all web users.

So, thanks, Mozilla, and long live Firefox!

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.


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]