Emacs Chat 28: Fabrice Niessen (en français)

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

Nous avons parlé en direct avec Fabrice Niessen (Formation Emacs Boost) d'Emacs, de ses flux de travail, de sa configuration, et d'autres sujets en français.

J'ai essayé de corriger la transcription, mais je crois qu'il y a encore beaucoup d'erreurs, donc n'hésitez pas à m'envoyer un message.

  • 0:00 Introduction
  • 1:46 Le parcours
  • 4:15 Emacs sur Windows : Cygwin et WSL
  • 8:26 Les automatisations
  • 12:15 Emacs Boost
  • 21:15 Emacsclient
  • 28:49 org-html-themes
  • 35:02 Review
  • 37:25 PDF
  • 40:03 Key-chord
  • 45:41 Copier sans sélectionner
  • 48:29 fill-paragraph
  • 50:02 Les macros
  • 51:02 Volatile highlight
  • 52:47 Les tableaux Org
  • 55:43 Les formations et les cours particuliers

La transcription un peu corrigée

Details

0:00 Introduction

Sacha: Ça marche!

Prot: Maintenant, nous sommes en direct.

Sacha: Succès! Bonjour à toutes et à tous et bienvenue dans le deuxième épisode d'Emacs Chat en français. C'est le 28e épisode de la série. J'espère que j'ai lancé la diffusion correctement cette fois. Aujourd'hui, notre invité est Fabrice Niessen, un consultant informatique qui habite en Belgique et qui a beaucoup de dépôts dédiés à Emacs et à Org Mode, tels que le kit de configuration Leuven et le thème de publication d'Org Mode org-html-themes. Il propose aussi des formations à Emacs en présentiel à Paris, à Rotterdam et dans d'autres villes. Merci d'être là, Fabrice.

Fabrice: Merci pour l'invitation. C'est très sympa de votre part.

Sacha: Merci aussi à Prot de m'aider pour la conversation. En fait, je pense que mon niveau de français est un peu trop faible pour ce genre de conversation, même avec le sous-titrage automatique de mon navigateur. Donc, je vais étudier le sous-titre après la conversation pour mieux en tirer parti. Nous faisons de notre mieux ensemble.

Prot: Merci. Je t'en prie, je t'en prie. Non, de fait, très bien, très bien.

Sacha: C'est parti. Fabrice, tu utilises Emacs depuis très longtemps. 1999, c'est plus logique en Belgique.

Fabrice: Absolument. La Suisse est encore mieux avec le 8 ans.

Sacha: Oui.

1:46 Le parcours

Sacha: Comment t'as-tu découvert Emacs?

Fabrice: En fait, j'ai découvert Emacs en 95, lors de mon stage de fin d'études. J'ai été dans une entreprise pendant six mois et là, ils utilisaient Linux. Enfin, Unix plutôt, un serveur Unix. Et donc, j'ai dû apprendre à développer sous Emacs. Alors, j'ai appris les keybindings, j'avais la refcard imprimée avec un stabilo pour souligner tous les trucs que j'apprenais au fur et à mesure. Ça m'a beaucoup aidé d'ailleurs, d'en apprendre comme ça, C-x C-s, et puis tous les suivants. Et après les six mois, c'était donc en 95, c'est l'époque de la sortie de Windows 3.11, je pense. J'avais un ordinateur avec Windows 3.11. Après, j'ai repris les habitudes point and click, donc des interfaces graphiques. Jusqu'en 99, à peu près 99, où un de mes collègues, Dominique, utilise Emacs. Et en fait, à l'époque, on avait déjà du versionning au boulot et c'était PCL CVS, c'était CVS le versionneur, donc un ancêtre de Subversion et un ancêtre de Git. Et il y avait un mode PCL CVS d'utiliser dans Emacs. Et quand j'ai vu ça une fois, c'est en fait un peu ça qui m'a fait sauter le pas de me dire il faut que je retourne parce que retourne regarder Emacs. Parce que c'était beaucoup plus simple pour lui, il avait modifié ses fichiers dans Emacs, il avait son petit truc où il sélectionnait les quelques fichiers qu'il voulait committer, il les sélectionnait, il faisait je ne sais plus quel key binding, et puis il mettait son message de commit, C-c C-c, et voilà, c'était fait. Et donc quand j'ai vu ça, alors que moi, il fallait que je passe dans le shell, il fallait que je fasse sans doute des CVS add ou des choses comme ça, des quelques fichiers, c'était beaucoup plus long. Beaucoup plus compliqué. Donc, j'ai recommencé à me réintéresser à Emacs. J'ai utilisé son .emacs et puis j'ai retiré un petit peu de trucs et j'en ai rajouté énormément. Et c'est comme ça que ça a commencé. Et voilà, c'est fantastique. Évidemment, une fois qu'on rentre dans Emacs, c’est-à-dire le C-s, rien que ça, la puissance du C-s, l’incrémental search, c’est dingue. Donc, c'est comme ça que j'ai commencé et puis je n'ai pas pu m'arrêter.

4:15 Emacs sur Windows : Cygwin et WSL

Sacha: Tu utilises Emacs sur Windows.

Fabrice: Exactement. Donc, effectivement, à l'époque, j'ai fait plusieurs tentatives. J'ai utilisé Cygwin, donc j'ai utilisé Emacs ou Cygwin. Je vais aussi utiliser le Emacs natif. Ce qui était compliqué, parce que j'écrivais quand même aussi beaucoup de shell scripts, etc. Donc là, c'était dans mon Cygwin. Avec les Emacs natifs, il y avait les montages, le /mnt, etc. Donc c'était surtout le Emacs Cygwin que j'utilisais. Et depuis maintenant 3-4 ans, 4-5 ans, Windows a eu la géniale idée de mettre le WSL, donc Windows Subsystem Linux, et donc dans mon Windows, j'ai un vrai Linux, encore mieux, qui est plus puissant que Cygwin encore. Et tout est prévu, tout est interconnecté. Donc je peux passer, je peux être dans le monde Linux et voir mes fichiers qui sont sur le c: et vice versa, ce qui était plus compliqué avant. Donc voilà, c'est fantastique et donc j'utilise maintenant WSL. Je n'ai plus que ça et ça marche extrêmement bien. Et c'est mon environnement de travail.

Prot: A-t-il des difficultés d'utiliser Emacs sur Cygwin ? Ou c'est comme WSL ?

Fabrice: C'était un émulateur. Il y avait à peu près tout ce que je voulais quand même. Mais il n'y avait pas tous les outils. Peut-être des outils style... Non, et encore, je dirais des bêtises. Top, je pensais à top, etc. Mais je pense que non, ça, c'était aussi implémenté. Mais bon, il y avait un certain souci. Il y avait un certain nombre de commandes implémentées. Ici, c'est un vrai Linux. Et alors avec sudo apt install, tandis que sous Cygwin, il fallait installer des packages séparément. Donc on a une petite interface, on sélectionne les packages. Ici, je recopie ce que je peux trouver sur le web. Si je veux installer R, j'utilise le langage R, sudo apt install R et des choses comme ça. Donc c'est beaucoup plus facile. C'est vraiment typiquement tout ce que les gens font qui n'ont que Linux. C'est exactement les mêmes commandes. Je trouve ça beaucoup mieux, c'est beaucoup plus intégré.

Sacha: Je pense que c'est aussi plus vite qu'utiliser Emacs sur Windows directement parce que Magit, par exemple, Magit est trop lent, je pense, si tu utilises Magit sur Windows directement.

Fabrice: Ça c'est un truc, c'était déjà pareil avant avec Cygwin aussi. Au début, j'avais installé mon WSL Linux, donc il est monté, et j'avais mis Emacs, je pense... Attends, comment ça allait ? Non, je mettais mes repos à l'extérieur, dans le C:. Et en fait, là, il y a quand même un passage entre les deux mondes qui est extrêmement lent. Rien que pour lancer Emacs, mon Emacs se lance en une à deux secondes. Là, dans ce cas-là, ça se lançait en une ou deux minutes. Donc, il y a une différence énorme. Donc, en fait, il faut vraiment tout mettre, vivre uniquement dans le monde WSL, dans le monde Linux. Donc, mes repos sont dans Linux. Mon Emacs, il est dans mon Linux. Mais en fait, les fenêtres sont partagées. C'est ça aussi qui est bien. Je peux avoir une fenêtre, ma fenêtre Emacs, elle est à côté d'une fenêtre Outlook, par exemple. Et les presse-papiers, etc. sont complètement interconnectés aussi. Donc, c'est vraiment comme si c'était une application Windows. Sauf que réellement, elle est dans le sous-système Linux. Mais il faut vraiment mettre tout dans le sous-système Linux pour que les performances soient potables. Sinon, il y a quand même des lenteurs pour les fichiers qui sont lus d'un domaine à l'autre, d'un espace à l'autre. Les shared files, quoi. Tout ce qui passe par le point de montage est quand même beaucoup plus long.

8:26 Les automatisations

Sacha: Maintenant, tu as un environnement plus pratique pour tes automatisations. Parle-moi de tes automatisations préférées pour les tâches répétitives.

Fabrice: Volontiers. En fait, j'ai préparé un fichier Org, évidemment, pour préparer cet entretien. Et donc, vous voyez mon écran ou je dois partager ? Oui, vous le voyez, c'est ça ? Toujours ?

Prot: Oui, oui, oui, oui, je peux voir ton écran.

Fabrice: Donc, voilà. Voilà, ici, j'ai mon Emacs en grand. Et vous voyez dans le titre ici ? Le titre, je le... Oui, toutes les 20 secondes, il y a un petit truc comme ça. Toutes les 20 minutes, il faut poser les yeux pendant 20 secondes. Toutes les 20 minutes, j'ai un programme qui m'interrompt pendant 20 secondes. Ça va encore arriver deux fois tout à l'heure. Et donc ici, dans le titre, vous voyez GNU Linux Emacs. Donc, on voit vraiment que c'est l'Emacs du GNU Linux. Et avec ici, j'ai la date dans laquelle il avait été compilé. Et puis j'ai le PID aussi. Parfois, dans le temps, j'avais plusieurs Emacs, donc j'ai le PID qui est aussi indiqué. Comme ça, quand je devais faire un kill, ça arrivait parfois de devoir faire des kills, je savais au moins lequel il fallait que je kill, parce que j'avais l'information directement dans le titre. Donc ici, j'ai une petite présentation Org. Avec un agenda. On a parlé de mon parcours, de comment j'ai fait la connaissance d'Emacs. Tu posais des questions sur différents repositories que j'ai rendus publics sur YouTube. Il y a le fameux thème de couleur Leuven. Leuven, pour information, c'est la ville où j'habite.

