Tous les articles par Etienne Delay

Convivialité et logiciel libre deux ingrédients pour échapper aux enfers

En 2013, c’est Damien Chapoulart qui m’avait glissé le petit livre d’Ivan Illich dans le sac. On était dans le garage transformé en bureau du GDA Cru Banyuls, tous les deux accompagnés dans la découverte de la viticulture du cru par Eric Noémie. Damien m’avait dit « ça te parlera », avec un regard entendu.

Il avait tellement raison ! À l’époque on travaillait sur des questions de température et d’ensoleillement des zones viticoles sur GRASS-GIS. GRASS-GIS est un logiciel de traitement de données spatiales extrêmement puissant, mais connu pour la rugosité de l’interface.

La convivialité comme fermant du pharmakon

À la lecture de « La convivialité » (1973), j’avais été frappé par l’actualité de la pensée d’Illich. Il s’y oppose à la domination des institutions et des technologies sur la vie humaine et plaide pour des outils et des pratiques qui favorisent l’autonomie et les relations interpersonnelles. Un outil convivial est celui qui permet à l’utilisateur de réaliser ses intentions sans dépendre d’experts ou de structures hiérarchiques. Pour lui, la technologie doit donc rester au service des hommes, où les utilisateurs ont le contrôle et peuvent participer activement à la production et à l’entretien des outils. Il y décrit, le travailleur dans son atelier qui organise son espace en fonction de son vécu, et la dépossession de son lieu de travail quand l’ergonome impose une place aux outils pour lui faire gagner du temps.

Le lien avec le logiciel libre m’avait sauté aux yeux. Un code source ouvert, qui permet aux utilisateurs de pouvoir se saisir de l’outil ! Je l’avais proposé en ouverture du FOSS4G-fr en 2016, puis dans la préface de « Introduction à la géomatique » de Nicolas Roeland en 2019, commise avec mes complices Simon Georget et Didier Richard.

Malgré son image de logiciel jamais vraiment fini, réaliser par des hobistes, les logiciels libres ont, petit à petit, réussi a estompé cette image à l’exemple de GIS (une pensée émue pour GRASS et Qgis en 2010). Pourtant, cette austérité, nous dit Ivan Illich (1973) « n’a pas vertu d’isolation ou de clôture sur soi. Pour Aristote comme pour Thomas d’Aquin, elle est ce qui fonde l’amitié. […] Thomas d’Aquin définit l’austérité comme une vertu qui n’exclut pas tous les plaisirs, mais seulement ceux qui dégradent la relation personnelle ». L’austérité devient le moteur de la « société conviviale […] où l’outil moderne est au service de la personne intégrée à la collectivité, et non au service d’un corps de spécialistes. Conviviale est la société où l’homme contrôle l’outil. »

Survivre dans un monde dominé par Windows

En passant à Linux il y a plus de 10 ans pour des raisons politiques auxquelles Illich n’était pas étranger, j’avais expérimenté la difficulté d’exister dans un monde qui s’échange des fichiers de MSOffice.

On ne compte plus le nombre de situations embarrassantes dans lesquelles on se trouve quand on doit travailler sur un doc commun et que je fais sauter la mise en page parce que je l’ai ouvert avec OpenOffice ou libre Office.

Vous me direz c’est le temps que stabiliser un réseau de pratiques. Par exemple, quelle fluidité de travailler avec la Team OpenMole (ou le libre n’est pas une option). Pour les autres, on trouvait des astuces. Pour remplir les ordres de mission par exemple, j’avais monté une VM pour mon unité de recherche avec Windows installé dessus, pour permettre au non Windows de remplir ces tâches administratives.

La circulation se faisait, on bricolait des ponts. Comme tout bricolage, ça nécessite de monter en compétences techniques, ce qui peu à peu initie une forme d’hybridation. Une manière « d’être au monde » et de faire un monde qui n’est pas enfermé par la technique.

