Claws-mail: a trick to view the patches as side-by-side diffs

One thing that I find very tiring when I read the Mesa3D mailing list for my work at Igalia , is to read the patches that arrive as emails: they are too many and the mail clients do not highlight them. So far, I was using the thunderbird mail-client with the colored-diffs plugin that made them more readable, but it was quite slow and was breaking the appearance of the e-mails that were replies to a patch. Since, I never was a big fan of thunderbird (the list of the things I disliked about it was always longer than the list of the features I liked) I wanted to find a way to have the colored-diffs and the lightning plugins functionalities to a more lightweight gui-mail-client: the claws-mail.

Continue reading Claws-mail: a trick to view the patches as side-by-side diffs

Install/Update LetsEncrypt certificates (no-root, apache2, debian)

It seems that the certbot, the recommended script to install and update the LetsEncrypt certificates requires root permissions. Well, I found several tutorials and forums where people claimed that they ran it without root permissions but they all said they needed root permissions to do something else for certbot to work and then I ran this simple command:

and decided to give up and search for an alternative method. 🙂

Continue reading Install/Update LetsEncrypt certificates (no-root, apache2, debian)

Debugging graphics code using replacement shaders (Linux, Mesa)

Sometimes, when working with the mesa drivers, modifying or replacing a shader might be extremely useful for debugging. Mesa allows users to replace their shaders at runtime without having to change the original code by providing these environment variables:

Continue reading Debugging graphics code using replacement shaders (Linux, Mesa)

Creating cube map images from HDR panoramas on GNU/Linux

As part of my work for Igalia I wanted to do some environment mapping. I was able to find plenty of high quality .hdr images online but I couldn’t find any (OSS) tool to convert them to cubemap images. Then, Nuclear (John Tsiombikas) gave me the solution: he wrote a minimal tool that does the job quickly and produces high quality cube maps.

So, here’s a short “how to” create cubemaps on Linux using his “cubemapper” program in combination with other OSS tools:

Continue reading Creating cube map images from HDR panoramas on GNU/Linux

A helloworld kernel module

Today, I experimented with the linux kernel modules for the first time and I’ve written a simple module that prints a message (helloworld :P) every time that someone reads from the /dev/ktest (a custom character device) and counts how many times the device was opened for reading.

Continue reading A helloworld kernel module

Share your data files quickly using the python SimpleHTTPServer

Before the cloud era, people used FTP and HTTP to exchange big data files… TIL how to setup quickly a temporal HTTP server to share my files with people out there with 1 command… (thanks fuzz!)

Continue reading Share your data files quickly using the python SimpleHTTPServer

SSH tunnel για MySQL connections

Ή αλλιώς: Πώς μπορούμε να συνδεθούμε σε μια remote database με τον ίδιο τρόπο που θα συνδεόμασταν στο localhost κάνοντας ssh tunnel.

Βήμα 1: Tunnel setup

Στην παραπάνω εντολή το 9999 είναι ένα τυχαίο port του local μηχανήματος στο οποίο θα κάνουμε mirror το remote port. Το 3306 είναι το port στο οποίο δέχεται connections ο remote SQL server. Το 22 είναι το port του ssh.

Βήμα 2: Connection

Συνδεόμαστε όπως θα συνδεόμασταν αν η database ήταν στο localhost δίνοντας το port του local μηχανήματος στο οποίο κάνουμε mirror το remote port στο βήμα 1 (εδώ το 9999).

και done 🙂

How to create a gbm buffer under X.

To create a GBM buffer you first need to create a drm device and then use its device descriptor to create a gbm device. To do this under X you need a way to tell xserver which device you use to avoid permission issues. Here’s an example where I create a gbm buffer under X and then authenticate to the X server:

Continue reading How to create a gbm buffer under X.