Prot: Une belle ville.

Fabrice: Très belle ville, absolument. Et voilà, j'ai un peu copié Thiel tantôt, je pense, le créateur de Beamer, qui avait donné des noms pour ses thèmes, Madrid, etc., Hanover, là où il était passé faire des séminaires. Donc c'est comme ça que j'ai pris le vœu au début. D'ailleurs, ici, vous voyez ce thème Leuven Team qui est appliqué avec des titres plus gros pour les sections de premier niveau et puis des couleurs un peu différentes pour les to-do keywords, pour les titres, pour les sections, pour les tags, etc. Il y a des morceaux qui sont dans Leuven theme, il y a des morceaux qui sont dans ma configuration Emacs. Le team de couleurs s'appelle Leuven theme et la configuration Emacs. Pour l'instant, le repository sur GitHub s'appelle Emacs Leuven. J'ai mis ici un lien. D'ailleurs, pour information, cette note que je partage, c'est aussi sur GitHub. Vous pouvez très bien la chercher sur https://github.com. Et alors ici, donc, Emacs Chat Sacha Chua. Donc, vous pourrez le trouver là. Donc ici, il n'y a qu'un fichier, il y a juste l'heure et demie.

Prot: Oui, bonne idée de...

12:15 Emacs Boost

Prot: Et c'est quoi Emacs Boost ?

Fabrice: Donc en fait Emacs Boost, je fais des formations à Emacs depuis 2024 et j'ai appelé ça Emacs Boost, l'idée étant de booster l'utilisation d'Emacs, d'être plus efficace, d'être plus rapide, d'avoir des automatisations qui soient incluses dedans. Mon projet s'appelle Emacs Leuven depuis longtemps, mais pour être cohérent entre la formation que j'ai appelée Emacs Boost et mes configurations qui s'appellent pour l'instant Emacs Leuven, je suis en train de renommer tout doucement des fonctions, des variables, etc. vers Emacs Boost. L'idée, ce sera que tout mon fichier de configuration, que je peux vous montrer, Emacs Leuven, Je fais du literate programming. Donc ça c'est mon fichier de configuration d'Emacs. C'est le fichier à partir duquel est anglé ma configuration Emacs. Donc ici si je vais montrer de l'autre côté le fichier liste. Donc, ça, c'est mon fichier de configuration avec toutes mes configs à moi. Il fait, je pense, 7500 lignes. Je pensais qu'on était à 10 000 déjà. C'est un petit peu de nettoyage. Bon, alors évidemment, c'est facile parce que j'ai quasiment toujours, devant cette queue, j'ai toujours un commentaire. Donc, si on regarde ici, si je remonte un petit peu, voilà, tous mes sets de pubs. Je vais agrandir un peu. J'ai systématiquement une ligne de commentaire au-dessus. Voilà, define. Donc, j'ai une ligne blanche, une ligne de commentaire et puis une ligne de commande. Donc, en fait, si on retirait tous les blancs ou tous les commentaires, je serais à 2500 lignes. C'est déjà pas mal. Voilà, mais donc ça, c'est le fichier que j'ai commencé en 99. Et donc qui est aussi public avec toutes les configurations que j'ai et tous les packages que j'utilise. J'utilise un certain nombre de packages. Donc si je regarde, par exemple, un dont je vais vous parler tout à l'heure, je vais retourner au début du fichier. Je vais retomber sur ma liste, voilà. Donc ça c'est les packages que je charge ou en tout cas que je customise. Donc voilà, ça c'est toute la liste. Je crois qu'il y en a à peu près 70. Oui, un petit peu moins peut-être. Deux packages que j'utilise. Alors certains, je les ai commentés parce que je n'utilise plus tellement. Et sinon, ça c'est les packages que j'utilise couramment et pour lesquels il y a des configurations. Et donc d'ailleurs, le but d'Emacs Leven, c'était de dire c'est un fichier de configuration qui est pour moi, il y a mes configurations, la façon dont je veux travailler, mes automatisations, mes settings par défaut, ou des fonctions supplémentaires, des commandes supplémentaires. Mais l'idée, c'est que n'importe qui pourrait faire require Emacs Leven, donc évidemment cloner le repo, faire require de ce fichier-là, et ça ne devrait pas perturber son système. Ça devrait rajouter toutes les configs que j'ai faites, mais sans perturber, sans imposer, par exemple, je ne sais pas, fancy narrow. Donc, en fait, au démarrage, ça regarde, est-ce que ça va demander, ça va regarder les packages qui sont installés dans, si je prends l'exemple de Sacha, si Sacha faisait ça, ça regarderait les packages qu'elle a installés, qui sont appelables, qui sont loadables, qu'elle a installés dans son système. Et ça dirait, tiens, voilà, il manque tel et tel package, voulez-vous les installer ? Donc, ça va proposer d'installer tous ces packages-là. Mais on peut dire non. Et dans tous les cas, toutes mes configurations, je vérifie chaque fois si je modifie web-mode. Par exemple, je vérifie, est-ce que web-mode est installé ? Si oui, alors voilà les configs. S'il n'est pas installé, il n'y a aucune config qui se passe. Donc, j'ai toujours un... Si je vais regarder web-mode, par exemple, pour cet exemple-ci. with-eval-after-load, voilà. Donc ici j'ai toujours with-eval-after-load de web-mode. Et donc ma configuration de web-mode ne sera active que si web-mode a été trouvé et est utilisé. Donc je ne vais pas, en théorie, je ne vais pas rajouter des raccourcis clavier, etc. pour des modes que vous n'auriez pas. Et en théorie, le fichier, il n'y a pas de truc qui soit vraiment privé. Donc il n'y a pas mon nom, mon prénom, mon username, par exemple, il n'est pas dans ce fichier là. Mon adresse email n'est pas dans ce fichier-là. Donc j'ai un petit fichier init-local.el qui est vraiment spécifique à moi. Tout ce qui est là, en théorie, c'est relativement générique et universel. Très bien. Donc maintenant, si je repasse sur la... C'est ce que je considère être les meilleurs packages, ceux que j'ai testés. J'ai lu des centaines, si pas des milliers, sur une vingtaine d'années, si pas des milliers de fichiers de config. J'ai vu beaucoup de choses chez plein de gens et c'est comme ça que j'ai trouvé beaucoup de packages au fur et à mesure. Et quand c'était des choses qui me plaisaient, j'ai rajouté des configurations de ces packages. C'est pour ça que c'est aussi gros, mais ça fait beaucoup de choses. Et malgré tout, ça se charge quasiment instantanément. Donc aussi, les packages un peu plus longs, je fais des idle require. Donc j'attends qu'il y ait 5 secondes d'inactivité dans la session Emacs pour aller charger certains packages. Mon adresse email n'est pas dans ce fichier-là. Donc j'ai un petit fichier init local.el qui est vraiment spécifique à moi. Tout ce qui est là, en théorie, c'est relativement générique et universel.

Prot: Très bien.

Fabrice: Donc maintenant, si je repasse sur...

Sacha: Même si ta configuration inclut beaucoup de package, parce que tu délais le démarrage du package, c'est vite, c'est rapide.

Fabrice: Exactement. Je dis que c'est une à deux secondes maximum. Et en fait, l'idée, et on va en parler encore tout à l'heure, on verra, j'ai beaucoup de choses que j'aimerais bien dire, on va voir le temps qu'on a. Mais l'idée, c'est qu'en plus, une fois qu'il est démarré, il passe en mode serveur. Et donc, je peux lancer, ouvrir un fichier directement dans Emacs sans lancer une nouvelle instance d'Emacs. Donc je n'ai qu'une seule instance d'Emacs et c'est celle-là qui est utilisée tout le temps. Donc après, chaque fois que j'appelle Emacs pour écrire un message de commit ou des choses comme ça, c'est instantané. Il n'y a vraiment même plus de temps d'attente du tout. Il n'y a même pas les une à deux secondes de démarrage. Et par exemple, un petit truc que je voulais montrer éventuellement, deux petites automatisations que je trouve extrêmement utiles, qui font le pont. En fait, j'ai trois applications que j'utilise tout le temps chez Emacs. J'ai le Shell, ici, le terminal. Donc j'utilise pas, j'ai pas l'habitude, et ça c'est plutôt d'ailleurs à cause, entre guillemets, à cause de l'époque Cygwin, où le shell dans Cygwin, un shell dans Cygwin, dans l'Emacs Cygwin, ça marchait pas bien, il y avait des problèmes de C-m qui apparaissaient, etc. Donc j'ai pas pris l'habitude d'utiliser le shell dans Emacs. Donc j'ai toujours, voilà, mon petit shell sur le côté, j'ai Emacs et j'ai le browser. En gros c'est mes trois, et puis alors... Pour le boulot, évidemment, Outlook. Mais sinon, c'est les trois applications que j'utilise vraiment le plus. C'est Emacs, le Shell et le Browser. Et j'ai envie d'avoir des ponts entre ces deux mondes. Donc ici, mon Shell, mon terminal et Emacs. Du style, je veux donc voir si je vais ouvrir un fichier.

21:15 Emacsclient

Fabrice: Par exemple, je vais ouvrir le fichier Emacs... Leuven, tout doux. Donc ici, j’ai un petit alias e qui en fait va faire emacsclient. Quand je fais ça, si tout se passe bien, voilà. Donc ici, il m'a ouvert ce fichier tout doux dans Emacs. Donc ça, c'est pour ouvrir un fichier. Je peux aussi ouvrir Le répertoire dans lequel je suis, ça ouvre le répertoire et je passe en direct. Par exemple, si j'étais dans ce repository Emacs Leuven, imaginons que je veux faire un guide status. J'ai aussi des alias évidemment pour... Si je veux faire un Git status, je vois qu'il y a ces fichiers-là. Je pourrais éventuellement vouloir garder les modifications. Je vais les faire avec Emacs. Je pourrais faire simplement up point pour me retrouver directement ici, dans le bon répertoire. Et comme ça, là, je vais faire, chez moi, je vais faire C-<f9>, qui va me lancer vc-dir sans me poser la question de savoir où je veux lancer vc-dir. Donc, mon C-<f9> ne prompte pas, il lance vc-dir sur le répertoire ou le fichier dans lequel je suis. Et donc, c'est avec ça que je commencerai. Ici, je regarderai les différences avec un égal. Je vais voir si c'est bon ou pas, puis je vais committer. Donc ça, c'est pour passer du shell vers Emacs. J’ai le petit e. Beaucoup de gens connaissent emacsclient, donc ce n'est pas très nouveau. J'ai juste abrévié en e. Deux choses qui sont plus marrantes ou plus utiles. Il y en a une qui est marrante et une qui est utile. Celle qui est marrante, c'est cate, qui est une petite fonction dans le terminal, un petit shell script, et qui fait un cate.