Et sont arrivés les LLM (Large Langage Model) et GPT (Generative Pre-trained Transformer). Là, toutes les frontières ont sauté aussi bien hardware que software ! Logitec a intégré des boutons sur ses claviers pour raccourcir l’accès à ChatGPT, des raccourcis sont aussi disponibles dans les extensions de Thunderbird … et Microsoft propose d’introduire l’IA dans sa prochaine mouture de Windows. Il y a un incontestable effet « wouahou » qui s’empare de tout le monde. Et des effets de bord (pour le moment) dont on identifie pour le moment mal les retombés.

IA Générative et environnement de travail

Sans le dire, sans en discuter collectivement, l’IA chamboule donc beaucoup de pratiques issues d’une co-évolution plutôt « longue » à l’échelle du numérique. On arrive à un point où il me semble que l’intégration de l’IA repose complètement des question de maitrise de nos environnements de travail et de nos vies.

C’est là que Günther Anders entre dans la danse. Dans « L’Obsolescence de l’homme », il utilise le concept de friction pour décrire la résistance qui empêche l’intégration parfaite des humains dans le monde technologique. En abordant la friction dans ce contexte, Günther Anders ne pointe pas simplement un problème technique, mais met en lumière une question philosophique et éthique profonde. Il avertit que sans aborder cette friction, l’humanité risque de devenir obsolète, incapable de maintenir le contrôle sur les technologies qu’elle a créées.

Un thème qu’on retrouvera dans « Rêve des machines » (trad. 2022 ed. Allia), il annonce p. 71 « il est maintenant bien clair,[…] que le principe dont je parle, à savoir la tendance à un expansionnisme sans limite et à un intégrationnisme total, est inhérent à la technique en tant que telle ; que ce principe ne gouverne pas uniquement les pays généralement regroupé tant bien que mal sous la dénomination d’État totalitaire. » La technique de par son expansion s’étend sans distinction politique. Et la vitesse de son extension joue aussi un rôle dans la friction et obsolescence. Alors que le monde s’accélère, l’Homme n’as pas le temps de s’hybrider.

Or c’est bien le propos d’Yvan Illich dans « la convivialité » tout l’enjeu est dans le choix, et la possibilité de conserver ce choix dans le temps. Un choix individuel, qui repose sur son propre consentement à l’hybridation avec l’IA, et un choix collectif, qui lui repose sur l’acceptation ou non de permettre un post-traitement des photos, des enregistrements audio, etc… parfois sans véritablement s’en rendre compte. Ce questionnement devient encore plus prégnant quand on considère l’éco-système privé et privateur de liberté qui est en train de se construire. Il y a donc comme avec le logiciel libre un enjeu à soutenir et accompagner le développement d’IA libre et suffisamment frugale pour tourner sur des machines personnelles.

Mon royaume pour une IA en localhost

Depuis la sortie en 2022 de chatGPT, les solutions basées sur des IA sont partout. La question n’est plus, il me semble : « comment vivre sans ? », ou encore « est-ce qu’il est souhaitable de mettre de l’IA partout ?  » une question qui ne nous a jamais été posée collectivement.

Xavier De La Porte résume très bien mon état d’esprit dans l’intro de son podcast (le code a changer : Série « Humains-machines : nos langues entremêlées » Épisode 1/2 : Une histoire d’interruption ) : « je crois que je n’en peux déjà plus des discussions autour de ce que nous racontent les IA. Je n’en peux déjà plus d’entendre des gens s’extasier de tout ce que savent les IA, ou, a contrario, se plaindre de leurs hallucinations. Je n’en peux plus des gens qui me détaillent ce qu’ils font avec GPT, Claude, Perplexity ou Le Chat. »

L’IA est là, elle étend son emprise, est-ce que je peux limiter ma zone de contact en gardant le « contrôle » sur ce que je donne à la machine ? Parce que la tentation est de plus en plus forte de donner aux promptes des papiers scientifiques, des rapports, etc. pour lui demander des résumés… Bien sûr qu’il faut les avoir lus pour espérer échapper aux hallucinations, mais le temps que je pourrais gagner à lui faire faire cet élagage est sans commune mesure. Ce qui me pose évidemment la question de gagner du temps pour faire quoi ? Et bien, pour le moment c’est la théorie de la reine rouge. Comme tout le monde utilise chatGPT, pour aller plus vite, je suis toujours à la traine.

