Emacs Carnival September 2026: Games

| emacs

The theme for the Emacs Carnival this September is "Games". Thanks to Raymond Zeitler for hosting!

One of the things I love about the Emacs community is people's sense of humour and whimsy. There's a grand tradition of people hiding Easter eggs in software, a bit of hidden fun that might make someone smile. But isn't this just bloat and frivolity? One might argue that the code that lets us play M-x tetris, dunnet, or doctor in Emacs is a waste of time and space compared to More Serious Things, but on the other hand, the Tetris source code could be a good jumping-off point if you find yourself wanting to make an interactive real-time simulation that displays graphical results. Want something more modern? Maybe DOOM on Emacs! Besides, the code for games isn't actually loaded until you choose to play it. It's okay for something to be fun by itself instead of needing to be productive. There's something wonderful about a tool that people choose not just for work but also for enjoyment.

Our adventure can start with Fun and Games in Emacs - Mastering Emacs or Emacs Is A Gaming Platform for Windows, Mac and Linux - YouTube, which cover a lot of classic built-ins. Here's a barrage of ideas; skip or explore anything you want: Pretend you're on a typewriter or turn on power mode or make c-c-combos. Go on to draw some ASCII art with artist-mode or with Emacs Lisp, and add some box shadows because why not. Maybe even use it to tell the time. Turn ASCII art into PNGs. Have fun with obscure calendars. Use kaomojis or write weird text. Explore the screensavers in zone and let them sprinkle characters through your buffer, take over your other frames, or teach you something new. Watch snow or a fireplace. Rotate cubes in ASCII or with hardware-accelerated graphics. Why limit yourself to cubes? Still, if you do want to stick to cubes, you can solve them. Go ahead, animate something. Play roleplaying games (also check out Howard Abrams's 2023 talk), rogue-likes, multi-user dungeons, classics, chess, trading, Klondike and lots of other card games, a racing game, Minesweeper, 2048, Boomshine, a Gameboy emulator (this other one handles NES). Simulate cities or physics or pets (here's another one) or life. Have fun with so many cats: timers, scrollcats, screensavers. Not a cat person? There's a parrot version and a fish version. Read comics or make memes. Guess words or find them. Learn other alphabets. Make art. You can even turn your Emacs into a Geiger counter for garbage collection.

Then take a step back and marvel at this community of people who try things out, tinker, follow that crazy idea that won't let go of them, and share what they came up with. If you write Emacs Lisp (or want to learn), rummage around in the source code for ideas on how to do things. See if you have any ideas that tickle your fancy. You might be able to get Emacs to do things text editors don't usually do! =)

Check out the Emacs Carnival page for Games to see other posts!

View Org source for this post

Semaine du 24 au 30 août

| french

lundi 24

Nous avons joué à Donjons et Dragons. Cette fois, ma fille a eu envie d'une aventure où notre ours-hibou Snowy nous secourt avec l'aide de l'ogre amical Clonker. Nous avons eu aussi une autre aventure où le personnage de ma fille a exploré son parentage qui est un mélange de l'infernal et de l'abyssal.

Pendant que je faisais les courses, j'ai utilisé Claude pour générer une page qui m'entraîne à distinguer la prononciation des paires minimales.

Maintenant que l'orteil de ma fille n'est pas blessé, j'ai emmené ma fille au cours de gymnastique.

J'ai terminé la première bande dessinée « Les Royaumes de Feu : La Prophétie ». Je suis étonnée que je l'aie globalement comprise. Le fait de l'avoir lu plusieurs fois en anglais (grâce à l'intérêt de ma fille) m'a été utile. J'ai demandé le reste des bandes dessinées dans la série à la bibliothèque.

mardi 25

Pendant mon cours de prononciation avec mon tuteur, nous avons travaillé sur la voyelle « o » telle que « port », « bord », « d'accord », « transporte ». Je vais essayer de prononcer avec moins d'air. En analysant mon enregistrement de ma séance de prononciation, j'ai remarqué que j'ai oublié de prononcer la voyelle nasale pour le mot « invité ».

Ma fille et moi sommes allées au parc d'attractions. Cette fois, nous nous sommes focalisées sur les montagnes russes au lieu du parc aquatique. Nous écoutions des livres audio et ma fille jouait à Pokémon sur la Game Boy Advance pendant que nous attendions.

Ma fille était un peu grincheuse avec moi parce que j'ai interrompu son marathon de Pokémon pour l'emmener se coucher. Elle a refusé et elle s'est mise à lire une bande dessinée. Je pense que pour elle, il faut que je sois à côté d'elle pendant au moins un épisode avant qu'elle ne soit prête à faire notre routine de soir. Ben, j'ai aussi envie de temps personnel après une journée chargée.

mercredi 26

J'ai recherché des informations sur la paperasse néerlandaise.

J'ai emmené ma fille au parc pour jouer avec ses amies. Elles ont joué avec le seau de barbe à papa. Malheureusement, je l'ai oublié au parc.

J'ai préparé des questions pour Fabrice pendant que les filles jouaient.

jeudi 27

J'ai encore une conversation avec Fabrice Niessen et Prot. Nous avons parlé de gptel, de la reconnaissance vocale, d'outil « dotfiler », des formations et des cours particuliers.

Ma fille et moi avons joué à Donjons et Dragons dehors.

Mon mari, ma fille et moi avons fait les courses ensemble.

Ma belle-fille ne va pas nous accompagner demain au parc d'attractions, donc ce sera juste ma fille et moi.

vendredi 28

Ma fille et moi sommes allées au parc d'attractions très, très tôt. Nous y sommes arrivées exactement à l'heure d'ouverture. Grâce à nos abonnements saisonniers, nous avons pu monter les montagnes russes Vortex et Yukon Striker sans trop d'attente. Nous avons aussi profité d'un accès anticipé au parc aquatique. Ma fille s'est amusée avec les montagnes russes lancées comme Backlot Stunt Coaster.

Pendant que nous allions au parc d'attractions en métro, j'ai étudié mes cartes de mémoire françaises et j'ai travaillé sur mon brouillon pour le Carnaval d'Emacs.

Nous avons regardé le film « Donjons et Dragons : L'Honneur des voleurs » à la maison.

samedi 29

J'ai déplacé mon microphone à gauche de mon bureau et j'ai changé le gain.

J'ai préparé des lasagnes pour mon ami.

J'étais un peu fatiguée aujourd'hui.

La bataille dans Donjons et Dragons était trop dure, donc nous avons fui.

Ma fille et moi sommes allées à la bibliothèque pour chercher beaucoup de livres. Nous avons fait aussi des courses.

J'ai publié mon article sur la gestion d'information pour le Carnaval d'Emacs d'août 2026.

dimanche 30

Ma fille n'a pas voulu aller à la séance de Donjons et Dragons au magasin parce que nos personnages sont au huitième niveau et elle s'est habituée aux spots puissants comme Boule de feu. (Les personnages au magasin sont au quatrième niveau.) Nous avons joué une aventure de protéger Keff contre un assassinat.

Ma fille et mon mari ont préparé des lo mai gai.

J'ai emmené ma fille au cours de gymnastique.

J'ai traduit mon article sur les graphes de connaissances vers l'anglais.

Mon mari a préparé la paperasse pour l'attestation de résidence pour l'école de ma fille.

J'ai apporté des lasagnes à mon ami. Je l'ai aussi aidé à faire la vaisselle.

View Org source for this post

Semaine du 17 au 23 août

| french

lundi 17

J'ai envoyé de nouveau des documents aux Philippines pour les actions. En guise de récompense après la tâche, j'ai mangé de la crème glacée.

J'ai emmené ma fille à la médecin pour le rendez-vous sur un diagnostic potentiel d'autisme. Il s'est avéré qu'il n'avait pas besoin d'elle là-bas, donc elle s'est occupée avec un livre de Donjons et Dragons pendant que je parlais avec la médecin. Elle a pensé que ma fille n'a pas le TDAH, mais elle peut l'évaluer pour l'autisme. La médecin m'a conseillé de faire en sorte qu'elle doive participer à l'école, je dois mettre une heure du coucher, ça pourrait marcher si je mets un tableau de comportement pour l'encourager à participer à l'école… Je ne sais pas si c'est un bon chemin pour nous. La médecin m'a dit qu'il n'y a pas de choix, elle doit aller à l'école. Mais je sais qu'il y a d'autres alternatives et l'école n'est pas forcément parfaite en l'état. Nous pouvons peut-être négocier des changements, des adaptations, et si c'est impossible, je préfère expérimenter ensemble au lieu de me mettre contre elle. Je ne crois pas qu'elle choisit de devenir grincheuse quand l'école a un remplaçant. Elle a raison. Le rythme de l'école est trop lent quand un remplaçant a du mal avec la technologie, il n'a pas de vraie leçon, des camarades de ma fille font des bêtises… Personne ne profite dans cette situation.

Ma fille a joué de nouveau en tant que la meneuse de jeu. Elle nous a téléporté à Thay pour chercher Nibbles, le wolpertinger de son amie. Nous avons battu deux batailles.

mardi 18

J'ai partagé mes notes de notre rendez-vous hier matin avec la médecin à mon mari. Nous avons discuté de la neuroatypie, et il a recherché des outils. Ma fille voulait un nouvel objet anti-stress, donc mon mari a trouvé un dessin pour en imprimer un en 3d. Nous sommes allés à la bibliothèque. Une fois rentrés, mon mari a ajouté des touches de clavier à l'objet.

J'ai préparé des petits pains à l'adzuki.

J'ai une séance de prononciation avec mon tuteur. En plus des virelangues, il m'a donné un article sur l'expression « la veille du soir ».

mercredi 19

Nous avons cherché la poterie de ma fille.

J'ai aussi cherché beaucoup de livres à la bibliothèque pour ma fille. Elle a fini par collecter 12 autocollants pour le programme de lecture d'été.

jeudi 20

J'ai acheté des abonnements saisonniers pour moi et ma fille, et je l'ai emmenée au parc d'attractions. Nous avons monté de nouveau les montagnes russes Leviathan et quelques manèges. Nous avons aussi joué au parc aquatique, mais il faisait un peu froid, donc nous avons repassé aux manèges.