Sacha: Cat plus Emacs.

Fabrice: cat de ce qu'il y a dans Emacs. Donc, si je fais cate, il va en fait m'afficher le contenu du buffer working-dir. C'est génial. Si j'ai ce todo-là, par exemple, je peux faire ici si je fais cate, ou si j'en avais plusieurs, on peut imaginer que j'ai plusieurs fenêtres. Donc, si je vais ici, voilà. Pour l'instant, la fenêtre active, c'est celle-là. Donc, si je fais Cat, Cat, Ça va me remontrer ça. Si je mets mon curseur là et que je refais cate, ça va m'afficher l'autre fichier. Alors ça c'est plus... Et alors c'est emacsclient aussi. Alors ça c'est plus marrant, entre guillemets, parce que ça n'a pas beaucoup d'intérêt, sauf éventuellement, parfois. Imaginons que je ne sache pas faire un grep. Il y a des opérations que je connaîtrais mieux dans le terminal. Par exemple, compter le nombre de lignes. J'ai un petit... Je suis sous et j’ai un global w qui va me faire le compte. Donc ici, je vais savoir directement, voilà, j'ai 1397 lignes dans ce fichier-là. Ce qui revient à faire, juste pour expliquer, ça revient à faire pipe wc -l. Donc voilà, je pourrais faire ici aussi un grep, éventuellement, grep, je ne sais pas, test, je ne sais pas si j'ai... Voilà. Donc il y a toutes les lignes qui sont dans ce buffer là avec le mot test. Donc ça c'est plus marrant entre guillemets, c'est pas tout le temps utile. Par contre un qui est extrêmement utile, c'est imaginons que je sois, je vais ici me redéplacer dans mon route, dans mon home directory. Je suis dans le home directory et en fait ici dans Emacs, j'ai ouvert ce fichier là. Et j'aimerais bien faire le status, par exemple, le guide status, dans ce repo-là. Mais donc, il faut que j'aille dans le repo. Donc ici, si je fais C-x C-k, avec direct plus, je sais passer à la vue directe et je vois que le chemin d'accès, donc le chemin, c'est ~/.dotfiles/emacs-leuven. Donc, je pourrais faire ici cd slash... En fait, ça, ce qui est juste au-dessus. Mais si je veux l'automatiser, en fait, je peux faire cde. Donc cde, comme cate, c’était cat de ce qu’il y a dans Emacs, cde, c’est cd de ce qu’il y a dans Emacs. Donc cde va me conduire là où je suis dans Emacs. Donc dans le même répertoire, voilà.

Sacha: Je vais voler toutes les idées.

Fabrice: C'est le but, parce que j'ai trouvé quelque part cette idée, et je l'ai peut-être un peu modifiée, mais c'est génial. Donc ici, maintenant, si je vais sur n'importe quel fichier, je ne sais pas si je prends de nouveau notre exemple ici, Readme. Est-ce que vous voyez assez grand ? Est-ce que je peux augmenter la taille aussi ? De la fonte. Donc ici, je suis dans le fichier que j'ai préparé pour cette présentation. C'est un autre repository. Imaginons que dans mon shell, je veuille retourner dans ce repository, cde. Et je suis dans le repository Emacs, Sacha Chua. Je peux faire mon guide status. Je suis directement bien placé. Je n'ai pas besoin de devoir taper des chemins d'accès.

Sacha: Tu as aussi un script pour récupérer ou retrouver le nombre de fichiers qui est courant en Emacs dans la command line?

Fabrice: Je ne l'ai pas, mais ce serait facile à faire puisqu'en fait, il y a ici ce que je... Imaginons que je veuille le faire. Je vais prendre quelques touches en plus. Je vais faire C-x C-j. Et puis... Je ne sais pas si vous savez, w, le petit w, ça me copie. Donc, le contrôler, il me place dans direct sur le fichier en question. Et w, dans le presse-papier, le nom du fichier. Je pourrais faire cat. C'est facile d'implementer. Ce serait facile, parce qu'ici, je l'ai récupéré. cat, ceci. Donc j'ai directement le fichier comme ça. Donc ce serait extrêmement facile. Plus dur, ce sera de lui trouver un nom. À cette commande.

Sacha: Génial, génial.

28:49 org-html-themes

Fabrice: Non, vas-y, j'allais éventuellement, maintenant on était dans, j'allais éventuellement parler d'export HTML, etc.

Sacha: Oui, oui, oui.

Fabrice: Donc vous voyez ici, on est dans le buffer Emacs, alors c'est déjà agréable à lire parce qu'il y a un certain nombre de couleurs, etc. J'aimerais bien d'ailleurs ici que les notes soient colorisées avec une certaine couleur, mais bon, ce sera pour une prochaine fois. Mais il y a évidemment un moyen de lire qui est quand même beaucoup plus agréable, c'est de lire ce même document. qui est assez long, ce serait de le lire en HTML ou en PDF. Et donc, en rajoutant un setup file, donc ici simplement une ligne comme ça. Donc, il faut avoir cloné le repository à Org-html-themes. Et alors, après, il faut taper le chemin d'accès vers le HTML theme readtheorg.setup. readtheorg est un des deux thèmes HTML que j'ai écrit. Et donc, simplement en mettant une ligne comme ça, quand on va faire C-c C-e h h, ça va générer. Voilà, c'est déjà fait. On voit ici dans l'écho area, ça va générer la version HTML. Et donc, oui, pour aller l'ouvrir, il y aurait moyen d'aller encore plus vite, etc. Ce que je fais encore toujours pour l'instant, je fais C-x C-j, je passe dans Dired. Et dans Dired, j'ai un petit raccourci qui est extrêmement pratique, que j'ai nommé pour l’instant o pour Open. Et en fait, ça ouvre le fichier sur lequel je suis en utilisant l'application standard Windows. Donc, c'est ça aussi l'intérêt ici. Donc, ça montre bien qu'avec WSL, je suis intégré avec mon Windows. Donc, en faisant O sur ce fichier-là, Ça va m'ouvrir Edge. Si je fais O sur le fichier PDF, ça va m'ouvrir sous Matra PDF. Parce que j'ai configuré dans Windows que mon lecteur, c'est sous Sumatra PDF. Et donc ici, je vais faire O. Et ça doit m'ouvrir ici. Alors voilà, ça m'ouvre un fichier. Vous voyez ? Et donc ça m'ouvre le fichier avec... Le fichier Org, mais avec une présentation beaucoup plus sympathique, beaucoup plus jolie, beaucoup plus agréable à lire.

Sacha: Je l'adore.

Fabrice: Elle est géniale, elle est magnifique. Et en fait, il y en a une deuxième, et je vais vous montrer des petits trucs de la deuxième, parce que je n'ai pas encore tout mis dans celle-ci. J'aurais bien porté des choses que j'avais créées dans l'autre, mais que je n'ai pas encore portées, donc j'aurais bien les partager dans tous les thèmes. Si je retourne ici dans mon fichier Org et que je mets Big Blow à la place, c'est le nom de l'autre thème. Je vais refaire un export. Cette fois-ci, je n'ai plus qu'à faire F5 ici pour faire un refresh. On a une autre vue où là, chaque section devient un tab. On a tous des tabs. Donc ça peut être aussi intéressant en fonction de la taille du fichier. Ça peut être aussi intéressant de voir une vue plus monolithique où on a tout en une seule page ou une vue avec des tables ici où on voit section par section ou chapitre par chapitre. Mais alors cette vue-ci, elle a des trucs un peu spéciaux. Donc j'ai notamment la possibilité de faire un collapse. On va aller à un endroit où j'ai ici... Quelques astuces, voilà. Donc j'ai collapse all ou extend all. Donc je peux collapser toutes mes sections. En fait, j'ai voulu faire comme dans Org. Et j'ai mes petites flèches ici. Donc je peux, en cliquant sur n'importe quel item, je peux l'expander ou le collapser. Donc si j'expand ou je collapse.

Sacha: Pardon, je vais apporter des tissus à ma fille.

Prot: C'est effectif comme ça, oui. Et tu as d'autres thèmes aussi ?

Fabrice: Non, pas encore publics. J'en ai en deux, mais ils ne sont pas encore publics. Et donc voilà, ça peut être intéressant quand on a beaucoup de tâches, etc., pour pouvoir de nouveau, un peu comme dans le fichier Org, de collapser tout sauf un certain truc. Et alors, j'avais mis exprès ici, donc là j'ai deux tâches, j'ai fait deux tâches, en todo et en startit, avec des petites tags. Et en fait, j'ai même... Ici, un petit dashboard sur le côté. Il y a un petit truc dashboard qui s'est mis quand on l'ouvre. On voit le nombre de tâches en todo, le nombre de tâches en started. Donc, dynamiquement, ça va questionner, ça va afficher tous les statuts qui existent. Si j'en ai que deux dans tout mon fichier, c'était pour un petit exemple. Là, pareil, j'ai tous les tags et on peut même highlighter carrément tous les trucs qui sont en todo. C'est des flags, en fait. On peut les highlighter. Je peux highlighter et ça prend la couleur du todo. Comme ça, si je veux scanner tous les trucs qui seraient en todo, je peux les mettre en todo et je peux scanner, quand j'ai un long fichier, je peux scanner tout ce qu'il y a dedans. Et ça marche aussi, si je me souviens bien, avec les petits tags. Je peux highlighter toutes les tâches qui ont le tag personnel ou toutes les tâches qui ont le tag work d'un coup. Ça me permet de scanner, de regarder ce qui est important. C'est un peu un fonctionnement à la Org, mais dans le browser.

35:02 Review

Prot: Qu’est-ce que ça veut dire r ? r, or click here to review. Exactement.

