Cliquez sur un ou plusieurs tags pour appliquer un filtre sur la liste des notes de type "Journaux" :

[ << Notes plus récentes (451) ] [ Notes plus anciennes (600) >> ]

Vendredi 25 octobre 2024

Journal du vendredi 25 octobre 2024 à 20:51 #postgresql, #JaiDécouvert

#JaiDécouvert la fonctionnalité Tablespaces de PostgreSQL.

Tablespaces in PostgreSQL allow database administrators to define locations in the file system where the files representing database objects can be stored. Once created, a tablespace can be referred to by name when creating database objects.

By using tablespaces, an administrator can control the disk layout of a PostgreSQL installation. This is useful in at least two ways. First, if the partition or volume on which the cluster was initialized runs out of space and cannot be extended, a tablespace can be created on a different partition and used until the system can be reconfigured.

Pour le moment, je n'en ai aucune utilité.

AWS RDS playground et fixe du problème pg_dumpall #DevOps, #admin-sys, #AWS, #playground

En 2019, j'ai rencontré un problème lors de l'exécution de pg_dumpall sur une base de données PostgreSQL hébergée sur AWS RDS. À l'époque, ce problème était "la goutte d'eau" qui m'avait empressé de migrer de RDS vers une instance PostgreSQL self hosted avec une simple image Docker dans un docker-compose.yml, mais je digresse, ce n'est pas le sujet de cette note.

Aujourd'hui, j'ai fait face à nouveau à ce problème, mais cette fois, j'ai décidé de prendre le temps pour bien comprendre le problème et d'essayer de le traiter.

Pour cela, j'ai implémenté et publié un playground nommé rds-playground.

Je peux le dire maintenant, j'ai trouvé une solution à mon problème 🙂.

Ce playground contient :

  • Un exemple de déploiement d'une base de données AWS RDS avec Terraform.
  • Un script qui permet d'importer avec succès la base de données AWS RDS vers une instance locale de PostgreSQL, en incluant les rôles.

Au départ, je pensais que le problème venait d'un problème de configuration des rôles du côté de AWS RDS ou alors que je n'utilisais pas le bon user. J'ai ensuite compris que c'était une fausse piste.

J'ai ensuite découvert ce billet : "Using pg_dumpall with AWS RDS Postgres".

For those interested, RDS Postgres (by design) doesn't allow you to read pg_authid, which was earlier necessary for pg_dumpall to work.

J'ai compris que pour exécuter un pg_dumpall sur une instance RDS, il est impératif d'utiliser l'option --no-role-passwords.

Autre subtilité : sur une instance RDS, le rôle SUPERUSER est attribué au rôle rlsadmin, tandis que cette option est supprimé du rôle postgres.

ALTER ROLE postgres WITH NOSUPERUSER INHERIT CREATEROLE
CREATEDB LOGIN NOREPLICATION NOBYPASSRLS VALID UNTIL 'infinity';

Par conséquent, j'ai décidé d'utiliser le même nom d'utilisateur superuser pour l'instance locale PostgreSQL :

services:
  postgres:
    image: postgres:13.15
    environment:
      POSTGRES_USER: rdsadmin
      POSTGRES_DB: postgres
      POSTGRES_PASSWORD: password
      ...

Pour aller plus loin, je vous invite à suivre le README.md de rds-playground.

Journal du vendredi 25 octobre 2024 à 09:38 #WebDev, #rust, #JaiDécouvert

Dans le thread Hacker News "Rsbuild – A Better Vite?" #JaiDécouvert :

  • Rsbuild : The Rspack-based build tool. It's fast, out-of-the-box and extensible.
  • SWC : (stands for Speedy Web Compiler) is a super-fast TypeScript / JavaScript compiler written in Rust.
  • VoidZero : a company dedicated to building an open-source, high-performance, and unified development toolchain for the JavaScript ecosystem.
  • Oxc : is building a parser, Linter, formatter,, transformer, minifier, resolver ... all written in Rust.
  • Rolldown : Rolldown is a JavaScript/TypeScript bundler written in Rust intended to serve as the future bundler used in Vite.

Voici ce que j'ai compris.

Tous ces outils sont écrits en Rust.

Rsbuild est une alternative à : Vite, Create React App et Vue CLI et qui offre d'excellente performance (les tâches de build… sont exécutées bien plus rapidement).

Jiahan Chen, développeur de chez ByteDance, a commencé le projet Rsbuild en octobre 2023.

Dans le thread HackerNews je lis ce commentaire :

The better, faster, Rust-powered Vite is… Vite.

https://voidzero.dev/posts/announcing-voidzero-inc

J'ai creusé le sujet et j'ai compris que le créateur de Vite, Evan You a fondé une société nommée VoidZero, composée de core développeurs des projets Oxc, Vite, Rolldown.

Accel a injecté 4,6 millions de dollars dans VoidZero avec comme objectif de financer le développement de Rolldown qui sera intégré dans une future version de Vite.
D'après ce que j'ai compris, Rolldown utilise Oxc.

Je me demande si Accel envisage de tirer des bénéfices directs de VoidZero ou si cette initiative relève davantage du mécénat. Du côté des intérêts indirects : plusieurs sociétés du portefeuille d'Accel utilisent la stack Javascript, ce qui permet de financer et de mutualiser le développement d'outils clés.

Voici les points principaux que je retiens. Rsbuild semble une alternative performante Vite qui est utilisable dès aujourd'hui.
Le projet Vite est bien structuré et financé, ce qui lui permettra de sortir une nouvelle version optimisée.
Pour ma part, j’espère voir le projet VoidZero réussir afin d’éviter une dilution des efforts au sein de la communauté Javascript dans une multitude de projets.

Jeudi 24 octobre 2024

Journal du jeudi 24 octobre 2024 à 14:34 #JaiDécouvert, #YouTube