J'ai eu une diffusion en direct en français avec Abdallah Maouche et Prot.

Le lave-vaisselle a fait une erreur F1. Mon mari l'a réparé.

Ma fille m'a dit que quand elle lit un long texte, les phrases nagent dans son cerveau.

vendredi 21

J'ai une séance de conversation avec mon tuteur. Petit à petit, je m'habitue à la conversation. Je n'ai que consulté mes notes quelques fois. Nous avons parlé de films, de la conduite et de mes interviews d'Emacs.

Ma fille et moi sommes allées au musée Power Plant pour voir l'exposition Coloured Rainbows, ce qui est conçu pour permettre aux enfants de jouer avec les œuvres. Ma fille s'est amusée aussi avec les fines gouttes à la place.

Ma fille a joué en tant que la meneuse de jeu pour moi.

J'ai lu quelques pages du livre Les Royaumes de Feu à voix haute à ma fille.

samedi 22

J'ai apporté du bulgogi et d'autres aliments à mon ami qui est malade. Mon mari et ma fille m'ont accompagnée afin que nous continuions à Midoco, un magasin qui propose des cahiers et d'autres produits cool. Nous sommes allés à pied à un autre magasin pour chercher un jouet antistress Needoh qui est le préféré de ma fille, mais c'était en rupture de stock à cause du buzz.

J'ai lu quelques pages de Les Royaumes de Feu avec ma fille. Ça m'a intéressée.

Nous avons célébré le demi-anniversaire de notre fille avec du s'mores.

J'ai utilise l'IA pour générer une liste de phrases sur Emacs pour essayer la technique des îles de langue. Je l'ai téléversée à Lute pour saisir les nouveaux mots.

dimanche 23

J'ai corrigé la transcription de ma conversation avec Abdallah Maouche et Prot. Cette fois, j'ai téléversé le fichier audio à Gemini Notebook pour comparer avec ma version corrigée. La documentation de Gemini Notebook indique que le moteur transcrit l'audio et il utilise seulement la transcription. D'abord, l'IA était confuse par les deux transcriptions, donc il fallait que je spécifie le nom du fichier de ma transcription. Après avoir fait ça, cette manière me permet de corriger des erreurs et des omissions dans ma transcription.

Nous avons dessiné une carte et nous sommes allées à la fête prénatale du neveu de mon mari. Il y avait beaucoup de personnes.

J'ai emmené ma fille au cours de gymnastique aérienne. Elle aime le cerceau plutôt que les soies.

View Org source for this post

Semaine du 10 au 16 août

| french

lundi 10

Ma fille a du mal à l'orteil, donc nous sommes restées à la maison et nous avons joué à Donjons et Dragons. Elle a terminé l'arc de Kessandra et elle a obtenu le sixième niveau.

mardi 11

J'ai emmené ma fille à Horsecapades pour voir le spectacle gratuit, mais il était trop bruyant pour ma fille, donc après une courte exploration et des manèges, je l'ai emmenée au restaurant sushi pour déjeuner. Malheureusement, elle a fait tomber une moitié de nos sushis, mais ce n'était pas grave. Je lui ai dit que c'est la raison pour laquelle nous avons une caisse d'oups pour gérer tranquillement ces accidents.

Ma fille et moi avons joué l'aventure Maid in Waterdeep adaptée au sixième niveau.

Pendant ma séance de prononciation, j'ai posé des questions sur le son « t » dans « enfin accepté » que mon tuteur m'avait enseigné la semaine dernière. J'ai voulu savoir le nom de ce truc pour chercher des règles. Mes recherches simples ont dit que c'était une fausse liaison qui s'appelle cuir et qui est courante, mais il y a aussi des articles qui critiquent le truc. Il a dit que c'est naturel pour lui, mais ce n'est pas obligatoire, donc je le laisse pour le moment.

mercredi 12

Il pleuvait, donc ma fille et moi sommes restées à la maison et nous avons joué à Donjons et Dragons. Nous avons commencé l'aventure Waterdeep : Tavern Defense.

J'ai préparé mes questions pour notre conversation d'Emacs Chat demain.

Ma fille a perdu une partie de son jeu à cause d'un plantage. Elle était un peu grincheuse, mais elle a continué.

Ma fille a appris à ses dépens la nécessité de sauver fréquemment en jouant à Pokémon. Elle était déçue, mais elle a persisté.

J'ai fini de regarder tous les épisodes de Lupin avec les sous-titres français.

J'ai préparé des wontons.

jeudi 13

Mon mari a rédecouvert des dahlias dans notre sous-sol. Nous les avons plantés.

Pendant que ma fille jouait avec son amie, j'ai lu un livre, aidé une autre enfant à créer son propre profil de Donjons et Dragons et appris à une autre à dessiner sur Procreate sur mon iPad.

J'ai fait une diffusion en direct avec Fabrice Niessen et Prot sur Emacs. Même si le sous-titrage automatique du navigateur n'a pas marché, nous avons eu une conversation débridée. J'ai travaillé un peu sur les sous-titres après la conversation et j'ai planifié une autre conversation.

vendredi 14

Nous avons joué à Donjons et Dragons en utilisant le module Wolpertinger, Wererat - Well.

J'ai apporté des pâtes aux saucisses, aux tomates, aux courgettes et aux poivrons à mon ami qui m'a dit qu'il apprécie beaucoup l'aide à manger des verts.

J'ai eu une séance de conversation avec mon tuteur.

samedi 15

Ma fille a joué en tant que la meneuse du jeu avec l'aide de l'IA.

Nous sommes allées à la bibliothèque et au supermarché.

Ma fille m'a dit qu'elle avait toujours mal à l'orteil. J'ai pris un rendez-vous avec la médecin et j'ai annulé le cours de gymnastique lundi.

dimanche 16

Il n'y avait pas d'autres enfants pour le jeu de Donjons et Dragons, donc c'était annulé.

J'ai oublié de mettre une minuterie avant son cours de gymnastique parce que ma fille m'a demandé plus d'aventures de Donjons et Dragons. Je lui ai proposé de l'emmener au gymnase un peu en retard, mais elle a refusé. Mais progrès : elle n'est pas partie furieuse ou grincheuse, elle est restée sur le canapé et elle a regardé Pokémon. Moi aussi, après un peu d'auto-recrimination, j'ai continué avec la routine du soir.

J'ai programmé mon téléphone afin que mes notifications d'événement aient des alarmes qui continuent jusqu'à ce que je l'arrête.

View Org source for this post

Semaine du 3 au 9 août

| french

lundi 3

Il y avait une fête civique aujourd'hui, donc ma fille n'a pas eu son cours de gymnastique. Nous sommes restés à la maison et nous avons joué à Donjons et Dragons.

J'ai mis à jour le mot de passe de ma mère, qui s'est accidentellement abonnée à quelque chose sur son téléphone. J'ai aussi vérifié mon identité à l'une des compagnies d'assurance-vie.

Mon mari nous a enseigné des mots chinois.

J'ai continué mon expérience avec l'utilisation de l'IA pour pratiquer la conversation en jouant au jeu du rôle. Je dois modifier le prompt pour éviter ou au moins réduire la flatterie et la flagornerie. D'un côté, c'est plus pratique parce que je peux peaufiner la grammaire et le vocabulaire à mon propre rythme et indépendamment des difficultés d'expression orale ou à la reconnaissance vocale. D'un autre côté, je pense qu'un tuteur est meilleur parce que c'est un vrai échange d'idées. C'est possible de continuer avec les deux façons.

mardi 4

J'ai emmené ma fille au Bidaasige Park pour explorer les nouvelles pistes cyclables et pour jouer là-bas.

J'ai lu la configuration de mon invité pour la diffusion en direct jeudi.

J'ai une séance de conversation avec mon tuteur. Après cela, j'ai lu la transcription et j'ai pris des notes.

mercredi 5

Nous avons fait du vélo jusqu'à la bibliothèque Beaches et l'appartement d'une bénéficiaire que mon mari a voulu aider. C'est très loin, mais le moteur l'a géré.

Nous avons mangé des pizzas.

J'ai préparé mon introduction et des questions pour mon interview demain matin.

jeudi 6

J'ai survéçu à mon premier épisode d'Emacs Chat en français ! J'ai lancé la diffusion en direct en retard, vingt minutes après le début, mais heureusement, j'ai enregistré localement toute la conversation. Maintenant j'attends la transcription et je vais essayer de la corriger. Je l'ai adoré. Même si j'avais parfois besoin de la traduction automatique que mon navigateur Chrome m'a donnée pendant la conversation, je peux comprendre la plupart des mots et même les récapituler.

J'ai fait les courses en vélo.

vendredi 7

Ma sœur nous a envoyé un cadeau d'anniversaire qui comprenait de différentes collations.

J'ai apporté du chili, des fruits et des carottes à mon ami. Il y a d'autres amis de mon ami qui lui rendaient une visite, donc j'ai bavardé un peu.

Nous avons joué à Donjons et Dragons avec mes nièces et ma sœur qui leur rendait une visite. Nous avons été attrapés par trois ogres. Je suis une magicienne humaine et ma fille est sa clerc naine. Elle et moi sommes tombées dans la bataille et mes nièces nous ont aidées.

J'ai eu un rendez-vous avec mon tuteur. Nous nous sommes concentrés sur les liaisons et sur les enchaînements. J'ai extrait les dernières tentatives dans une vidéo pour les réécouter plus facilement.

samedi 8

J'ai commencé à traduire les sous-titres vers l'anglais.

J'ai fait un peu de sport.

J'ai mis à jour mon journal et j'ai analysé mon vocabulaire.

J'ai joué à Minecraft Donjons et Dragons avec ma fille.

dimanche 9

Deux histoires sur Donjons et Dragons : ma fille a voulu aller au magasin pour jouer. Il y avait une autre enfant. Le meneur de jeu avait préparé un donjon d'un génie. Ma fille et l'autre enfant (qui jouait comme artificier) ont exploré le donjon, mais pendant le combat, ils ont fui. C'était marrant. Le soir, une fois rentrées, nous avons continué notre aventure. J'ai utilisé l'IA pour générer des idées pour notre aventure et puis ma fille l'a modifiée.

