etre cyborgs avant de devenir geriborgs

cyborgs

l'auteur et son exosquelette

l'auteur et son exosquelette

Sous l’éclairage par exemple de Clive Thompson (ici ou ), nous sommes nombreux à être des cyborgs. Disons, dès lors que l’on excelle à une tache par le biais d’un outil semi-cognitif. Egalement avides de sensationnel, on louche également sur les athlètes à prothèse dont les performances se rapprochent des athlètes entiers (intègres ?).
A son origine le cyborg, cybernetic organism, se permet l’usage aussi bien d’extensions ou de remplacements mais aussi du cortège de drogues nécessaire à son aboutissement. Il est également issu et intégré au complexe militaro-industriel. Or avec ces nouveaux éclairages il est plutot du ressort de notre quotidien : sans avoir pour autant réellement incarné ces extensions, beaucoup en sont munis de l’éveil jusqu’au coucher. Je me souviens de mon premier choc, vite passé, en voyant quelqu’un soliloquer avec conviction et véhémence au milieu d’une place publique, qui n’était qu’un simple usager de son kit “mains-libres” …
Donc voilà, avec internet via le moindre téléphone portable, avec au minimum l’accès à un espace de mémoire et de connaissances plus ou moins bien classées, nous sommes des hommes étendus, disons au minimum “homo-connecticus”, des cyborgs en puissance donc.

geriborgs

L’étape suivante implique quelques brisures sociales, qui sont déjà en place depuis longtemps. Disons qu’elle nécessite de vouloir les consolider avec un certain jusqu’au-boutisme. Je n’ai aucun doute que certains le tenteront, il s’agit du geriatric-cyborg, le geriborg. J’ai été plutôt étonné de ne pas trouver grand chose avec les moteurs de recherche. Depuis la lecture de cet article de la revue C-theory, j’avais fait mien ce mot, par exemple pour railler les impressionnants efforts des mes ainés quand ils consolident leurs positions dominantes, surtout quand il s’agit de leurs apparences (prototype : Karl Lagerfeld).

Combien succomberont ?

Leave a Reply

I fixed the Lomo ... click if you dare.

réparation de la Lomo

I fixed the Lomo ... click if you dare.

A l’occasion d’à peu près ses douze ans, j’ai réparé la lomo. Ca doit être grosso-modo ma quatrième réparation : en effet cet appareil photo russe a une facheuse tendance à perdre ses vis. Bien sûr, les séjours répétés au milieu des grains de sable n’aident pas non plus, et je l’ai déjà entièrement démontée-remontée après un grippage total, ce qui lui a réussi. Sans que je n’ai rien trouvé à expliquer, d’ailleurs.

C’est un appareil extraordinairement attachant, jusque-là le seul qui m’ait fait ressentir à ce point la captation de lumière, ce qui est le rôle premier d’un appareil photographique. Tout ce qui doit être absorbé, il l’absorbe. Un peu gauchement éventuellement : son optique a une projection qu’on a bien du mal à définir, il y a ce vignettage que tant de personnes essaient de reproduire (le vignettage est plutot généralement ressenti comme un défaut) : une recherche “lomo” sur flickr donne au moins autant de resultats de personnes reproduisants les défauts ou effets lomo que des lomos (photos prises avec une lomo).

Mais en terme d’exposition, il se remplit de toute la lumière nécessaire ; je m’explique ce phénomène par la mystérieuse cellule et l’electronique qui l’entoure, en particulier le fait de continuer à compter la lumière entrée pendant l’exposition proprement dite quitte à raccourcir ou prolonger la fermeture de l’obturateur.

le sachet de vis de l'opticien

Réparer cette lomo permet de scruter sa simplicité, son efficacité. C’est aussi un principe, à l’heure où, comme le faisait remarquer mon voisin, il est moins cher d’acheter une brouette neuve que d’en changer le pneu, c’est aller sainement à contre-courant. La première fois que je l’avais réparée c’était à force de repasser devant une boutique sans enseigne où quelqu’un vissait toute la journée des montres moches. Il avait bien voulu léguer quelques vis. Depuis, le stock de vis avait fondu et donc le dernier décoinçage  s’était achevé avec un boitier qui fonctionnait mais ne tenait qu’à moitié. Dix ans plus tard trouver les même vis est carrément difficile, pas un réparateur d’appareil photo connu dans la région. Les horlogers ne réparent plus ou seulement le plus valable et ce sont alors des vis beaucoup plus petites. En passant voir un grossiste pour horloger réparateurs, celui-ci me dit que tout les réparateurs disparaissent et que l’avenir de son commerce réside précisement dans ces disparitions, il a la ferme intention de durer au-delà de ses concurrents, il y est probablement déjà arrivé, il a son monopole. Mais pas mes vis.