Je viens de visiter Naples et à mon retour, je me suis lancé dans la recherche de quelques vidéos au sujet de cette ville.
Je suis tombé sur "Naples: misère et beauté" que j'ai trouvé intéressante et qui m'a permis de découvrir la chaine YouTube nommée Barbare Civilisé.

J'ai ensuite voulu en savoir plus sur cette chaîne et j'ai grandement apprécié le contenu des vidéos suivantes :

Mercredi 23 octobre 2024

Journal du mercredi 23 octobre 2024 à 10:53 #JaiDécidé

#JaiDécidé d'utiliser dans mes README l'expression figurée anglaise "Smoke test".

Lundi 21 octobre 2024

Journal du lundi 21 octobre 2024 à 22:36 #DevOps, #shell, #JaiLu

J'étudie Oils (shell) afin de me faire une idée si il pourrait être un bon compromis entre l'utilisation de Bash et Ansible pour l'implémentation de script de déploiement pour de toute petite infrastructure.

#JaiLu A Tour of YSH

Dimanche 20 octobre 2024

Journal du dimanche 20 octobre 2024 à 22:50 #vagrant, #dns, #coding, #iteration

Nouvelle #iteration du Projet 14 - Script de base d'installation d'un serveur Ubuntu LTS.

Il y a quelques jours, j'ai migré de vagrant-hostmanger vers vagrant-dns. J'ai ensuite souhaité mettre en œuvre Grizzly, mais j'ai rencontré un problème.

J'ai installé une version binaire statiquement liée de Grizzly à l'aide de Mise. Dans cette version, Go ne fait pas appel à la fonction getaddrinfo pour la résolution des noms d'hôte. Au lieu de cela, Go se limite à lire les informations de configuration DNS dans /etc/resolv.conf (champ nameserver) et les entrées de /etc/hosts.

Cela signifie que les serveurs DNS gérés par systemd-resolved ne sont pas pris en compte 😭.

Pour régler ce problème, j'utilise en même temps vagrant-dns et Vagrant Host Manager : voici le commit.

J'active uniquement ici le paramètre config.hostmanager.manage_host = true et je laisse vagrant-dns résoudre les hostnames à l'intérieur des machines virtuelles et des containers Docker.

Journal du dimanche 20 octobre 2024 à 21:47 #desktop, #linux, #linux-desktop, #JaiLu

#JaiLu 20 years of Linux on the Desktop (part 1) de Ploum, j'y ai appris des choses, comme :

At the start of 2004, I was contacted by Sébastien Bacher, a Debian developer who told me that he had read my "Perfect Desktop" essay months ago and forwarded it to someone who had very similar ideas. And lots of money. So much money that they were already secretly working on it and, now that it was starting to take shape, they were interested in my feedback about the very alpha version.

Chose amusante, j'ai vécu la même expérience que Ploum pendant ma jeunesse :

I had been one of those teenagers invited everywhere to "fix" the computer. Neighbours, friends, family. Yes, that kind of nerdy teenager. You probably know what I mean. But I was tired of installing cracked antivirus and cleaning infested Microsoft Windows computers, their RAM full of malware, their CPU slowing to a crawl, with their little power LED begging me to alleviate their suffering.

Journal du dimanche 20 octobre 2024 à 10:04 #svelte, #WebDev, #coding, #JeMeDemande

La version 5 de Svelte vient de sortir : 5.0.0.

Il y a un an, j'avais lu le billet Introducing runes. Depuis, j'ai suivi ce sujet de loin.

J'aimerais tester et apprendre à utiliser la fonctionnalité rune.
#JeMeDemande dans quel projet 🤔. Est-ce que je préfère refactorer vers rune le projet sklein-pkm-engine ou gibbon-replay 🤔. Je pense que ces deux projets utilisent trop peu de "reactive state".
Je souhaite prochainement débuter le projet que j'ai présenté dans 2023-10-28_2008. Je pense que ça serait une bonne occasion pour créer mon premier projet 100% TypeScript avec Svelte 5 avec Rune.

Journal du dimanche 20 octobre 2024 à 10:03 #JaiDécouvert

#JaiDécouvert Oxen.

Oxen is a lightning fast data version control system for structured and unstructured machine learning datasets.

Samedi 19 octobre 2024

Vendredi 18 octobre 2024

Journal du vendredi 18 octobre 2024 à 22:51 #grafana, #DevOps, #InfrastructureAsCode, #JaiDécouvert

En cherchant un outil d'Infrastructure as code pour Grafana, #JaiDécouvert Grizzly.

Un projet qui a débuté en mars 2020, développé en Go par l'équipe de Grafana.

A utility for managing Jsonnet dashboards against the Grafana API

J'ai parcouru l'intégralité de la documentation et je suis ravi, ce projet correspond parfaitement à ce que je cherchais depuis des années !

Avant de découvrir cet outil, j'écrivais des scripts Python ou Bash d'exportation et d'importation de dashboards via l'API de Grafana.

Je souhaite l'utiliser dans le Projet 14 - Script de base d'installation d'un serveur Ubuntu LTS. Dans le repository basic_ubuntu_server_install_playground.

Journal du vendredi 18 octobre 2024 à 19:15 #DevOps, #admin-sys, #vagrant, #dns, #difficulté, #iteration, #file

Nouvelle #iteration de Projet 14.

Pour traiter ce problème, je souhaite essayer de remplacer Vagrant Host Manager par vagrant-dns.

-- from

Résultat : j'ai migré de Vagrant Host Manager vers vagrant-dns avec succès 🙂.

Voici le commit : lien vers le commit.

Voici quelques explications de la configuration Vagrantfile.

Les lignes suivantes permettent d'utiliser la seconde IP des machines virtuelles pour les identifier (renseignés par le serveur DNS).

  config.dns.ip = -> (vm, opts) do
    ip = nil
    vm.communicate.execute("hostname -I | cut -d ' ' -f 2") do |type, data|
      ip = data.strip if type == :stdout
    end
    ip
  end