Ma fille a voulu aller au cours de gymnastique même si elle avait mal à l'orteil.

View Org source for this post

Emacs Chat 30: Fabrice Niessen (en français, partie 2)

| emacs-chat, emacs-chat-podcast, emacs, french

Nous avons parlé en direct avec Fabrice Niessen d'Emacs pour la deuxième fois. Voici ses notes.

Correction : J'ai voulu dire Speaches (un serveur de reconnaissance vocale) au lieu de speechd (un serveur de synthèse vocale)

Voici notre conversation précédente : Emacs Chat 28: Fabrice Niessen (en français)

Chapitres

  • 0:00 Introduction
  • 3:00 gptel
  • 13:42 diff
  • 17:52 gptel-commit-message
  • 23:30 docstrings
  • 24:03 hs-minor-mode - hideshow
  • 31:03 Super-whisper
  • 41:21 Dotfiler
  • 59:12 Enseignement d'Emacs

La transcription légèrement corrigée

Details

0:00 Introduction

Prot: Tu peux prendre le lien correct cette fois.

Fabrice: Ah, voilà, je suis prêt avec.

Sacha: Ah, ok. Ok. Nous sommes en direct.

Prot: Ah, nous sommes en direct. Très bien.

Sacha: Donc, je vais passer à vos notes. Bonjour à toutes et à tous et bienvenue au 30e épisode d'Emacs Chat. C'est la suite de notre conversation avec Fabrice Nissen. Merci de nouveau Fabrice d'être là et merci également à Prot de nous rejoindre. Donc, on continue. Lors de la conversation précédente, nous avons parlé de ton expérience sur Windows et sur WSL, des thèmes de publication vers HTML ou vers PDF, de ton kit de configuration Leuven, des petites améliorations et des automatisations et des formations et des cours particuliers en français, en anglais, en néerlandais et en espagnol. C'est incroyable, ça! Du coup, si ça ne te dérange pas, j'essaie d'en savoir plus sur ton flux de travail, puis repasser à une discussion sur l'enseignement d'Emacs, de nombreux changements et de grandes incertitudes à l'époque de l'IA. Qu'en penses-tu? Depuis notre conversation, tu as ajouté beaucoup de fonctions, d'outils, de préréglages (presets) de gptel à ta configuration. C'est un sujet très tendance YouTube a évidemment beaucoup de video de ce genre en anglais, mais pas encore en français, je pense. Peux-tu nous montrer ton flux de travail avec l'IA sur Emacs?

Fabrice: Volontiers. Merci pour l'invitation et l'image bouge. Merci pour l'invitation pour cette trentième fois. Donc, je vais partager mon écran.

Prot: Merci.

Fabrice: Alors, je tape share, voilà. Et donc, ce sera celui-ci. Est-ce que vous voyez mon écran ?

Prot: Oui, je peux voir ton écran.

Fabrice: Ok, très bien. Très bien.

3:00 gptel

Fabrice: Donc en fait, sur gptel, j'utilise pas encore beaucoup, beaucoup, beaucoup, mais de plus en plus. Je suis aussi un peu novice, un peu, mais j'ai effectivement, et récemment d'ailleurs, fait quelques petites améliorations de layout au standard. Donc j'ai, par exemple, utilisé le raccourci C-<F1> pour lancer… Je n'ai pas lancé le chat. Je vois que je n'ai pas ma dernière configuration. C'est peut-être l'occasion aussi de parler, juste un petit break. Vous voyez que j'utilise Helm. Je ne sais pas ce que vous utilisez vous. Je suis extrêmement content de Helm, ce qui me permet de taper. Je ne dois plus savoir où se trouve un fichier, dans quel répertoire. Il suffit que je connaisse quelques morceaux de son nom. Et je vais retrouver directement le fichier ou le buffer actif. Donc ici c'est gptel et ce sera le point el. Il est là. Donc ici, je vais lancer et je vais faire vb rapidement pour le keychord eval-buffer. Voilà, donc il est évalué. Donc je vais avoir un look un peu différent maintenant si je recommence. Voilà, C-<F1>. Donc on peut lui dire bonjour. C-c C-c pour envoyer. Voilà. Et donc ici il répond. Donc une petite utilisation que j'ai faite, c'est gptel-highlight-mode qui permet de mettre la réponse avec un certain fond et une petite barre ici dans la frange pour bien identifier la différence entre les questions et les réponses. Je peux lui demander d'écrire Un exemple de code Python. S'il fait comme d'habitude, il va faire la suite de Fibonacci. Voilà. Et donc, qu'est-ce qu'il a fait ? Ah non, les nombres premiers. Ici, c'est quelque chose que je commence à utiliser de plus en plus, le buffer de conversation gptel. Une petite customisation que j'ai faite. D'ailleurs, j'ai envoyé un issue à l'auteur de gptel pour éventuellement qu'il l'introduise directement dans... Dans gptel, c'est le fait de recoloriser les codes blocs dans les réponses en utilisant la couleur que j'ai dans mon thème pour Org Mode. Donc ici, c'est exactement comme dans un fichier Org Mode. J'ai le fond jaune pour le code et les délimiteurs ici, de début et de fin, en gris. Et ça, c'est très important, je trouve, pour mettre en évidence comme il faut le code bloc. Et le fait, bon ici ce n'est pas de l'Emacs Lisp, mais si j'avais demandé, si je pouvais demander de faire la version, donnez-moi la version de l'Emacs Lisp. C-c C-c. Et l'avantage évidemment de faire ici, donc à la fin de la réponse, il y a un scroll automatique vers le bas. Ah d'accord. Et ce qu'il fait aussi, c'est qu'il fait un formatting pour que ça reste moins de 80 caractères. Et donc ici, l'avantage, c'est que c'est dans Emacs et que c'est l'Emacs Lisp. Je peux directement faire C-x C-e. Et je pourrais tester les fonctions. Je pourrais faire ici. Ça me permet d'éviter de faire des copier-coller entre ChatGPT ou Copilot ou n'importe lequel. Ici j'ai tout directement là dedans. C'est extrêmement pratique.

Sacha: Tu as aussi des fonctions pour ajouter des contextes, des fonctions, d'autres choses dans ta configuration. Au lieu d'utilisation de conversation buffer, tu as aussi utilisé les fonctionnalités gptel dans ton code.

Fabrice: Il y a le rewrite que j'utilise parfois, ou alors pour répondre avec le contexte, il y a notamment le add context ou add context file. Je n'ai pas encore beaucoup joué avec, donc je sais qu'on peut aller dans Dired et puis faire gptel-add-file, add context file, je crois. Et je l’ai déjà bindé sur C-c g, donc tout ce qui est C-c g et c’est gptel. J’ai déjà utilisé le raccourci avec un petit a, donc C-c g a pour ajouter du contexte. Mais je ne l'ai pas encore vraiment utilisé, donc je n'ai pas encore beaucoup d'expérience avec. Par contre, je fais parfois dans des fichiers, je peux faire, si je prends un fichier Org, on peut aller dans le fichier ici avec mes petites notes d'aujourd'hui. Ça pourrait m'arriver ici de dire je veux traduire ces deux paragraphes en anglais par exemple. Je vais les sélectionner. Je vais faire C-u C-c RET pour avoir le menu de gptel. Là, je vais changer la directive puisque la directive ici c'est tu es un assistant, etc. Je vais changer la directive. Je vais en fait utiliser le S, Set System Message. Là, j'ai une série de prompt, en fait, de system prompt, de directives, ça s'appelle, sous gptel. Donc, une série de directives, de prompt qui sont prêts. Mais ici, je vais faire un spécifique. Donc, je vais encore faire une fois s. Et là, je vais taper, par exemple, traduit. Là, quand on a fini, on peut faire C-c C-c. Ici, on voit la directive qui est là. Pour l'instant, si je ne change rien, il va envoyer ma sélection et il va insérer la réponse. Là, je ne vois pas très bien. Il faut que je déplace un truc. Il va insérer la réponse à la fin. Je pourrais faire ça, par exemple, pour voir comment il a traduit. Comme ça, je garde au-dessus l'input. Je vais faire effectivement RET ici. Parfois, c'est un peu compliqué à lire.

Prot: Qu'est-ce qu'il m'a fait ?

Fabrice: On dirait qu'il a pris plus de lignes.

Sacha: Il y a un problème des démos en direct.

Fabrice: Je vais bien le refaire. C-u C-c RET. Je vais bien sectionner ma région. La directive est là. Donc, je vais faire ici Enter. Voilà. Donc j'ai vu que l'input était, la section était toujours sélectionnée, donc j’ai fait C-w pour l'entrée, et puis j'ai gardé ce qu'il y a. Donc ici, voilà, typiquement, il a fait le job facilement, donc je suis nouveau restant dans Directement dans Emacs, on fait des copies-coller avec d'autres interfaces externes.

Sacha: Je vois que tu peux aussi remplacer la sélection avec les résultats ou peut-être rediriger l'output à un autre tampon pour comparaison.

Fabrice: Exact. Donc, je n'ai pas encore tout utilisé, mais je pourrais ici essayer. On va essayer. On va traduire en français, par exemple. Donc, j'ai bien sélectionné. Je vais faire C-u C-c RET pour avoir de nouveau le menu. Ou alors, M-x, j'ai fait tel menu. Donc là, je vais changer et je vais mettre la directive 2 fois S. Et cette fois-ci, je vais traduire en français. C-c C-c, voilà. Et donc, je vais mettre ici le respond in place. Et donc, en théorie, il va écraser ma sélection par sa réponse. Donc, je vais faire le i ici. Et donc, en fait, il faut toujours lire la dernière ligne ici. On voit ce qu'il va faire. C'est un résumé de ce qu'il va faire en fonction des options qu'on a choisi. Donc ici, quand je vais faire ret, quand je vais faire return, il va remplacer la sélection avec la réponse. Donc je fais RET. Ah, et là j'ai peur. The conversation must end with a user message. Qu'est-ce qu'on va faire ? On va rester, on ne sait jamais. C-x C-x C-u RET Non, ce n'était pas ça. C-x u. C-x u. Voilà. C-x C-x C-u RET Ben si, c'est ça. Non, C-u C-c RET. Il y a trop de raccourcis. Je fais la sélection, voilà. C-u C-c RET. J'ai mon menu, j'ai ma directive en haut qui est bonne. Je vais faire le i, Replace, la sélection du response, RET. Bon, j'ai l'erreur. Donc là, il faudrait que je regarde un peu plus. Je n'ai pas beaucoup utilisé ça. Et en fait, justement, sur le rewrite, il faut que j'utilise aussi un peu plus pour du texte et pour du code. Et je sais qu'il y a plusieurs possibilités après.