Bien sûr, céder à ce chantage, c’est faire un pas de plus dans le rêve des machines de Günther Anders ! Nous devenons toujours plus consommateurs :

« si nous sommes considérés comme de meilleurs travailleurs, notre consommation sera d’autant plus satisfaisante et nous pourrons accomplir plus rapidement le devoir qui nous incombe d’œuvrer comme liquidateur ; les produits apparaissent d’autant plus réussis qu’ils sont capables de se laisser rapidement user par nous. » (G. Anders, 2022, p.85)

Couverture du livre de Günther Anders "Le Rêve des machines" aux éditions allia

Donc comment garder le contrôle ? En gardant l’IA dans sa boite — c’est à dire dans ma machine. Rien ne fuite car tout reste là en local sur mon ordinateur.

Techniquement comment j’ai fait ?

Installer Ollama c’est facile

Ollama c’est facile a installer sur Linux :

curl -fsSL https://ollama.com/install.sh | sh

Cet utilitaire fonctionne un peu comme docker. On fournit un nom de modèle et il se charge de le télécharger et de le faire fonctionner. Une fois l’utilitaire installé, il faudra donc télécharger des LLM. Il y en a une flopé disponible sur le site. À titre d’exemple, voilà celui que j’essaie en ce moment.

ollama run gpt-oss

Normalement en sortie de commande (après le téléchargement de plusieurs Go de modèle), vous tomberez dans un prompt dans le terminal. Pour en sortir ctrl + d.

Installer open-WebUI c’est moins évident

Avant tout, j’ai perdu pas mal de temps à essayer de comprendre pourquoi les modèles que j’avais téléchargés avec Ollama n’étaient pas visibles dans l’interface de open-WebUI. Il se trouve qu’il y a encore des incompatibilités entre open-WebUI et Firefox. J’ai fini par trouver les infos !

Donc, pour installer le service web, la solution proposée est basée sur docker. Chez moi, c’est passé avec cette commande :

sudo docker run -d --network=host -v open-webui:/app/openWebUI -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Une fois que le docker est lancé, il met quelques minutes à s’instancier correctement. On peut accéder au service en local : http://localhost:8080/

RetEx à chaud 🪖

Après quelques essais, c’est chouette, mais ce n’est pas encore le futur! Déjà ça va pousser les « vieilles » machines dans la tombe et accentuer la fracture numérique. Ici une requête sur le modèle GPT-OSS occupe pas mal ma machine.

Je cherchais quelque chose qui me permette de faire de la synthèse de fichier. Le point positif c’est que c’est possible d’envoyer des fichiers au LLM dans l’interface d’open WebIU (qui intègre RAF), mais les formats ne sont pas tous supportés (PDF, odt, et autre format libre oui), mais les formats propriétaire comme docx semblent non pris en charge… Ensuite le niveau de réponse n’est pas foufou, et très dépendant du modèle qu’on charge. D’un point de vue contextuel, peut être que cela dépend des réglages de l’interface, mais la priorité n’est pas donnée au fichier que vous fournissez. Il arrive que se glissent des informations de fichier analysé précédemment.

Quelques références :

Institutional Gramar – un outils pour penser la gestions des ressources

Du 19 au 24 juin 2023, j’ai pu participer au congrès de l’IASC (International Association for the Study of the Commons) qui s’est déroulé à Nairobi. La thématique de la conférence était « the commons we want« , a donné lieu à une très grande diversité de panels en parallèle et donc a un programme riche et varié.

J’ai eu la chance, presque un peu par hasard, de participer au workshop, puis au panel sur l’Institutional Gramar (IG) proposé par Saba Siddiki, Christopher Frantz, et Ute Brady. Ce qui m’a permis une introduction rapide aux potentialités de la formalisation proposée.

Une synthèse de l’institutional Grammar

