Sign in

Maëlle Salmon

@masalmon.eu
1.9K followers 223 following 275 posts

masalmon.eu 🧰 #Rstats / research software engineer. 🗒️ Blogger. 📦 Software review editor for @ropensci. 💜 #RLadies. 📈 PhD in statistics. 🍋 Nancy, France (let's say this emoji is a bergamot orange).

PostsRepliesMedia
Maëlle Salmon @masalmon.eu · 19/06/2026
En quoi travailler dans #RStats et vivre à Nancy, c'est pareil et super ? Découvrez-le dans les diapos de ma présentation plénière aux Rencontres R hier ! masalmon.eu/talks/2026-0... (Merci Lise Vaudor pour la photo !)
Maëlle en train de parler avec ses mains devant une diapo qui montre des bergamotes, des bonbons à la bergamote de Nancy. Le public est de dos mais on l'imagine passionné.
150
Maëlle Salmon @masalmon.eu · 02/06/2026
New post on the R-hub blog! "Refactoring with Jarl: a coffee chat" ✨ By @frick.ws + myself, reviewed by @etiennebacher.bsky.social blog.r-hub.io/2026/06/02/j... #RStats
Meme of a kitten attacked by monsters. The text says "Everytime you use Claude for something a CLI can do, a kitten dies"
03312
Maëlle Salmon @masalmon.eu · 20/04/2026
"Add whimsy", they said 😸 Pattern by Kakotille (www.etsy.com/ca/listing/8...)
Pink crochet octocat on top of books by Ellen Ullman
020
Maëlle Salmon @masalmon.eu · 02/04/2026
This, and more, in ropensci.org/blog/2026/04...
Meme showing a kitten attacked by two monsters. The text says "Every time you use Claude for something a CLI can do, a kitten dies"
1264
Maëlle Salmon @masalmon.eu · 30/03/2026
New post! Better Git diff with difftastic A diffing tool that understands syntax and can - ignore formatting changes - match delimiters in wrappers - ... masalmon.eu/2026/03/30/d... #RStats
Diff where some code was moved out of f to a helper function g. The diff highlights parts of both functions without matching delimiters.Diff where the same code was moved out of f to a helper function g. Difftastic does a better job of highlighting the whole definition of f, and just the name and left arrow defining g. No unmatched delimiters!Native git diff for a function that got a new argument and whose definition is now on multiple lines because it got too long to fit on one line of 80 characters. Git highlights all the lines as changed.Difftastic diff for a function that got a new argument and whose definition is now on multiple lines because it got too long to fit on one line of 80 characters. Difftastic only highlights the line with the new argument and the comma on the line before that.
0295
Maëlle Salmon @masalmon.eu · 03/03/2026
Today, I gave a talk about what to replace git checkout with: 🌳 git switch to change branches ↩️ git restore to restore a file to a given state Including demos of the commands with {saperlipopette} masalmon.eu/talks/2026-0...
Table showing whether 3 Git commands can change files only, history only, both files and history. git restore can only change files, git revert can change files only (--no-commit) and both files and history (default), git reset can change the history only (--mixed, --soft) and both files and history (--hard)
2416
Maëlle Salmon @masalmon.eu · 03/03/2026
Yesterday I got to present what I painstakingly learnt about ✨ extending roxygen2 ✨ masalmon.eu/talks/2026-0... #RStats
Grumpy cat "Before I knew how to extend roxygen2". Happy cat "Once I got how to extend roxygen2".On the right you see the steps of roxygenize(), on the left different files and objects. First roxygenize() loads packages. Then it parses R scripts, recognizing normal and custom tags. This creates blocks which are sorts of lists of tags. Then for any registered roclet: Rd roclet, collate roclet, NAMESPACE roclet, your custom roclet, roxygen2 will run the preprocess methods then the process methods then the output methods. The Rd roclet work will lead to the man/ folder, the NAMESPACE roclet work generates the NAMESPACE file, your custom roclet could have done anything like generating test files or a report on statistical software standards.
Meme "Doctors hate him!". plumber2 extends roxygen2 without roclets. With this one weird trick! Learn the truth now.Table of uses and extensions of roxygen2 with these two dimensions: parsing code decorators, generating stuff when calling roxygenize(). The most populated cell has the two aspects, it contains every example we saw except plumber2.
Plumber2 does use code decorator parsing but not through roxygenize().
If you do neither of those things you’re clearly not in roxygen2-land.
Now there’s a weird thing where you can use roxygenize() without using information from the code decorator parsing. Roxygen2 has an old roclet that is no longer recommended, the vignette roclet that would update the built versions of your vignettes using Make. It’s no longer recommended to have those files in your package source. In any case, you could make roxygenize() run any code from a roclet: maybe formatting your code? Updating your changelog? I can’t think of actual good ideas but you can do it.
021
Maëlle Salmon @masalmon.eu · 23/02/2026
Preparing a talk featuring Git restore, and got thinking about reset/revert/restore jvns.ca/blog/2023/11...
Table showing whether 3 Git commands can change files only, history only, both files and history. git restore can only change files, git revert can change files only (--no-commit) and both files and history (default), git reset can change the history only (--mixed, --soft) and both files and history (--hard)
031
Maëlle Salmon @masalmon.eu · 17/02/2026
New post: "Git commits: please mark your stitches!" In which I share a crochet analogy for Git commits… 🧶 masalmon.eu/2026/02/15/s...
A crochet project featuring several stitch markers (beginning of a Snorlax from Lee Sartori's Pokemon crochet book)Screenshot of commits on saperlipopette's GitHub repo where each type of commit gets a colored label, e.g. 'docs' or 'feature'
031
Maëlle Salmon @masalmon.eu · 09/02/2026
Fellow RefinedGitHub users! Am I missing something or does the new GitHub "One-click merge conflict resolution" define current and incoming differently from the old corresponding RefinedGitHub feature? - GitHub github.blog/changelog/20... - RefinedGitHub github.com/refined-gith...
RefinedGitHub feature. Incoming = "nicer-patch", incoming from the PR. Current = "master", current default branch.GitHub. Incoming = main, Current = current working branch from the PR.
010
Maëlle Salmon @masalmon.eu · 19/12/2025
Ouverture des inscriptions pour les Rencontres R 2026 à Nantes du 16 au 18 juin ! 🥳 rr2026.sciencesconf.org
Un joli dessin représentant Nantes avec notamment le château des ducs de Bretagne. Il y a aussi le logo de la conférence avec une tête d'éléphant mécanique.
130
Maëlle Salmon @masalmon.eu · 28/11/2025
Martes 2/12 @latinrconf.bsky.social con @yabellini.bsky.social! ¡Miércoles, Git! Manejo de errores en Git y no morir en el intento Cómo no entrar en Vim si no querés, coregir commits, deshacer cambios, mover commits de una rama a otra, máquina del tiempo de Git. www.eventbrite.cl/e/miercoles-...
Poster con el texto "enseño en LatinR 2025" en tres idiomas.
094
Maëlle Salmon @masalmon.eu · 28/11/2025
Just got back from the great uRos (The Use of #RStats in Official Statistics) 2025 conference in Bucharest. 🇷🇴 🙏 - My Git tutorial "Painlessly Improve Your Git History" masalmon.eu/talks/2025-1... - My keynote talk "R Packages, good vibes only" masalmon.eu/talks/2025-1...
Palace of the Parliament in Bucharest. The conference took place in the National Institute of Statistics which is very close to the Palace.
2121
Maëlle Salmon @masalmon.eu · 03/07/2025
Work call across hemispheres: different seasons but the same drink. Mate for all! 🧉 🥤 😉 @yabellini.bsky.social
Screenshot from a Zoom call with Yani. She's wearing a sweater and a hat, and showing her hot mate. I am wearing a tank top and showing my cold Club Mate soda.
0111
Maëlle Salmon @masalmon.eu · 22/05/2025
¡Mierda! Desde hoy {saperlipopette} sabe español, gracias a @yabellini.bsky.social por su ayuda! Para probarlo, 🧰 pak::pak("ropensci-training/saperlipopette") 🌐 withr::local_language("es") 📂 parent_path <- withr::local_tempdir() 💩 exo_one_small_change(parent_path)
Captura de pantalla del ejercicio creado por `saperlipopette::exo_one_small_change()` cuando el lenguaje es español. Los mensajes son en español.

✖ "Mierda, hice commit e inmediatamente me di cuenta que tenia que hacer un pequeño cambio!"
✖ Queria listar 3 cosas en mi archivo bla, no 2 !
ℹ Ve <https://ohshitgit.com/es#cambiar-ultimo-commit>
ℹ Para más ayuda, tip()
> tip()
• Añade 'cosa 3' al archivo bla, pues guardalo.
• `git add bla`
• `git commit --amend --no-edit`
• Inspecciona la historia de Git.
011
Maëlle Salmon @masalmon.eu · 17/02/2025
Did you know that if you use ✨ the RefinedGitHub browser extension ✨ conventional commits prefixes in your commit messages you are rewarded with nice colored labels in commit lists? (example from github.com/tidyverse/du...) 🔗 github.com/refined-gith... 🔗 www.conventionalcommits.org/en/v1.0.0/
List of commits in the duckplyr GitHub repository. Each commit message starts with a colored label replacing the conventional commit prefix: blue for docs, light blue for feature.
040