La commande hostname retourne les deux IP de la machine virtuelle :

vagrant@server1:~$ hostname -I
10.0.2.15 192.168.56.22

La commande hostname -I | cut -d ' ' -f 2 capture la seconde IP, ici 192.168.56.22.

La configuration DNS qui retourne cette IP est consultable via :

$ vagrant dns -l
/server1.vagrant.test/ => 192.168.56.22
/server2.vagrant.test/ => 192.168.56.23
/grafana.vagrant.test/ => 192.168.56.23
/loki.vagrant.test/ => 192.168.56.23

Autre subtilité :

vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]

Cette ligne configure la machine virtuelle pour qu'elle utilise le serveur DNS de vagrant-dns.
Cela permet de résoudre les noms des autres machines virtuelles. Exemple :

vagrant@server1:~$ resolvectl query server2.vagrant.test
server2.vagrant.test: 192.168.56.23            -- link: eth0

-- Information acquired via protocol DNS in 12.3ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

En mettant en place vagrant-dns sur ma workstation qui tourne sous Fedora, j'ai rencontré la difficulté suivante.

J'avais la configuration suivante installée :

$ cat /etc/systemd/resolved.conf.d/csd.conf
[Resolve]
DNS=10.57.40.1
Domains=~csd

Elle me permet de résoudre les hostnames des machines qui appartiennent à un réseau privé exposé via OpenVPN (voir cette note).

Voici ma configuration complète de systemd-resolved :

$ systemd-analyze cat-config systemd/resolved.conf
# /etc/systemd/resolved.conf

...

[Resolve]
...

# /etc/systemd/resolved.conf.d/1-vagrant-dns.conf
# This file is generated by vagrant-dns
[Resolve]
DNS=127.0.0.1:5300
Domains=~test

# /etc/systemd/resolved.conf.d/csd.conf
[Resolve]
DNS=10.57.40.1
Domains=~csd

Quand je lançais resolvectl query server2.vagrant.test pour la première fois après redémarrage de sudo systemctl restart systemd-resolved, tout fonctionnait correctement :

$ resolvectl query server2.vagrant.test
server2.vagrant.test: 192.168.56.23

-- Information acquired via protocol DNS in 7.5073s.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

Mais, la seconde fois, j'avais l'erreur suivante :

$ resolvectl query server2.vagrant.test
server2.vagrant.test: Name 'server2.vagrant.test' not found

Ce problème disparait si je supprime /etc/systemd/resolved.conf.d/csd.conf.

Je n'ai pas compris pourquoi. D'après la section "Protocols and routing" de systemd-resolved, le serveur 10.57.40.1 est utilisé seulement pour les hostnames qui se terminent par .csd.

J'ai activé les logs de systemd-resolved au niveau debug avec

$ sudo resolvectl log-level debug
$ journalctl -u systemd-resolved -f

Voici le contenu des logs lors de la première exécution de resolvectl query server2.vagrant.test : https://gist.github.com/stephane-klein/506a9fc7d740dc4892e88bfc590bee98.

Voici le contenu des logs lors de la seconde exécution de resolvectl query server2.vagrant.test : https://gist.github.com/stephane-klein/956befc280ef9738bfe48cdf7f5ef930.

J'ai l'impression que la ligne 13 indique que le cache de systemd-resolved a été utilisé et qu'il n'a pas trouvé de réponse pour server2.vagrant.test. Pourquoi ? Je ne sais pas.

Ligne 13 : NXDOMAIN cache hit for server2.vagrant.test IN A

Ensuite, je supprime /etc/systemd/resolved.conf.d/csd.conf :

$ sudo rm /etc/systemd/resolved.conf.d/csd.conf

Je relance systemd-resolved et voici le contenu des logs lors de la seconde exécution de resolvectl query server2.vagrant.test : https://gist.github.com/stephane-klein/9f87050524048ecf9766f9c97b789123#file-systemd-resolved-log-L11

Je constate que cette fois, la ligne 11 contient : Cache miss for server2.vagrant.test IN A.

Pourquoi avec .csd le cache retourne NXDOMAIN et sans .csd, le cache retourne Cache miss et systemd-resolved continue son algorithme de résosultion du hostname ?

Je soupçonne systemd-resolved de stocker en cache la résolution de server2.vagrant.test par le serveur DNS 10.57.40.1. Si c'est le cas, je me demande pourquoi il fait cela alors qu'il est configuré pour les hostnames qui se terminent par .csd 🤔.


Autre problème rencontré, la latence de réponse :

$ resolvectl query server2.vagrant.test
server2.vagrant.test: 192.168.56.23

-- Information acquired via protocol DNS in 7.5073s.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

La réponse est retournée en 7 secondes, ce qui ne me semble pas normal.

J'ai découvert que je n'ai plus aucune latence si je passe le paramètre DNSStubListener à no :

$ sudo cat <<EOF > /etc/systemd/resolved.conf.d/0-vagrant-dns.conf
[Resolve]
DNSStubListener=no
EOF
$ sudo systemctl restart systemd-resolved
$ resolvectl query server2.vagrant.test
server2.vagrant.test: 192.168.56.23

-- Information acquired via protocol DNS in 2.9ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

Le temps de réponse passe de 7.5s à 2.9ms. Je n'ai pas compris la signification de ma modification.


Je récapitule, pour faire fonctionner correctement vagrant-dns sur ma workstation Fedora j'ai dû :

  • supprimer /etc/systemd/resolved.conf.d/csd.conf
  • et paramétrer DNSStubListener à no

Journal du vendredi 18 octobre 2024 à 18:28 #JaiDécouvert

J'ai croisé plusieurs fois JSON Patch sans jamais étudier ce que c'était précisément. Je viens de lire l'article Unlocking the Power of JSON Patch.

J'ai aussi découvert JSON Merge Patch : What is JSON Merge Patch?

Jeudi 17 octobre 2024

