Acceuil | Blog | Changelog | Ressources

Blog


Les souvenirs comme méta-données

Dans Libration de Becky Chambers, Sidra, une IA dans un “kit” humain (un corps humain artificiel), est confrontée à un problème de stockage. A chaque fois qu’elle fait une expérience nouvelle, qu’elle télécharge et regarde une vidéo, qu’elle lit un texte, elle est obligée de supprimer un autre fichier de sa mémoire.

Cela provoque en elle une grande détresse. Un ami lui conseil d’arrêter de vouloir conserver tous les fichiers, et à la place, conserver uniquement un e trace écrite de son “souvenir” du fichier. Par exemple, lorsqu’elle supprime une vidéo, noter dans un fichier texte le nom de la vidéo et pourquoi cette vidéo était importante pour elle, dans quel contexte elle l’a regardé… En fait il s’agit d’écrire des méta-données. Ces méta-données peuvent être purement objectives, mais aussi émotionnelles (“lire ce texte m’a rendu triste”) ou contextuelles (“je l’ai lu un soir d’hiver”).

Une personne racontait dans un magazine de dessin que dessiner était pour elle une manière de se détacher des objets dont elle avait du mal à se séparer. Par exemple si elle hésite à donner une paire de chaussure qu’elle aime bien, elle va la dessiner avant de s’en débarrasser afin d’en garder un souvenir. Le dessin ici est une sorte de méta-donnée de l’objet.

On voit souvent les méta-données comme des informations neutres et objectives sur des données. En fait, selon Wikipedia,

Une métadonnée est une donnée servant à définir ou décrire une autre donnée, quel qu’en soit le support (papier, électronique ou autre).

On peut donc tout à fait considérer des méta-données “personnelles”, qui sont subjectives et décrive l’expérience que la personne a eu avec l’objet, en plus de l’objet lui-même. Que l’on soit humain ou machine, ces méta-données permettent de garder des “souvenirs” des objets.


Réseau d’approvisionnement, logiciel et modularité

L’article See no Evil de la fantastique revue logic.mag parle des chaînes d’approvisionnement et fait des liens avec le monde du logiciel.

D’abord, qu’est-ce qu’une chaîne d’approvisionnement ?

En gros, la chaîne d’approvisionnement d’une entreprise c’est l’ensemble de ses fournisseurs, et des fournisseurs des fournisseurs, etc.

Comme le note l’article on devrait plutôt parler d’un réseau d’approvisionnement. Car on est loin d’une structure en chaîne où l’approvisionnement est linéaire comme suit:

Entreprise A -> Entreprise B -> ... -> Entreprise Z -> Vente du produit final.

On aurait plutôt une arborescence inversée, où certains fournisseurs peuvent se substituer à d’autres en cas de pépin:

    Entreprise A \
    Entreprise B  ---- > Entreprise D \
    Entreprise C /                     \
                                         --- > Entreprise E -> Vente du produit final.  
    Entreprise A' \                     /
    Entreprise B'  ---- > Entreprise D'/
    Entreprise C' /

Cette structure mobile souvent très profonde fait qu’il est très difficile de savoir pour une entreprise, d’où proviennent ses intrants. La mondialisation fait aussi que les fournisseurs sont très loin les uns des autres.

Certaines entreprises disent pouvoir garantir certains critères de qualités, sociaux et écologiques, c’est super. En réalité c’est très difficile à faire, car il faut s’assurer que ces critères soient respectés sur tous les nœuds du réseau.

Si c’est un si gros bazar, comment ça peut marcher ? Comment, devant cette complexité, arrive-ton tout de même à acheminer les biens sans se perdre dans la complexité ?

La modularité

Le conteneur est un symbole de la mondialisation. Et en effet, c’est l’invention qui a permis ce développement gigantesque des chaînes de production. L’idée est simple, on a des marchandises, et on les mets dans une boîte. Sur la boîte il est écrit où elle doit être transportée. L’intérêt est qu’on a pas à se soucier de ce qu’il y a dans la boite, on a juste à l’amener à bon port (à condition qu’elle ne tombe pas dans mer !). Chaque acteur de la chaîne du réseau d’approvisionnement n’est exposé qu’a l’information dont il a besoin.

