Serge Brussolo : immersion totale

Lire un livre de Serge Brussolo, c’est comme écouter le requiem de Mozart ou regarder un film de Stanley Kubrick. Dès les premières lignes (les premières mesures, les premières images), on est dans un autre monde. Il n’y a pas le temps d’adaptation nécessaire en général à passer de la réalité à la fiction.

Tous les livres de Brussolo ne se valent pas bien sûr. Certains sont même de purs ratages — cependant toujours rattrapés par de véritables chefs d’œuvre. Mais quel qu’il soit, un livre de Brussolo garantit ce dépaysement total, cette noyade dans des mondes oniriques. Le génie de Brussolo, c’est ça ! C’est l’incroyable capacité qu’il a, dans un style dépouillé et riche à la fois, de nous emmener dans ses fantasmes, au plus profond de son moi.

Brussolo, c’est l’immersion totale. Encore plus qu’une évasion du réel, un autre réel semblable au réel des dieux : une invention humaine qui se met à vivre par elle-même.

Advertisements

Tabular display in Linux terminal

A command I like in Linux is ‘column’. It allows the display of ordered data (typically CSV) in a tabular way in the Linux terminal.

For example, assume you have the following file:

$ cat data
server|location|usage
mars.example.com|New York|web
saturn.example.com|Beijing|database
mercury.example.com|Sidney|nosql

You can display this file nicely as follows:

$ column -t -s '|' data
server               location  usage
mars.example.com     New York  web
saturn.example.com   Beijing   database
mercury.example.com  Sidney    nosql

-t indicates that we want tabular display and -s specifies the separator we use. I like to use the pipe (‘|’) as data separator, but usually the semi colon (‘;’) is used for CSV data.

Why no busybox for Android

I found out why there is no busybox by default on Android. It looks like it is for licensing reasons. On the Android command line, the all-in-one executable used is toybox as it is under the BSD license whereas busybox use GPL v2.

The little drawback of this situation is that toybox is not as feature complete as busybox. For example, it is lacking the vi editor. There is not even ed to quickly edit a file.

In the end this is not the biggest issue as there are so many busybox installers around. But I also find it a shame that for non technical reasons we have less functionalities. That’s not what open source is supposed to be about.

Poor Man’s Service Starter

There are situations where there is no easy init system on a box. Most of the time, it is because we are dealing with cheap VPSes which don’t even have enough memory to run systemd. However, you want to do a simple and straightforward thing : start a light service.

sysvinit is a very good service starter, but not really suitable as far as user services are concerned. You wouldn’t start your HTTPD by putting an entry in /etc/inittab. You could write rc scripts, which time consuming if you want to do things right. Or, you could install so-called service managers a.k.a. process supervisors. But there is a simpler solution : use plain old cron.

In a crontab, instead of the “5-star” field, use “@reboot” and you’re done. For example :

$ crontab -l
@reboot /path/to/service

Please note that it works very well on Red Hat and associated distros (CentOS…) But it seems not to be the case in other environments. Anyway, give it a try!

Compiling vim on a Raspberry Pi 3

Just for the fun of it and in order to test my newly acquired Raspberry Pi 3, I ran the compilation of vim on it to see how its quad-core arm 64-bit processor compares to my main PC Core i5.

For reference, this is the set of commands I ran on both machines :

$ git clone https://github.com/vim/vim
$ cd vim/src
$ ./configure --prefix=/opt/vim --with-compiledby=lyderic --with-features=huge
$ time make -j 4

On the Intel Core i5 PC, this took 33 ½ seconds. It is not a super fast CPU but a low-power i5-5250U that runs at 1.60GHz (my desktop is an Intel NUC).

On the Raspberry Pi, the compilation was achieved in a little more than 2 minutes.

That said, I found that running the Raspberry Pi as a desktop computer, although not as smooth as a current desktop PC, is convincing. It was not really usable until the last iteration (Model B 2), but now, it seems to be there.

Etudes Rebatiennes

Si vous vous intéressez à Lucien Rebatet, je vous conseille le site « Etudes Rebatiennes. » Il contient entre autres un bibliographie complète.

Bien qu’il semble que tout Rebatet soit contenu dans Les décombres, dans Les deux étendards et, accessoirement, dans Une histoire de la musique, la bibliographie est en fait plus fournie que je ne le pensais. Elle mentionne par exemple un recueil de correspondance avec Louis-Ferdinand Céline publié chez Gallimard en 2005.

On y trouve également des extraits de la radioscopie de décembre 1969 de Jacques Chancel, dont on peut maintenant écouter l’intégralité sur YouTube.