L’approche de la Grammaire institutionnelle (Institutional Grammar ou IG en anglais) est une approche définie conceptuellement par Crawford et Ostrom en 1995. Au fil des 25 dernières années, cette approche a été largement utilisée dans l’analyse des politiques, la modélisation informatique, etc.

l’IG appelée « Institutional Grammar 2.0 », actualise l’approche pour de nouvelles applications dans divers domaines de recherche. Cette version 2.0 offre une représentation plus précise et complète des informations institutionnelles, en mettant l’accent sur le sens, les fonctions et les effets des déclarations institutionnelles.

La formalisation des informations en passant par un encodage particulier et non ambigu (ou en tout cas moins ambigu que le langage naturel), indépendamment du domaine d’application et de la méthode analytique utilisée, ouvre des perspectives extrêmement intéressantes et déjà largement utilisées en termes d’analyse comparée et d’évolution temporelle des organisations. En soulignant l’importance de l’analyse institutionnelle, il me semble que l’IG est adaptable à diverses situations d’actions.

La formalisation proposée par l’IG 2.0 repose sur une grammaire générative décrite dans la table ci dessous par Watkins et Westphal (2016).

Tableau reprenant les composants de l’IG dans le papier de Watkins et Westphal (2016)

L’intérêt de l’Institutional Grammar réside pour moi dans le cadre d’analyse rigoureux qu’elle offre et qui donne des outils holistiques pour étudier le fonctionnement des institutions et des organisations. En utilisant cette approche, les chercheurs peuvent mieux comprendre comment les règles, les normes et les valeurs institutionnelles influencent les comportements et les décisions des acteurs impliqués.

Cette compréhension approfondie des structures institutionnelles et de leurs effets permet de proposer des solutions plus adaptées pour résoudre les problèmes et les défis auxquels sont confrontées les organisations. L’Institutional Grammar peut également aider à identifier les facteurs qui favorisent ou entravent l’efficacité des institutions, ce qui peut avoir des implications importantes pour l’amélioration des politiques publiques et des pratiques organisationnelles.

De retour dans la vraie vie, j’ai essayé de comprendre plus finement la méthodologie et les usages que je pouvais en faire. J’ai identifier deux cas d’usage au Sénégal : autour du lac de Guiers dans le cadre du projet Santés & Territoires, et dans la zone pastorale dans le cadre du projet Dundi Ferlo, et dans le cadre de la convention de programme sur les Communs.

Santés & Territoires : une approche co-construite de one Health

Le projet s’appuie sur une approche participative, impliquant les acteurs du système autour de la transition agro-écologique comme levier d’amélioration des santés (approche one Health). Des chercheurs et des acteurs locaux sont donc impliqués dans 4 pays : au Sénégal, au Bénin, au Laos et au Cambodge, au travers de dispositifs de recherche-action que peuvent être les livings lab. Au Sénégal, les livings-lab se positionnent autour du lac de Guiers (à Mbane, et Keur Momar Sarr).

Entre février et septembre 2023, Amandine Adamczewski-Hertzog et moi avons encadré Mathilde Hibon dans le cadre de son stage de fin d’études pour un double diplôme entre l’école d’agronomie de Purpan et l’ISARA (Norwegian University of Life Sciences, vous pouvez retrouver son rapport ici).

Mathilde put encoder tous ses entretiens avec l’IG. Cela lui a donné 150 entrées dans sa base. À partir de là, on a exploré ces entrées avec des outils de l’analyse de réseau (R, et gephi). En les exprimant par point de vue. C’est à dire, envisager la manière dont chacun considère les relations d’interaction (au travers de règles ou de stratégies). Voilà le résultat de l’une de ces analyses du point de vue des populations locales.

En regardant les relations qui sont identifiées à partir des entretiens mener auprès des institutions, on constate que la centralité des acteurs n’est pas du tout la même, ce qui permet entre autres choses de visualiser facilement les différences de points de vue.

La CP Commun

