https://dynamicland.org

    • C’est un lieu magique où j’ai eu la chance de passer un week-end ("Game Jam") en septembre dernier.

      Bret Victor, qui a imaginé cet espace, s’inspire et veut reprendre des projets à la Xerox PARC, avec une visée essentiellement pédagogique.

      L’idée est d’explorer ce que devient l’informatique quand on supprime l’écran et le clavier, et qu’on les remplace par une caméra et des projecteurs, on supprime les fichiers de code et on les remplace par des feuilles de papier, on supprime les identifiants numériques et on les remplace par des gommettes de couleur.

      Un exemple : chaque fois qu’on édite un bloc de code, on obtient une nouvelle feuille de papier qui vient remplacer la précédente sur la table. On a alors plusieurs possibilités :
      -- conserver l’ancienne feuille sous la nouvelle ; alors on a un historique du code (versionning), qui permet de revenir en arrière en soulevant le nouveau papier pour refaire apparaître l’ancien ;
      -- avoir les deux feuilles sur la table (deux instances un peu différentes de notre code), et comparer leurs effets
      -- froisser la feuille qui ne nous convient plus et la jeter à la poubelle, y mettre le feu ou s’en servir comme brouillon pour griffonner.

      Comme les caméras détectent les points de couleur, on n’est pas obligé de se cantonner à programmer avec du papier : on peut programmer avec du carton, du bois, des cookies, des lego, des trains électriques… ce qui donne ce dispositif où une voiture en plastique se déplace sur une table, repère autour d’elle les trois feuilles les plus proches de type (son, fréquence, rythme), et joue la musique correspondante… tout en se déplaçant dans un paysage sonore alimenté en images fractales. Psychédélique.

      Le système fonctionne avec des objets (informatiques) qui font tourner le code correspondant à leurs points de couleur. Ces objets peuvent s’échanger des messages, et s’envoyer (à eux-mêmes ou aux autres) des illuminations (images, texte, sons).

      Un objet banal dira « je suis un écran », un autre dira « j’envoie à tous les écrans la valeur x », un autre encore dira « la valeur x est réglée sur le déplacement de mon point coloré ». Le fait que ce sont trois objets physiques différents fait qu’on peut alors remplacer n’importe quel bout pour changer le flux de messages, et qu’on fait ça « avec les mains », et qu’on voit ce qu’on fait.

      Comme le système lire la position et la couleur de points, on peut créer des objets physiques qui permettent de manipuler des nombres. Ainsi, une simple boulette de pate à modeler montée sur un ressort en plastique devient un joystick.

      Mais un autre objet peut venir et dire « j’envoie des flash sur tous les objets ». Un autre peut créer des images en webgl, faire des statistiques sur les points de couleur qui se trouvent sur la table, etc.

      Le sentiment qui s’en dégage est assez exaltant : la programmation devient une activité physique, sensorielle, collective. On se rapproche d’une pratique artistique, de la danse ou du théâtre peut-être.

      En tout cas le système oblige à des déplacements physiques, le code prend vie en-hors de l’ordi. Revenir ensuite à un code coincé entre clavier et écran est très frustrant.

      Le système mélange plusieurs concepts qui sont chacun intéressants en soi, et marchent bien ensemble.

      Si je résume on a :

      – une capture vidéo (basé sur OpenCV) d’une table (ou d’un mur), et un projecteur qui éclaire la même zone ; quand une partie des points colorés disparaissent, le système les garde en mémoire un certain temps, ce qui fait que les bras qui occultent les feuilles au passage ne provoquent pas trop de problème en pratique.

      – des points colorés qui, organisés en quatre coins d’un rectangle (appelé « page »), définissent un code (une référence) vers une base de petits logiciels de quelques lignes

      – un protocole de communication entre ces petits logiciels, baptisé RealTalk, qui s’inspire de smalltalk : chaque page peut envoyer des messages à toute la table, et écouter les messages

      – un OS qui relie le tout et qui orchestre le flux de communication, les modifications et l’insertion de nouvelles pages (avec une imprimante pour les matérialiser)

      Pour ma part durant le Game Jam j’ai fabriqué un bloc en bois qui me permettait d’éditer un code en pointant dessus ; une page qui capturait les points colorés sur la table et les faisait rayonner ; une exploration de la colorimétrie (très instable) de la caméra ; un dé à 24 faces avec reconnaissance optique de la face visible (sans succès d’ailleurs !). etc.