C’est ici qu’est fait un parallèle avec le logiciel. La modularité est un concept important en programmation, notamment en programmation orientée objet. L’idée est de mettre le code dans des boîtes, pour interagir seulement avec les boîtes, peut importe comment la boîte est foutue dedans. Vous voyez le lien avec le conteneur ?

Pour donner un autre exemple, je crois avoir lu quelque part une métaphore de la programmation orientée objet avec les machines à café. Quand on fait un café sur une machine Nespresso, on la laisse faire sa tambouille interne, on lui demande : “fait un café” et elle fait un café. C’est modulaire.

Une cafetière “normale” n’est pas modulaire, il faut mettre l’eau dedans, puis le café, puis le mettre sur le feu, allumer le feu, etc.

Alors où je veux en venir avec mon café ? La modularité c’est l’idée de mettre la complexité dans des boîtes, pour ne pas avoir à interagir avec cette complexité à chaque fois qu’on utilise la boîte.

Selon l’article, la modularité est une caractéristique essentielle de la modernité. Voilà.

Et alors ?

L’article s’arrête là. Mais et après ? Qu’est-ce qu’on peut en conclure de ça ?

Le mécanisme qui sous tend la mondialisation et la complexification des réseaux d’approvisionnement s’appuie sur la même “méthode” que le développement logiciel. Est-ce qu’il faut s’attendre aux même horreurs qui sortent de la mondialisation dans le développement logiciel ? A priori je dirai non, parce que la programmation orientée objet c’est cool. Mais c’est comme demander à Amazon ce qu’elle pense de la contenarisation, elle trouve ça cool bien sûr.

Alors posons plutôt la question : est-ce qu’il y a des effets indésirables de la modularité dans les logiciels ?

Peut-être. Il y a un problème de “bloat” logiciel et web. C’est à dire que les logiciels, même pour faire des tâches simples, ont une taille énorme. Est-ce que ce problème n’est pas le fruit de cette modularité ? Si on avait pas des couches modulaires et indépendantes les unes des autres, on serait forcé de considérer toutes la chaîne logicielle dans son ensemble, ce qui forcerait à la garder à une taille raisonnable. Au lieu de ça on a des logiciels qui tournent sur des couches de millions de lignes de code pour nous afficher des recettes de cuisines… A méditer.

Par contre la modularité c’est aussi ce qui a permit Internet. Le système des paquets, ressemble beaucoup au système des conteneurs. Et c’est dur de dire du mal du fonctionnement d’Internet quand même… ou bien ?


Pourquoi tenir un blog ?

Commencer ce blog n’était pas une décision facile.

D’un côté je voudrais partager des contenus que j’écris. Cela pourrait me permettre d’interagir avec d’autres. Je pourrais aussi tenter de procurer à mes visiteurs le même plaisir que j’ai moi-même ressenti en parcourant des blogs intéressants.

D’un autre je déteste l’idée de me mettre en avant. Il y a un côté narcissique à vouloir partager ce qu’on écrit. J’ai l’impression de vouloir répondre à un désir malsain.

Cependant le narcissisme n’est pas forcément une mauvaise chose. Dans le podcast ‘Psychalanyse du web’, dans lequel un psychanalyste explique que le narcissisme était une étape nécessaire de la construction de soi. Le problème est quand ce narcissisme amène à une mise en concurrence ou à de l’agressivité. Je ne pense pas qu’un blog comme celui-ci me mène à ces problèmes.

Ma deuxième peur est de toujours attendre le retour des autres sur ce que j’écris. C’est un mécanisme qui est intégré dans Facebook, avec les likes, mais aussi dans les système de commentaires. Mais ça c’est un problème facile à régler, il suffit de n’avoir aucun mécanisme de retour direct. Je renseigne quand même mon mail, qui permet d’avoir de converser de manière moins publique mais tout aussi performante.

Voilà, je me lance donc. Je compte en faire une aventure longue, irrégulière et erratique. Il y aura de longues pauses et des changements d’apparence. J’espère que je ne changerai pas d’avis trop vite qu’il restera là longtemps. En attendant, bonne lecture… :)