13:42 diff

Fabrice: Il y a aussi moyen de dire, il va remplacer en théorie par le nouveau texte, mais il y a moyen de montrer aussi son changement sous forme de diff ou de ediff. Donc il y a moyen de dire accepte. J’ai vu qu’après on peut faire C-c C-a pour accepte, C-c C-e pour ediff, C-c C-d pour diff. Et donc il peut rouvrir différents buffers pour bien visualiser la différence. Si c'est une traduction, tout serait changé. Et si on modifie du code, par exemple, en disant rajoute-moi un paramètre, on a envie de voir vraiment la différence et de sûr qu'il n'a pas fait plus de choses que ce qu'on a demandé. Donc il y a moyen de faire un diff ou un ediff après.

Prot: C'est peut-être mieux comme ça avec Ediff.

Fabrice: Oui, moi j'aime beaucoup Ediff. D'ailleurs, c'est quelque chose, je ne crois pas que je l'ai montré l'autre fois. Donc ici, moi j’ai C-<f9> chez moi, c’est privé, pour lancer vc-dir sans me poser de questions sur quel est le répertoire qu'on veut analyser. Donc ici, je vais faire C-<f9>. Donc il me lance vc-dir sur le répertoire dans lequel je me trouvais. On voit que j'ai fait une modification dans le fichier readme. Si je fais égal, on voit un diff unifié avec les plus et les moins en dessous. Il faut toujours relire avant de committer les diffs parce que là il y a une ligne qui n'était pas prévue d'être committée en imaginant que je devais faire le commit. Je vais d'ailleurs effacer cette ligne. Ce qui est pratique ici dans tout ça, c'est que j'ai fait une modification, j'ai sauvé. Ce buffer-ci est le diff. Je n'ai pas besoin de retourner dans le vc-dir et de refaire un égal. Je peux faire g, faire refresh, il recalcule le contenu. Donc ici, j’ai fait g et simplement, il a recalculé le diff. Et je ne vois plus que le paragraphe qu'on devait traduire, qui a été effacé. Pour l'instant, c'est une possibilité. Et l'autre possibilité à partir de vc-dir. Pour l'instant, je n'utilise pas encore Magit parce que j'ai eu pendant des années des répertoires, des repos qui étaient sous SVN, subversion. Certains étaient déjà sous Git. Je voulais une seule interface pour gérer tous mes repositories. Et donc, j'ai tout construit sur vc-dir qui marche très bien. Voilà, je suis sûr que Magit, pour Git, est plus sophistiquée, plus jolie à regarder, sans doute. Mais en fait, je fais tout mon boulot ici avec vc-dir. Donc, si j'avais égal, j'ai un diff unifié. Ça, c'est standard, je crois. Si je fais grand E, ça, c’est pas standard. Ça m'appelle ediff. Donc là, directement, j'ai ediff, puis j'ai plus qu'à faire next. Voilà, next. Bon, j'ai qu'un changement ici. Ce paragraphe là qui a disparu. Donc ça c'est très pratique, directement pouvoir lancer Ediff à partir d'un fichier modifié. Et alors une petite chose que j'ai récemment rajoutée dans Git, c'est donc ici je viens de refaire un égal pour avoir un Ediff unifié. Donc ici j'ai le Le diff unifié où j'ai ce paragraphe-là qui est apparu. En fait, depuis n'importe quel diff, donc output qui est sous forme de diff avec des plus et des moins, Ici, c'est à partir de vc-diff. Ça pourrait être le résultat d'un Git diff dans un buffer. Ça pourrait être dans Magit. Je peux lancer la touche avec w, ça marche. Ça m'a lancé la génération d'un message de commit via gptel. J'ai écrit une petite fonction qui va envoyer tout ce buffer-là.

17:52 gptel-commit-message

Fabrice: Ça envoie le buffer en entier à gptel. En lui demandant de m'écrire un message de commit. C'est gptel-commit-message. Je l'ai mis sous GitHub. Il génère un message de commit à partir d'un fichier, d'un buffer diff. Il envoie tout ça et donc il a été généré n'importe comment, donc ce n'est pas lié à Magit. Parce qu'il y a beaucoup, il y a plusieurs solutions qui existent déjà dans MELPA et c'est lié souvent à Magit. Ou à Git, en fait, il faut avoir stagé les fichiers. Moi, je n'ai pas spécialement envie de mettre des fichiers, de les stager dans Git. J'ai envie de pouvoir simplement sélectionner moi-même ici dans l'interface un, deux, trois fichiers et regarder la différence pour ces fichiers-là. Génère-moi un message pour ces fichiers. Ici, dans le package, qui est tout petit, il fait une fonction. Il y a juste une fonction. Il y a le nom du buffer et la fonction. Derrière, je l’ai mappé sur w. Quand je suis dans le diff-mode-map, dans vc-dir, Je tape w pour write. Ça me gênait le fichier de ce message. Donc, si je reviens sur ton changement, voilà. Donc, j'avais ici, j'avais fait W à partir d'un buffer diff. Ça a envoyé via gptel, ça a envoyé le diff, ça a récupéré un message de commit, ça l'a mis dans le presse-papier et ça m'a ouvert un buffer, donc ça a rajouté un buffer à côté où je pouvais le voir. Je vais le refaire ici. Donc ça envoie, voilà. Et donc on voit, ça ouvre un buffer avec le message en bas. Et en fait, je peux très bien me dire, tiens, en fait, ce message-là, il ne me plaît pas trop. Puisqu'en fait, on a chaque fois des réponses différentes. Donc je peux très bien refaire W en haut. Il va réenvoyer le truc. Cette fois-ci, ça ressemble assez fort. Je vais le refaire. Il change un petit peu, il n'y a pas beaucoup de changement ici parce que ce n'est pas le même texte. Donc, remove personal introduction from readme.

Prot: Et il a copié aussi sur le kill ring.

Fabrice: Oui, exactement. Donc, maintenant, en fait, je n'ai plus qu'à refaire ctrl . Je suis déjà là-dessus. Je n'ai plus qu'à faire dans V, c'est dire, next action, c'est V. Pour dire, fais l'action suivante qui a du sens. Ici, puisque j'ai un fichier modifié, l'action suivante qui a du sens, c'est de committer. Donc, il m'ouvre un buffer pour pouvoir mettre mon message de commit. Donc, je fais simplement C-y. Et éventuellement, je vais un peu le modifier. C-c C-c, c’est envoyé. Et donc, c'est committé. Ça, j'utilise depuis quelques mois quand même, je dirais depuis 4, 5, 6 mois. Depuis cette période-là, je fais tous mes messages de commit avec gptel, l'intelligence artificielle. Et c'est merveilleux parce que ça a augmenté la qualité de mes messages de commit. C'est indéniable. Avant, je mettais souvent dans mes fichiers à moi « update ».

Sacha: Moi aussi.

Fabrice: Et en plus, non seulement j'ai un beau message qui dit vraiment ce qu'il y a, et je relis encore, non seulement avant de committer, je relis toujours. Au minimum, je fais égal pour voir la différence. Ou s'il y a beaucoup de différences, je vais faire un grand E pour pouvoir en Ediff comparer les versions avant et les versions après, systématiquement. Mais en plus, je fais générer mon message de commit et je lis aussi le message de commit. Voilà, pour voir qu'il a bien compris et qu'effectivement aussi, le résumé est correct par rapport à ce que j'ai fait. Parce que parfois, s'il y a eu des centaines de changements, je pourrais voir aussi quelque chose qui me tient. Il me parle de ça, c'est bizarre qu'il me dise que... Je ne sais pas, que j'ai enlevé un paragraphe, ce n'est pas normal. Voilà, ça pourrait aussi m'attirer l'attention sur, tiens, est-ce que je n'ai quand même pas trop vite lu le diff et donc d'aller voir des trucs. Donc, c'est vraiment... Ça change la qualité du commit sous Git. C'est vraiment quelque chose que je conseille à tout le monde. Et donc ici, pour vc-dir, il a fallu que j'écrive ma fonction moi-même, parce que les autres Git gptel commits, il faut avoir stagé les fichiers, donc ça regarde ce qu'on a stagé, et ça fait un message de commit par rapport à ce qu'on a stagé. Maintenant, on essaie de dire, on ne stage pas. On ne voit pas cette opération-là, ça se fait tout seul. Donc on a les fichiers modifiés et puis on fait le commit directement. Donc ça fait le git commit -a, git commit add… On ne passe pas par cette étape de staging. Et puis voilà, je trouve que c'est plus simple, simplement de sélectionner les fichiers, ceux que je veux, et puis de voir la différence, et puis de committer.

Prot: Oui, c'est mieux comme ça.

23:30 docstrings

Sacha: Tu utilises également gptel pour générer des docstrings. Peux-tu montrer ?

Fabrice: Alors, on pourrait aller dans un fichier. Par exemple, ce fichier de gptel-commit-message. Donc voilà. Donc, j'ai une seule fonction.

24:03 hs-minor-mode - hideshow