Fabrice: C'est ce que je voulais te montrer. J'ai un petit truc en plus pour faire un vrai review. Si je clique sur r, ça va faire comme un narrowing. Tout le reste de l'écran va devenir foncer. Sauf la tâche, une tâche à la fois. Et donc ça va aller chaque fois sur la next tâche. Donc ici, quand je vais cliquer sur R, il va passer à la tâche suivante, qui est active, c'est-à-dire ici la tâche qui sera en start-it. Et donc ça collapse tout le reste. Et si je refais un r, ici c’est bloqué, donc je peux faire q pour quitter. Donc r, il va à la première tâche, et donc je vois cette première tâche ouverte, et puis il va à la deuxième. Donc on pourrait passer, scanner une par une toutes les tâches. Et ça va chaque fois mettre en évidence uniquement cette tâche-là. Et donc, je peux faire grand R, donc c’est pour faire le reverse, donc aller en arrière. Donc r, ça va vers le suivant, la tâche suivante. Si j'en ai que deux, on pourrait imaginer que j'en ai 100 dans un fichier. Et donc, je peux faire mon review comme ça et relire le truc et puis éventuellement changer. Ce qui serait génial, c'est de pouvoir changer le statut ici, etc. aussi. Et que ce soit répercuté vers le fichier Org, mais ce n'est pas le cas. C'est un petit ensemble de Org ici. J'ai aussi là un petit mini-talk, comme la mini-talk dans les chapitres LaTeX. Et donc vous voyez que simplement en mettant une ligne ici, BigBlow ou ReadTheDocs, On a accès à l'une ou l'autre. Je génère l'autre version. F5, voilà. Ici, il y a un petit truc de recherche en plus que je n'ai pas dans l'autre. J'ai des petites différences dans les deux thèmes. Et donc, ça, c'est l'export vers HTML. L'idée, c'est d'avoir... J'ai mis une référence ici, vers le repo. Et l'idée, c'est d'avoir 0 CSS à écrire. Une navigation confortable, une lisibilité plus grande, un rendu professionnel.

37:25 PDF

Fabrice: On peut carrément imprimer ça. Voilà, une personnalisation qui est assez simple. J'ai fait aussi un petit repository pour l'export vers la tech. Donc ici, si j'exporte, je l'ai déjà fait, mais je peux directement l'ouvrir. Oh, donc je vais faire de nouveau... Oh, et ça va ouvrir l'application dans Windows qui est liée pour les PDF. Chez moi, c'est sous Sumatra PDF. Voilà. Et donc, ça m'ouvre ici mon fichier. Cette fois-ci, comme un PDF, avec une table des contenus, une table des matières. Et voilà, j'ai essayé de nouveau de faire les notes, les types, etc. Donc, de les faire un rendu qui soit assez joli. Tout à l'heure, on était ici dans Emacs Leuven Boost. Et donc ça, c'est aussi public. C'est une classe qui s'appelle mcreport. Je l'ai appelé mcreport pour l'instant. Donc, il faut juste charger la première fois. Il faut charger, donc la première fois que je lance Emacs, je devrais le faire automatiquement, mais pour l'instant je ne l'ai pas encore fait. Je dois le faire une fois à chaque session. Je vais évaluer ce buffer-ci dans lequel j'ai les définitions de mes différents... de mcarticles, de mcreports, de mcbooks, etc. Donc je dois juste évaluer une fois C'est un package. C'est des accords sur une guitare où on peut gratter plusieurs cordes sur une guitare. Ici, l'idée, c'est qu'on peut appeler une commande avec deux touches simultanées. Donc, par exemple, eval-buffer. Donc ici, quand je dois évaluer ceci, je ferais, si je faisais comme avant, je ferais M-x, eval-buffer, Enter.

40:03 Key-chord

Fabrice: Mais en fait, avec key-chord, je peux simplement faire vb en même temps. Donc, si je fais vb, il y a genre 100 ou 200 millisecondes. Donc ça doit être fait quasiment simultanément. Et le b peut être avant le v ou le v avant le b. Et donc quand je fais les deux en même temps, vb, ça fait eval-buffer. Si vous voulez, alors ici on voit rien, c'est pas très visuel. Si vous voulez voir un truc, hh par exemple, quand je tape hh rapidement, ça fait la sélection d'abord du mot. Si je retape rapidement, ça grandit chaque fois la région. Donc ça fait un expand region. Et grand H, ça fait l’inverse, je retourne vers du plus petit au plus petit. xk par exemple, si je tape xk, ça va faire kill-buffer. Donc c'est chaque fois juste, si vous voulez voir dans ma configuration, où ça se trouve, Emacs Levenel, XK par exemple, voilà. Donc c’est là que j’ai mis other window, ww, xj, ça fait le C-x C-k, donc le direct jump. Et le eval-buffer dont j’ai parlé, où est-ce qu'il est ? On va mettre un peu… Donc eval-buffer, voilà, vb, ça fait eval-buffer. Donc pratique ça pour écrire en français. Quand j'écris plus petit, plus petit, deux fois rapidement, donc il faut que ce soit chaque fois rapidement, ça va faire un insert de caractères guillemets français. Donc ici, je vais faire si je le fais lentement, il ne se passe rien. Si je le fais vite, il insère les guillemets. D'accord. Tant que j'y suis, vous avez vu aussi, si je fais plus petit, plus petit ici, et puis je fais un save, vous voyez que j'ai à ce moment-là ici une ligne bleue dans le gutter, dans le fringe. Donc j'utilise git-gutter, si je me souviens bien, de Dmitry, j'ai oublié son nom de famille. C'est diff-hl, de Dmitry Gutov.

Sacha: Moi aussi.

Fabrice: Ouais, ça doit être ça. Et donc ça me met en fonction, si j'efface ici des lignes, ça va mettre du rouge. Et si je fais une insertion, et si je fais des insertions, ça va mettre du vert. Donc je vois directement dans mon buffer, systématiquement, où est-ce que j'ai des choses qui ne sont pas encore commitées. Et alors pour, ça c'est la première customisation que j'ai indiquée, si je retourne dans mon... Je peux en même temps parler de F5 et F6. J'ai quelques trucs assez sympathiques. F5, ça va me faire... Si j'ai un seul window, quand je fais F5, ça me crée un deuxième window. Ça fait l’équivalent de C-x 2 ou de C-x 3. En fonction de la place que j'ai. Donc si j'ai assez de place pour avoir 80 caractères présentés, il va passer à un mode vertical, côte à côte. Sinon, si j'ai moins d'espace, il va passer sur un mode dessus-dessous. Et si je suis à l'inverse, dans une situation avec plusieurs buffers, avec plusieurs windows, donc ici j'en avais encore une troisième, quand je fais F5, en fait, c'est l'équivalent de faire C-x 1, donc ça va faire Ça va garder uniquement la fenêtre qui était active. Et donc souvent, quand je dois passer d'un buffer à l'autre, quand je veux ouvrir autre chose, je vais faire F5, ça me crée un deuxième buffer. Et puis je vais mettre le contenu ici d'autres choses. Je vais retourner sur ma présentation. Et je voulais parler, par exemple, du C-w et du M-w sans sélectionner de région. Ça, pour moi, c'est un des trucs les plus... Les plus importants, que j'utilise tout le temps, tout le temps, tout le temps. Donc, imaginons que je veuille... Si je veux copier cette région-là, je dois commencer à sélectionner une région, et puis je vais pouvoir faire un copie. Si je veux, en fait, si je me rends compte... Imaginons que je veuille faire une ligne qui ressemble à celle-là, celle-ci, avec le kk. Imaginons que je veuille aussi faire qq, que qq ait la même... Appel la même commande. Donc je pourrais dupliquer la ligne. J'ai aussi une petite commande pour dupliquer les lignes. Et sinon, en fait, il faut que je copie cette ligne-là. Dans un Emacs standard, pour copier la ligne, je dois aller au début de la ligne, faire la sélection, aller à la fin de la ligne et puis faire M-w. Et à ce moment-là, je peux la copier. En fait, c'est trop long pour moi. Donc j'étais là au milieu et donc je veux copier la ligne. Simplement, je vais prendre un autre exemple, je vais prendre celle-là. Je fais M-w. Et M-w, donc j’ai un advice au-dessus de M-w. M-w, s’il n’y a pas de région, il considère que la région, c'est la ligne courante. Donc ici, si j’insère, je fais C-y, voilà. J'ai la ligne que j'avais mise dans le presse-papier.

45:41 Copier sans sélectionner

Fabrice: Et ça, ça sauve en temps fou de pouvoir... C'est quand je veux copier une ligne ou à l'inverse couper une ligne parfois. C'est le même principe. Donc le C-w, donc le cut, si on parle en Windows. Donc si je veux faire un cut de cette ligne-là, de nouveau, si je n'ai pas cette customisation-là, je vais devoir, au début de la ligne, sélectionner la région et puis je peux faire C-w. Mais avec la petite customisation, avec l'advice que j'ai, sur n'importe quelle ligne, je suis au milieu, C-w, ça fait le cut. Et donc ça m'arrive très souvent, si je veux supprimer, par exemple, ces trois lignes-là, alors je pourrais me remettre au début, puis sélectionner ma région, faire C-w. Ça ne me dérange pas que ça aille dans le presse-papier. Ou encore plus rapidement, je suis là-dessus et ces trois lignes qui ne m'intéressent plus, je fais C-w C-w C-w. Et les trois lignes ont disparu. C'est plus facile. C'est beaucoup plus rapide, c'est beaucoup plus facile. Le fait de pouvoir faire un copier ou un couper sans sélection. De nouveau, je reviens ici, je fais un M-w, et puis je vais là, C-y. Heureusement que j'ai Git, parce que là, je suis en train de casser mon fichier. Ce n'est pas grave parce que je vais faire un revert après. Mais bon, voilà, ça, c'est un truc extrêmement utile pour moi, ce C-w, M-w. Donc, j’ai mis un lien. Ceux qui veulent aller chercher les notes de cette présentation, j'ai mis un lien directement vers L'endroit, ça se trouve dans mon fichier de config Emacs qui est sur GitHub. Ça va ouvrir directement la section deletion and killing. Vous pourrez avoir le code. Ici, voilà le code qu'il faut copier si vous le voulez. Ça, c'est pour le cut. C'est un slick cut, ce que ça s'appelle. Et puis ici, pareil pour le copier. Donc le M-w, il faut copier ça. Et donc ça regarde, en fait, est-ce qu'il y a une région ou pas. Et s'il n'y a pas de région active, ça sélectionne la ligne courante.

Sacha: J'adore ce genre de fonction, do what I mean.

Fabrice: Oui, j'en ai plusieurs autres, mais exactement.

48:29 fill-paragraph