En fin de compte l’idée est venue en nettoyant mes lunettes : là au coin de la charnière, quasiment la bonne vis ! Donc voila, pour ce genre de réparation, la matière première se trouve chez n’importe quel vendeur de lunettes. Enfin au moins tant que le procédé de vissage de ces charnières ne sera pas remplacé.

[edit] j’ai également rallongé le relicat de déclencheur (qui tombe, lui aussi) avec l’arrière d’un porte mine en plastique.

réparation de la Lomo

des boutons qui tournent

le bon code dure

A l’occasion des vacances je me ré-essaie à faire du bruit. Et au détour d’installations de plugins modernes divers je me suis rendu compte qu’une appli qui m’avait vaguement lachée lors du passage au 64 bits, marchait en fait toujours et que le bug était ailleur ! Justement au dessus du bug il y avait un commentaire de moi disant clairement que c’était inutile et que ça buguerait un jour, bref …

Donc j’ai nettoyé, le strict minimum car ce code de 1998 va prendre le statut de relique, mais toujours est-il que ca se compile et que moyennant un petit coup de padsp devant, ca fait toujours du bruit, un poil desuet peut-être aujourd’hui :

groovit – making accurate noise.

des boutons qui tournent

Un tracker en mode texte, avec des voix analogiques et des filtres analogiques dynamiques. Enfin, “analogique”, en émulation numérique disons … Conçu pour les machines de l’époque, en particulier les portables de l’époque, il fallait faire avec peu de moyen (au propre comme au figuré). Ce qu’il y a de rigolo c’est que finalement le code est fiable, ca ne plante pas, même au bout de plusieurs heures de labeur. Ca intrigue également : les enfants veulent tous savoir ce que c’est et s’ils peuvent y jouer. De bons moments en perspective …

Faites du bon code, il ressort toujours a un moment ou l’autre !

le bon code dure

many users - one machine

multiseat linux : system-wide pulseaudio for routing sounds

When using a multi-seat linux – multiseat : I really mean there are several users using one machine with numerous keyboards, mice and screens, each user having its own X at the same time – it used to be rather difficult to route sounds towards the proper output devices, or even to share the (very often only) available sound card ; pulseaudio system-wide daemon is an elegant solution …

Obviously any process wants its  own sound device. That’s why sound servers were introduced after the inititial oss design. From the past, I used to tweak multiseat configs a lot with every last trend of sound servers, oss, esd, alsa, even tried jackd which isn’t really suited for general use. Finally, when I switched from debian to ubuntu for desktop use, I took a glance at pulseaudio.

Pulseaudio has one main point against the others : it is ubuntu’s current choice and it comes with a rather simple and convenient front-end for setting processes sound-volume individually (pavucontrol – Pulse Audio Volume Control).

With the multiseat constraints, I could not get a decent stable system keeping the initial per-user design ; this document mainly details most tricks needed to switch from a per-user to a system-wide pulseaudio daemon.

/etc/default/pulseaudio

The system-wide daemon is started once for all at the starting of the machine by it’s /etc/init.d/pulseaudio startup script.

PULSEAUDIO_SYSTEM_START=1

/etc/group