Fabrice: Et donc, chez moi, quand je rouvre par défaut, j'utilise aussi H.S. hs-minor-mode, hideshow. Donc, tous les corps des fonctions, etc., il les réduit. J'ai rajouté qui m'indique le nombre de lignes pour avoir quand même une petite idée, pas juste trois petits points, mais avoir une petite idée de ce qui se cache en dessous. Et donc après je fais metashifta chez moi, ce qui est visible mode. Donc ça m'ouvre. Il y a visible mode pour les fichiers Org avec les drawers et puis ça fait plusieurs choses visible mode et aussi HS show all. Donc ici, voilà, j'ai un message, j'ai une fonction, j'ai un message, un docstring et on va dire que j'ai écrit moi-même un docstring un peu plus bête. Je mets xxx à la place. Et donc, ce que je peux faire, c'est sélectionner toute la fonction. Oui, les métas, parenthèses, accolades, fréquentes. Ils ne sont pas toujours faciles sur un clavier français, d'ailleurs. Il faut faire le AltGr, tu vois. Le QWERTY est plus facile pour certains trucs. Donc ici, j'ai sélectionné, donc je vais faire C-u C-c RET. Donc je retombe sur le gptel menu. J'ai une directive traduite en français, donc ça, c'est pas très bon. Donc je vais changer la directive, donc je vais faire ici le s pour Set System Message. Encore une fois, le s, puisque on pourrait imaginer, si j'avais ça tout le temps, que j'ai write the string. Je n'ai pas de preset, de prompt avec ça, donc je vais essayer de le faire à la main. Je vais refaire S pour pouvoir moi-même éditer le message. Et donc ici, je vais taper à la place écrit un docstring correct montrant ce que la fonction fait. exactement. directive est correcte. Alors, je n’ai pas ?? le b, là, other buffer, ou je pourrais le mettre dans le kill ring aussi. On va le mettre dans le kill ring, par exemple, donc je vais faire k. Donc j’envoie la réponse dans le kill ring, k. Donc on lit bien, toujours en bas, ce qu'il va faire. Donc ici, quand je vais faire RET, il va envoyer les lignes sélectionnées avec la réponse dans le kill ring. Parfois, ce qui est dommage, c'est qu'on n'a pas un sablier comme des applications Windows. Voilà, ici, j'ai la réponse. C'est dommage qu'il n'y ait pas de sablier. Il y a tellement de choses qui passent sur l'echo area qu'on ne voit pas nécessairement ce qui se passe. Je vais remonter ici et on va imaginer, je vais directement effacer ça, faire C-y. Il a fait un peu trop. Alors, ben, voilà, ici en fait, c'est voilà, il faudrait je juste que j'édite un petit peu, voici un docstring correct. Il marque copié. Il faudrait voilà, il faudrait justement faire un prom pour lui dire ne me donne que le docstring sans répéter le nom de la fonction et cetera et cetera. Mais en gros, ouais, bah tout ça a l'air bon en fait hein. Ici, il m'avait rajouté du texte et des infos. Après, il explique ce qu'il a fait. Voilà. En gros, ça c'est bon. C'est juste que je ne sais pas pourquoi il a mal lié ceci.

Sacha: [Je me suis] trompée, peut-être. Tu as une fonction boost-gptel-generate-docstring dans ta configuration.

Fabrice: Ah ! Je ne l'ai pas encore testé, celle-là. Justement, avec la section de la fonction, je pense que ça ne marche pas toujours très bien. Il y a des choses qui ne marchent pas encore très bien. Il y a des choses qui sont en test un peu. Ça fait partie des tests. On peut réessayer. Je vais essayer de voir si elle marche. On voit ici qu'il a fait un docstring assez long, d'ailleurs. Un peu trop, à mon goût. En théorie, il doit détecter les bounds de la fonction et envoyer toute la fonction à gptel et avec un prompt. Ça a l'air de marcher assez bien. Sauf que de nouveau, il me fait plus, il me répète toute la fonction. Non, voilà, c'est ça, il me répète toute la fonction. Oui, jusque... Jusque l'interactif. Jusque là, oui, jusque l'interactif. Donc, c'est pas mal. Donc, oui, voilà, ça...

Prot: Oui, pas mal.

Fabrice: Voilà, hop. On peut voir, effectivement... Donc, ça, c'est nouveau, c'est... Enfin, c'est... Changez, changez, oui. Et donc l'interactive, je n'avais pas d'interactive apparemment. Si je devais l'avoir. Je ne sais pas si j'ai un interactive ou pas, donc je fais C-<f9>. Et on peut voir ce qu'il a modifié. On va le faire en vertical. Hop. Oui, si j'avais un interactif avant. Il considère, il n'est pas aligné au niveau du truc. Forcément, je devais avoir un interactif. Pour terminer ou pas avec tout ce qui est intelligence artificielle, j'ai un petit truc ici qui traîne sur l'écran. Ça fait une semaine que je l'essaye. J'ai déjà payé pour la version si il y avait trois jours d'essai et ça me paraît très bien.

31:03 Super-whisper

Fabrice: Donc c'est Super Whisper. Je vais le faire d'abord dans un Notepad par exemple pour vous montrer. Je l'ai mappé sur la touche Escape, ce qui n'est pas encore la meilleure touche. Je vais expliquer. Je voulais aussi pouvoir l'appeler à partir d'Emacs. J'aimerais bien que ce soit une touche assez facile, donc un peu une extrémité du clavier. La touche Escape, c'est une extrémité du clavier. Voilà, il n'y en a pas beaucoup, et puis il faut qu'elle ne soit pas utilisée dans Emacs, parce qu'il faut que je la fasse arriver dans Emacs. Et donc ici, quand je suis dans un endroit où on peut insérer du texte, donc ça pourrait être aussi en formulaire sur une page web, ici je suis dans Notepad, ça peut être dans Word, ça peut être n'importe où, je vais faire escape, et on voit à ce moment-là qu'il écoute.

Prot: On voit des ondulations là.

Sacha: Je ne le vois pas.

Prot: Je ne peux pas voir l'indication.

Sacha: Parce que tu vas partager seulement le fenêtre Emacs.

Fabrice: Je vais stopper la présentation et je vais faire un share.

Sacha: Je suis très curieuse à la reconnaissance vocale.

Fabrice: Voilà, screen 1. Voilà, ok.

Prot: Est-ce que vous le voyez ? Maintenant, oui. Oui, oui. Ok. On va bien danser dans le pad, ici.

Fabrice: Il y a une minute, j'ai fait Escape. Qui a lancé, donc, le Super Whisper. Et donc, on voit ici qu'il écoute, on voit des petites ondulations. Il y a une integration dans Notepad, aussi. Je le vois assez discret, d'ailleurs.

Sacha: Je pense que parce que tu as aussi, dans ton séance de réunion virtuelle, la reconnaissance vocale a du mal avec l'audio.

Fabrice: Je pense que ça va aller, mais en fait, c'est ça qui est bien. donc W-I-S-P-R. En fait, ça marchait bien, sauf qu'il y avait des conflits avec Emacs. Et que dans Emacs, de temps en temps, j'avais des caractères qui étaient générés de manière aléatoire donc j'ai compris que c'était Wispr parce qu'en j'étais désactivée, quand j'aie désinstallé Wispr, je n'avais plus de problème avec Emacs de config. Et Wispr, lui, il écoutait ce que tu disais et tu voyais afficher au fur et à mesure les mots.

Prot: Peut-être tu peux désactiver Whisper, parce que on ne peut pas écouter bien ce que tu dit. Peut-être maintenant...

Fabrice: Ok, excusez-moi, je n'avais pas compris, vous n'entendiez pas. Je n'avais pas compris, donc je vais réexpliquer. En fait, j'avais utilisé il y a quelques mois Wispr, W-I-S-P-R, et cette application-là, elle avait des conflits avec Emacs, donc j'avais des caractères qui généraient dans Emacs aléatoirement à un certain moment. Et quand je l'ai désinstallé, je n'ai plus eu ça, donc je ne sais pas pourquoi, mais il y avait des problèmes avec Emacs. Et l'application Wispr, elle écrivait les mots au fur et à mesure. SuperWhisper.com, je pense. Elle, elle écoute tout ce qu'on dit, donc je fais Escape pour l'activer, elle écoute tout ce que je dis, et puis quand je refais Escape, donc c'est un toggle, elle écrit tout d'un coup. Mais l'avantage, c'est qu'elle a du contexte. Et donc si je dis par exemple, je lui ai demandé comment ça va, en fait il va recopier, je lui ai demandé deux points, ouvrez les guillemets, comment ça va, point d'interrogation, fermez les guillemets. Parce qu'il interprète en fait, il reconstitue le paragraphe, le texte à la fin. Parfois, si je fais une faute et qu'il y a un autre orthographe, et puis je répète orthographe, il va comprendre que c'est le même mot. Il est assez malin, il remet le texte. de manière plus synthétique. Il met tous les mots, mais à la fin, au niveau typographie, etc., il met deux, trois petits points. Il met parfois des guillemets. Il comprend bien les questions. Je ne sais pas pourquoi ici, j'ai un caractère un peu spécial. Il y a quand même de temps en temps des fautes aussi. Tout à l'heure, je parlais de aléatoire. Il a marqué aléatoire. Oui, j'espère que j'ai cité tout à l'heure Donc voilà, il fallait marquer W, I, S, P, R. Et puis une fois, il a marqué c'est A, I, R. Bon, c'est pas parfait, mais en fait, ça marche et c'est beaucoup plus rapide quand même. Et j'écris une petite fonction qui marche dans WSL, en tout cas pour ma config, de telle façon que dans... Donc si je vais dans un buffer scratch, par exemple. Que dans Emacs, ça fait la même chose aussi quand je fais escape. Parfois, j'ai des problèmes de clipboard, donc le kill ring. Quand je fais le deuxième escape, parfois il me remet un vieux truc qui n'est pas ce que je viens de dire, donc il y a encore des choses à comprendre. Je vais essayer quand même juste une phrase, je fais ESC Je sais pas... Ah, voilà. Il se lance. Mais... Il se lance. Est-ce que cela marche ? Ah, tu vois, j'ai un problème. J'ai dit est-ce que cela marche ? Il vient de remettre système, il faut que je comprenne. Il y a des petites configurations dans Super Whisper à faire pour le presse-papier. C'est un peu plus compliqué avec le presse-papier Windows et le presse-papier Emacs. J'ai encore des petits réglages à faire, mais quand ça marchera bien, ce sera fantastique de pouvoir directement aussi dans Emacs utiliser ça. Il y a peut-être d'autres solutions d'ailleurs. Ici, il marche assez bien et le fait qu'il insère le truc une fois qu'on a fini de parler, ça fait quand même des phrases qui sont plus correctes. On hésite parfois, donc ça reconstitue un truc de meilleure qualité.

