🧠💻 A team from the Mind, Brain and Behavior Research Center (CIMCYC, cimcyc.bsky.social) published a #programming guide aimed at students in #psychology and #cognitive #neuroscience. This evolving set of #tutorials offers a curated collection of conceptual reflections, practical examples, and methodological recommendations. The material is available in #Python, #RStats, and #MATLAB.

🌍 https://wobc.github.io/programming_book/
#CognitiveScience #OpenScience

Bonjour Bignole !

De part mon activité d’administrateur systèmes, je dois régulièrement me connecter en SSH à de nombreuses machines. 216 d’après mon fichier .ssh/config, mais y a des alias et des machines virtuelles de développement dans le tas. Mais je dépasse largement les 150 machines.

J’ai longtemps — depuis que je l’ai découvert, il y a des années — utilisé concierge (écrit en Python) pour gérer ma configuration SSH. Un de ses grands avantages est le support de moteurs de templates, ce qui me permet de faire des boucles du genre :

{% for host in ('foo', 'bar') %}Host {{ host }} HostName {{ host }}.domain.tld User luc{% endfor %}

Le problème de concierge est qu’il n’est plus maintenu depuis plusieurs années, ce qui complique son installation sur des systèmes récents. Entre les dépendances pas bien fixées qui installent une version incompatibles de leurs dépendances à elles et certaines fonctionnalités de la bibliothèque standard qui ont migré dans des modules non listés en tant que dépendances… ça foirait à chaque installation.

Ma solution : forker concierge pour créer Bignole ! (une bignole est un terme d’argot pour… concierge 😁)

Le code est sur https://framagit.org/fiat-tux/bignole.

Au programme du fork :

  • mise à jour des dépendances
  • intégration directe des moteurs de templates sous forme de dépendances optionnelles au lieu de proposer des paquets distincts comme le fait concierge
  • suppression du support de libnotify qui n’a jamais fonctionné chez moi : je voulais avoir rapidement un outil fonctionnel, pas passer des jours à débuguer
  • suite de tests automatisés via Gitlab CI (parce que la CI, c’est mon dada, j’adore ça)
  • modernisation des outils de publication : exit les setup.py et setup.cfg, bonjour pyproject.toml (bon, j’avoue, c’est parce que j’utilise ça dans Argos Panoptès et je sais pas faire autrement 😅)

Pour installer Bignole, avec jinja2 par exemple, c’est simple comme bonjour :

pip install 'bignole[jinja]'

Et si vous utilisez uv (et vous devriez car c’est fort pratique) :

uv tool install 'bignole[jinja]'

Après l’installation, vous aurez deux utilitaires : bignole et bignole-check (celui-ci ne servant qu’à vous indiquer si votre fichier contient une syntaxe correcte).

En faisant bignole --systemd, vous aurez des instructions pour créer un service systemd qui surveillera votre fichier de configuration (~/.bignolerc par défaut) et re-générera automatiquement votre .ssh/config au moindre changement.

Pour le reste de l’utilisation, je vous laisse lire le README sur https://pypi.org/project/bignole/ 🙂

PS : oui, je connais le système des Tag dans la config SSH (j’en utilise), mais une boucle reste pratique même en les utilisant. Par exemple :

{% for host in ('foo', 'bar') %}Host {{ host }} HostName {{ host }}.domain.tld Tag perso{% endfor %}

#Dev #Python #Ssh