Journal du jeudi 17 octobre 2024 à 09:10 #livre, #sociocratie

Je viens d'acheter le livre "Chaque voix compte" qui traite de la sociocratie et j'ai commencé sa lecture pendant mon voyage vers Naples.

Mercredi 16 octobre 2024

Migration de vagrant-hostmanager vers vagrant-dns #DevOps, #admin-sys, #vagrant, #dns

Dans le cadre du Projet 14 - Script de base d'installation d'un serveur Ubuntu LTS, j'utilise Vagrant avec le plugin Vagrant Host Manager pour gérer les hostnames des machines virtuelles.

Vagrant Host Manager met correctement à jour les fichiers /etc/hosts sur ma machine hôte, c'est-à-dire, ma workstation, et dans les machines virtuels.
Cependant, ces noms d'hôtes ne sont pas accessibles à l'intérieur des containers Docker.
Par exemple, ici, http://grafana.example.com:3100/ n'est pas accessible à l'intérieur du container Promtail.

Pour traiter ce problème, je souhaite essayer de remplacer Vagrant Host Manager par vagrant-dns.

vagrant-dns semble exposer un serveur DNS qui sera accessible et utilisé par les containers Docker.

D'autre part, vagrant-dns (page contributors) semble un peu plus actif que Vagrant Host Manager (page contributors).

Journal du mercredi 16 octobre 2024 à 15:32 #PriseDeConscience

Je réalise que rédiger un texte destiné à des humains me demande bien plus de concentration et d'énergie que de coder un programme informatique.

Mardi 15 octobre 2024

Journal du mardi 15 octobre 2024 à 16:02 #JaiLu, #JaiDécouvert

En étudiant l'annonce de Brief.me j'ai un peu étudié Capacitor :

Build cross-platform Native Progressive Web Apps for iOS, Android, and the Web ⚡️ .

Le projet Capacitor a commencé fin 2017 et d'après ce que j'ai lu, ce projet est la "suite" d' Apache Cordova anciennement nommé PhoneGap.

Je me souviens d'avoir utilisé PhoneGap vers 2010.

Je découvre que je peux utiliser Svelte avec Capacitor : Svelte & Capacitor - Build native mobile apps with web technology and Svelte.

Il est même possible d'utiliser SvelteKit en mode SSG (@sveltejs/adapter-static) : https://ionic.io/blog/cross-platform-sveltekit-capacitor-application-yes-its-possible.

J'ai parcouru ce retour d'expérience : How I published a gratitude journaling app for iOS and Android using SvelteKit and Capacitor.

#JaiDécouvert ce template svelte-capacitor.

#JaiDécouvert whatpwacando.today.

#JaiLu SvelteKit + Capacitor Performance Example


J'ai souvent entendu parler d'Ionic par le passé, mais je n'avais jamais pris le temps de m'y pencher sérieusement. Je pensais que Ionic était un équivalent de React Native, mais j'avais tort. En réalité, Ionic est un UI Toolkit.

Journal du mardi 15 octobre 2024 à 10:48 #OnMaPartagé, #presse, #journalisme, #media, #JeMeDemande

Un ami m'a fait découvrir le journal Politico et Politico Europe qui ressemble à Contexte en bien plus "gros".

Politico traite de l'actualité politique de la Maison-Blanche, du Congrès, et des différents États américains. Depuis 2014, il dispose d'une édition européenne intitulée Politico Europe.

Le groupe dispose d'une édition payante, Politico Pro, qui diffuse des informations de haute valeur ajoutée, et est utilisée par les cabinets de lobbying et journalistes spécialisés. Politico est considéré comme une source d’information influente dans les milieux politiques.

-- from

J'avais déjà entendu parler de ce média, mais c'est la première fois que je me penche réellement sur sa ligne éditoriale.

Je lis que ce média est influent, #JeMeDemande s'il parvient à maintenir un niveau d'objectivité satisfaisant 🤔.

Depuis l'été 2021, Politico est détenu par le géant allemand Axel Springer (Entreprise).

-- from

Sur la page Wikipédia de Axel Springer (Entreprise), je lis :

Axel Springer a été impliqué dans de nombreuses controverses. Ses médias sont parfois accusés de populisme ou non-respect de l'éthique journalistique.

Le groupe est principalement détenu par le fonds d'investissement américain KKR (42%) et par Friede Springer, la veuve du fondateur. Son dirigeant est le milliardaire Mathias Döpfner depuis 2002.

-- from

Lundi 14 octobre 2024

Journal du lundi 14 octobre 2024 à 22:19 #JaiDécouvert

#JaiDécouvert Starlight basé sur Astro.

Starlight is a full-featured documentation theme built on top of the Astro framework.

Journal du lundi 14 octobre 2024 à 18:27 #admin-sys, #security, #JaiDécouvert

#JaiDécouvert le site Formation DevOps | DevSecOps de Stéphane Robert. Énormément d'informations très bien catégorisées et en français !

J'ai parcouru la section Analyser le code ! et j'y ai découvert :

Journal du lundi 14 octobre 2024 à 14:24 #bash, #JaiDécouvert

#JaiDécouvert en Bash que si EOF est entre guillements, c'est-à-dire 'EOF' alors les variables $ ne seront pas substitué.

Exemple, le script suivant :

cat <<'EOF' > /test.sh
echo "Hello, $USER"
EOF

est l'équivalent de :

cat <<EOF > /test.sh
echo "Hello, \$USER"
EOF

Documentation à ce sujet dans la seciton "Here Documents" du manuel de Bash :