Sacha: En fait, j'utilise aussi la reconnaissance vocale sur Emacs et j'utilise le substitute de Prot pour corriger facilement les erreurs et sauver les remplaçantes.

Fabrice: Et ça marche bien, donc ?

Sacha: Oui, oui, oui, ça marche.

Fabrice: Tu es contente ?

Sacha: Oui, je suis très contente. Je l'utilise pour les sous-titres, dicter mon texte. Ça marche bien.

Fabrice: Mais il faudrait que je regarde ta configuration, alors. Pour m'en inspirer, pour faire des tests aussi.

Sacha: Si tu rediriges l'output de la reconnaissance vocale à Emacs, tu pourrais traiter avec Emacs Lisp pour faire des remplaçants.

Prot: process sentinel, il y a les processus qui...

Sacha: Oui, j'ai lancé un serveur de [Speaches] pour offrir un service de la reconnaissance vocale qui utilise aussi Whisper, le mode Whisper.

Fabrice: Oui, il y a beaucoup de belles choses qui vont arriver, c'est sûr. En fait, le problème maintenant, c'est que je n'aime plus quand je suis ici au bureau parce que j'ai des collègues, on est en open space, donc je ne peux pas utiliser ça. C'est ça le problème. Quand je suis à la maison, je peux parler, mais quand on est au bureau, on ne peut pas.

Sacha: Et dans ce temps, j'utilise avec les enregistrements que j'ai fait en marche, à pied, et d'autres environnements qui sont

Prot: Et quand il y a les autres gens, il peut comprendre seulement toi ou il écrit toutes les phrases de les autres gens aussi?

Fabrice: Je ne sais pas, en fait. Je ne l'utilise pas avec d'autres personnes. Et si je l'utilise, je vais utiliser le casque. Et je pense que le casque est assez... Le micro est assez directif. En gros, il n'y a quand même que moi qu'on entend, je pense. Il faudrait vraiment qu'il y ait des bruits assez forts pour que ça puisse passer aussi.

41:21 Dotfiler

Sacha: Je veux aussi consacrer du temps pour ton outil dotfiler pour gérer les fichiers professionnels et les fichiers personnels. Comment tu l'utilises-tu?

Fabrice: Oui, alors ça, ce n'est pas de l'Emacs. Par contre, c'est très utile, y compris pour Emacs. Et donc, j'ai écrit ici une petite note là-dessus. Je vais ouvrir l'HTML, par exemple. Donc, là, ici, vous voyez bien l'HTML, oui, OK. Donc, en fait, j'utilise le programme dotfiler, donc c'est son nom, c'est le nom du programme. Il y a un outil qui s'appelait Stow dans le temps qui fait, je pense, à peu près la même chose. Je ne sais pas très bien les différences entre les deux, d'ailleurs. Mais donc l'idée en fait c'est, j'ai des repositories, donc j'ai par exemple, et ça me sert notamment pour Org, donc justement j'ai un repository avec des fichiers Org personnels, j'ai un repository avec des fichiers Org professionnels, et en fait, dotfiler, en fait c'est plus clair ici dans mon explication, donc j'ai un repo A, Et sous le repo A, j'ai un répertoire Org, j'ai un répertoire bin, j'ai un répertoire Lisp. Repo B, je ne suis pas obligé d'avoir les trois. Donc, j'ai une autre structure, mais j'ai par exemple Org, bin, Lisp aussi, examples, peu importe. Et donc, quand on utilise dotfiler, Il va créer, donc tout ça est mis par défaut dans .dotfiles sous le home directory. C'est là que tous les repos se trouvent, ceux qui sont gérés par dotfiler. Et donc j'ai fait des clones, donc au début je vais faire, donc ici si je vais dans mes .dotfiles, c'est tous les repos que j'ai. Il y a des repos privés et des repos publics. Et je vais faire un dot add d'une URL Git. Par exemple, si je veux cloner un nouveau repository. Et donc, il va mettre sous .dotfiles, il va mettre repo c, par exemple. Donc, si j'ai fait un dot add. Donc, la commande, c'est dot update, dot add. Donc je vais faire un add d'un repo C. Donc le repo va être cloné localement sous dot files, un repo C. Et puis je vais faire un dot update. Donc quand l'update, imaginons au départ que j'avais que le repo A, et puis je fais ça, donc j'ajoute un repo B. Comment on va faire ? Donc au départ, quand je n'ai que le repo A, ce qu'il fait, c'est que tout ce qu'il trouve en dessous de chaque repo, Il les met directement via des symlinks sous le home directory. Donc le répertoire Org va se retrouver via un symlink sous le home directory. Le répertoire bin va se retrouver sous le home directory. Et pareil pour l'isp. Donc si je n'ai qu'un repo au début d'ailleurs et que je fais un update, dot update, donc il va créer des symlinks. Un dot update crée ou détruit des symlinks. Ça fait juste ça, en fonction de ce qui a évolué. Et donc la première fois, il va juste faire un symlink du répertoire tilde slash Org vers tilde.dotfiles repo a Org. Et il va faire la même chose avec bin, la même chose avec Lisp. Quand j'ai le deuxième repo, le repo b, que j'ai colonné, j'ai fait... dot add de ce repo-là. Puis je fais un update. À ce moment-là, évidemment, il y a deux répertoires Org qui doivent être symlinkés. Ils doivent avoir des liens symboliques dans le tilde. Donc, il ne peut plus faire ça au niveau du répertoire. Et donc, ce qu'il fait, c'est qu'il supprime le symlink qu'il avait sur le répertoire Org et il scanne tous les fichiers qui sont là-dedans et il va faire un symlink individuel, fichier par fichier. Donc si j'ai 10 fichiers ici, donc fichier 1, fichier 2, fichier 3, il va me faire des symlinks dans tilde Org fichier 1 vers le fichier 1 qui se trouve physiquement là. Et ainsi de suite pour tous les fichiers. Il va faire la même chose avec tous les fichiers qu'il va trouver ici. Et donc tous les fichiers qui se trouvaient dans repo A Org et dans repo B Org, via des symlinks, se retrouvent en fait dans tilde Org. Et pareil ici dans mon exemple avec bin et avec Lisp. Donc si je vais voir ici, si je vais dans mon répertoire bin, vous voyez, donc j'ai, je vais faire un peu plus petit, j'en ai des, enfin on ne va pas, ici, voilà, celui-ci, il vient de Archibus Reports, de ce repo-là. Celui-ci, il vient de Archibus, OIL, MCD, Datamodel, Diagram. Donc de ce repo-là. Ici, il vient de gitboost. Donc j'avais dans ces différents répertoires, j'avais un sous-répertoire bin. Donc dans ces différents repos, j'avais un sous-répertoire bin. Et tous ces fichiers qui se trouvent directement dans bin, sous les repos, se retrouvent in fine via des symlinks dans mon bin à moi, dans mon directory. Ce qui veut dire que dans ma configuration de mon shell, j'ai juste à dire path égale tilde slash bin de point $path. Et donc il va connaître tous mes petits scripts qui sont dans les bins d'un coup. Pour Org, Ça veut dire que, org-agenda-files, je fais pointer simplement vers tout ce qui se trouve dans ~/org. Et vu que dans ~/org, je retrouve tous les fichiers Org du repo A, du repo B, et ainsi de suite, j’ai une seule variable, un seul setq, et j'ai tous mes fichiers qui se retrouvent directement dedans. Et donc, quelle que soit la machine, si j'ai différentes machines, une machine pro, une machine perso. Sur ma machine perso, j'aurai mon repo privé et mon repo pro. Sur la machine professionnelle, j'aurai que le repo professionnel. En fait, mon fichier Emacs ne change pas. C'est le même fichier. Je dis juste scan tous les fichiers. Mon Emacs, en se lançant, il fait toujours un scan de tout ce qu'il y a. Donc, il va, org-agenda-files va regarder tout ce qu’il y a dans ~/org et tout ça est rajouté à mon org-agenda-files. Et donc, il va, à chaque lancement d'Emacs, il va voir tous les fichiers qui sont dans la configuration. Mais c'est le même fichier Emacs. Pour ça, il ne change pas. C'est le même fichier Emacs d'un côté ou de l'autre. Simplement d'aller voir tous les fichiers qui sont en ~/org. Et en fait, c'est des symlinks vers les fichiers qui sont dans un repo privé, un repo public, etc. Pareil avec le bin. Donc ça vient de 36 repositories. Pareil avec le Lisp. Justement, et ça me force un peu aussi à faire une structure un peu plus standard. Donc ici, si je vais dans… dans ~/.dotfiles gptel-commit-message. J'ai un répertoire. J'ai un répertoire Lisp. Et c'est dedans, donc c'est des lisps. J'ai ici le petit package, le petit fichier avec la fonction pour écrire le message de commit. Si je vais dans... Si je remonte... Je vais dans Emacs Leuven Lisp. Là, j'ai tous mes fichiers de configuration. Et tout ça se retrouve en fait dans ~/lisp. Grâce à symlink. Donc si je vais ici dans ~/lisp. Lisp. Voilà. Dotfiler, Emacs gptel, mon fichier de configuration, le nouveau avec gptel. Qu’il voit dans ~/lisp, en fait, physiquement, il est dans /home/fni/.dotfiles/emacs-leuven/lisp, il est physiquement là. Celui avec le gptel-commit-message, Physiquement, il est dans un autre repo, il est dans le repo gptel-commit-message, sous le répertoire Lisp. Donc en fait, en dessous de chaque repository, tous les fichiers qui sont là vont directement tel quel dans le home et tous les répertoires qui sont là vont directement tel quel dans le home. Donc en fait, il faut que je vois vraiment tous mes repos comme des puzzles, pièces de puzzle. Et tous les fichiers ou tous les répertoires à la racine de chaque repo vont se retrouver via des symlinks dans mon ~ Directement en tant que fichier. Par exemple, j’ai toujours un README.org dans chacun de mes repos. Là, c'est une exception parce que on peut dire celui-là n’essaie pas parce que j’ai README.org dans chacun de mes repos. Donc, il ne saurait pas créer des symlinks d'un README.org dans ~ vers tous les repositories. Celui-là, c'est une exception. On me dit de ne pas le symlinker. Et tous les autres fichiers se retrouvent directement dans mon ~ avec des symlinks. Et tous les répertoires, pareil. S'il y a des répertoires qui sont communs, donc j'ai chaque fois plusieurs fois des répertoires bin dans les repositories, donc à ce moment-là, il fait des symlinks sur les fichiers qui sont dans les répertoires bin. Et donc pour le Lisp, pareil, dans Emacs, j'ai juste dit de scanner tous les fichiers que j'ai dans ~ Lisp et de faire un load library. Donc je fais un dolist avec un find, etc., Et donc en une seule commande, qui reste la même sur la machine professionnelle et la machine privée, j'ai la même commande qui fait scanner tout contenu mon ~/lisp et donc dynamiquement, sur une machine, j'aurai potentiellement plus de fichiers Lisp ou pas, mais c'est la même commande et je n'ai pas de config particulier à faire. C'est juste en fonction des repositories que je vais cloner sur telle ou telle machine que j'aurai plus ou moins de fichiers disponibles et tout ça est caché.