Dans le cadre de la CP Commun, l’équipe GIREL du GRET Sénégal a séléctionné deux terrain : Mont-Rolland et Diender pour y déployer le jeu f’eau diem. Le jeu f’eau diem étant utilisé comme une arène qui permet de virtualiser les problèmes auxquels les participants font face. On réutilise à notre compte le concept de Johan Huizinga (1949) : “The Magic Circle”. Cela renvoie à l’espace conceptuel (mental) et physique (le lieu) dans lequel les règles du jeu prennent le dessus sur celles de la réalité quotidienne. L’identification de cet espace permet aux observateurs de la session de jeu de mieux comprendre les relations que les joueurs tissent localement avec la réalité. Comment ceux-ci adoptent des rôles ou des comportements qu’ils n’auraient pas dans leur vie quotidienne.

Les participants a la session de jeu f’eau diem de Diender en mai 2024

De cette manière nous nous attendons à ce que les joueurs ne nous parlent pas directement de leurs problèmes et de solutions de gestion mais de ceux identifiés dans le jeu, qui pour autant ont des équivalences dans la réalité.

A partir des observations des sessions de jeux, l’objectif est de remplir la matrice des formalisations des règles largement inspirées de l’Institutional gramar. Ce formalisme nous semblait être en mesure de capturer les éléments de réglementation formelle ou informelle que les participants allaient évoquer dans le cercle magique (c.f. fig I).

Figure issue du papier de Schlüter, A., & Theesfeld, I. (2010). The grammar of institutions: The challenge of distinguishing between strategies, norms, and rules. Rationality and Society p. 457

Les institutions (action d’instituer en économie) sont composées d’un ensemble de stratégies, normes et règles qui sont mises en place par un groupe d’agents. Pour un agent, une institution peut-être consciente et inconsciente. La Stratégie décrit le comportement d’un joueur dans un jeu. Elle peut être individuelle si on ne sait pas qui d’autre la mobilise. Collective, dans ce cas là, on assiste à l’apparition d’une institution. Les normes peuvent être internalisées, c’est-à-dire incorporées à l’intérieur de l’individu de manière à ce qu’il s’y conforme sans récompense ou punition externe, ou elles peuvent être imposées par des sanctions positives ou négatives venant de l’extérieur.

Les règles identifiées par les observateurs devaient être mises en discussion puis testées dans des sessions de jeux. S’il y a eu des adaptations locales, on peut globalement dire que le plan ne s’est pas passé comme prévu. Philippe Karpe (Cirad – UMR SENS) nous avait un peu mis en garde vis-a-vis de la grille. Elle était très compatible avec le droit positif, mais assez peu opérante pour faire face aux systèmes de régulation endogène mis en place par les participants. On a donc encore du travail 🙂

Dundi Ferlo : travailler avec les populations locales au projet de Grande Muraille Verte

Penda Diop Diallo, a emmené le CNRF (Centre National de Recherche Forestière Sénégalais) dans les approches de modélisation d’accompagnement (ComMod). Dans ce projet il s’agira de s’inscrire dans le projet panafricain de la grande muraille verte, en prenant en accompagnant les acteurs dans le processus. Dans les faits, cela veut dire accompagner la mise en place de parcelles de reboisement gérer collectivement par les populations locales aussi bien du point de vue du fourrage herbacé, que du potentiel fourrage aérien, et un jour des productions forestières non ligneuses.

Dans le cadre de ce travail, Penda accompagnée d’Anna Ndiaye ont réutilisé et adapté un jeu sérieux dans la plus pure approche ComMod. Il s’agissait de se servir de cet outil comme d’un simulateur social qui permettent aux acteurs de se projeter dans des mesures de gestion, d’en évaluer ainsi la faisabilité et les implications sur l’usage de la ressource.

Ces activités, réalisées à Vélingara Ferlo et Younofere, ont amené les acteurs à exprimer des ensembles de règles de gestion qui ont été implémentés la même année dans les parcelles. Penda a travaillé à la formalisation de ces règles dans l’Institutional Grammar pour pouvoir identifier les trajectoires institutionnelles que chacune des zones a décidé de prendre. Cela permettra de comparer facilement les directions que vont prendre les deux terrains d’étude.