Langues universelles

Avez-vous remarqué comment certains héros ont toujours la chance de tomber sur quelqu’un qui parle leur langue, quel que soit l’endroit du monde où ils se trouvent ? Prenez Tintin par exemple. Que ce soit au fin fond de la Chine, en Inde, en Amérique (du nord ou du sud) il n’a jamais de problème à communiquer en français. Dans la série Star Trek New Generation, c’est au niveau galactique que cette incroyable coïncidence se produit en permanence. Les aliènes y parlent partout anglais sans problème.

D’autres héros sont moins chanceux, leur créateur respecte davantage le réalisme géographique. Ainsi Bob Morane ne dispose pas d’une langue maternelle à l’universalité arrangeante. Mais ce n’est pas un problème pour lui : en plus du français, il parle anglais, espagnol et se débrouille en russe, en arabe. Dans les pays asiatiques, les différents pidginslui sont rarement inconnus.

Autre cas de figure : les héros ne parlent qu’un langue, mais celle-ci est réellement universelle. Par exemple, dans la Compagnie des glaces, le chef d’œuvre fleuve de Georges-Jean Arnaud, l’action se déroule dans un futur où la quasi-totalité des habitants de la Terre ont adopté la même langue.

Finalement, il y a les cas où les personnages sont confrontés à des langues différentes mais il n’ont aucun don de plurilinguisme. Comment communiquent-ils alors ? Simple. Ils disposent de traducteurs automatiques ! Ainsi en est-il du « babel fish » dans « Le guide du voyageur galactique » de Douglas Adams, un appareil bizarre qui ressemble à un limace et se glisse dans l’oreille.

Informaticien littérateur

Camille, la compagne — occasionnelle — de Adamsberg, dans les romans de Fred Vargas, est un de mes personnages littéraires préférés. Vargas en a fait une musicienne plombière. Deux professions qui ne se marient pas a priori. Cela rappelle un peu Ragueneau, dans Cyrano de Bergerac, le rôtisseur poète.

Ces oxymores ont pour but un effet comique, je suppose. Mais ils peuvent occasionnellement se trouver dans la vraie vie. Ainsi moi, je me vois comme un informaticien littérateur. Je suis autant passionné de machines, de réseaux, de logiciels que je suis fasciné par la langue, par la pensée, par la beauté littéraire tout simplement. Dans ces deux disciplines, ces deux arts, je vois deux formes d’abstraction qui me transportent, chacune à sa façon.

Je ne sais pas s’il y a beaucoup d’informaticiens littérateurs ou d’écrivains informaticiens. Certainement, si je regarde autour de moi, j’ai l’impression d’être un exemplaire unique. Ce sentiment est assez étrange et un peu déroutant. A tel point que longtemps, j’ai essayé de choisir. Je me disais que la logique dicte que les « littéraires » ne peuvent pas être des « matheux ». Maintenant, je sais que je ne parviens pas à être uniquement l’un ou l’autre. Et cela me convient très bien.

Do you need Docker if you have JARs?

I am currently playing a lot with Docker and I really like it, weird as it is for a seasoned sysadmin like me. Once you have solved the init PID1 problem (which is easily done with Alpine and Busybox’s init), then Docker is a convincing technology for many use cases.

But I still fail to really appreciate the need for it if all you use are single, fat, executable JARs.

I build all my application as single JARs. The only dependency I have is the JVM and really, it is not too difficult to keep it current accross all your machines, being metal, KVM or OpenVZ, especially with the help of puppet. So… what are the benefits of encapsulating an executable JAR into a Docker container?

If things are carefully designed using technologies like Spring Boot, your micro service fits altogether in one JAR and an appropriate application.properties should suffice to run the beast.

On the other hand, Docker is very well suited for some scenarios. For example if you use python 3 and all the host offers is a python 2 interpreter, if you have separate dependencies and so on.

But as far as JARs are concerned, I will stick to no Docker for the moment.

base64 images in HTML pages

I have found out that it is possible to embed images in a HTML page as base64 strings! I like the idea of having everything as text. I use it to display the favicon on the front page of my web site.

This is very easy:

Convert your favicon to base64:

$ base64 -w 0 favicon.ico

The -w switch is to have the whole string as a single line.

Include this entry in the <head> section of your HTML page:

<link href="data:image/x-icon;base64,AAABAAE...fAAD//wAA" rel="icon" type="image/x-icon" />

I cut the base64 string a little for better visibility.

Another cool use of base64.