Sacha: Il y a une question dans le chat. Ces liens sont gérés dans Git ?

Fabrice: Non, non. Imaginons... Je peux le montrer en live si tu veux. Je vais aller dans Emacs... Donc, cd. Donc dans .dotfiles, dans emacs-chat-sacha-chua. Donc dans ce répertoire-là, j'ai une image, j'ai quelques fichiers, d'accord ? Et je vais rajouter un fichier. Fichier des mots, .Org. Voilà, donc ici, maintenant, j'ai un fichier de plus dans ce repository. Je pourrais l'ajouter dans Git, etc. Mais je n'ai même pas besoin de faire ça, en fait. Pour les symlinks, je peux... Donc, pour l'instant, ce fichier Org, imaginons que j'ai des tâches dedans. Pour l'instant, il sera... Dans ce cas-là, d'ailleurs, je devrais... Enfin, je vais... Je vais créer un répertoire Org et je vais le déplacer, fichier des mots, temps Org.

Prot: Voilà.

Fabrice: Donc, ici, dans... Dans ce répertoire-là, j'ai ce fichier de démo et on peut imaginer que j'ai des tâches. J'aimerais bien voir ce fichier-là dans mon Org agenda files. Et pour l'instant, il n'est pas visible à partir de mon tilde. Il est physiquement là, mais il n'y a pas de symlink dessus. Pour que le symlink soit créé, je vais juste faire .dot files bin. Dans bin, il y a la commande dot. On peut voir son aide. Il y a dot update, dot status, dot add. Add, c'est pour ajouter un nouveau repository. Et update, c'est pour scanner le contenu des repositories et mettre à jour les liens. Ici, je vais faire dot update. Et alors, je vais faire moins skip pool parce que sinon, si on ne fait pas moins skip pool, il va en même temps pooler les repos. Donc, on va essayer que tout soit à jour. Donc ici, je vais faire le --skip-pull. Et on va voir qu'il va créer un lien, en fait, Vers ce fichier-là, voilà. Donc ici, il a créé, donc dans mon Org, donc dans mon tilde en fait, ça c'est mon tilde, donc dans ~/org, fichier-demo.Org, il l’a lié vers la position physique du chemin. Donc ça veut dire que maintenant, je peux dans Emacs, ici, donc si je fais C-x C-f, dans Org, donc c'est des fichiers, voilà. Il est directement là. Donc il est vide. Voilà, et donc ici, fichiers des mots, ça pointe dans mon type d'org, il pointe vers sa position physique. Donc les symlinks, c'est lui qui gère ça, c'est lui qui met à jour en fonction des fichiers ajoutés ou des fichiers supprimés. Il garde, il compare, voilà. Il y a tout ça dans les repos. Il y a tous ces symlinks qui existent à partir de ~ et il met à jour. Il rajoute ou il retire en fonction.

Prot: C'est Git qui garde toujours le fichier original.

Fabrice: Et donc dans Git, tu as les fichiers physiques. Git ne voit pas de symlinks, etc. Dans Git, tu as les fichiers physiques. Ici, si je vais... Imaginons que je mette Hello. Dans Git, je vais faire vc-dir, C-<f9>. C-<f9>. Qu'est-ce qui se passe ? Peut-être parce qu'il n'est pas... Ah oui, c'est parce que justement, je suis sur le Simlink, là, il faut que j'aille dans dotfiles. Donc c'était Emacs, chat, Sacha, voilà. Donc là, je fais C-<f9>. Et donc je vois que j'ai un nouveau fichier à ajouter. Et là, ce n'est pas un Simlink, ce sera le fichier physique. Donc au niveau Git, c'est les fichiers physiques dans des repos. Simplement, conventionnellement, tous mes repos vont se retrouver en dessous de ~/.dotfiles. C'est là qu'ils scannent tout ce qu'il y a en dessous de ~/.dotfiles. C'est là qu'ils scannent tous les repositories et qu'ils regardent le contenu de chaque repository. Si j'avais ton site web ou ta configuration, tu rajoutes un fichier, je vais faire dot update. Il va les puller Et puis, si tu as rajouté des fichiers, si tu as fait des modifications, il ne se passe rien. Au niveau des symlinks, il ne se passe rien. Puisque simplement, j'aurai la nouvelle version à jour dans mon clone, dans le sandbox. Mais s'il y a des nouveaux fichiers ou des fichiers qui ont été enlevés, il va rajouter ou effacer des symlinks. Maintenant, si j'efface ce fichier-là, donc un delete, je vais l’effacer de .dotfiles. Emacs. Sacha Chua, le chat. Donc je vais effacer le répertoire ou le fichier ici. Donc hash, yes. Voilà, le fichier n'existe plus dans mon repository. Donc je vais relancer dot update avec le --skip-pull. Il va montrer rm, voilà. Donc il vient d'effacer le symlink vers tilt Org. C'est génial parce qu'en fait, dans le temps, chaque fois que j'ai rajouté un repository, il fallait voir où se trouvent les bins, puis faire add dans le path de tous les bins. Ici, non, tout se retrouve, pour autant que ce soit directement dans le repository sous ./bin, ça va se retrouver après le symlink dans ~/bin. Et donc j'ai qu'à rajouter une fois le fait que Tiltbin est dans mon path. Donc ça pourrait marcher pour les manpaths, pour les fichiers d'info, enfin pour les lists, pour l'org, donc c'est extrêmement pratique pour ça.

59:12 Enseignement d'Emacs

Sacha: Pendant les dernières minutes, j'aimerais connaître ta point de vue sur l'enseignement d'Emacs. Comment tu structures ton cours pour ne pas noyer les gens sur les fonctionnalités?

Fabrice: Mon cours, je le vois plus comme étant un cours pour des gens qui connaissent déjà Emacs, donc c'est plutôt pour leur montrer des choses qu'ils ne connaissent peut-être pas parce qu'ils n'ont pas lu des dizaines ou des centaines ou des milliers de fichiers de configuration comme moi. Donc voilà, c'est des gens qui a priori connaissent déjà Emacs, donc ils savent faire enregistrer, ouvrir un fichier, Et simplement, je vais leur montrer des choses en plus, comme Helm. Moi, j'utilise Helm pour tout ce qui est la gestion des fichiers et des buffers. Je vais leur montrer aussi des fonctionnalités parfois qui sont peu utilisées ou parfois un peu cachées, donc peu utilisées comme les macros ou le multiple curseur qu'on ne connaît pas nécessairement et qui n'est pas standard, mais qui est facile à installer. ou l'édition rectangle, qui est standard, mais que pendant longtemps, je n'avais pas connu. Et donc voilà, je vais leur montrer des choses comme ça. A priori, c'est des gens qui connaissent déjà, donc ça va un peu plus vite. Maintenant, j'avais quand même une fois dans un de mes cours, Martin, qui ne me connaissait pas du tout Emacs. Son père connaissait Emacs, il l'avait amené de force presque. Si on écoute et qu'on suit, je repassais aussi. En fait, je réexpliquais tout depuis le début. J’avais des slides sur C-a, C-e, M-n, M-p, C-s, C-r. Je réexpliquais tout plus ou moins rapidement en fonction du niveau des gens, s'ils connaissent déjà. Je vais aller assez vite. En fait, c'est plus facile si les gens connaissent déjà pour aller plus vite. Sinon, il faudrait plus que deux jours de formation. En fait, j'ai quand même fait quatre jours de formation Emacs. Donc, c'est deux jours sur ce que j'appelle les fondamentaux. Tout ce qui est édition rectangle, macro, multiple curseur, donc avec des choses en plus. Et puis, deux jours plus orientés sur Org. Il y a tellement de choses dans Org. Il y a les Org agendas, le time blocking que j'utilise pour tout, pour mon temps, pour faire des factures derrière. Et puis il y a évidemment Babel, Tangling. Donc tout mon fichier de configuration Emacs, il est dans un fichier qui est tanglé. Un fichier de doc, la code littérée de programming de Knuth, où je décris pour un humain. Et puis j'ai des petits bouts de code qui vont se retrouver. dans des fichiers de code où il faut pour être exécuté. Mais l'objectif, c'est de faire un document qui soit lisible par un humain d'abord. Et donc, même en quatre jours, ça passe vite. Il y a trop à montrer.

Sacha: C'est aussi le point lié à des incertitudes économiques. Quels sont les avantages du coaching ou de l'enseignement humain par rapport à l'IA?

Fabrice: Donc, répète les avantages du coaching par rapport à l'IA.

Sacha: Parce qu'il est facile de poser des questions à l'IA gratuitement, mais je pense que tes formations, ton cours ont des avantages.