Les perspectives

Si ça vous intéresse je vous encourage à aller voir le site de l’institutional Grammar initiative. En terme de perspective, il me semble que ce cadre est extrêmement stimulant, malgré les limites identifié précédemment, pour modéliser et donc simplifier les types de relation liés aux règles formelles et informelles dans la zone.

Cormas dans container OpenMole

Je parlais l’autre jour de l’utilisation de Cormas dans Docker et j’avais évoqué la possibilité d’utiliser cette plateforme multi-agent à l’intérieur d’openMole pour pouvoir bénéficier des possibilités de la taupe pour paralléliser le calcul et explorer des modèles.

J’avais profité de Romain pendant le coding-camp 2018 pour qu’on propose une première version de plug-in cormas pour openMole. En plus d’ouvrir des portent au calcul pour Cormas, l’idée était de permettre à l’équipe de développer de se concentrer sur le développement de la plateforme plutôt que sur le redéveloppement des méthodes de calcules.

Etape 1 : un container OpenMole

Pour tester Cormas dans openMole le plus simple est d’utiliser docker. En effet l’équipe openMole propose un joli petit container qui rox les poneys ! Vous pouvez le lancer comme ça :

## telecharger la derniere image
docker pull openmole/openmole:8.0-SNAPSHOT
## cree un conteneur avec les droit décriture sur le dossier monte
docker run -u root  -v /root/openMole_workSpace:/var/openmole openmole/openmole:8.0-SNAPSHOT chown -R openmole:openmole /var/openmole/
## lancer le contener en mode detache
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8080:8443 -v /root/openMole_workSpace:/var/openmole/ openmole/openmole:8.0-SNAPSHOT

Etape 2 : le plug-in cormas pour OpenMole

Voilà la primitive cormas n’est pas directement intégrée à OpenMole, il faudra donc télécharger le plug-in, et l’importer en utilisant le bouton idoine (la prise électrique) dans la barre d’outils en haut.

Etape 3 : Le script OpenMole

Une fois que le plug-in est installé, il ne reste plus qu’à exécuter un script. Pour se simplifier la vie, on utilisera pour l’exemple un modèle chargé par défaut dans cormas : le modèle des pompiers. Pour ceux qui n’ont pas une petite idée ce que c’est, on a un automate cellulaire dont les cellules passe de arbre à brulé et des agents pompier qui vont essayer d’éteindre l’incendie.

Vous pouvez maintenant crée un script.oms qui sera executable par OpenMole.

// OpenMole Variable definition.
// Those variables will be populated in openMole
// and send in JSON to Pharo/Cormas

val seed = Val[Int]

val numberOfFires = Val[Int]
val numberOfFiremen = Val[Int]
val percentageOfTrees = Val[Double]
val dimensionMin = Val[Int]
val dimensionMax = Val[Int]
val nbTrees = Val[Int]

// The CORMASTask take in parameters the class and method able to
// launch our simulation. In OUr case using the Cormas-Model-FireAutomata
// we run a methods build for OpenMole. You can take a look.
// set() allow you to pass some other thing to your task. You can pass :
// * your model as a file.st
// * inputs from OpenMole Variable
// * outputs as an array
// * defined parameters how doesn't change between simulation.

val model = CORMASTask("CMFireAutomataModel simuOpenMole") set (
//resources += workDirectory / "Cormas-Model-FireAutomata.st",
inputs += seed,
cormasInputs += numberOfFires,
cormasInputs += numberOfFiremen,
cormasInputs += percentageOfTrees,
cormasInputs += dimensionMin,
cormasInputs += dimensionMax,
cormasOutputs += nbTrees,

outputs += (seed, numberOfFires, numberOfFiremen, percentageOfTrees, dimensionMin, dimensionMax),

numberOfFires := 3,
numberOfFiremen := 10,
percentageOfTrees := 0.65,
dimensionMin := 60,
dimensionMax := 80
)