No parameter and variable expansion, command substitution, arithmetic expansion, or filename expansion is performed on word. If any part of word is quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded.
If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, the character sequence \newline is ignored, and ‘\’ must be used to quote the characters ‘\’, ‘$’, and ‘`’.

Dimanche 13 octobre 2024

Journal du dimanche 13 octobre 2024 à 19:27 #OnMaPartagé

Alexandre m'a partagé le projet terraform-provider-ansible qui permet de lancer des playbook Ansible depuis Terraform.

Test

Samedi 12 octobre 2024

Vendredi 11 octobre 2024

Journal du vendredi 11 octobre 2024 à 20:28

J'ai mis à jour mon repository vagrant-virtualbox-fedora vers Ubuntu 24.04 LTS.

Qu'est-ce que RPM Fusion et pourquoi ce nom ? #fedora, #distribution-linux

Jusqu'à ce soir, j'installais sous Fedora des packages qui vennait du dépôt RPM Fusion sans vraiment avoir étudié ce qu'était-ce repository. Je viens de me renseigner et voici ce que j'ai appris.

"RPM Fusion" est l'équivalent des dépôts "contrib et non-free" chez Debian ou "universe et multiverse" chez Ubuntu.

Le terme "Fusion" dans "RPM Fusion" fait référence à l'origine du dépôt. RPM Fusion est né de la fusion de plusieurs dépôts tiers qui existaient avant sa création en 2007-2008, tels que : Livna, Freshrpms et Dribble.

Pourquoi faire un refactoring de Nuxt.js vers HTMX ? 🤔 #WebDev, #htmx, #django, #Nuxt, #SvelteKit

En étudiant l'annonce Développeur(se) back-end en CDI de Brief.me j'ai été intrigué par :

Migrer notre front-end existant de Nuxt.js vers HTMX.

Je me suis demandé quelle est la motivation de passer d'un framework de type Nuxt.js, NextJS ou SvelteKit à htmx 🤔.

J'utilise SvelteKit depuis deux ans, qui est comparable Nuxt.js, principalement en mode SSR avec Hydration, et je suis totalement satisfait. Ma Developer eXperience est excellente. Je trouve ce framework minimaliste, conforme au principe Keep it simple, stupid! (KISS), et performant.

Après réflexion, j'ai réalisé que mon expérience de développeur (DX) serait moindre si j'héritais d'un backend codé dans un langage autre que Javascript : Python, PHP, Ruby, Golang

Et Brief.me semble être dans ce cas de figure :

Je me suis connecté à mon compte Brief.me et en regardant ce que me retourne Wappalyzer, je constate que le site est effectivement propulsé par Nuxt.js, VueJS.

En regardant ce qu'il se passe dans l'onglet Réseau de mon navigateur, je constate que https://app.brief.me est un site web de type SPA. Le contenu des articles est chargé via l'api https://www.brief.me/api/ qui est propulsée par Django REST framework.

Si je résume, la stack est la suivante : PostgreSQL => Django => Django REST framework <=> Nuxt.js => Rendu HTML via VueJS.

Je suppose que ce qui motive la migration de Nuxt.js vers HTMX est la suppression de couches.
Plus précisément, je suppose que l'équipe tech de Brief.me souhaite supprimer les couches suivantes :

Et utiliser simplement le système de template de Django en SSR pour afficher le contenu des articles et implémenter les quelques éléments dynamiques côté browser avec HTMX.
De mon point de vue, ceci a pour avantage de largement simplifier la stack, de simplifier le déploiement et d'accélérer le chargement des pages.

Ma conclusion : la librairie HTMX semble être un choix très pertinent quand elle est utilisée dans une stack non NodeJS.

Journal du vendredi 11 octobre 2024 à 15:08 #JaiDécouvert

#JaiDécouvert le journal Contexte : https://www.contexte.com.

Contexte, l’info politique dont les professionnels ont besoin.

...

Chaque matin, recevez l’essentiel de l’info politique directement dans votre boîte mail : une information experte et synthétique.

Organisez et personnalisez votre suivi parlementaire - Suivez l’évolution des débats tout au long de la navette parlementaire française, exportez les amendements et définissez des alertes.

Journal du vendredi 11 octobre 2024 à 11:46 #JaiDécouvert

#JaiDécouvert le document : Guide de concertation territoriale et de facilitation proposé par l'équie Lisode.

J'y découvre la définition de concertation :

Parmi les différentes définitions associées au terme concertation, nous nous inspirons des travaux d’Arnstein (1969) qui place la concertation sur une échelle liée à la prise de décision. Selon cette définition, la concertation fait intervenir un certain nombre de parties prenantes en vue d’élaborer collectivement des propositions sur un projet.

La concertation se distingue de la consultation par le fait qu’elle ne se limite pas à une simple demande d’avis. Un processus de concertation suppose un travail collaboratif qui implique la confrontation de points de vue, la définition d’objectifs partagés, la génération d’idées nouvelles, etc.

Ainsi, la concertation se distingue de la codécision dans le sens où elle n’aboutit pas directement à une décision, mais elle vise à la préparer. Dans un processus de concer- tation, la décision finale appartient en effet aux personnes qui en ont légalement la res- ponsabilité, comme les élus, les services de l’Etat, etc. Mais même si le pouvoir de déci- sion reste formellement entre leurs mains, ces décideurs sont néanmoins tenus d’exa- miner les propositions issues de la concertation et de faire un retour aux participants sur ce qui a été retenu ou pas et pourqoi (cf. les principes, page 8).

Conjointement à ses objectifs instrumentaux, la concertation a aussi des objectifs sociaux, démocratiques et politiques.

Journal du vendredi 11 octobre 2024 à 10:24 #JaiLu, #JaiDécouvert

#JaiLu l'article Wikipedia Prise de décision et #JaiDécouvert le tableau suivant qui définit :

Cette information m’intéresse, car, avec le temps, j’ai constaté qu’il existe de nombreuses définitions de stratégie et tactique selon les contextes : que ce soit dans le domaine militaire, le sport, ou encore l’agilité

J'ai pour objectif de centraliser, ici sur notes.sklein.xyz, les différentes définitions de ces termes au fil de mes découvertes.

Je vois ici que Loomio a commencé à intégrer de l'AI pour la transcription d'audio.

Jeudi 10 octobre 2024

Journal du jeudi 10 octobre 2024 à 18:08 #pensée, #management

Je pense que l'utilisation du framework CommunityRule et Loomio peut être très efficace pour travailler en équipe.

J'aurais aimé expérimenter ces deux outils quand j'étais CTO chez Spacefill.

Je découvre Loomio #JaiDécouvert

En étudiant social.coop #JaiDécouvert Loomio.

J'ai testé Loomio en septembre 2014, comme outil de prise de décision pour l'association Coworking Metz. Je ne me souviens plus pourquoi ce test n'a pas été concluant. Peut-être que le projet était trop jeune.

Loomio a émergé en 2012 du mouvement dit "Occupy movement" et a été développé dans une entreprise sociale néo-zélandaise. Il a bénéficié d'une campagne internationale de crowfunding en 2014.

La société emploie actuellement 11 personnes.

-- from

Je constate que le projet a commencé réellement en 2011 et qu'il est très actif. Il semble être principalement développé par l'un des fondateurs : Robert Guthrie.

Loomio est une application open source, codée en Ruby on Rails.

Loomio est plus minimaliste que Decidim et Cap Collectif.
Je pense que Loomio est mieux adapté au prise de décision interne d'une association, une coopérative ou d'une équipe.

Je suis un utilisateur notice de Loomio. Voici ce que j'ai compris en explorant mes workspaces et la documentation utilisateur.

Le type ressource de base de Loomio est le "Thread", « Fil de discussion » en français.

Dans le screenshot ci-dessus, 4 modèles de fil de discussion sont configurés au niveau du projet, mais Loomio propose de nombreux autres modèles de fil de discussion, il est même possible d'en construire de nouveaux :

Ensuite, il est possible de poster des commentaires dans le fil de discussion :

ou alors poster une décision à prendre. Loomio propose 11 types de prise de décision :

  • Proposition :
    • Vérification des sens - Demandez des commentaires, des questions et des préoccupations ;
    • Conseil - Demandez conseil sur une décision que vous devez prendre ;
    • Consentement - Prendre une décision "sûre à essayer", sans objections ;
    • Consensus - Parvenir à une convention collective avec toutes les personnes impliquées ;
    • Gradients d'accord - Soutien express pour une proposition sur une échelle de 8 points.
  • Sondage :
    • Sondage simple - Trouvez l'option la plus populaire ;
    • Vote pondéré - Mesurer le degré de soutien pour chaque option ;
    • Vote à points - Allouer un budget de points pour révéler les priorités ;
    • Classement par préférence - Comprendre la préférence ordonnée des options.
  • Réunion :
    • Nouveau sondage horaire de réunion - Trouver quand les gens sont disponibles pour se rencontrer ;
    • Opt-in - Trouvez des volontaires ou demandez des participants.

Voici les screenshots des sections. La sélection de chaque type de propositions envoie vers un formulaire spécifique. Je n'ai pas réalisé un screenshot pour ces 11 types.

Loomio permet aussi de tout de suite poster une demande de décision sans passer par un thread.

Il est possible de poster plusieurs décisions au cours de la vie d'un thread.
Je trouve cette fonctionnalité très flexible.

Loomio supporte les threads ainsi que les réactions au niveau des commentaires :

Loomio affiche une timeline à droite des threads qui contiennent une mise en avant des prises de décisions :

Autre fonctionnalité que j'apprécie : il est possible de consulter quels utilisateurs ont reçu des notifications et qui ont lu le message.

Je vous invite à consulter la note "Les 4 méthodes de prises de décisions de Loomio".

Les 4 méthodes de prises de décisions de Loomio #Traduction

Cette note est principalement une traduction en français de parties de la documentation de Loomio.


Loomio propose 4 méthodes de prises de décisions :

  • Processus de conseil - Demandez conseil sur une décision que vous devez prendre, avec l'avis des personnes concernées ou qui ont une expertise, afin de prendre une meilleure décision pour votre organisation.
  • Processus de consentement - Recherchez le consentement pour une décision à prendre, lorsqu'il n'y a pas d'objections significatives à votre proposition, afin de pouvoir prendre une décision rapide et « sûre à essayer » dès maintenant.
  • Processus de consensus - Obtenez un consensus sur une décision que vous devez prendre ensemble, afin de parvenir à un accord qui satisfasse les besoins et les préoccupations de tous les participants.
  • Processus de décision simple - Un processus simple pour présenter et discuter de la décision à prendre, écouter et sentir ce que les gens en pensent, proposer et décider.

Processus de conseil

Demandez conseil sur une décision que vous devez prendre.

Prenez une décision en vous appuyant sur les conseils des personnes concernées ou expertes, afin de prendre une meilleure décision pour votre organisation.

« Avec le processus de conseil, n'importe qui peut prendre n'importe quelle décision, mais doit demander l'avis des parties concernées et des personnes compétentes. » - Frederick Laloux, Reinventing Organizations.

Points clés

  • Liberté de prendre une décision.
  • Inviter les gens à donner leur avis.
  • Tenir compte de l'avis des autres.

Étapes du processus de conseil

Vous remarquez un problème ou une opportunité et vous prenez l'initiative.

  • Sollicitez des contributions pour sonder les points de vue avant de proposer une action - démarrez un fil de discussion Loomio.
  • Vous faites une proposition et demandez des conseils - vous lancez une proposition de conseil.
  • En tenant compte des conseils reçus, vous prenez une décision et informez les personnes qui vous ont conseillé - énoncez un résultat.

Avantages

  • Les conseils vous aident à prendre une meilleure décision pour votre organisation.
  • Favoriser les relations, les opportunités d'apprentissage et la diversité des contributions.
  • Stimuler l'initiative et la créativité, et rendre le travail plus agréable.

Processus de consentement

Prendre une décision « sûre », sans objection.

Demandez le consentement pour une décision que vous devez prendre, lorsqu'il n'y a pas d'objections significatives à votre proposition, afin que vous puissiez prendre une décision rapide qui soit « sûre à essayer » maintenant.

« Le consentement renverse la question : au lieu de demander ce que nous voulons, nous demandons s'il y a des raisons de ne pas aller de l'avant. » - Ted Rau, Sociocracy For All

Points clés

  • Viser une décision « suffisamment bonne ».
  • Impliquer de nombreuses voix dans l'élaboration d'une proposition viable.
  • Demander si quelqu'un a une objection valable.
  • Modifier la proposition pour résoudre les objections.

Rôles typiques :

  • Proposant : La personne qui soulève un sujet nécessitant une décision.
  • Facilitateur : Quelqu'un qui peut aider l'auteur de la proposition à faire son travail efficacement.

Étapes du processus de consentement

Vous remarquez un problème ou une opportunité et vous prenez l'initiative.

    1. Présentez une proposition - démarrez un fil de discussion Loomio.
    1. Animer une série de questions, de réactions et de commentaires pour améliorer la proposition - lancer une proposition de vérification du sens.
    1. Modifiez la proposition en tenant compte des suggestions et des commentaires.
    1. Demandez si quelqu'un a une objection significative à la proposition modifiée - lancez une proposition de consentement.
    1. Intégrez les objections valables pour créer une version modifiée de la proposition que tout le monde approuve et que l'on peut essayer en toute sécurité - énoncez le résultat de la décision.

Conseil : pour les décisions plus complexes, vous pouvez également inclure un tour de questions de clarification à l'étape 2, afin d'aider les participants à comprendre la proposition avant de les inviter à réagir et à faire des commentaires sur la proposition.

Les avantages

  • Des décisions plus rapides, plus efficaces, plus claires et plus adaptables.
  • La diversité des points de vue et la responsabilisation des participants renforcent la confiance.
  • Une culture plus agile, plus transparente et plus inclusive.

Processus de consensus

Parvenir à un accord collectif avec toutes les personnes concernées.

Obtenez un consensus pour une décision que vous devez prendre ensemble, afin de parvenir à un accord qui satisfasse les besoins et les préoccupations de tous les participants.

« Le consensus est le processus - un processus participatif par lequel un groupe pense et se sent ensemble, en route vers sa décision. » - Sam Kaner, Community at Work

Points clés

  • Discuter et élaborer une proposition ensemble ;
  • Inclure et respecter toutes les personnes impliquées ;
  • Rechercher l'accord de la plupart des personnes.

Le consensus est généralement utilisé dans les cas suivants :

  • Les équipes de travail qui développent une compréhension commune d'un problème ou d'une opportunité, collaborent sur une proposition et décident d'un plan d'action.
  • Les décisions du conseil de gouvernance où le conseil montre qu'il agit conjointement, comme les décisions sur la vision, la politique, la planification stratégique et le budget.
  • Les assemblées générales, au cours desquelles les membres et les parties prenantes cherchent à obtenir un accord général sur des décisions importantes, telles que la révision des statuts, les transactions majeures et l'élection des directeurs ou des membres du conseil.

Rôles typiques :

  • Désigner un facilitateur. Dans les réunions du conseil d'administration, il s'agit généralement du président.
  • Le quorum ou la supermajorité des membres doit être atteint, conformément aux statuts de l'organisation.

Étapes du processus de consensus :

    1. Énoncer la question à trancher - démarrer un fil de discussion Loomio.
    1. Présenter une proposition pour tester le consensus - lancer une proposition de vérification du sens.
    1. Clarifiez certains points, invitez les participants à apporter des modifications constructives et modifiez la proposition.
    1. Tester l'accord - lancer une proposition de consensus.
    1. Résultat - énoncer le résultat de la décision.

Avantages

  • Améliorer la compréhension commune.
  • Les décisions correspondent à la volonté collective du groupe.
  • Encourager les gens à faire passer le groupe avant leurs préférences personnelles.

Processus de décision simple

Certaines organisations commencent à utiliser Loomio en ayant déjà développé une culture et une pratique approfondies de la prise de décision collaborative. Ces organisations ont souvent rédigé des manuels et codifié leurs pratiques, mais la plupart d'entre elles sont encore en phase d'apprentissage et cherchent à faire quelques premiers pas utiles pour prendre de meilleures décisions ensemble. Si la question brûlante dans votre organisation est de savoir comment prendre des décisions ensemble, ce guide est fait pour vous.

Voici trois étapes pour vous aider à co-créer une meilleure décision, plus cohérente, avec moins de stress et d'anxiété.

Une prise de décision simple - en 3 étapes

Les bonnes décisions prises en collaboration le sont rarement d'elles-mêmes. Elles bénéficient presque toujours de l'aide d'une personne qui facilite la discussion jusqu'à la prise de décision. Ainsi, lorsque vous lancez un fil de discussion, vous jouez un rôle de facilitateur (à moins que quelqu'un d'autre ne le fasse).

Suivez les trois étapes suivantes pour aider votre groupe à prendre une bonne décision.

Étape 1 - Présentation et discussion

Démarrez un fil de discussion Loomio pour présenter le sujet, ouvrir la discussion et inviter des personnes. Incluez toutes les informations contextuelles dont votre groupe a besoin pour participer de manière significative, ainsi que des informations générales pertinentes afin que chacun comprenne l'objectif.

Soyez clair sur votre objectif - quelle est la décision à prendre ou le résultat escompté de la discussion ?

Au fur et à mesure que la discussion progresse, créez un espace pour des contributions diverses - parfois, les meilleures idées et contributions viennent de l'extérieur. Travaillez ensemble pour explorer et tester les idées, en encourageant une discussion saine et ouverte.

Remarquez lorsque les mêmes voix dominent et invitez certaines personnes plus discrètes à contribuer en les @mentionnant et en leur demandant ce qu'elles pensent.

Vous pouvez faciliter l'engagement dans une discussion complexe en mettant à jour la section du contexte du fil de discussion avec un résumé des points clés.

Étape 2 - Vérification du sens de la discussion

Lorsque votre groupe commence à converger sur la voie à suivre, utilisez un sondage pour sonder les opinions et tester les sentiments du groupe.

Un « contrôle du sens » permet aux gens de savoir qu'une proposition est en train de se former et les encourage à s'engager. Il peut également servir à clarifier un problème, même si la solution n'est pas encore évidente.

La vérification du bon sens est un excellent moyen de faire émerger les préoccupations avant de passer à un accord formel. Vous pouvez savoir si les gens sont satisfaits de la tournure des événements, s'ils ont des questions, s'ils ont besoin de plus de temps ou s'ils sont inquiets.

Utilisez le retour d'information pour améliorer et affiner la proposition. S'il reste encore du travail à faire, vous devrez peut-être revenir à l'étape 1 et procéder à une nouvelle vérification de sense.

Un bon engagement vous aidera à déterminer si vous êtes prêt à passer à l'étape de la proposition.

Étape 3 - Proposition

Lorsque vous présentez une proposition formelle, vous avez la certitude qu'elle sera acceptée.

Il se peut qu'il y ait eu de nombreuses discussions et que des variantes aient été suggérées, alors soyez précis quant à la décision à prendre, afin que chacun sache ce que signifient les options de vote.

Fixez délibérément des délais pour les propositions, afin que les membres du groupe aient le temps d'y réfléchir et de s'engager. Vous pouvez toujours repousser la date de clôture si nécessaire.

Cette étape est importante pour formaliser l'accord avec le vote des personnes et pour énoncer un résultat - ce qui vient de se passer et ce qui se passera ensuite.

Les résultats de la proposition sont consignés, de même qu'un compte rendu de la discussion qui a mené à la décision.

Résultat

Lorsqu'un sondage Loomio est clôturé, vous êtes invité à définir un résultat afin que tout le monde sache ce qui s'est passé et ce qui va se passer ensuite.

Les propositions peuvent être utiles dans de nombreuses situations

N'hésitez pas à lancer une proposition simplement parce que vous n'êtes pas sûr que tout le monde sera d'accord - les propositions ne sont pas uniquement destinées à obtenir un consensus, elles sont conçues pour mettre en évidence les problèmes à résoudre et sont utiles pour clarifier les désaccords.

Journal du jeudi 10 octobre 2024 à 16:39 #JaiDécouvert

En étudiant Loomio, #JaiDécouvert une fonctionnalité que je trouve très bien implémentée : "Démarrer la démo - Jouez avec un groupe exemple".

Cela crée automatiquement un groupe avec du "contexte" :

Avant cela, j'ai beaucoup aimé les "workspace" de type "sample" de Basecamp mais là, je trouve l'User experience encore meilleur. Je trouve l'entrée du menu très bien placée et très explicite.

Journal du jeudi 10 octobre 2024 à 15:16 #JaiDécouvert

#JaiDécouvert le jobboard nommé Jobs that makesense.

Filtre appliqué avec plus ou moins mes critères de recherche : lien.

J'ai découvert Decidim et Cap Collectif, deux logiciels open-source de prise de décisions pour les collectivités #vidéo, #JaiDécouvert, #livre, #closed

Dans la #vidéo "Table ronde sur la mutualisation - Congrès ADULLACT 2024" #JaiDécouvert Decidim.

"Decidim" est un mot catalan qui signifie "Nous décidons".

Je découvre que ce projet a commencé en 2016 et qu'il est plutôt actif.

Decidim.barcelona, le premier site web propulsé par Decidim, a été lancé le 31 janvier 2016 par la ville de Barcelone peu après l'élection d'Ada Colau pour coconstruire le plan d'action municipale de la Mairie de Barcelone pour la période 2016-2019.

#JaiDécouvert un autre outil de prise de décision nommé Consul Democracy :

La première version du site s'est basée sur le logiciel libre Consul, développé par la Mairie de Madrid, dans le cadre de la collaboration intermunicipale entre les gouvernements de "Maintenant Madrid" et Barcelone en Comú constitués après les élections municipales de 2015 et des collectifs activistes liés au Mouvement 15-M. En 2017, Decidim se lance comme projet indépendant en repartant d'une base de code réécrite depuis 0 et commence à se déployer dans d'autres villes.

Le projet Decidim a publié un #livre en accès libre nommé Decidim, a Technopolitical Network for Participatory Democracy.

Je lis :

En France, l'outil Decidim est utilisé par de nombreuses municipalités telles que Lyon, Rouen, Toulouse, Brest ou Chambéry.

En 2021, l'outil a été utilisé lors d'une consultation citoyenne sur la sortie de l’Alsace du Grand Est. L'entreprise Open Source Politics, qui a géré le vote en ligne reconnait cependant un certain nombre de dysfonctionnements.

-- from

Voici les liens vers quelques instances Decidim de collectivités françaises ou de services publics :

J'ai l'impression que Rouen n'utilise pas ou plus Decidim, Wappalyzer https://jeparticipe.metropole-rouen-normandie.fr est codé en PHP.

En faisant ces recherches sur la ville de Brest, j'ai trouvé un autre gros concurrent à Decidim : Cap Collectif.

Cap Collectif est un autre logiciel de prise de décision, celui-ci est codé en PHP, voici le repository du projet : https://github.com/cap-collectif/cap-collectif. Ce projet semble avoir débuté en 2015, principalement par Aurélien David, qui semble avoir quitté le projet. Depuis, le projet semble beaucoup moins actif.

Voici quelques instances de Cap Collectif :

L'Université Paris 8 utilise un autre outil de prise de décision nommé id City qui est #closed-source .

[ << Notes plus récentes (451) ] | [ Notes plus anciennes (600) >> ]