Fabrice: Absolument. En fait, dans tous les domaines, c'est comme ça. C'est que l'IA, si j'ai une question précise ou une question claire, il va pouvoir me répondre très facilement et de manière avec plein de détails, donc extrêmement fantastique. Mais l'IA, le problème, c'est qu'on ne sait pas ce qu'on ne sait pas. Et donc, dans la formation, je me doute que plein de gens, même qui sont des utilisateurs d'Emacs depuis 20 ans, Plein de gens ne connaissent pas l'édition rectangle, utilisent peu ou pas les macros, ne connaissent pas Wdired, le Dired mode éditable, par exemple. Si je mets des photos sur mon disque, je veux mettre la date de la photo dans le nom du fichier, je vais passer en mode direct éditable et je vais faire une petite macro qui va me copier la date. Et donc voilà, en fait, ChatGPT, si je dis, ChatGPT, explique-moi comment marche l'édition rectangle, il va l'expliquer. En fait, il ne va jamais répondre à dire, tiens, il y a l'édition rectangle que tu ne connais pas. C'est ça le problème. C'est justement de pouvoir juger ce que les gens savent et de ce qu'on pourrait leur apporter en plus. Et là, l'IA va être moins bonne parce qu'elle n'a pas des propositions comme ça de choses que tu ne connais pas. C'est de ce point de vue-là que c'est beaucoup plus pratique en encadrement personnel ou par groupe où on peut expliquer des choses qu'on pense que les gens ne savent pas et donc ils ne vont jamais poser la question à l'IA là-dessus, par définition.

Sacha: Merci beaucoup à vous deux, à tout le monde.

Fabrice: Merci beaucoup pour cette organisation, cette deuxième séance. Peut-être à une prochaine fois. Merci beaucoup en tout cas pour l'organisation, Sacha. Au revoir.

Prot: À la prochaine, au revoir.

Fabrice: Salut, je vais vite dans l'autre.

Chat

  • protesilaos: ​à bientôt!
  • julienlambe78: ​Bonjour de Belgique 🙂 Sacha, le volume de votre micro est un peu bas. Nous n'entendons pas bien vos questions. Pensez-vous pouvoir augmenter le volume un petit peu?
  • SaMusz73:​ ​synlinks `ln -s` et hardlinks `ln ` vers des fichiers sont gérés dans git ? J'ai cru comprendre que git gére assez mal ces symlinks
  • SaMusz73: Merci :)
  • JeromeVanLunter: ​​MERCI
  • SaMusz73: Merci à vous tous !
View Org source for this post

J'aime faire des erreurs pendant que j'apprends le français

| french

Je veux répondre à l'article récent de Prot sur l'apprentissage du français en deux parties : sur le fait de profiter des erreurs en apprenant et sur la motivation liée aux connexions.

Je me suis rendu compte qu'apprendre à faire de meilleures erreurs est une des raisons pour lesquelles j'aime l'apprentissage d'une langue étrangère. J'ai commencé à apprendre le français parce que ma fille a commencé à l'apprendre à l'école. Dans ce domaine, nous nous ressemblons assez. J'ai plus de motivation et de compréhension de mon processus d'apprentissage, et elle a la neuroplasticité d'un cerveau plus jeune. Donc, c'est une bonne occasion pour moi de montrer comment apprendre une chose difficile. Elle voit que j'utilise les cartes mémoire, elle lit parfois mon journal, elle me rejoint occasionnellement à mes séances avec mon tuteur. Elle voit que je travaille sur le sujet, mais elle voit aussi que nous le transformons en un jeu. Nous parlons du système de répétition espacée et de l'efficacité des moyens mnémotechniques, tels que les images vivantes et les phrases personnelles. Ses expériences et celles de ses camarades nous donnent des occasions de parler de l'effet Dunning-Kruger, de la surconfiance du débutant et de la vallée du désespoir par laquelle on doit passer. (Ce n'est pas si décourageant si on le connaît.) Pendant notre dîner, je partage mon plaisir en essayant des challenges comme mes entretiens d'Emacs Chat en français ou en écrivant des articles techniques. Les détails ne sont pas importants. Ce qui importe, c'est la joie d'apprendre, qui manque à l'école.

Pour ma fille en ce moment, l'apprentissage autodidacte sera peut-être plus important que l'éducation systémique. Donc il faut apprendre comment être guidé par les désirs, par les expériences et par les résultats. Notre cerveau a tendance à tomber profondément dans un nouveau loisir. C'est possible de l'enrichir en le liant à d'autres motivations. Un point de vue expérimental réduit la peur. Les erreurs et les remarques ne sont que des données.

Du coup, ma fille et moi approchons le français comme ça :

  • C'est une matière obligatoire à l'école.
  • Le cours collectif à l'école ne sera probablement pas efficace, selon l'expérience d'autres étudiants.
  • Nous pouvons nous amuser en contournant les limitations du système. C'est un acte de résistance.
  • Je vais l'aborder comme un laboratoire d'apprentissage, et elle est la bienvenue pour venir jouer avec moi.

Cette approche suffit pour ma fille en ce moment. Forcément, il y a des réflexions dont je ne parle pas avec elle (parce qu'elle va regarder Pokémon; elle est une enfant après tout). Ça me plaît de les explorer, et je les partage au cas où il y aurait quelque chose d'utile pour d'autres étudiants. :)

Désir : Dans mes intérêts, je suis fortement motivée par les connexions personnelles comme avec ma fille ou avec mon mari. Donc pendant qu'elle relit la série de bandes dessinées des Royaumes de Feu en anglais, je lis la même série en français. (Un jour, elle me dira « Arrête, maman ! Trouve ton propre intérêt ! » Jusqu'à ce moment-là, je la suis. Maintenant, elle partage constamment ses morceaux préférés dans les livres avec moi.) J'aime bien mes séances avec mon tuteur. J'apprécie vraiment les conversations d'Emacs Chat et les commentaires sur mes articles et mes vidéos. J'aime bien aussi les échanges de blogs et de vidéos avec Prot en français, et j'ai hâte de me connecter aux autres. En plus, je pense que les améliorations à mon flux de travail (particulièrement sur Emacs) peuvent servir à d'autres personnes qui apprennent une langue étrangère : plus directement s'ils apprennent aussi le français, mais même s'ils apprennent l'anglais ou d'autres langues. Les idées peuvent être utiles. Si je peux ancrer cet intérêt dans plus de connexions personnelles, il peut durer. Par conséquent, une grande partie de mon travail est de renforcer le désir d'apprendre, et mon désir d'apprécier, de me connecter, et d'aider d'autres personnes m'aide pour cela. Si un jour j'ai un rapport convivial avec des personnes, que ce soit en anglais ou en français, ce sera génial. Je pourrai coopérer avec d'autres étudiants de français pour nous améliorer ensemble, ou peut-être arriver à un niveau suffisant où des francophones seront plus à l'aise pour parler avec moi sur Emacs en échangeant mutuellement des connaissances.

Les expériences que j'adore :

  • Mon journal
  • Mes articles
  • Mes améliorations à mon flux de travail
  • Mes séances de prononciation
  • Mes séances de conversation
  • Mes diffusions en direct

Des expériences que je considère pour mes prochaines étapes :

  • Lire mes articles ou mon journal à voix haute, peut-être avec l'analyse de prononciation par l'IA pour identifier les phrases à peaufiner avec mon tuteur ?
  • Regarder des émissions sans sous-titres
  • Dicter à mon téléphone
  • Essayer d'autres tuteurs en plus de celui que j'ai déjà ; je peux consacrer le même budget que celui que j'ai mis à côté pour les activités extrascolaires de ma fille
  • Participer aux échanges de langue ou de connaissances : Avec des utilisateurs d'Emacs ? Avec les francophones natifs qui veulent améliorer leur niveau d'anglais ? Avec d'autres étudiants de français ? Je me demande comment profiter d'un temps un peu plus libre et prévisible une fois que ma fille s'habitue à l'école virtuelle. Quelqu'un veut me rejoindre pour des conversations privées ou publiques ?

Même si je vis de mes économies, je suis heureuse de consacrer un peu d'argent pour engager des tuteurs et soutenir de belles personnes. C'est un petit acte de résistance contre l'hyper-médiatisation de l'IA.

Les résultats, ce qui inclut les erreurs : Ma fille et moi avons parlé de nombreuses fois de l'importance de la gestion des erreurs pour mieux apprendre. Une partie de l'apprentissage est de sélectionner un bon niveau de travail. Trop facile, c'est ennuyeux. Trop dur, ça ne marche pas. Si on a un bon enseignant, il peut nous aider à choisir un bon niveau. Si on apprend soi-même, on doit calibrer son approche. Les erreurs sont les guides.

Il y a des sujets où on doit procéder très lentement pour éviter d'ancrer des erreurs, comme la musique ou les mathématiques. Ils demandent de la précision. Quand je travaille au piano, je ne dois pas me dépêcher, ou je ne fais que trébucher. D'abord la précision, puis la vitesse.

Je pense que l'apprentissage de la langue n'est pas exactement comme ça. On doit oser plus qu'on ne peut atteindre. Oui, c'est important d'éviter d'ancrer de mauvaises habitudes de prononciation ou d'expression, mais c'est plus important d'éviter d'être paralysé par la peur de faire des erreurs. Donc, c'est utile d'avoir beaucoup d'occasions de le pratiquer dans un contexte sécurisé, comme l'écriture ou mes conversations avec mon tuteur. L'écriture me donne l'opportunité d'identifier les erreurs de genre et de conjugaison, et de pratiquer des moyens mnémotechniques. Par exemple, le livre « Fluent Forever » conseille d'imaginer quelque chose exploser s'il est au masculin ou brûler s'il est au féminin. Les calques et les mots maladroits m'aident à apprendre davantage d'expressions natives et à savourer les différences entre les langues. C'est aussi utile d'agrandir graduellement ma zone de confort, comme dans mes conversations et mes diffusions en direct.

De mon côté, je sais que c'est mieux si je me focalise juste sur l'étape devant moi au lieu de m'inspirer de grands rêves. Petit à petit, seulement pour le plaisir actuel. J'ai l'immense privilège d'être détendue. En sachant que mon intérêt peut passer à d'autres sujets à un moment donné, j'essaie de partager des ressources en chemin. (Ça pourrait durer; je garde mon intérêt pour Emacs très longtemps.) Où se retrouvera-t-on ? Je ne sais pas, mais ce sera peut-être une bonne aventure. Voulez-vous me rejoindre ?

Voici aussi : https://sachachua.com/blog/2026/07/tisser-des-liens-personnels-pour-mon-apprentissage-du-francais/

View Org source for this post