// With the DirectSampling() method you define an easy wait to generate
// a sampling for numberOfFires between 1 to 10.
DirectSampling(
evaluation = model hook CSVHook(workDirectory / "results.csv"),
DirectSampling(
  evaluation = model hook CSVHook(workDirectory / "results.csv"),
  sampling = (numberOfFires in (1 to 10)) x
             (seed in (UniformDistribution[Int]() take 10))
)

Dans ce script la partie propre à Cormas est bien sûr la CORMASTask(). Elle devra contenir l’ensemble des instructions qui seront passées au docker de cormas. Dans l’exemple ici, nous fixons tous les paramètres par défaut. C’est dans la méthode DirectSampling() que l’on va faire varier le nombre de feux a l’initialisation et qu’on définira le nombre de réplications du modèle.

Etape 4 : passer à l’échelle

À l’étape précédente, on utilise un seul thread de l’ordinateur. Pour passer à l’échelle rien de plus simple, il faut simplement modifier la fin du script :

val env = LocalEnvironment(2)

// With the DirectSampling() method you define an easy wait to generate
// a sampling for numberOfFires between 1 to 10.
DirectSampling(
evaluation = model on env hook CSVHook(workDirectory / "results.csv"),
sampling = (numberOfFires in (1 to 10)) x
(seed in (UniformDistribution[Int]() take 10))
)

On définit une variable env qu’on va ensuite appelée dans évaluation. Notre variable env fera alors tourner les modèles en parallèle sur … 2 thread. Si vous avez accès à plus en local, n’hésitez pas à pousser. Enfin si vous avez la chance d’avoir accès à un cluster il ne vous reste plus qu’a explorer les différents environnements pris en charge par OpenMole.

Voilà par exemple sur un cluster SGE, 100 jobs lancés que l’on peut monitor dans l’interface openMole

et que l’on peut voir sur le cluster avec qstat

Références :

Peaufiner XFCE

Vous savez comme va la vie, on à parfois besoin de changer le papier peint ! Depuis quelques mois, mon Linux tombait en petites pièces. De petits dysfonctionnements … qui ne sont pas gênants. Et puis un jour de grisaille, on se dit que ça suffit ! Je suis reparti sur une install de manjaro (ce dériver d’Archlinux) avec XFCE.

Ça fonctionne bien, mais je cherchais quelque chose d’un peut plus eye candy... Et bien XCFE est super paramétrable ! Ici quelques idées de choses à installer pour s’éloigner de l’austérité 🙂

Plank un dock léger et minimal

Installer plank, ce chouette dock qui est disponible dans les dépôts officiels

sudo pacman -S plank

N’oubliez pas de l’ajouter dans les applications au démarrage

Il est possible qu’une ligne grise vienne faire comme un reflet à quelques centimètres au déçu du dock. C’est l’ombre … qu’il faudra désactiver dans les paramètres de fenêtres: Paramètres -> Peaufinage des fenêtres -> Compositeur.

Un thème pour changer de look

Il n’y a pas mal de thèmes et icônes disponible sur https://www.xfce-look.org/

Une petite note sur Zettlr

Depuis 2018, j’ai pris l’habitude de prendre des notes en markdown des réunions, ou des pensées qui arrivait au fils de l’eau. Markdown parce que j’aime ce format, parce qu’il reste lisible même sans logiciel dédié, parce que c’est devenu un standard sur les différents dépôts git, et parce que j’aime les environnements de travail minimalistes, ça m’aide à rester concentré.

J’utilise depuis maintenant 1 an Zettlr après avoir passé pas mal de temps sur atom. Et j’en suis très satisfait ! Il permet l’export en docx, odt, etc. quand je dois travailler avec des collègues. Il supporte bien les entêtes yaml.

Ce matin je voulais changer la police de l’éditeur. Je suis un grand fan de la police utiliser par les blogs du monde diplo : WalbaumGrotesk. Je me suis dit que ce serait chouette de l’avoir pour écrire. J’ai un peut tâtonner, mais voilà, il faut aller dans Fichier → CSS personnalisé et ça permet pas mal de choses.

Pour mois ça donne ça pour utilisé cette chouette font!

body #editor {
font-family: 'WalbaumGrotesk Text', monospace;
}