Fabrice: Par exemple, un autre do what I mean, je l'ai pour le M-q. Imaginons ici que je vais rajouter... Tiens, j'ai des trucs dans le presse-papiers, je peux les mettre là. J'avais upcase, la region. Donc maintenant, si je veux remettre en forme le paragraphe, je vais faire metacue. Et en fait, imaginons par exemple que je veuille... En fait, ça, c'était un paragraphe qui pourrait être beaucoup plus long. Je vais faire loremipsum. J'ai un yasnippet qui va me faire un message un peu plus long. Et imaginons que je veuille remettre ça en une seule ligne, parce que je dois copier ça, par exemple, dans Outlook. Et dans Outlook, ce sera moche si j'ai des retours dans la ligne physique à chaque fois. Ou si je veux le copier dans WhatsApp, un message. Donc, ce que je vais faire, en fait, je vais faire M-q. Il va faire l'inverse, il va toggler. Donc, mon M-q à moi, il tog… Donc, la première fois, il fait un M-q normal et la deuxième fois, il passe à la version sur une seule ligne. Quand je refais M-q, je repasse en version multiligne. Une seule ligne, plusieurs lignes, une seule ligne, plusieurs lignes.

Sacha: Donc, ça fait un toggle.

Fabrice: Donc, ça regarde la dernière commande. Si la dernière commande est déjà le M-q, alors je refais le M-q, mais dans l’autre sens.

50:02 Les macros

Fabrice: J'ai la même chose pour les macros. Maintenant, il y a F3 et F4 qui, depuis une dizaine d'années, ont été bindés pour les macros. J’utilisais Shift F8 pour définir une macro et F8 pour l'exécuter. Donc Shift F8. Imaginons que je veuille supprimer les deux premiers caractères de la ligne. Ça n'a aucun sens, mais c'est pour l'exemple. Je vais faire Shift F8. Voilà. Non, je me suis trompé. Shift F8. Et donc on voit Define Keyboard Macro. Je vais supprimer les deux premiers caractères. Je passe à une suivante. Et je refais Shift F8. Et parce que j'étais en mode définition de macro, il sait qu'il doit arrêter la macro. Et puis pour l'exécution, ce sera juste F8 tout seul.

51:02 Volatile highlight

Fabrice: Un truc aussi extrêmement utile, je trouve, visuellement, c'est si je vais faire un undo, maintenant, les deux premières lignes de chaque phrase vont se remettre, de chaque ligne vont se remettre. Mais en fait, j'utilise Volatile Highlight qui va me montrer ce qui vient de changer. Quand je ne fais pas de mouvement dans le buffer, je vois qu'il vient de rajouter gr. Et si je refais undo, undo, undo, undo. Je vois chaque fois la modification qu'il a faite dans le buffer. Donc quand on fait des yanks, des copies, etc., des insertions ou des replays, on va voir, volatile-highlight va montrer juste comment j'ai déplacé mon caractère. Et ça, c'est très utile pour voir un peu visuellement qu'est-ce qui s'est passé. C'était la même chose avec mon metacue. Si je fais un undo, si je refais le metacue ici et que je fais un undo, voilà. On voit les insertions d'un retour en ligne à chaque fin de ligne. Il ne reste que quelques minutes. Je n'aurais pas le temps de montrer tout ce que j'ai imaginé. Je ne sais pas si vous avez des questions. Sinon, j'ai encore un truc que je voudrais montrer qui est assez utile. Et puis le reste vous pourrez lire.

Prot: Oui, je crois que c'est OK. Pardon ? Oui, je crois que c'est OK pour toi de démontrer. Parce que si on a des questions, on peut voir le Elisp que tu as écrit.

Fabrice: Tout à fait.

Prot: Tout est public.

52:47 Les tableaux Org

Fabrice: Un truc qui m'intéresse dans les fichiers Org, j'utilise beaucoup les tableaux. Par exemple, mes factures que je fais chaque mois. Je l'ai fait avec Org. J'ai un fichier qui ressemble à ça. Ici, j'ai mis dans le fichier de note de cette présentation, j'ai mis un petit exemple avec des personnes, des prix. Ici, on a un total de 2250 euros. Et ça, c'est un prix hors TVA. Ici, j'ai une autre table qui va appliquer la TVA. Elle reprend. Ici, j'ai un remote. Donc je vais chercher dans la carte participant, je vais chercher ce montant là. Et donc il vient se copier là tout seul. Et sur ce montant là, j'applique une TVA à 21%. Donc j'ai le montant, toutes charges comprises, donc avec la TVA. Et donc le truc que je trouve embêtant, par défaut, enfin qui m'embête moi, c'est que potentiellement, je vais dire en fait non, et si c'était pas 500, c'était 1500. Et je vais sauver mon buffer. Et en fait, c'est totalement incohérent maintenant, puisque la somme n'est plus correcte. Et en plus, un tableau qui se trouve ici juste derrière, mais qui pourrait se trouver totalement ailleurs dans le document, n'est plus du tout à jour non plus. Et si je fais un export, je vais publier un document qui sera totalement avec des fautes, en fait. Et donc, j'ai surchargé le Save Buffer dans le mode Org. Et dans le mode Org, quand ça fait Save Buffer, ça fait aussi le recalcul de toutes les tables dynamiques, le recalcul de tous les blocs dynamiques, pardon, le recalcul de toutes les tables et aussi le réalignement des tags. Par exemple, ici, je vais mettre un tag. Tout ça, vous verrez en même temps. Mon tag. Les tags, par défaut, sont alignés à 80 caractères. À la fin, ici, il y a une petite ligne grise. Je ne sais pas si vous la voyez bien. Elle est assez fine. Maintenant, quand je vais faire simplement save, chez moi, c'est F2, ça va calculer les montants. On va voir que ce montant-là va être changé, ce montant-là, celui-là et celui-là. Je vais faire save ici. Et mon tag a été réaligné aussi. 80 caractères, sauf qu'ici j'ai une présentation avec les deux chiffres, c'est pour ça qu'il y a un petit décalage. Donc de nouveau, si je mets 11500, C-x C-s, je suis sûr que mon document est correct. Je n'ai pas d'information incorrecte de table avec des erreurs, simplement parce que j'aurais oublié. Vous m'entendez encore ?

Prot: Sacha, je ne peux pas t'écouter.

Sacha: Je suis muette.

55:43 Les formations et les cours particuliers

Sacha: Ma fille s'est réveillée, donc je veux consacrer du temps pour la publicité de ta formation avant qu'elle devenue grincheuse. Si c'est acceptable, dites-nous sur les formations en présentiel.

Fabrice: Je fais effectivement des formations sur Emacs parce que je suis tellement passionné par cet outil et que je le trouve magnifique, je le trouve extrêmement puissant. que j'ai envie d'aider des gens à pouvoir s'en servir de la même manière que moi. Donc l'idée, c'est de montrer tout ce que j'utilise, un peu comme je le fais maintenant, mais ici, c'est avec quelques petits éléments à gauche, à droite. Et donc, j'aimerais bien en faire tout le temps, mais bon, j'ai fait pour l'instant déjà trois formations, deux à Paris, une à Rotterdam, et je compte en refaire une soit en Q4 d'RGSI, J'avais quelques notes, voilà. Soit en Q4 2026 ou alors probablement plutôt le Q1 2027, en refaire une autre à Paris, où l'idée, c'est en fait d'apprendre aux gens à utiliser Emacs et de montrer, comme je le fais un petit peu ici, montrer les packages que j'utilise et qu'est-ce qu'ils apportent, donc qu'est-ce qu'ils font de plus, qu'est-ce qu'ils permettent d'apporter plus, comme donc le keychords, le volatile-highlight. Les petites fonctions que j'ai écrites sur le recalcul des tables, par exemple sur Org, le M-w, C-w qui sélectionne la ligne d’office s'il n'y a pas de région, tout ça en fait, le but c'est de le montrer, de l'expliquer et que les gens puissent ou bien utiliser mon Emacs Leven tel quel et puis connaître tout ce qu'il y a dedans ou bien aller piquer des choses intéressantes qui sont dans ce fichier-là.

Sacha: Est-ce que tu es aussi disponible pour les cours particuliers comme le coaching de Prot ? Tu offres aussi les cours particuliers ?

Fabrice: Absolument, absolument. Je suis passionné par Emacs et donc effectivement, des cours particuliers, je suis aussi tout à fait disponible à le faire. C'est le même enthousiasme pour... En français et en anglais. En français, en anglais, en irlandais et en espagnol.

Sacha: C'est très cool. Tu as un autre rendez-vous. J'ai un fil. Merci beaucoup à Fabrice et à Prot.

Prot: Merci, merci Sacha et Fabrice.

Fabrice: Merci à vous. Merci beaucoup pour cette invitation. J'espère que ça donnera quelques idées. Je suis disponible pour... Pour toute question supplémentaire ou pour toute info supplémentaire, voilà, un grand plaisir.

Sacha: À la prochaine, je pense que nous devons à une autre conversation.

Fabrice: Avec grand plaisir. À la prochaine. Merci beaucoup.

Prot: Au revoir, au revoir, à bientôt.

Fabrice: Merci, au revoir.

View Org source for this post

27 août: Emacs Chat: Fabrice Niessen (en français, partie 2)

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

Nous allons à nouveau parler en direct avec Fabrice Niessen d'Emacs, de ses flux de travail, de sa configuration et d'autres sujets en français. Voici ses notes.

dans le fuseau horaire America/Toronto, soit 0730H EDT / 0630H CDT / 0530H MDT / 0430H PDT / 1130H UTC / 1330H CEST / 1430H EEST / 1700H IST / 1930H +08 / 2030H JST.

Voici notre conversation précédente :

View Org source for this post

2026-08-10 Emacs news

| emacs, emacs-news

The Navigation category has a couple of interesting window configuration tips this week in case you prefer to work with just one window or have multiple windows with some of them dedicated to specific buffers.

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!

View Org source for this post

Replace YouTube captions from Emacs Lisp

| emacs

I want to be able to easily update YouTube captions from my VTT files. Adding a comment like this:

NOTE
#+YOUTUBE_URL: https://youtu.be/sxqsIgXYkVw
#+LANGUAGE: en

to the first subtitle in my VTT file lets me programmatically replace the captions for the specified language without needing to click through the YouTube interface, saving me at least 9 clicks, a slight delay, and the selection of the file. Now I can just bind it to C-c C-c when I'm working on correcting or translating captions.