One main trouble when sharing sound devices is all those old binaries that try to steal /dev/dsp one to each other, but the same trouble may occur on /dev/snd/*/* device files ; that’s why I finally choosed to

  • remove all users from audio group except pulse
  • put back all users into pulse-access group

this way, stealing to each other is much more difficult (though pulseaudio daemon is a setuid application so some more has to be done, see below).

/etc/pulse/system.pa

load-module module-alsa-sink device="front:Intel" sink_name=global
load-module module-remap-sink sink_name=big channels=2 channel_map=right,left master_channel_map=right,left remix=no
load-module module-remap-sink sink_name=small channels=2 channel_map=right,left master_channel_map=rear-left,rear-right remix=no
; those three lines permit splitting a unique common multi-channel sound card to a pair of stereo sinks
; one using the front jack, the other the rear output jack.

.../...

# pulseaudio system-wide deamon keep the sound card for himself ...
# load-module module-suspend-on-idle

/etc/pulse/daemon.conf

# on my box, 2.6.33 introduced some troubles around there ...
no-cpu-limit = yes
# this one is for enabling four channel on the global sink (for watching movies ?)
default-sample-channels = 4

/etc/pulse/client.conf

; don't let user launch pulseaudio deamons at need, there's already one
autospawn=no

/etc/profile.d/pulseaudio-client.sh

as the environment variable $PULSE_SINK takes precedence over global or file tunings, another entry into /etc/profile.d sounds efficient :

#!/bin/sh

# in oder to match a screen-set to a pulseaudio sink :
# pour le cas ou l'on veut faire correspondre a un terminal un canal pulseaudio :
if [ "$DISPLAY" ]
then
    if [ "$DISPLAY" = ":0" ]
    then
        PULSE_SINK="big"
    fi
    if [ "$DISPLAY" = ":1" ]
    then
        PULSE_SINK="small"
    fi
fi

this script has to be usable by anyone :

# chmod 755 /etc/profile.d/pulseaudio-client.sh

update all ~users/.asoundrc

I confess I’m not (yet) sure for that one, I should start over with a clean ubuntu to check about it, anyway it shouldn’t hurt much : for each user, play :

> asoundconf set-pulseaudio

in order to get a default alsa mapping to pulse.

~/.pulse/client.conf

Any user may have its own additional settings, but should take care of eventually erasing the $PULSE_SINK var if needed (for example, my children have sound following their seats whilst I always have the big loudspeakers).

default-sink=small
; probablement mieux de ne pas avoir de pulseaudio lancés par les users
autospawn=no

there we are

Eventually /etc/group changes won’t be effective before X-session endings, the system-wide daemon has to be launched after killing anything in the way to soundcards, but at this point things should work, no more “release the sound for me please” battleground !

multiseat linux : system-wide pulseaudio for routing sounds

l'auteur et son exosquelette

etre cyborgs avant de devenir geriborgs

cyborgs

l'auteur et son exosquelette

Sous l’éclairage par exemple de Clive Thompson (ici ou ), nous sommes nombreux à être des cyborgs. Disons, dès lors que l’on excelle à une tache par le biais d’un outil semi-cognitif. Egalement avides de sensationnel, on louche également sur les athlètes à prothèse dont les performances se rapprochent des athlètes entiers (intègres ?).
A son origine le cyborg, cybernetic organism, se permet l’usage aussi bien d’extensions ou de remplacements mais aussi du cortège de drogues nécessaire à son aboutissement. Il est également issu et intégré au complexe militaro-industriel. Or avec ces nouveaux éclairages il est plutot du ressort de notre quotidien : sans avoir pour autant réellement incarné ces extensions, beaucoup en sont munis de l’éveil jusqu’au coucher. Je me souviens de mon premier choc, vite passé, en voyant quelqu’un soliloquer avec conviction et véhémence au milieu d’une place publique, qui n’était qu’un simple usager de son kit “mains-libres” …
Donc voilà, avec internet via le moindre téléphone portable, avec au minimum l’accès à un espace de mémoire et de connaissances plus ou moins bien classées, nous sommes des hommes étendus, disons au minimum “homo-connecticus”, des cyborgs en puissance donc.

geriborgs

L’étape suivante implique quelques brisures sociales, qui sont déjà en place depuis longtemps. Disons qu’elle nécessite de vouloir les consolider avec un certain jusqu’au-boutisme. Je n’ai aucun doute que certains le tenteront, il s’agit du geriatric-cyborg, le geriborg. J’ai été plutôt étonné de ne pas trouver grand chose avec les moteurs de recherche. Depuis la lecture de cet article de la revue C-theory, j’avais fait mien ce mot, par exemple pour railler les impressionnants efforts des mes ainés quand ils consolident leurs positions dominantes, surtout quand il s’agit de leurs apparences (prototype : Karl Lagerfeld).

Combien succomberont ?

etre cyborgs avant de devenir geriborgs

on the way to C++ (unix-)daemons … : FILE* to iostream

Writing a unix daemon using C++, the idea might seem odd. But it’s desirable in many ways :

  • C++ provides a lot of methods which are inherently safe and neat regarding string treatments,
  • STL(sgi) provides a lot of nice containers, particularly the associative map,
  • convenient simple text input/output using iostream …

Now, coding a daemon implies a lot of very unix-native C details such as : properly detach from terminals, output some errors via syslog …

When one realises all those functionnalites have simple posix-C functions to take care of, a very convenient bridge from C to C++ is to bind a regular iostream to a FILE* descriptor.

Example : reading from a pipe using istream
The below posix-C function :

FILE *popen(const char *command, const char *type);

provides a very simple way to fork and read to (or write from) another process. The gnu iostream library documentation mentions some methods usable to turn FILE* into stream, but I would not say the said documentation made it straighforward. So here’s an example of such a pipe :

#include <errno.h>
#include <string.h>     // strerror

#include <iostream>
#include <ext/stdio_filebuf.h>  // __gnu_cxx::stdio_filebuf

using namespace std;

void filter_uggly_uppercase (istream &in, ostream &out) {
    char c;
    while (in && in.get(c)) {
        if ((c>='a') && (c<='z'))
            out << (char)('A' - 'a' + c);
        else
            out << c;
    }
}

int main (void) {
    const char *command = "find . -type f";

    FILE *f_pipe_in = popen (command, "r");
    if (f_pipe_in == NULL) {
        int e = errno;
        cerr << "error at piping from " << command << " : " << strerror (e) << endl;
        return 1;
    }

    // let's build a buffer from the FILE* descriptor ...
    __gnu_cxx::stdio_filebuf<char> pipe_buf (f_pipe_in, ios_base::in);

    // there we are, a regular istream is build upon the buffer :
    istream stream_pipe_in (&pipe_buf);

    // let's read from that pipe now, the usual way ...
    filter_uggly_uppercase (stream_pipe_in, cout);

    pclose (f_pipe_in);

    return 0;
}

on the way to C++ (unix-)daemons … : FILE* to iostream

instructions de pliage

les origines de l’inspiration

Et bien voilà ! après plus d’une dizaine d’années passées à publier de loin en loin des choses en html, directement sur le serveur qui héberge la page, dans un vi , j’installe un blog.

Si je réflechis bien, d’ailleurs, l’essentiel de ce que j’ai pu dire à l’aide d’internet est en fait plutôt passé par des mailing-lists ou des serveurs de news.

Pour commencer, puisque cet outil va donner une apparente unité à ce que je fais, j’ai décidé de mettre au propre un pliage qui, un jour s’était fait tout seul, comme-ça, entre mes doigts. J’étais surpris du résultat : en tout point cela correspondait à ce que j’avais cherché à faire sur l’instant. Un avion qui n’aurait pas l’habituel pli pile au milieu, une allure d’aile volante, une bonne tenue, et que ça vole !
Ou disons que ca plane trés calmement, à l’image du pliage.

air-glider pdf
Donc j’étais surpris : je ne passe pas mon temps à plier du papier. J’ai bien aimé en faire il y a longtemps, sur les chaises de l’école, où le papier abonde ; finallement ce que je note le plus c’est le machinal du geste, deconnecté de la pensée en cours, mais extrêmement appliqué. Bien aligner les bords l’un contre l’autre, etre ferme en laissant la souplesse du papier guider l’endroit ou le pli va tomber.

Et au final un jour un pliage se fait qui n’est pas la répétition d’un canevas appris, mais les morceaux de quatre ou cinq autres qui se sont heureusement assemblés pour matérialiser l’idée du moment. Je remercie mes enfants d’avoir suggéré cet instant. Immédiatement je l’avais mis de côté en me disant qu’il serait une bonne illustration. Je le livre aujourd’hui en exemple des élements qui vont j’espère peupler ce blogs : des morceaux, des détails, des regards, des gestes appliqués qui mènent aux créations. Pliez ! Améliorez-le ! Renvoyez-le moi !

les origines de l’inspiration