Construire un container pour Cormas

Cormas est une plateforme de modélisation multi-agents développée en SmallTalk. Historiquement le choix de développement s’était porté sur VisualWork mais depuis quelque temps l’équipe regardait en direction de Pharo.

Cormas sous pharo

Le portage se fait petit à petit, et la feuille de route avance assez rapidement. Si le sujet vous intéresse, nous sommes en train de rédiger un manuel d’utilisation de cette nouvelle version de Cormas sous pharo.

Comme c’est le moment des grandes décisions on s’interroge sur les passerelles avec d’autres outils régulièrement utilisés par les communautés de chercheurs utilisant les SMA et plus largement la simulation. Pour le moment l’attention est portée sur les connexions entre cette nouvelle version de cormas et R et cormas/openMole.

Pour cette dernière, openMole intègre un système de conteneur basé sur udocker. Je suis donc en train de fouiller les possibilités de dockerisé cormas/pharo pour dans un futur que j’espère assez proche nous puissions faire l’ensemble de nos explorations en utilisant openMole.

Ecrire un dockerfile

# Set the base image
FROM ubuntu
# Dockerfile author / maintainer
MAINTAINER Etienne  <moi@truc.fr>

# Update software repository
# and install dependencies
run dpkg --add-architecture i386
run apt-get update && apt-get install -y curl unzip libx11-6:i386 libgl1-mesa-glx:i386 libfontconfig1:i386 libssl1.0.0:i386 libcairo2:i386

RUN mkdir cormas && cd cormas
RUN curl https://get.pharo.org | bash
RUN ./pharo Pharo.image config http://ss3.gemstone.com/ss/Cormas --install=development

Construire un conteneur à partir du dockerfile

sudo docker build -t cormas

Lancer un conteneur à partir du build

docker run --name cormas_instance -t cormas

Tester le fonctionnement

Votre conteneur doit être en train de fonctionner. Pour le vérifier, vous pouvez lancer les commandes suivantes.

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
914f52adbd98 cormas "/bin/bash" About a minute ago Up About a minute cormas_instance
eeba02bea345 mdillon/postgis "docker-entrypoint.s…" 2 weeks ago Exited (0) 2 weeks ago psql-futurSahel

Vous voyez que j’ai deux conteneurs (psql-futurSahel et cormas_instance) et que le conteneur cormas_instance est en cour de fonctionnement.

On peut maintenant essayer d’interagir avec pharo à l’intérieur du conteneur

sudo docker exec -it 914f52adbd98 /pharo Pharo.image eval '1 + 20'

Si tout s’est bien passé, vous constaterez que pharo vous répond de manière aimable 21 !

Note :

Pour pousser un nouveau conteneur

sudo docker tag cormas elcep/cormas
sudo docker push elcep/cormas

 

Références :

Docker.(PostgreSQL + postGIS) copier des données d’un conteneur à l’autre

Dans un précédent post, je faisais mes premiers pas avec Docker. Arrive rapidement la situation où, vous avez deux conteneurs. L’un avec une base de données spatiale en développement et  l’autre avec LA base de données en production.

Bon, et il peut arriver qu’on veuille sauvegarder les données et/ou restaurer ces données. Typiquement. Vous avez peuplé votre base de nouvelles tables, vues, fonctions… et c’est le moment de passer tout ça en production… Voilà une piste !

Sauvegarder la base de données avec pg_dump ou pg_dumpall

docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

ou si la base existe déjà (et que vous ne voulez pas vous soucier des « owner » et « privileges »)

docker exec -t your-db-container pg_dump -d fs_gis -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

Envoyer le dump dans le conteneur de production

cat your_dump.sql | docker exec -i your-db-container psql -d dbname -U postgres

Le `|` est utilisé pour envoyer les information « lut » par le `cat` au fur et à mesure dans psql !

Source :