Holy-Days experiments 🌊 🌴 🌞 (Installing TempleOS/Holy-C on VirtualBox)

This post is mostly instructions on how to install the Temple OS on Debian using VirtualBox. Temple OS is an operating system written from scratch by Terry A. Davis in order to make programming and the creation of games more fun. Its shell is a Holy-C compiler where users can write commands in Holy-C and see the generated assembly. Temple OS lacks networking and security. Every program runs in ring-0 mode, which means that it has full access to the hardware. This is on purpose, “because it’s fun”. As Terry said, he didn’t want to write another UNIX and his goal was to create a modern Commodore64-like OS where the users can start writing code immediately after boot. If you are not familiar with the Temple OS and Terry A. Davis’s story, you can check the links at the end of this post.

Continue reading Holy-Days experiments 🌊 🌴 🌞 (Installing TempleOS/Holy-C on VirtualBox)

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

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

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.