;;;###autoload
(defun sacha-youtube-replace-captions (url language vtt-file)
  "Replace captions for URL in LANGUAGE with VTT-FILE."
  (interactive
   (let ((params (and (derived-mode-p 'subed-vtt-mode)
                      (sacha-subed-record-youtube-params))))
     (list
      (or (plist-get params :url)
          (read-string "YouTube URL: "))
      (or (plist-get params :language)
          (read-string "Language (ex: fr): "))
      (if (derived-mode-p 'subed-vtt-mode)
          (buffer-file-name)
        (read-file-name "VTT file: ")))))
  (let* ((video-id (sacha-org-yt-id url))
         (existing-captions (sacha-youtube-get-captions video-id))
         (boundary "---------------------------sacha_yt_caption_boundary"))
    (dolist (item existing-captions)
      (let ((snippet (alist-get 'snippet item)))
        (when (string= (alist-get 'language snippet) language)
          (sacha-youtube-delete-caption (alist-get 'id item)))))
    (let* ((metadata (json-encode `((snippet . ((videoId . ,video-id)
                                                (language . ,language)
                                                (name . ,language))))))
           (text (with-temp-buffer
                   (insert-file-contents vtt-file)
                   (buffer-string)))
           (body (concat "--" boundary "\r\n"
                         "Content-Type: application/json; charset=UTF-8\r\n\r\n"
                         metadata "\r\n"
                         "--" boundary "\r\n"
                         "Content-Type: text/vtt\r\n\r\n"
                         (encode-coding-string text 'utf-8) "\r\n"
                         "--" boundary "--\r\n"))
           (response (request-response-data
                      (request "https://www.googleapis.com/upload/youtube/v3/captions?uploadType=multipart&part=snippet"
                        :type "POST"
                        :headers `(("Authorization" . ,(format "Bearer %s" (sacha-google-access-token)))
                                   ("Content-Type" . ,(format "multipart/related; boundary=%s" boundary))
                                   ("Accept" . "application/json"))
                        :data body
                        :sync t
                        :parser #'json-read))))
      (message "Uploaded.")
      response)))

(defun sacha-youtube-get-captions (video-id)
  "Return the list of existing caption tracks for VIDEO-ID."
  (let ((response (request-response-data
                   (request (format "https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId=%s" video-id)
                            :headers `(("Authorization" . ,(format "Bearer %s" (sacha-google-access-token))))
                            :sync t
                            :parser #'json-read))))
    (alist-get 'items response)))

(defun sacha-youtube-delete-caption (caption-id)
  "Delete the caption track identified by CAPTION-ID."
  (request (format "https://www.googleapis.com/youtube/v3/captions?id=%s" caption-id)
           :type "DELETE"
           :headers `(("Authorization" . ,(format "Bearer %s" (sacha-google-access-token))))
           :sync t))

(defun sacha-subed-record-youtube-params ()
  "Return directives related to YouTube."
  (save-excursion
    (goto-char (point-min))
    (unless (subed-subtitle-msecs-start) (subed-forward-subtitle-start-pos))
    (list
     :url (subed-record-get-directive "#+YOUTUBE_URL")
     :language (or (subed-record-get-directive "#+LANGUAGE")
                   (progn (goto-char (point-min))
                          (when (re-search-forward "^Language: \\(.+\\)\n" (or (save-excursion (re-search-forward "\n\n" nil t))
                                                                               (point-max)))
                            (match-string 1)))))))

The code uses some functions defined elsewhere in my configuration:

This is part of my Emacs configuration.
View Org source for this post

Semaine du 27 juillet au 2 août

| french

lundi 27

J'ai eu une séance de conversation avec mon tuteur. Je suis mécontente de mes compétences de conversation. Même en anglais, je pense que je suis très rouillée. Je suis fatiguée aujourd'hui. Je me suis couchée tard hier soir, je suis réveillée tôt pour mon cours particulier, et je suis un peu préoccupée. Mais j'ai envie de parler à l'aise un jour : sur ma vie, sur mes apprentissages variés, sur des intérêts partagés… Heureusement, je me rappelle que ma mère m'avait dit que mon père avait commencé comme une personne peu loquace avant qu'il ne se transforme en un raconteur fascinant. Il racontait des histoires plusieurs fois à des auditeurs différents, et chaque fois les bruitages et les mouvements se peaufilaient. Ma sœur avait évolué aussi d'une écrivaine hésitante à une écrivaine claire et poignante. Peut-être qu'après la conclusion de mon contrat de consulting, je peux consacrer mon temps à la conversation et à l'écriture. Je pense que ma vie quotidienne est un peu ennuyeuse pour d'autres personnes, mais c'est ma responsabilité de la rendre plus intéressante si je dois soumettre mon tuteur à l'exercice de m'écouter (même si je lui paye). Donc : je dois m'appliquer sans tomber dans le piège du masking autistique. Je trouverai une façon qui me convient, comme mon père l'a fait.

Nous avons fait du vélo au magasin de pierres d'aménagement paysager. Mon mari a voulu acheter des galets de rivière pour empêcher l'eau de pluie d'éclabousser. Il y avait des vendeurs qui l'ont aidé à charger deux sacs sur son vélo cargo pour qu'il puisse passer les prendre seul la prochaine fois.

Il pleuvait soudainement. J'ai oublié mon vélo cargo à notre jardin de derrière et je ne m'en suis rappelée que lorsque mon mari est rentré de son rendez-vous avec le médecin. Il m'a dit qu'il était déjà mouillé, donc qu'il pouvait ranger le vélo pour moi. Heureusement, la housse de pluie a protégé les coussins.

Ma fille et moi avons commencé l'aventure gratuite de Donjons et Dragons qui s'appelle Frozen Sick. Elle est conçue pour une partie qui comprend quatre aventuriers de niveau 1 à 3. Je ne sais pas si notre binôme d'aventuriers de niveau 5 sera trop puissant, mais je peux toujours ajouter ou modifier les ennemis si les combats sont trop faciles. De toute façon, ma fille préfère éviter les combats.

J'ai emmené ma fille au cours de gymnastique. Elle était très fatiguée une fois qu'elle l'a fini.

Je me suis lassée de parler des incertitudes de l'IA pour le moment parce que je ne peux pas apporter quelque chose de concret pour l'amélioration de la situation. J'ai le privilège de pouvoir attendre jusqu'à ce que les choses se soient tassées, et même la capacité d'aider quelques personnes par des petites manières.

mardi 28

Mon mari est repassé prendre des galets de rivière. Ma fille nous a aidés à les nettoyer à l'eau. Elle a sélectionné des belles pierres pour jouer. En regardant ma fille en jouer avec les galets et l'eau, mon mari m'a dit que c'était le pic de la parentalité.

J'ai accompli un peu de paperasse dans mon travail de consultante, et j'ai mis à jour des données.

J'ai fait une sieste pendant que ma fille regardait Pokémon. Je l'ai laissée faire. C'est l'été. Demain, nous allons au parc d'attractions pour la deuxième fois, donc j'ai besoin de beaucoup d'énergie.

Ma fille est un puits sans fond pour Pokémon ou pour Donjons et Dragons, et avant ces sujets, pour Minecraft, pour Harry Potter et pour Star Wars. C'est son style et le mien aussi : de développer un intérêt spécial et d'absorber toutes les choses sur le sujet. Je fais un effort pour éviter de devenir anxieuse sur ses perspectives d'avenir professionnel. Elle est jeune. Apprendre à prendre soin d'elle suffit. Du côté des soucis, les incertitudes de la société générale suffisent amplement.

Il y a un sentiment de recul, en attendant que les choses se tassent… Je crois que si je pousse, si je m'inquiète, si je me dépêche, rien n'avance de toute façon. Je procède lentement et avec acceptation. Heureusement, il y a beaucoup de petites tâches et minimes améliorations que je peux faire même sans un grand plan ou une raison d'en être sûre.

Ma fille a nettoyé sa robe de bain à la main pour se préparer pour notre aventure au parc aquatique demain. Elle y a pensé toute seule, sans qu'on ait à la relancer.

Pour le déjeuner, ma fille a préparé du mac and cheese. Pour le dîner, ma fille et mon mari ont préparé de la soupe miso au tofu.

mercredi 29

J'ai continué de regarder la première saison de Plan Cœur. Je rate beaucoup de mots et je suis souvent perdue, mais si je le répète, peut-être que je peux suivre l'histoire…

J'ai travaillé sur de la paperasse pour mon compte bancaire philippin. J'ai vérifié mes signatures sur un appel vidéo, et j'ai numérisé les pages signées pour envoyer à la banque. J'ai été très stressée parce que j'ai eu du mal à imprimer la paperasse. Au début, j'ai choisi une mauvaise taille de papier. C'était trop court. Une fois que je l'ai changé, j'étais déconcertée parce que je n'ai pas pu imprimer la deuxième page d'un document. Elle sortait toujours blanche. Aaah ! Et le rendez-vous va commencer bientôt ! J'ai enfin réussi quand j'ai imprimé tout le document au lieu de sélectionner la page actuelle. À mon grand soulagement (et malgré des préparatifs de dernière minute), j'ai rempli toutes les pages exactement à l'heure. Puis j'attendais nerveusement l'appel vidéo de la banque. Les banquiers étaient un peu en retard, mais ce n'était pas grave, nous avons réussi (j'espère) à remplir la paperasse pour le moment.

J'ai emmené ma fille au parc d'attractions pour la deuxième fois. Elle a choisi les montagnes russes Leviathan pour sa première attraction. Elle les a préférées aux montagnes russes Minebuster parce qu'elle s'est sentie plus en sécurité avec son harnais. Le soleil brillait comme notre aventure précédente, mais il y avait du vent, donc c'était un peu trop froid pour profiter du parc aquatique comme prévu. Cependant, nous avons fait quelques toboggans aquatiques et nous avons enfin essayé la piscine à vagues. Une fois que le parc est devenu très animé l'après-midi, nous avons essayé des manèges pour les enfants pour éviter de longues attentes. Aujourd'hui, j'ai apporté du jambon, du salami, du fromage, des biscuits, et des raisins pour nos collations. Ma fille a choisi du poulet frit pour son déjeuner et de la barbe à papa pour sa friandise. Un seau de barbe à papa contient 200 g de sucre, donc nous avons choisi sagement de ne pas finir tout le seau ou même une portion recommandée (une tasse de barbe à papa contient 30 g de sucre !); nous l'avons mangé jusqu'à ce que nous n'en puissions plus. C'était mieux que ma fille choisisse le seau de barbe à papa au lieu d'un bâton de barbe à papa ; je ne sais pas comment nous pouvons gérer une plus grande quantité. Au moins le seau peut être rescellé et nous pouvons le porter facilement en métro. En parlant de métro, il y avait un homme qui jouait sa musique très fort, donc j'étais un peu surstimulée sur le chemin du retour. Malgré tout, c'était une géniale façon de passer une journée avec ma fille.

jeudi 30

L'une des entreprises d'assurance-vie m'a répondu avec une instruction de refaire un formulaire sans mon initiale. Une fois que j'ai examiné mes traces, j'ai trouvé que je l'avais déjà soumis à notre responsable comme ça. C'est possible que la responsable ait mélangé les feuilles parce qu'il y avait de nombreux formulaires à remplir. Ce n'est pas grave, au moins de mon côté. Je peux me contenter d'être satisfaite car j'ai prédit une raison possible pour rejeter et j'ai fait ma part correctement. Je peux le refaire avec un peu d'effort, je dois juste m'organiser avec mon témoin. J'ai envoyé les documents à la responsable. Si elle se rappelle qu'elle s'est donné beaucoup de mal pour rassembler les formulaires par numéro, elle peut informer l'entreprise d'assurance-vie qu'elle peut relire les formulaires plus attentivement. Pendant ce temps, j'attends la réponse de mon témoin pour resigner le formulaire. Je vais refuser à l'entreprise d'assurance-vie la satisfaction de nous refuser. J'ai suffisamment de temps pour cela. Je dis souvent à ma fille que les entreprises d'assurance-vie sont dans le métier qui consiste à accepter votre argent et à éviter de repayer, donc il est absolument compréhensible qu'elles soient très fuyantes.

J'ai emmené ma fille au parc pour jouer avec ses amies. Elles se sont amusées en cherchant des mûres de l'arbre près de l'aire de jeux. Une de ses amies m'a posé des questions sur Donjons et Dragons.

vendredi 31

J'ai essayé de jouer à Donjons et Dragons avec ma fille et ses amies au parc pendant leur pique-nique. C'était un peu difficile parce que toutes les cartes étaient en désordre. Je dois les trier pour chercher plus rapidement les spots et les équipements qu'elles veulent.

Ma fille et ses amies ont fait un pique-nique rempli de sucre : de la barbe à papa que nous avons achetée au parc d'attractions, des perles boba, des mochis et du jus. Il y avait aussi des fruits, du fromage, de l'eau de coco et du lait.

Ma fille était déçue parce qu'il faut que la pataugeoire soit vidée et remplie à nouveau à cause du chien qui est entré dans l'eau. Mais elle a réussi à gérer ses émotions et elle a passé du temps avec ses amies.

J'ai présenté mes excuses à mon tuteur à cause de ma préoccupation pendant nos séances précédentes. Je peux profiter autant que je me prépare et je fais attention. En guise de pénitence, j'ai préparé une carte mentale de trois sujets et des mots associés pour faciliter la conversation sans la tentation de lire mes entrées de journal à voix haute. Cette façon a réussi ! Nous avons eu une conversation plaisante. Mon tuteur a été amusé par ma carte mentale. Il a dit que c'était comme une vraie introvertie et il a partagé qu'il avait aussi préparé comme ça pour ses sessions quand il était un enseignant débutant. Nous avons parlé des montagnes russes et d'autres manèges. J'ai aussi posé des questions sur les applications possibles de l'IA au développement des compétences de l'expression orale et de la conversation. Il n'a pas eu beaucoup d'expérience avec l'usage de l'IA pour analyser les séances de conversation.

J'ai laissé ma fille au parc avec ses amies et leurs adultes responsables pendant que je faisais les courses pour le pique-nique. Cela a pris environ 40 minutes. Ma fille allait bien.

J'ai appelé ma mère. À cause de sa démence, elle a oublié beaucoup de choses et elle a répété des questions : si j'avais accouché, qui était mon mari, comment elle avait déçu ma sœur et d'autres sujets comme ça.

J'ai regardé une vidéo de la chaîne Underscore_ que mon tuteur m'a recommandée. L'épisode était sur les appareils IPTV qui sont utilisés dans les grands réseaux d'espionnage. J'ai raté beaucoup de mots, mais je l'ai globalement compris.

J'ai rendu visite à ma belle-fille et son partenaire pour être témoin de ma signature pour la paperasse d'assurance-vie. J'ai apporté une pizza de remerciement aux pepperonis et aux poivrons bananes (au-dessus de la moitié).

samedi 1er août

Mon mari et moi avons préparé du poulet à la marinade jamaïcaine, du brocoli, du riz et des haricots. Nous l'avons divisé en portions pour apporter à mon ami qui est en situation de handicap à cause du COVID. J'ai livré les plats et d'autres aliments à vélo et j'ai aussi fait sa vaisselle. J'ai manqué à ma fille et elle était un peu grincheuse une fois que je suis rentrée.

Mon mari a acheté quatre sacs de galets de rivière hier, donc aujourd'hui, nous les avons nettoyés et mis au jardin de devant. Mon mari a utilisé le nettoyeur haute pression pour le trottoir. Parce qu'il était déjà prêt, nous l'avons utilisé pour les fenêtres. Mon mari a pensé à l'utiliser pour le climatiseur, mais la pression était trop forte pour les ailettes. J'ai tenu la couverture du climatiseur pendant qu'il redressait les ailettes avec une partie d'un peigne. Heureusement, cela a fonctionné.

dimanche 2

Il pleuvait beaucoup, donc personne d'autre n'est venu à la séance de D&D au magasin. Nous avons acheté le livre Players Handbook et nous sommes rentrées pour jouer à D&D nous-mêmes. Ma fille était curieuse du mélange de D&D et Star Wars, donc nous avons créé nos profils et nous avons essayé un module de SW5E. Après quelques scénarios et une bataille, ma fille m'a dit qu'elle voulait prendre une pause, donc je suis passée à l'étude du français.

Ma fille a cassé une des touches sur son clavier. Mon mari lui a donné la touche correspondante de son propre clavier (c'est l'amour paternel !) et il en a commandé une.

View Org source for this post

Semaine du 20 au 26 juillet

| french

lundi 20

J'ai emmené ma fille à la piscine l'après-midi pour nager avec ses amies. Au début, elle a juste passé son examen de natation. Elle a posé des questions au sauveteur, qui a dit qu'elle doit utiliser les bons mouvements et éviter de faire le petit chien quand elle respire. Elle a réessayé presque immédiatement. J'ai eu un petit souci parce qu'elle était peut-être fatiguée, mais elle a réussi. Il faisait un peu trop froid pour moi, mais ma fille et sa meilleure amie (qui portait aussi une robe de bain aujourd'hui) ont joué au toboggan aquatique et au grand bassin de 14h à 17h10. J'ai été un peu stressée parce qu'elle résistait à se préparer à partir pour son cours de gymnastique et je n'ai pas voulu être en retard, mais je me suis rappelée que l'objectif était de faire du sport, donc j'ai annulé son cours particulier. Après avoir fait ça, ma fille a joué à l'aire de jeux avec ses amies. Elle a aussi fait du vélo toute seule autour du parc, et une autre fois avec sa meilleure amie. Il faisait très beau et le soleil brillait.

J'ai écouté des vidéos sur Emacs avec des sous-titres automatiques sur YouTube, mais je pense que la qualité de ceux-ci est trop faible pour mon niveau d'apprentissage. Il faut que je trouve une chaîne avec les sous-titres manuels.

J'ai copié et rangé des entrées sur Facebook. J'ai fait un flux de travail qui utilise Spookfox pour évaluer une expression Javascript dans le contexte de la page et pandoc pour convertir le résultat du format HTML au format Org Mode. Puis j'ai trié les articles par date.

mardi 21

J'ai discuté avec la responsable de ma mère sur l'entreprise d'assurance-vie et encore sur des auxiliaires de vie. L'entreprise d'assurance-vie veut que je lui renvoie la demande imprimée en couleur au lieu de monochrome pour rendre plus clair qu'il s'agit d'un original, malgré l'authentification du notaire et le cachet apostille. Sérieux ?! Je pense qu'elle trouve seulement une raison pour la rejeter. J'ai envoyé la première page à la responsable pour imprimer en couleur au cas où l'entreprise l'accepte.

Un autre problème, c'est que ma mère ne veut pas accepter l'ajout d'une autre auxiliaire de vie à l'équipe. Elle pense que ce sera plus logique de chercher une auxiliaire qui peut travailler toute la journée et vivre à la maison. Je préfère engager une agence pour aider avec la planification. J'ai appelé ma mère pour essayer de lui expliquer. Elle a pensé que l'essence coûte cher, ce qui est vrai, mais elle n'a pas pu comprendre qu'on ne veut pas vivre à la maison et travailler toutes les heures.

À cause de mon appel à ma mère, je n'ai pas préparé la séance avec mon tuteur. Mon navigateur n'a pas détecté mon microphone, qui m'a obligée à repasser à mon téléphone, donc je ne l'ai pas enregistrée pour analyser en privé. Je pense qu'il faut que j'arrête complètement les processus de navigateur pour lui permettre de détecter le microphone. Tant pis. Nous avons parlé des feux de forêt, de mes prochaines diffusions en direct, et des éditeurs Emacs, Neovim, et VS Code.

Je suis en train d'apprendre le français pour aider ma fille parce qu'elle doit l'apprendre à l'école, et cela semble porter ses fruits. J'ai écrit une question à l'IA sur l'utilisation du sort Prestidigitation pour nettoyer notre « ours-hibou jaune ». Ma fille m'a corrigée.

  • Jaune ? Yellow ? dit-elle.
  • Ah, notre jeune ours-hibou.

Mon mari a eu un rendez-vous avec un technicien pour remplacer le compteur d'eau. Il est arrivé plus tôt que prévu parce qu'il a eu d'autres rendez-vous dans notre voisinage. Il a porté un masque une fois que mon mari lui a demandé, ce que nous avons apprécié. La maintenance a été très rapide.

J'ai joué à Donjons et Dragons avec ma fille pendant plusieurs heures parce qu'il pleuvait. Nous sommes rentrées au fort. Après une brève pause, nous sommes allées au village de Celesti par un chemin plus court mais plus dangereux. Nous avons discuté des épreuves à venir.

J'ai eu envie d'une brève pause après beaucoup de temps à jouer à D&D avec ma fille. Au lieu de la laisser toute seule sur la canapé à jouer à Pokémon ou à regarder Pokémon (ou les deux en même temps comme d'habitude), j'ai essayé d'écrire un courriel en français. Le problème est que si je m'assois près d'elle, elle veut me parler de Pokémon et d'autres sujets, ce qui interrompait mes pensées. Je lui ai demandé d'attendre un court moment, mais elle est devenue un peu grincheuse. Heureusement, elle n'est pas partie furieuse. Après un peu plus de jeu de Pokémon, elle s'est déridée.

mercredi 22

J'ai discuté de l'autisme et du TDAH avec la thérapeute, qui m'a avoué qu'elle pensait que j'étais peut-être sur le spectre. Elle a vivement recommandé d'obtenir un diagnostic formel et puis d'essayer des médicaments, mais ils coûtent très cher et je ne suis pas sûre que ça vaudra la peine pour moi parce que je n'ai pas besoin d'aménagements pour le travail ou l'école. Malheureusement, elle ne connaît rien sur les ressources gratuites ou bon marché. Je sais que mon cerveau est sujet aux hoquets mentaux et aux hyperfixations occasionnelles. Si je gère ma vie pour garder un niveau bas d'obligations et de stress, ce sera probablement supportable. Même si je continuais de la même façon, je peux déjà contribuer à des choses utiles. Pour ma fille, c'est plus important qu'elle comprenne son propre cerveau, donc je vais essayer le processus à l'école en plus de la santé publique. Si ça ne porte pas ses fruits, je peux consacrer l'argent à un diagnostic privé pour elle.

J'ai appelé l'ARC pour me renseigner sur mon remboursement. Après une longue attente, l'agent m'a dit que le remboursement va arriver d'ici le mois d'août parce que ma requête implique deux départements. Bon, je l'attends.

Ma fille et moi avons préparé nos affaires pour notre grande aventure demain au parc d'attractions.

Ma fille et moi avons joué à Donjons et Dragons. Nous avons rencontré des bullywugs et un ettin.

jeudi 23

Ma fille et moi avons eu une grande aventure au parc d'attractions Canada's Wonderland et au parc aquatique Splash Works. Nous sommes allées en métro parce que les routes nationales sont trop dangereuses à traverser à vélo.

Nous avons fait des tours de montagnes russes. D'abord, les plus douces, puis les plus excitantes. Nous y sommes allées principalement pour le parc aquatique, donc nous avons passé beaucoup de temps à attendre pour les toboggans aquatiques. C'était une bonne journée.

Ma fille a aimé plonger de la falaise, mais la deuxième fois qu'elle a essayé, le sauveteur lui a dit qu'elle est trop petite. Elle a pleuré pendant une heure, ce qui était assez normal pour elle quand elle a des difficultés de régulation émotionnelle. Heureusement, j'étais près d'une chaise et j'ai pu obtenir ma serviette pour faire un store pour nous. Je l'ai simplement câlinée pendant qu'elle pleurait.

J'ai lu que l'AuDHD implique souvent une dérégulation émotionnelle plus intense que celle du TDAH ou de l'autisme seul. L'autisme rend plus difficile la détection et l'identification des émotions. Le TDAH réduit la capacité de résister ou de retarder la réaction. L'autisme maintient l'émotion. Je ne sais pas quelle est la meilleure chose à faire.

vendredi 24

J'étais très fatiguée aujourd'hui à cause de notre aventure d'hier, donc je me suis détendue. Ma fille et moi avons joué un peu à D&D, puis nous sommes allées avec mon mari à la bibliothèque et au marché. Nous avons mangé du maïs pour la première fois cette année.

J'ai ajouté une commande pour ouvrir le brouillon du bulletin d'information de la Bike Brigade et l'aperçu que mon script a fait.

samedi 25

Ma fille et moi avons aidé mon mari à apporter du gravier dans le jardin de devant la maison pour soutenir le climatiseur.

Nous avons livré du maïs à ma belle-fille.

J'ai téléversé et rangé des photos.

dimanche 26

J'ai emmené ma fille à la partie de D&D pour enfants et après ça au cours de gymnastique. Cette fois il y avait cinq enfants et le meneur de jeu avait du mal à les empêcher de faire des bêtises. C'était très amusant. Le meneur de jeu est plus animé que moi, donc ça ressemble à un cours d'improvisation pour moi parce que j'écoute aux portes (en vrai, juste à côté de leur table) toute la partie, ce qui rend le prix de 25 dollars encore plus rentable.

View Org source for this post

Semaine du 13 au 19 juillet

| french

lundi 13

J'ai eu une conversation avec mes sœurs car la cadette est très malade. Nous l'avons enregistrée pour ses filles et son mari. Nous avons aussi parlé des mots de réconfort.

Dans Donjons et Dragons, ma fille et moi avons combattu un minotaure de Baphomet qui était en vrai un humain maudit. Après une bataille, ma fille a réussi trois tests d'Arcanes d'affilée et elle lui a rendu sa forme humaine. Elle a obtenu le sort « Compréhension des langues » et elle a appris un peu d'abyssal.

J'ai emmené ma fille au camp d'été de poterie. C'est le même camp d'été qu'elle avait choisi l'année dernière, donc elle connaissait le processus et elle a eu des idées pour gérer la surstimulation potentielle, telles que de porter ses écouteurs, d'aller dans un coin plus calme ou d'aider les enseignants au lieu de passer du temps avec ses camarades.

Après le camp, j'ai emmené ma fille au cours de gymnastique.

Nous avons joué à Minecraft. Nous avons exploré le monde gratuit Caves and Cliffs. J'ai aidé ma fille avec quelques casse-têtes de parkour.

mardi 14

J'ai publié ma réponse à Prot et les créneaux pour les Emacs Chats en français en août. J'ai hâte de pratiquer mon français en parlant d'Emacs.

J'ai demandé aux avocats de préparer la paperasse pour les actions.

J'ai emmené ma fille à son camp d'été de poterie. Après ça, elle les a aidés à ranger. Il faisait très chaud, donc nous sommes allées au glacier pour manger de la crème glacée.

J'étais fatiguée le soir car je me suis levée tôt deux jours de suite.

Dans Donjons et Dragons, nous sommes allées au petit village de Celesti (le personnage de ma fille) qui s'appelle Hayven et qui est loin du fort. Nous avons combattu une chèvre géante, deux harpies (ce qui a obligé Celesti à descendre rapidement à la corde pour éviter de percuter la montagne), deux braconniers et leurs chiens et trois serpents que le druide a invoqués en parlant dans son sommeil.

mercredi 15

Au camp d'été, ma fille les a aidés au nettoyage des tabliers. Elle préfère aider plutôt que de faire des travaux manuels avec les autres camarades qui bavardent constamment.

La fumée d'immenses feux de forêts a recouvert la ville. Ma fille et moi avons porté un masque dehors à cause de la mauvaise qualité de l'air pendant que je l'emmenais au camp d'été. Mon mari a continué à livrer des dons des banques alimentaires comme bénévole parce qu'il l'avait promis. Il a aussi porté un masque et nous avons utilisé nos vélos électriques sans hésitation.

J'ai travaillé sur mon flux de travail pour extraire des essais de virelangues de ma séance avec mon tuteur pour en faire une vidéo avec sous-titres incrustés. C'était un peu difficile de me concentrer parce que je devais attendre le résultat pendant quelques minutes. Si je fais un bon flux de travail, je peux faire une vidéo à chaque séance pour suivre ma progression et pour me faciliter le shadowing ou réécouter les extraits avant mon rendez-vous avec mon tuteur.

jeudi 16

J'ai travaillé sur la paperasse du don.

vendredi 17

C'était la dernière journée du camp d'été de ma fille. L'année dernière, je consacrais tous mes moments libres à mon travail de consultante, ce qui justifiait facilement le prix du camp. Cette année, ce n'était pas le cas. J'ai consacré quelques moments libres au travail, mais aussi à la paperasse et à l'apprentissage du français.

Pour le dernier jour de son camp d'été, ma fille a émaillé ses bols, ses plats et ses vases. Elle m'a dit que ses camarades étaient trop bruyants.

J'ai eu un cours particulier de conversation. Mon tuteur a préparé des questions sur le shopping, le métro, les ordinateurs, et d'autres sujets.

J'ai envoyé les documents aux Philippines. Ça a coûté cher, mais c'était nécessaire.

Mon compte bancaire aux Philippines a été bloqué ! J'ai appelé le centre d'appel à l'étranger, mais ils m'ont dit qu'ils ne pouvaient pas m'aider. Je dois appeler l'agence bancaire directement pendant les heures d'ouverture des Philippines pour les supplier de mettre à jour mon compte sans avoir à me déplacer.

Après une courte partie de Supermarket Together, j'étais un peu nauséeuse.

J'ai fait de l'exercice avant d'aller chercher ma fille.

samedi 18

Ma fille s'est blottie contre moi toute la nuit. Naturellement, elle a volé la couverture. Une fois que je le lui ai fait remarquer, elle a dit qu'elle l'avait prise de mon côté, ce qui s'applique aussi bien à la couverture qu'à ce trait de caractère. Mon mari a dit que je vole toujours la couverture.

Après le dîner, je me suis assise sur le canapé et j'ai écrit en français pendant que ma fille jouait à Pokémon XY sur son ordinateur. Je ne veux pas la laisser toute seule car elle se sent abandonnée. La batterie de mon ordinateur ne fonctionne plus et je ne veux pas faire l'effort de l'éteindre et de le redémarrer pour m'installer en bas. Je pense qu'écrire sur mon téléphone est l'action la plus efficace que je puisse faire. Ah, je pourrais peut-être configurer l'ancien X220 pour me connecter à mon ordinateur…

J'ai fait une sieste à cause de ma fatigue.

J'ai oublié la prothèse oculaire de ma fille dans mon pyjama et elle a été passée à la machine. Oups !

dimanche 19

Ma fille a testé une séance de D&D au magasin. J'ai remarqué que le meneur de jeu était plus dynamique et plus drôle que moi, donc c'était inspirant à écouter. Il y avait un autre enfant qui jouait en tant que barbare tieffelin.

Au début, ma fille se balançait pour gérer la surstimulation due au bruit et aux nouveaux visages. Au bout d'un moment, elle s'est détendue.

Après la séance, elle a dit qu'elle préférait jouer avec moi. Je pense que nous pouvons continuer, elle et moi. Le meneur de jeu du magasin a plus d'énergie et il a aussi des figurines pour matérialiser le monde, mais ma fille préfère la liberté de jouer plusieurs heures avec moi à un rythme calme. Une fois qu'elle aura envie d'aller vers les autres, nous pourrons revenir à l'idée de jeu collectif.

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

J'ai laissé la bouteille d'huile trop près du wok et elle s'est déformée.

J'ai préparé des légumes pour mon ami qui est malade : du brocoli, du chou-fleur et trois courgettes. Mon mari a préparé des pilons de poulet, et il les lui a livrés.

J'ai viré de l'argent du Canada aux Philippines pour rembourser les dépenses de ma mère parce que mon propre compte bancaire aux Philippines est totalement bloqué.

J'ai appelé la banque pour mettre à jour mon compte. Le banquier m'a dit que je devais attendre son chef qui était indisponible jusqu'au 27 juillet. Je dois signer les documents par appel vidéo et puis les envoyer aux Philippines par coursier.

View Org source for this post