Compare commits
18 commits
Author | SHA1 | Date | |
---|---|---|---|
|
655db813be | ||
|
419390f692 | ||
|
271083d71f | ||
|
c47942b451 | ||
|
45ce87e6b1 | ||
|
70005c9228 | ||
|
5066f456f1 | ||
|
ca36f290b4 | ||
|
8a84b11503 | ||
|
f0af5efd81 | ||
|
6a3440dd1a | ||
|
c28b99933e | ||
|
be3345736b | ||
|
fa15d60ae1 | ||
|
eacb2c685b | ||
|
6911b53616 | ||
|
b73a81a129 | ||
|
c6543c3669 |
20 changed files with 738 additions and 40 deletions
13
Tuprules.tup
13
Tuprules.tup
|
@ -1,6 +1,5 @@
|
||||||
&root = .
|
&root = .
|
||||||
&tmpl_dir = ./templates
|
&tmpl_dir = ./templates
|
||||||
&gen_tmpl_dir = ./build/templates
|
|
||||||
|
|
||||||
HTML_TEMPLATE = main.html
|
HTML_TEMPLATE = main.html
|
||||||
|
|
||||||
|
@ -10,8 +9,8 @@ HTML_TEMPLATE = main.html
|
||||||
--template=&(tmpl_dir)/$(HTML_TEMPLATE) \
|
--template=&(tmpl_dir)/$(HTML_TEMPLATE) \
|
||||||
--include-in-header=&(tmpl_dir)/header.html \
|
--include-in-header=&(tmpl_dir)/header.html \
|
||||||
--include-before-body=&(tmpl_dir)/nav.html \
|
--include-before-body=&(tmpl_dir)/nav.html \
|
||||||
|
--include-after-body=&(tmpl_dir)/footer.html \
|
||||||
--css &(root)/css/style.css \
|
--css &(root)/css/style.css \
|
||||||
--include-after-body=&(gen_tmpl_dir)/footer.html \
|
|
||||||
%f | sed 's|%%webRoot%%|&(root)|g' > %o \
|
%f | sed 's|%%webRoot%%|&(root)|g' > %o \
|
||||||
|> %B.html
|
|> %B.html
|
||||||
|
|
||||||
|
@ -20,7 +19,17 @@ HTML_TEMPLATE = main.html
|
||||||
!compress_png = |> zopflipng %f %o |>
|
!compress_png = |> zopflipng %f %o |>
|
||||||
!compress_jpg = |> cjpeg -quality 80 -progressive -outfile %o %f |>
|
!compress_jpg = |> cjpeg -quality 80 -progressive -outfile %o %f |>
|
||||||
!compress_pdf = |> ps2pdf %f %o |>
|
!compress_pdf = |> ps2pdf %f %o |>
|
||||||
|
!avif = |> avifenc %f %o |> %B.avif
|
||||||
|
!jxl = |> cjxl %f %o |> %B.jxl
|
||||||
|
|
||||||
JPG_OPT = -quality 80 -strip -interlace Plane
|
JPG_OPT = -quality 80 -strip -interlace Plane
|
||||||
!blur_mini = |> ^ %f -> blur mini^ convert %f -resize 400x400 -blur 0x8 $(JPG_OPT) %o |> blur_mini.jpg
|
!blur_mini = |> ^ %f -> blur mini^ convert %f -resize 400x400 -blur 0x8 $(JPG_OPT) %o |> blur_mini.jpg
|
||||||
!thumbnail = |> ^ %f -> thumbnail^ convert %f -resize 200x200 $(JPG_OPT) %o |>
|
!thumbnail = |> ^ %f -> thumbnail^ convert %f -resize 200x200 $(JPG_OPT) %o |>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Slides
|
||||||
|
#
|
||||||
|
MARP = npx @marp-team/marp-cli@latest
|
||||||
|
MARP_OPTS = --allow-local-files --bespoke.progress
|
||||||
|
!marp_pdf = |> $(MARP) $(MARP_OPTS) %f --pdf --output %o |> %B.pdf
|
||||||
|
!marp_html = |> $(MARP) $(MARP_OPTS) %f --html --output %o |> %B.html
|
||||||
|
|
2
about.md
2
about.md
|
@ -66,7 +66,7 @@ work on smart homes. I work in the Vision team, making home cameras smarter. I
|
||||||
am thrilled to work on computer vision again.
|
am thrilled to work on computer vision again.
|
||||||
|
|
||||||
<div style="text-align:center; padding-top:2em;">
|
<div style="text-align:center; padding-top:2em;">
|
||||||
<a href="https://octodon.social/@ffreling">
|
<a href="https://mas.to/@ffreling">
|
||||||
<img src="images/mastodon.svg" alt="Mastodon" style="height:40px; padding-inline:5px">
|
<img src="images/mastodon.svg" alt="Mastodon" style="height:40px; padding-inline:5px">
|
||||||
</a>
|
</a>
|
||||||
<a href="http://code.ffreling.com">
|
<a href="http://code.ffreling.com">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
include_rules
|
include_rules
|
||||||
HTML_TEMPLATE = article.html
|
HTML_TEMPLATE = article.html
|
||||||
|
|
||||||
: *.md |> ./generate_listing.sh > %o |> index.md
|
: *.md |> ./generate_listing.nu > %o |> index.md
|
||||||
: foreach *.md |> !html |>
|
: foreach *.md |> !html |>
|
||||||
|
|
378
articles/chasseur_cueilleur_parents.md
Normal file
378
articles/chasseur_cueilleur_parents.md
Normal file
|
@ -0,0 +1,378 @@
|
||||||
|
---
|
||||||
|
title: "Chasseur, cueilleur, parent"
|
||||||
|
date: 2025-05-06
|
||||||
|
---
|
||||||
|
|
||||||
|
_Ceci est un résumé du livre [Chasseur, cueilleur, parent](https://www.editionsleduc.com/produit/2579/9791028521592/chasseur-cueilleur-parent)_
|
||||||
|
|
||||||
|
## Méthode TEAM
|
||||||
|
|
||||||
|
1. tendre camaraderie
|
||||||
|
2. encouragements
|
||||||
|
3. autonomie
|
||||||
|
4. minimum d’ingérence
|
||||||
|
|
||||||
|
## Comment élever des enfants serviables ?
|
||||||
|
|
||||||
|
- Les enfants ont le désir inné d’aider leurs parents. Il peut donc sembler
|
||||||
|
inapte ou empoté. C’est à ses parents de le former.
|
||||||
|
|
||||||
|
- Ne découragez jamais un enfant d’aider. Si une tâche est trop difficile ou
|
||||||
|
trop dangereuse, dites-lui d’observer. Ou divisez la tâche en sous-tâches plus
|
||||||
|
réalisables.
|
||||||
|
|
||||||
|
- Tâches simples mais réelles à effectuer ensemble, 1x / heure.
|
||||||
|
- aller chercher quelque chose dont vous avez besoin
|
||||||
|
- porter un petit sac de courses
|
||||||
|
- remuer une préparation dans une casserole
|
||||||
|
- couper un légume
|
||||||
|
- tenir la porte
|
||||||
|
- ouvrir le robinet du tuyau d’arrosage
|
||||||
|
- remettre un livre dans la bibliothèque
|
||||||
|
|
||||||
|
- Pour les enfants plus grands (à partir de 7 ans) : essayez de déclencher son
|
||||||
|
action en faisant une allusion indirecte à la tâche :
|
||||||
|
- "la gamelle du chien est vide"
|
||||||
|
- "il est l’heure de préparer le dîner"
|
||||||
|
|
||||||
|
## Comment élever des enfants coopérants
|
||||||
|
|
||||||
|
- Les enfants sont animés d’une motivation naturelle très forte pour le travai
|
||||||
|
en équipe et la coopération.
|
||||||
|
|
||||||
|
- Les activités centrées sur les enfants sapent cette motivation pour le travail
|
||||||
|
en équipe.
|
||||||
|
|
||||||
|
- À l’inverse, en incluant les enfants dans les activités d’adulte, on accroît
|
||||||
|
leur motivation à coopérer et à faire comme les autres membres de la famille.
|
||||||
|
|
||||||
|
- Les enfants ont tendance à mal se comporter lorsqu’ils doivent passer du monde
|
||||||
|
des enfants au monde des adultes.
|
||||||
|
|
||||||
|
- Dans la plupart des cultures, les parents ne passent pas leur temps à stimuler
|
||||||
|
et à divertir les enfants.
|
||||||
|
|
||||||
|
- Les enfants n’ont pas besoin qu’on les stimule ou qu’on les amuse.
|
||||||
|
|
||||||
|
### Actions pour tous les enfants
|
||||||
|
|
||||||
|
- Limitez les activités centrées sur les enfants. Veillez à ce que votre enfant
|
||||||
|
ait accès à votre vie et à votre travail. Veillez à ce qu’il soit dans les
|
||||||
|
parages lorsque vous vous adonnez à des tâches domestiques ou à d’autres
|
||||||
|
activités d’adulte.
|
||||||
|
|
||||||
|
- Réduisez les distractions telles que les écrans et les jouets. Moins l’enfant
|
||||||
|
disposera d’objets de «divertissement», plus il sera attiré par votre univers et
|
||||||
|
plus il sera susceptible de vouloir vous aider et de passer du temps avec vous.
|
||||||
|
|
||||||
|
- Augmentez au maximum son exposition au monde des adultes. Vaquez à vos
|
||||||
|
occupations avec votre enfant près de vous.
|
||||||
|
|
||||||
|
- Le week-end, choisissez des activités qui vous font envie, celles que vous
|
||||||
|
feriez même si vous n’aviez pas d’enfant.
|
||||||
|
|
||||||
|
### Actions pour les enfants à partir de 7 ans
|
||||||
|
|
||||||
|
- Laissez-le prévoir et organiser ses activités (les cours de sport, de musique,
|
||||||
|
d’arts plastiques, toute autre activité extrascolaire, les goûters avec
|
||||||
|
les copains...).
|
||||||
|
|
||||||
|
- Augmentez progressivement les responsabilités de l’enfant dans la maison, y
|
||||||
|
compris le fait de s’occuper de ses petits frères et sœurs, et sa participation
|
||||||
|
à la préparation des repas et au ménage. Pensez à la manière dont il pourrait
|
||||||
|
vous aider dans votre travail.
|
||||||
|
|
||||||
|
- Si un enfant plus âgé a été peu exposé au monde des adultes, allez-y par
|
||||||
|
paliers. Vaquez à vos occupations en emmenant votre enfant avec vous. S’il se
|
||||||
|
conduit mal, expliquez-lui comment il doit se comporter dans le monde des
|
||||||
|
adultes.
|
||||||
|
|
||||||
|
- Si l’enfant a toujours un comportement perturbateur, soyez patient. Ne
|
||||||
|
renoncez pas. Réessayez plus tard. Il apprendra.
|
||||||
|
|
||||||
|
## Comment motiver les enfants
|
||||||
|
|
||||||
|
- Si vous voulez motiver un enfant sans le soudoyer ou l’amadouer, il doit avoir
|
||||||
|
l’impression :
|
||||||
|
- D’être relié à vous ou à une autre personne proche.
|
||||||
|
- De choisir d’accomplir la tâche sans que personne l’y oblige.
|
||||||
|
- D’être compétent, en sorte que sa participation sera valorisée.
|
||||||
|
|
||||||
|
- Les compliments peuvent saper la motivation et générer de la compétition (et
|
||||||
|
des querelles) entre frères et sœurs.
|
||||||
|
|
||||||
|
- Les connaissances peuvent circuler dans un sens comme dans l’autre. Lorsqu’on
|
||||||
|
accorde de l’attention aux idées et aux points de vue d’un enfant, on en tire
|
||||||
|
souvent des informations précieuses et utiles.
|
||||||
|
|
||||||
|
- Accepter les connaissances, les idées et les contributions d’un enfant est un
|
||||||
|
excellent moyen de le motiver.
|
||||||
|
|
||||||
|
- Résistez à l’envie de corriger un enfant, surtout quand il est en train de
|
||||||
|
mettre la main à la pâte ou d’aider la famille.
|
||||||
|
|
||||||
|
- Si un enfant refuse d’obéir à une demande (par exemple aider à débarrasser),
|
||||||
|
vous êtes probablement trop insistant. L’enfant sait ce que vous voulez. Arrêtez
|
||||||
|
de le demander. Attendez et laissez l’enfant prendre les rênes.
|
||||||
|
|
||||||
|
- Soyez très attentif à la participation de l’enfant, puis inspirez-vous de ses
|
||||||
|
idées plutôt que de vous y opposer.
|
||||||
|
|
||||||
|
- Aidez un enfant à apprendre une tâche en le laissant pratiquer plutôt qu’en
|
||||||
|
lui faisant un cours complet sur la manière de l’accomplir. Proposez de simples
|
||||||
|
ajustements, avec parcimonie, pendant que l’enfant est à l’œuvre.
|
||||||
|
|
||||||
|
- Acceptez la contribution de l’enfant, même si elle ne répond pas à vos
|
||||||
|
attentes ou à vos désirs.
|
||||||
|
|
||||||
|
- Usez des compliments avec modération. Associez vos félicitations à
|
||||||
|
l’apprentissage d’une valeur globale («tu commences réellement à nous aider») ou
|
||||||
|
à une certaine maturité («tu es en train de devenir une grande fille»).
|
||||||
|
|
||||||
|
## Comment apprendre aux enfants à maîtriser leur colère
|
||||||
|
|
||||||
|
- La colère contre un enfant est stérile. Elle génère du conflit, crée de la
|
||||||
|
tension et coupe la communication. Chaque fois qu’on crie après un enfant,
|
||||||
|
on lui apprend à hurler et à se mettre en colère au moindre problème ou à la
|
||||||
|
moindre contrariété. L’enfant pratique la colère et les cris.
|
||||||
|
|
||||||
|
- Vous pouvez interrompre ce cycle en répondant à l’enfant avec calme et
|
||||||
|
gentillesse.
|
||||||
|
|
||||||
|
- On surestime souvent l’intelligence émotionnelle des enfants.
|
||||||
|
|
||||||
|
- Pour aider un enfant à savoir maîtriser sa colère, le mieux est de maîtriser
|
||||||
|
sa propre colère devant lui.
|
||||||
|
|
||||||
|
- Chaque fois qu’on répond avec calme et sang-froid à un enfant contrarié, on
|
||||||
|
lui donne la possibilité de trouver cette réponse en lui.
|
||||||
|
|
||||||
|
- Lorsque vous ressentez de la colère à l’égard d’un enfant, restez silencieux
|
||||||
|
et attendez que la colère passe. Si vous parlez, l’enfant ressentira votre
|
||||||
|
colère. Mieux vaut donc se taire.
|
||||||
|
|
||||||
|
- Si vous ne parvenez pas à maîtriser votre colère, sortez de la pièce ou
|
||||||
|
éloignez-vous de l’enfant. Revenez une fois que vous êtes calmé.
|
||||||
|
|
||||||
|
- Apprenez à ressentir moins (voire pas du tout) de colère à l’égard des
|
||||||
|
enfants.
|
||||||
|
|
||||||
|
- **Modifiez votre point de vue sur leur comportement.** Attendez-vous à ce que
|
||||||
|
les jeunes enfants se comportent mal et causent des problèmes.
|
||||||
|
|
||||||
|
- **Ne vous disputez (et ne négociez) jamais avec un enfant.** Les disputes
|
||||||
|
permettent à l’enfant de s’entraîner à argumenter. Taisez-vous et éloignez-vous.
|
||||||
|
|
||||||
|
- **Arrêtez de forcer les enfants à faire des choses.** Cela engendre des
|
||||||
|
conflits, érode la communication et fait monter la colère (des deux côtés).
|
||||||
|
Utilisez les outils décrits dans le chapitre suivant pour favoriser un
|
||||||
|
comportement approprié plutôt que de l’imposer.
|
||||||
|
|
||||||
|
## Outils pour modifier le comportement
|
||||||
|
|
||||||
|
- La parole est souvent le moyen de communication le moins efficace avec les
|
||||||
|
enfants, en particulier les plus jeunes.
|
||||||
|
|
||||||
|
- Les émotions de l’enfant sont le miroir de nos émotions.
|
||||||
|
- Si vous souhaitez que votre enfant soit calme, doux et silencieux, parlez peu
|
||||||
|
ou pas du tout (les mots stimulent).
|
||||||
|
- Si vous souhaitez que votre enfant soit bruyant et très agité, soyez-le.
|
||||||
|
Parlez beaucoup.
|
||||||
|
|
||||||
|
- Les ordres et les leçons entraînent souvent des bras de fer, des négociations
|
||||||
|
et des spirales de colère.
|
||||||
|
|
||||||
|
- On peut rompre le cycle de la colère et des bras de fer grâce à des outils
|
||||||
|
non verbaux ou en amenant l’enfant à réfléchir plutôt que de lui dire ce qu’il
|
||||||
|
doit faire.
|
||||||
|
|
||||||
|
- **Dompter les crises.** Les crises de colère se dissipent si vous réagissez
|
||||||
|
avec calme.
|
||||||
|
- **L’énergie.** En restant aussi calme et paisible que possible, tenez-vous
|
||||||
|
près de l’enfant, en silence, et montrez-lui que vous êtes là pour lui et que
|
||||||
|
vous le soutenez.
|
||||||
|
- **Le contact physique.** Touchez doucement l’épaule de l’enfant ou tendez-lui
|
||||||
|
la main.
|
||||||
|
- **L’émerveillement.** Aidez l’enfant à remplacer la colère par cette émotion
|
||||||
|
qu’est l’émerveillement.
|
||||||
|
- **L’extérieur.** Si l’enfant ne se calme toujours pas, sortez-le prendre
|
||||||
|
l’air. Conduisez-le dehors en douceur ou emmenez-le dans vos bras.
|
||||||
|
|
||||||
|
- **Changer de comportement et transmettre des valeurs.** Au lieu d’ordonner à
|
||||||
|
l’enfant de «ne pas faire ça», poussez-le à réfléchir.
|
||||||
|
- **Le regard-qui-dit-tout.** Prenez tout ce que vous avez envie de dire à
|
||||||
|
un enfant qui se comporte mal et dirigez-le dans votre expression faciale.
|
||||||
|
Ouvrez grand les yeux, plissez le nez ou secouez la tête. Puis jetez ce regard
|
||||||
|
à l’enfant.
|
||||||
|
- **Le puzzle des conséquences.** Énoncez calmement quelles sont les
|
||||||
|
conséquences de ses actes, puis partez (par exemple: «Tu vas tomber et te faire
|
||||||
|
mal»).
|
||||||
|
- **Les questions.** Au lieu d’émettre des ordres et des consignes, posez une
|
||||||
|
question à l’enfant (par exemple: «Qui est méchant avec Freddy?» quand il est
|
||||||
|
en train de taper son frère, ou «Qui est irrespectueuse?» quand l’enfant ignore
|
||||||
|
une demande).
|
||||||
|
- **La responsabilité.** Si un enfant se comporte mal, donnez-lui une tâche à
|
||||||
|
réaliser (par exemple, dites à un enfant qui pleurniche le matin: «Viens m’aider
|
||||||
|
à préparer ta boîte à goûter»).
|
||||||
|
- **Les actes.** Au lieu de demander à un enfant de faire quelque chose (par
|
||||||
|
exemple sortir de la maison), faites-le. L’enfant suivra.
|
||||||
|
|
||||||
|
## Modeler le comportement grâce aux histoires et au jeu théâtral
|
||||||
|
|
||||||
|
- Quand un enfant est contrarié, il lui est difficile d’écouter et d’apprendre.
|
||||||
|
|
||||||
|
- Quand un enfant est détendu et se sent protégé de toute punition, il est ouvert
|
||||||
|
pour apprendre de nouvelles règles et réparer ses erreurs.
|
||||||
|
|
||||||
|
- Si un enfant ne se montre pas coopérant dans une situation donnée (par exemple,
|
||||||
|
faire ses devoirs), il est probable qu’il existe une tension sur cette question
|
||||||
|
entre l’enfant et le parent. Une fois cette tension dissipée grâce au jeu
|
||||||
|
théâtral ou à une histoire, l’enfant adoptera un meilleur comportement et sera
|
||||||
|
plus coopérant.
|
||||||
|
|
||||||
|
- Les enfants adorent apprendre à travers des récits oraux, surtout quand ces
|
||||||
|
histoires parlent de personnages, d’expériences et d’objets de leur propre vie.
|
||||||
|
Ils ont une tendance naturelle à apprendre de cette manière. Ils adorent par
|
||||||
|
exemple:
|
||||||
|
|
||||||
|
– Qu’on leur parle de leur histoire familiale et de l’enfance de leurs parents.
|
||||||
|
|
||||||
|
– Imaginer des objets prendre vie et faire des erreurs.
|
||||||
|
|
||||||
|
– S’imaginer vivre entourés de fantômes, de monstres, de fées et d’autres
|
||||||
|
créatures surnaturelles qui les aident à apprendre à se comporter correctement.
|
||||||
|
|
||||||
|
- Les enfants adorent apprendre par le jeu. Cela leur permet de relâcher la
|
||||||
|
tension et de s’entraîner à bien se comporter. Ils aiment rejouer une erreur ou
|
||||||
|
un comportement problématique et observer les conséquences dans un environnement
|
||||||
|
ludique et sans stress (sans craindre d’être punis).
|
||||||
|
|
||||||
|
Plutôt que de vous lancer dans des leçons de morale et de vous appuyer sur un
|
||||||
|
raisonnement adulte pour modifier le comportement d’un enfant ou lui inculquer
|
||||||
|
une valeur, attendez un moment de calme et de détente et essayez l’un de ces
|
||||||
|
outils:
|
||||||
|
|
||||||
|
- **Racontez une anecdote de votre enfance.** Expliquez comment vous et vos
|
||||||
|
parents aviez géré une bêtise, un problème, un mauvais comportement. Aviez-vous
|
||||||
|
été puni ? Comment aviez-vous réagi ?
|
||||||
|
|
||||||
|
- **Faites un spectacle de marionnettes.** Prenez un animal en peluche ou une
|
||||||
|
paire de chaussettes pour mettre en scène les conséquences du comportement de
|
||||||
|
l’enfant et lui montrer comment vous aimeriez qu’il se conduise. Demandez-lui de
|
||||||
|
jouer l’un des personnages.
|
||||||
|
|
||||||
|
- **Déplacez le problème sur le terrain du jeu.** Dites à l’enfant: «J’ai remarqué
|
||||||
|
qu’on se dispute beaucoup à propos de tes devoirs [ou du problème en question].
|
||||||
|
Si on jouait à un jeu ? Qui as-tu envie de jouer ? Toi ou moi ?» Puis rejouez
|
||||||
|
sur un ton humoristique ce qui se passe pendant les disputes. N’ayez pas peur
|
||||||
|
de partir dans le délire et l’exagération. L’objectif, c’est d’en rire et de
|
||||||
|
relâcher la tension qui s’est créée autour de cette question.
|
||||||
|
|
||||||
|
- **Ayez recours à un monstre.** Créez un monstre tapi près de la maison. Dites
|
||||||
|
à l’enfant qu’un monstre le regarde et que, s’il se conduit mal, le monstre
|
||||||
|
viendra l’enlever (seulement pour quelques jours).
|
||||||
|
|
||||||
|
- **Donnez vie à un objet inanimé.** Utilisez une peluche, un vêtement ou tout
|
||||||
|
autre objet inanimé pour amadouer l’enfant et le persuader d’accomplir une
|
||||||
|
tâche. Faites faire cette tâche à l’objet en question (brosser les dents
|
||||||
|
d’une peluche) ou faites parler l’objet (c’est la brosse à dents qui demande à
|
||||||
|
l’enfant de se brosser les dents, par exemple).
|
||||||
|
|
||||||
|
## Comment élever un enfant sûr de lui
|
||||||
|
|
||||||
|
- Tout comme les adultes, les enfants, petits et grands, n’aiment pas qu’on
|
||||||
|
les commande. Ils ont, quel que soit leur âge, un penchant naturel pour
|
||||||
|
l’apprentissage de l’autonomie sans qu’on s’en mêle.
|
||||||
|
|
||||||
|
- Quand on mène un enfant à la baguette, on sape sa confiance en lui et son
|
||||||
|
autonomie.
|
||||||
|
|
||||||
|
- Quand on respecte l’autonomie de l’enfant et qu’on réduit ses instructions
|
||||||
|
au minimum, on lui envoie le message qu’il est autonome et capable de régler
|
||||||
|
lui-même les problèmes.
|
||||||
|
|
||||||
|
- Donner de l’autonomie à un enfant est la meilleure façon de le protéger du
|
||||||
|
stress et de l’anxiété.
|
||||||
|
|
||||||
|
- L’indépendance et l’autonomie sont deux concepts distincts:
|
||||||
|
|
||||||
|
- Un enfant indépendant est déconnecté des autres, il n’est responsable de
|
||||||
|
personne d’autre que lui.
|
||||||
|
|
||||||
|
- Un enfant autonome est maître de ses actes et prend ses propres décisions,
|
||||||
|
mais il est en relation permanente avec sa famille et ses amis. On attend de lui
|
||||||
|
aide, partage et bienveillance. On attend de lui qu’il rende au groupe chaque
|
||||||
|
fois qu’il le peut.
|
||||||
|
|
||||||
|
- **Soyez attentif à la fréquence des consignes que vous donnez à votre enfant.**
|
||||||
|
Programmez le minuteur de votre téléphone sur vingt minutes. Comptez combien de
|
||||||
|
commentaires, questions et demandes vous avez émis pendant ce laps de temps.
|
||||||
|
|
||||||
|
- **Limitez-vous à trois ordres par heure.** Efforcez-vous de vous y tenir, notamment
|
||||||
|
dans les activités génératrices de conflits et de disputes (se préparer
|
||||||
|
pour aller à l’école ou pour aller au lit, par exemple). N’ayez recours aux
|
||||||
|
ordres que pour apprendre à l’enfant la serviabilité, la générosité et les
|
||||||
|
responsabilités envers sa famille.
|
||||||
|
|
||||||
|
- **Trouvez une zone d’autonomie.** Identifiez des lieux autour de chez vous où les
|
||||||
|
enfants de tous les âges peuvent évoluer en toute autonomie, où vous pouvez les
|
||||||
|
surveiller de loin en interférant le moins possible. Pensez aux parcs et aux
|
||||||
|
aires de jeux en plein air, aux prés et aux plages. Prenez de la lecture ou du
|
||||||
|
travail et laissez les enfants jouer pendant quelques heures.
|
||||||
|
|
||||||
|
- **Faites de votre jardin et de votre quartier une zone d’autonomie.** Formez votre
|
||||||
|
enfant à gérer les dangers, chez vous et aux alentours. Tissez un «filet de
|
||||||
|
protection invisible» en sympathisant avec vos voisins et leurs enfants.
|
||||||
|
|
||||||
|
- **Cessez d’être ventriloque.** Mettez un point d’honneur à ne plus parler à la
|
||||||
|
place de votre enfant ou lui dire ce qu’il doit dire. Laissez-le répondre aux
|
||||||
|
questions qu’on lui pose, passer commande au restaurant, décider quand dire
|
||||||
|
«s’il te plaît» et «merci». Faites en sorte qu’il soit capable de gérer lui-même
|
||||||
|
toutes les conversations, y compris les discussions avec ses enseignants,
|
||||||
|
entraîneurs ou moniteurs.
|
||||||
|
|
||||||
|
## Comment protéger ses enfants de la dépression
|
||||||
|
|
||||||
|
- Les bébés et les enfants sont conçus pour être élevés par toutes sortes
|
||||||
|
de personnes. Grands-parents, tantes, nourrices, voisins... toutes sont
|
||||||
|
importantes.
|
||||||
|
|
||||||
|
- Ce réseau d’amour et de soutien aide l’enfant à voir le monde comme un lieu
|
||||||
|
bénéfique et bienveillant, ce qui le protège de la dépression et d’autres
|
||||||
|
troubles de santé mentale.
|
||||||
|
|
||||||
|
- Un ou deux alloparents supplémentaires peuvent vraiment faire la différence
|
||||||
|
dans la vie d’un enfant.
|
||||||
|
|
||||||
|
- Les autres enfants peuvent être de fantastiques alloparents et ont tendance
|
||||||
|
à faire de meilleurs enseignants et camarades de jeu que les adultes. Les
|
||||||
|
enfants intègrent naturellement le jeu aux apprentissages et ont des niveaux de
|
||||||
|
compétence plus proches de ceux des petits que les adultes.
|
||||||
|
|
||||||
|
- Les amitiés intimes et profondes sont probablement tout aussi importantes pour
|
||||||
|
votre santé et celle de votre enfant que l’exercice physique et une alimentation
|
||||||
|
saine.
|
||||||
|
|
||||||
|
- **Tissez un réseau de tantes et d’oncles.** Collaborez avec trois ou quatre
|
||||||
|
autres familles pour vous partager les temps extrascolaires, en mettant en
|
||||||
|
place un roulement pour chaque jour de la semaine. Ce réseau procure un soutien
|
||||||
|
émotionnel aux enfants et permet aux parents de souffler.
|
||||||
|
|
||||||
|
- **Créer un GEM (groupe d’enfants multiâges).** Encouragez votre enfant à jouer
|
||||||
|
avec d’autres, de tous les âges et dans tout le quartier. Invitez les autres
|
||||||
|
familles à des dîners ou des apéros. Organisez de grandes garderies de quartier
|
||||||
|
le week-end, où vous invitez des enfants de tous les âges à jouer dans votre
|
||||||
|
jardin ou dans un parc.
|
||||||
|
|
||||||
|
- **Formez de mini-alloparents.** Apprenez très tôt aux enfants plus âgés à
|
||||||
|
s’occuper de leurs petits frères et sœurs. Établissez un lien entre l’aide
|
||||||
|
qu’ils apportent et leur maturité croissante («Tu aides ton petit frère parce
|
||||||
|
que tu es une grande fille maintenant»). Récompensez l’enfant en augmentant ses
|
||||||
|
responsabilités au fil du temps.
|
||||||
|
|
||||||
|
- **Appréciez l’aide des alloparents déjà présents.** Travaillez main dans
|
||||||
|
la main avec votre enfant pour exprimer votre reconnaissance aux nourrices,
|
||||||
|
puéricultrices, professeurs et entraîneurs. Faites-lui rédiger des petits mots,
|
||||||
|
préparer des biscuits et friandises pour les remercier. Considérez-les comme
|
||||||
|
des membres importants de votre famille. Montrez l’exemple du respect et de
|
||||||
|
la générosité.
|
32
articles/generate_listing.nu
Executable file
32
articles/generate_listing.nu
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
|
||||||
|
def get_metadata [path: string] {
|
||||||
|
let lines = open $path | lines
|
||||||
|
let anchors = $lines | enumerate | filter {|l| ($l.item | str starts-with "---")} | take 2
|
||||||
|
let header = $lines
|
||||||
|
| range (($anchors | first | get 'index') + 1)..(($anchors | last | get 'index') - 1)
|
||||||
|
let metadata = $header | split column -n 2 --regex '\s*:\s*' | rename key value
|
||||||
|
let record = $metadata | reduce -f {} {|it, acc| $acc | upsert $it.key ($it.value | str trim --char '"') }
|
||||||
|
$record |
|
||||||
|
}
|
||||||
|
|
||||||
|
let pages = (glob *.md) ++ (glob **/index.md)
|
||||||
|
let sorted_pages = $pages | wrap 'path'
|
||||||
|
| upsert metadata {|row| (get_metadata $row.path)}
|
||||||
|
| sort-by --reverse metadata.date
|
||||||
|
|
||||||
|
print "---
|
||||||
|
title: Articles
|
||||||
|
---
|
||||||
|
"
|
||||||
|
|
||||||
|
let _ = $sorted_pages | each {|p|
|
||||||
|
let rel_path = $p.path | path relative-to (pwd)
|
||||||
|
let html_path = $rel_path | path parse --extension md | upsert extension { 'html' } | path join
|
||||||
|
print --no-newline $"- ($p.metadata.date): [($p.metadata.title)]\(($html_path)\)"
|
||||||
|
if $p.metadata.update? != null {
|
||||||
|
print $" \(Updated: ($p.metadata.update)\)"
|
||||||
|
} else {
|
||||||
|
print ""
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,23 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
---
|
|
||||||
title: Articles
|
|
||||||
---
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
listing=""
|
|
||||||
for file in *.md; do
|
|
||||||
if [ $file = "index.md" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
link=$(basename $file .md).html
|
|
||||||
date=$(sed -n 's/date: \(.*\)/\1/p' $file)
|
|
||||||
title=$(sed -n 's/title: \(.*\)/\1/p' $file)
|
|
||||||
listing="$listing- $date: [$title]($link)\n"
|
|
||||||
done
|
|
||||||
echo -e $listing | sort --reverse
|
|
9
articles/jujutsu/Tupfile
Normal file
9
articles/jujutsu/Tupfile
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
include_rules
|
||||||
|
HTML_TEMPLATE = article.html
|
||||||
|
|
||||||
|
: foreach *.png |> !avif |>
|
||||||
|
: foreach *.png |> !jxl |>
|
||||||
|
: index.md | ./<deps> |> !html |>
|
||||||
|
|
||||||
|
# images embedding not working in marp + tup
|
||||||
|
# : slides.md |> !marp_pdf |> jujutsu_slides.pdf ./<deps>
|
154
articles/jujutsu/index.md
Normal file
154
articles/jujutsu/index.md
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
---
|
||||||
|
title: "Lightning talk: Jujutsu"
|
||||||
|
date: 2025-02-17
|
||||||
|
---
|
||||||
|
|
||||||
|
_Slides available: [pdf](./jujutsu_slides.pdf)_
|
||||||
|
|
||||||
|
<p style="text-align:center;">
|
||||||
|
<picture>
|
||||||
|
<source type="image/avif" srcset="jj-logo.avif" />
|
||||||
|
<source type="image/jxl" srcset="jj-logo.jxl" />
|
||||||
|
<img src="jj-logo.png" alt="jujutsu logo" width=20% />
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
## What is it?
|
||||||
|
|
||||||
|
[Jujutsu](https://github.com/jj-vcs/jj) is a new version control software (VCS),
|
||||||
|
like git, mercurial, etc. Git is the actual gold standard for VCS, even if its
|
||||||
|
UX could be better. There is a whole ecosystem around git that makes switching
|
||||||
|
to similar projects (eg. mercurial) a daunting task. How does jujutsu plan on
|
||||||
|
making us switch?
|
||||||
|
|
||||||
|
Jujutsu separates the frontend (what the user interacts with) and the
|
||||||
|
backend (how the information is stored). And the main backend is actually git
|
||||||
|
repositories. There is a native backend being developed but it's not ready for
|
||||||
|
prime time. Sharing the same backend as the most popular VCS, Jujutsu aims to
|
||||||
|
improve on the frontend.
|
||||||
|
|
||||||
|
## How does it compare?
|
||||||
|
|
||||||
|
### No branch, only revisions
|
||||||
|
|
||||||
|
Jujutsu understand git commits, but operates at a higher level with revisions.
|
||||||
|
Revisions wrap commits, however as you move revisions around (edit with changes,
|
||||||
|
or rebase), they keep their id. Only their underlying commit id changes.
|
||||||
|
|
||||||
|
With revision ids being stable, you don't need branches to start working: create
|
||||||
|
a new revision, and start working. You will need to create a branch (or bookmark
|
||||||
|
in jujutsu world) to push your changes, but it can be done at the end.
|
||||||
|
|
||||||
|
There is no special mode like git's "Detached HEAD", you are always on a
|
||||||
|
revision. You can jump around the history and you will always see the whole
|
||||||
|
history, unlike git where you only see parents revisions.
|
||||||
|
|
||||||
|
This emphasis on revisions changes the paradigm a bit: you tend to better split
|
||||||
|
your revisions, whereas in git you often do smaller commits then clean the whole
|
||||||
|
branch during a rebase phase.
|
||||||
|
|
||||||
|
You can also modify revisions freely: unlike git where you can only modify
|
||||||
|
the current branch, you can squash part of any revision into another unrelated
|
||||||
|
revision.
|
||||||
|
|
||||||
|
Some revisions (such as the `main` or `master` branch) are considered immutable,
|
||||||
|
meaning you are not allowed to modify them. You can override this but this is a
|
||||||
|
sane choice by default.
|
||||||
|
|
||||||
|
### No staging area
|
||||||
|
|
||||||
|
Every modification in jujutsu is stored. It removes a step from git and
|
||||||
|
avoids scenarios where you cannot switch branches because of a untracked file
|
||||||
|
collision, or when you forget to add a file (it works locally but not on the
|
||||||
|
CI env).
|
||||||
|
|
||||||
|
It does require a good .gitignore file to avoid adding unnecessary (big) files,
|
||||||
|
but that is good practice anyway.
|
||||||
|
|
||||||
|
You can mimic git staging area with a new revision on top of your work.[^1]
|
||||||
|
|
||||||
|
### Conflicts are ok
|
||||||
|
|
||||||
|
Conflicts during rebase are recorded but never stop the rebase. Revisions will
|
||||||
|
be flagged as "conflicted" until the conflict markers are removed. You can then
|
||||||
|
see how long the conflicts last (maybe a later revision fixes them).
|
||||||
|
|
||||||
|
You deal with conflicts how you want, it is never a hurry. You can save your
|
||||||
|
progress and change branch in the meanwhile. Once you fix a conflict you do
|
||||||
|
not need to explicitely mark them as resolved, the absence of markers is enough
|
||||||
|
for jujutsu.
|
||||||
|
|
||||||
|
### Branch, bookmark
|
||||||
|
|
||||||
|
A "branch" in git is named "bookmark" in jujutsu. You do not need one during
|
||||||
|
dev, you can safely switch revisions trees without naming them. This is very
|
||||||
|
useful when you need to try something on top of the main branch: you just
|
||||||
|
create a new revision on top of it without creating an dedicated branch or even
|
||||||
|
modifying the main branch (I often modified my local copy of the main branch
|
||||||
|
this way with git).
|
||||||
|
|
||||||
|
However, you need a bookmark when you want to push changes to a remote (which is often).
|
||||||
|
I believe this could be skipped with a dedicated jujutsu backend.
|
||||||
|
|
||||||
|
When creating a bookmark, it sticks to the revision it was created on, you need
|
||||||
|
to manually update it if you add revision on top of it. This manual step is
|
||||||
|
useful when you want to push your changes but keep a few revisions private until
|
||||||
|
your work is done.
|
||||||
|
|
||||||
|
Tracked bookmarks are similar to tracked branches in git, but they are
|
||||||
|
automatically updated during fetching. No more out-of-date information between a
|
||||||
|
local bookmark and its remote (I'm looking at you `origin/main`).
|
||||||
|
|
||||||
|
### Tooling
|
||||||
|
|
||||||
|
Jujutsu comes with nice CLI tools out-of-the-box: you can select part of a commit
|
||||||
|
for squashing / splitting with a dedicated TUI, and the log are pretty-printed
|
||||||
|
in graph format.
|
||||||
|
|
||||||
|
But it cannot compare to the exhaustive ecosystem that exists for git: GUI,
|
||||||
|
scripts, etc. Unfortunately, git tools are confused when you use jujutsu in
|
||||||
|
your repository: they only see the detached HEAD, they are missing the overall
|
||||||
|
picture.
|
||||||
|
|
||||||
|
You can always come back to a regular git workflow based on branches (they are
|
||||||
|
mapped on bookmarks), should you need it.
|
||||||
|
|
||||||
|
### Takeaway
|
||||||
|
|
||||||
|
Jujutsu shines when you are dealing with multiple tracks (bug hunting,
|
||||||
|
work-in-progress, small tests).
|
||||||
|
|
||||||
|
The need to specify bookmarks when pushing changes feels a bit heavy compared
|
||||||
|
to how smooth it is working locally. A backend tailored for jujutsu, supporting
|
||||||
|
revisions without bookmarks, would remove a lot of friction.
|
||||||
|
|
||||||
|
Jujutsu has cool features, but I wouldn't consider them game-changing. It feels
|
||||||
|
simpler though, which is good coming from git.
|
||||||
|
|
||||||
|
The ecosystem is almost null, but it is growing.[^2]
|
||||||
|
|
||||||
|
|
||||||
|
## VCS landscape
|
||||||
|
|
||||||
|
Jujutsu seems to materialize what the next VCS after git should be: better
|
||||||
|
conflict support and nicer UX.
|
||||||
|
|
||||||
|
It is developed by Googlers and I believe the goal is to slowly replace git CLI
|
||||||
|
at Google. It is making good progress with frequent releases.
|
||||||
|
|
||||||
|
[Sapling](https://sapling-scm.com/) is another contender, developed at Facebook.
|
||||||
|
It is more inspired by Mercurial (which is used at Facebook). Its feature set is
|
||||||
|
similar to Jujutsu but it seems less popular.
|
||||||
|
|
||||||
|
> I was part of the team at Meta that built Sapling for many years. I’m no
|
||||||
|
> longer at Meta and I use jj full time.
|
||||||
|
>
|
||||||
|
> _[Discussion on Lobste.rs](https://lobste.rs/s/rojoz1/jujutsu_jj_git_compatible_vcs#c_foqya4)_
|
||||||
|
|
||||||
|
[Pijul](https://pijul.org/) is less focusing on git compatibility and looks
|
||||||
|
more like a research project, focusing on theory of patches. I am not sure how
|
||||||
|
production ready it currently is, but the clean break with git means it needs to
|
||||||
|
be rock solid to tempt people over.
|
||||||
|
|
||||||
|
[^1]: [The Squash Workflow](https://steveklabnik.github.io/jujutsu-tutorial/real-world-workflows/the-squash-workflow.html)
|
||||||
|
[^2]: [GUI and TUI](https://github.com/jj-vcs/jj/wiki/GUI-and-TUI)
|
BIN
articles/jujutsu/jj-logo.png
Normal file
BIN
articles/jujutsu/jj-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
articles/jujutsu/jj_01_commits.png
Normal file
BIN
articles/jujutsu/jj_01_commits.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
BIN
articles/jujutsu/jj_01_revs.png
Normal file
BIN
articles/jujutsu/jj_01_revs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
BIN
articles/jujutsu/jj_02.png
Normal file
BIN
articles/jujutsu/jj_02.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
BIN
articles/jujutsu/jj_revision.drawio.png
Normal file
BIN
articles/jujutsu/jj_revision.drawio.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7 KiB |
131
articles/jujutsu/slides.md
Normal file
131
articles/jujutsu/slides.md
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
---
|
||||||
|
marp: false
|
||||||
|
theme: gaia
|
||||||
|
footer: '**Fabien Freling** - 2025-02-17'
|
||||||
|
paginate: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<style>
|
||||||
|
section::after {
|
||||||
|
content: attr(data-marpit-pagination) '/' attr(data-marpit-pagination-total);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
_class: lead
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Jujutsu
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What is it?
|
||||||
|
|
||||||
|
* New version control software (VCS)
|
||||||
|
* Separation of **frontend** and **backend**
|
||||||
|
* Compatible with git
|
||||||
|
* Slowly replacing git cli at Google (askip)
|
||||||
|
* Aiming for a simpler workflow
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## No branch, only revisions
|
||||||
|
|
||||||
|

|
||||||
|
<revision id> <author> <date> <branch> <commit id>
|
||||||
|
|
||||||
|
- @ working copy
|
||||||
|
- ◆ immutable
|
||||||
|
- × conflict
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Embrace the DETACHED HEAD
|
||||||
|
|
||||||
|
- No need to be at the tip of a branch
|
||||||
|
- Easy to change the current revision (no rebase step)
|
||||||
|
- Each revision has a scope, you can switch / split / squash
|
||||||
|
- You can modify other branches, not only the current one (there is none)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Immutable revisions
|
||||||
|
|
||||||
|
- New concept
|
||||||
|
- By default `master` is immutable, sane choice
|
||||||
|
- Clearly express what would create conflict, even local copy cannot change
|
||||||
|
- You can override it (but don't)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## No staging area, everything is logged
|
||||||
|
|
||||||
|
- You need a good gitignore
|
||||||
|
- You can always switch commits without loss
|
||||||
|
- You might want to recreate a "staging" commit
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Conflicts are ok
|
||||||
|
|
||||||
|
- Conflicts are recorded but never stop a rebase
|
||||||
|
- Conflicted commits are annotated
|
||||||
|
- You can safely rebase, deal with conflicts later on
|
||||||
|
- No need to mark as resolved
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Branches, bookmarks
|
||||||
|
|
||||||
|
- Branches (git) = bookmarks (jujutsu)
|
||||||
|
- Optional during dev
|
||||||
|
- Mandatory when pushing
|
||||||
|
- Stick to revision, manual step to update
|
||||||
|
- Tracked bookmarks are updated during fetch
|
||||||
|
- No sync conflict between a local copy and its remote
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Back to git?
|
||||||
|
|
||||||
|
- A way back is always possible
|
||||||
|
- git view gets confused in detached HEAD
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tooling
|
||||||
|
|
||||||
|
- Battery included
|
||||||
|
- CLI tool for splitting commits
|
||||||
|
- Git tools not compatible
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Takeaway
|
||||||
|
|
||||||
|
- 🤩 Good when dealing with multiple tracks
|
||||||
|
- 😔 Need to explicitely specify branch when pushing commits
|
||||||
|
- Small improvements, not game-changing
|
||||||
|
- 😔 No ecosystem, but it's growing (TUI)
|
||||||
|
- Native backend (not ready yet) would remove a lot of friction
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
_class: lead
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Worth the switch?
|
||||||
|
|
||||||
|
# ✋ Not yet
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# References
|
||||||
|
|
||||||
|
- [Official website](https://jj-vcs.github.io/jj/)
|
||||||
|
- [GUI & TUI](https://github.com/jj-vcs/jj/wiki/GUI-and-TUI)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: Web stack
|
title: Web stack
|
||||||
date: 2019-06-26
|
date: 2019-06-26
|
||||||
|
update: 2024-11-26
|
||||||
---
|
---
|
||||||
|
|
||||||
Previous stacks
|
Previous stacks
|
||||||
|
@ -24,5 +25,5 @@ Pandoc + Tup = ❤️
|
||||||
I decided to use [Pandoc](https://pandoc.org/) to convert from Markdown to HTML.
|
I decided to use [Pandoc](https://pandoc.org/) to convert from Markdown to HTML.
|
||||||
It is widely used by other generators and takes care of the file conversion.
|
It is widely used by other generators and takes care of the file conversion.
|
||||||
|
|
||||||
For automation, I use a simple top-level Makefile and
|
For automation, I use a simple top-level [Justfile](https://just.systems/) and
|
||||||
[Tup](http://gittup.org/tup/index.html).
|
[Tup](http://gittup.org/tup/index.html).
|
||||||
|
|
|
@ -7,10 +7,14 @@
|
||||||
devShell.x86_64-linux = with pkgs;
|
devShell.x86_64-linux = with pkgs;
|
||||||
mkShell {
|
mkShell {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
entr
|
||||||
|
graphviz-nox
|
||||||
imagemagick
|
imagemagick
|
||||||
just
|
just
|
||||||
libavif
|
libavif
|
||||||
libjxl
|
libjxl
|
||||||
|
nodejs
|
||||||
|
nushell
|
||||||
pandoc
|
pandoc
|
||||||
tup
|
tup
|
||||||
];
|
];
|
||||||
|
|
14
justfile
14
justfile
|
@ -1,5 +1,5 @@
|
||||||
# vim: set ft=make :
|
root := justfile_directory()
|
||||||
root := `pwd`
|
build := root / "build"
|
||||||
|
|
||||||
# Build static website
|
# Build static website
|
||||||
build:
|
build:
|
||||||
|
@ -23,3 +23,13 @@ deploy: build
|
||||||
|
|
||||||
preview: build
|
preview: build
|
||||||
python3 -m webbrowser -t "file://{{root}}/build/index.html"
|
python3 -m webbrowser -t "file://{{root}}/build/index.html"
|
||||||
|
|
||||||
|
JJ_SLIDES_SRC := root / "articles/jujutsu/slides.md"
|
||||||
|
JJ_SLIDES_OUT := build / "articles/jujutsu/jujutsu_slides.pdf"
|
||||||
|
jj-slides:
|
||||||
|
npx @marp-team/marp-cli@latest --allow-local-files \
|
||||||
|
--bespoke.progress {{ JJ_SLIDES_SRC }} --pdf \
|
||||||
|
--output {{ JJ_SLIDES_OUT }}
|
||||||
|
|
||||||
|
jj-slides-watch:
|
||||||
|
ls {{ JJ_SLIDES_SRC }} | entr just jj-slides
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
: |> ./generate_footer.sh > %o |> footer.html ./<tmpl_group>
|
|
3
templates/footer.html
Executable file
3
templates/footer.html
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
<div id="footer">
|
||||||
|
Copyright © Fabien Freling since 2007
|
||||||
|
</div>
|
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
<div id="footer">
|
|
||||||
Copyright © Fabien Freling 2007-$(date +%Y)
|
|
||||||
</div>
|
|
||||||
EOF
|
|
Loading…
Add table
Add a link
Reference in a new issue