Maëlle Salmon's Avatar

Maëlle Salmon

@masalmon.eu

https://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).

1,806
Followers
209
Following
224
Posts
08.11.2024
Joined
Posts Following

Latest posts by Maëlle Salmon @masalmon.eu

Research Organization Registry (ROR) Search

The @rconsortium.bsky.social has ROR! 💫

ror.org/01z833950

So, if you have received a grant for your package, you can now acknowledge it by adding it to the DESCRIPTION file.

Here are more details:

ropensci.org/blog/2025/05...

#RStats

04.03.2026 12:40 👍 3 🔁 2 💬 0 📌 0

Aww this is so nice to say, thank you 😊

05.03.2026 07:59 👍 0 🔁 0 💬 0 📌 0
Original post on hachyderm.io

📝 [blog] How do we keep software peer review human-centered in the age of generative AI?

That’s the question behind our latest post at rOpenSci, where we describe:
• new expectations around AI use
• what this means for authors, reviewers, and editors
• why transparency matters more than ever […]

03.03.2026 14:21 👍 9 🔁 8 💬 0 📌 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)

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)

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...

03.03.2026 13:42 👍 43 🔁 7 💬 2 📌 1
Preview
Social Coworking and Office Hours - rOpenSci Editors Cowork or learn more about what it's like to be an editor for rOpenSci Software Peer Review.

rOpenSci Coworking and Office Hours coming up in an hour!

Today's Theme: rOpenSci Editors with cohost @mpadge

Tuesday March 3rd 14:00 Europe Central (13:00 UTC)

https://ropensci.org/events/coworking-2026-03

#RStats
@rstats@a.gup.pe

03.03.2026 12:11 👍 3 🔁 2 💬 0 📌 0

folks, please don't submit LLM-generated PRs to open source projects. It makes no sense.

If the maintainers want to use an LLM to fix an issue, they can use Claude or whatnot directly. They don't need you as intermediary, that's just silly.

If they don't want to use LLMs, they have reasons.

28.02.2026 03:10 👍 69 🔁 13 💬 0 📌 0
Grumpy cat "Before I knew how to extend roxygen2". Happy cat "Once I got how to extend roxygen2".

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.

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.

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.

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.

Yesterday I got to present what I painstakingly learnt about

✨ extending roxygen2 ✨

masalmon.eu/talks/2026-0...

#RStats

03.03.2026 10:00 👍 1 🔁 1 💬 0 📌 0
A minimalist isometric 3D illustration on a dark background showing a central glowing cube labeled ".dotfiles" with a git icon. Glowing neon lines radiate from the cube to icons representing "Shell Config," "Editor & Tooling," and "AI Agents (Claude & OpenCode)." A sidebar labeled "Skills Marketplace" displays specialized icons for R, Shiny, Quarto, and writing voices, illustrating a unified development environment.

A minimalist isometric 3D illustration on a dark background showing a central glowing cube labeled ".dotfiles" with a git icon. Glowing neon lines radiate from the cube to icons representing "Shell Config," "Editor & Tooling," and "AI Agents (Claude & OpenCode)." A sidebar labeled "Skills Marketplace" displays specialized icons for R, Shiny, Quarto, and writing voices, illustrating a unified development environment.

My dotfiles now manage my AI coding agents 🤖 Same instructions for Claude Code and OpenCode, symlinked from one repo. Here's how I set it up: https://drmo.site/CCrf37

02.03.2026 13:16 👍 7 🔁 2 💬 1 📌 0
¡Miércoles, Git! · Maëlle Salmon's personal website

¡Miércoles, Git! 💩

Taller práctico para aprender a resolver 7 errores comunes en Git y ganar confianza desde R,

Enseñado en LatinR 2025 con @yabellini.bsky.social

¡Ahora con vídeo!

masalmon.eu/talks/2025-1...

02.03.2026 12:58 👍 4 🔁 1 💬 0 📌 0
Original post on hachyderm.io

[blog] Guia de desenvolvimento da rOpenSci 1.0.0: trilíngue e aprimorado 🥳

A orientação da revisão por pares de Software rOpenSci está reunida em um livro on-line que continua melhorando! Esta postagem do blog resume o que há de novo em nosso Dev Guide 1.0.0 […]

02.03.2026 10:11 👍 2 🔁 3 💬 0 📌 0
Original post on hachyderm.io

[blog] rOpenSci Dev Guide 1.0.0: Trilingüe y mejorada 🥳

Las orientaciones de rOpenSci para realizar la revisión de software por pares se recopilan en un libro en línea ¡que sigue mejorando! Este artículo resume las novedades de nuestra Guía de Desarrollo 1.0.0 […]

02.03.2026 10:10 👍 2 🔁 3 💬 1 📌 0
rOpenSci Dev Guide 1.0.0: Trilingual and Improved Updates in version 1.0.0 of the online book 'rOpenSci Packages: Development, Maintenance, and Peer Review'

[blog] rOpenSci Dev Guide 1.0.0: Trilingual and Improved 🥳

rOpenSci Software Peer Review’s guidance is gathered in an online book that keeps improving! This blog post summarises what’s new in our Dev Guide 1.0.0,

https://ropensci.org/blog/2026/03/02/devguide-1.0.0/

02.03.2026 10:09 👍 5 🔁 3 💬 1 📌 0
Post image Post image Post image Post image

The future of #DataScience is at #positconf 2026. Check out our keynote lineup:
Wes McKinney: Future of high-performance computing
Christine Zhang: Data storytelling at NY Times
Emily Riederer: Scaling open-source at Capital One
Sara Altman & Simon Couch: AI-driven workflows
Register: pos.it/conf

27.02.2026 16:05 👍 17 🔁 8 💬 0 📌 2
Zut, Git ! Porting {saperlipopette} to the terminal with Claude · Maëlle's R Blog

New post: Zut, Git ! Porting {saperlipopette} to the terminal with Claude

masalmon.eu/2026/02/27/z...

27.02.2026 15:08 👍 3 🔁 1 💬 0 📌 0

😂🙏

27.02.2026 12:57 👍 1 🔁 0 💬 0 📌 0

Délai de soumission aux Rencontres R étendu jusqu'au vendredi 6 mars ! Profitez-en !

20.02.2026 13:28 👍 4 🔁 3 💬 1 📌 0

💩 Awesome post by @heltweg.org: www.heltweg.org/posts/who-wr...

💩 Slide in my useR! 2024 keynote: user-maelle.netlify.app#/12 (recording linked from masalmon.eu/talks/2024-0...)

27.02.2026 09:45 👍 3 🔁 1 💬 2 📌 1

🥰 and your post is such a great one!!

27.02.2026 09:42 👍 2 🔁 0 💬 0 📌 0
Preview
rOpenSci News Digest, February 2026 AI policy for software review, champions program, coworking, new packages, package news

February @ropensci.org news! 🗞️ #RStats

💙 Strong Engagement in the Champions Program Call

🤔 Policy Updates for use of Generative AI Tools

🚀 Dashboard for your own R-Universe

📆 Coworking

💓 New packages {Athlytics}, {orgmetrics}

🗒️ Blog posts!

🧰 Package Dev Corner

ropensci.org/blog/2026/02...

26.02.2026 11:34 👍 8 🔁 4 💬 0 📌 0
I want to see the claw Technical mastery still matters

Rereading this excellent post by @vickiboykis.com, "I want to see the claw", in a world where "OpenClaw" exists 😭

vickiboykis.com/2025/10/20/i-want-to-see-the-claw/

25.02.2026 07:49 👍 8 🔁 2 💬 0 📌 0

Why do I have to pretend that I'm going to print something in order to save it as a PDF. Why do I have to engage in a little ruse.

23.02.2026 21:43 👍 19286 🔁 2922 💬 344 📌 1

Nature is healing

22.02.2026 19:30 👍 71 🔁 5 💬 2 📌 1

#rstats 4.5.3 "Reassured Reassurer" scheduled for March 11. Full schedule on developer.r-project.org (or the svn if you're impatient.) This should be the wrap-up release for the 4.5 series.

23.02.2026 14:12 👍 28 🔁 17 💬 0 📌 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)

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)

Preparing a talk featuring Git restore, and got thinking about reset/revert/restore jvns.ca/blog/2023/11...

23.02.2026 15:08 👍 4 🔁 2 💬 0 📌 0

Quarto c'est transversal à R, on peut s'y lancer sans R et ne mettre que peu ou pas du tout de code dans ses documents/présentations/livres/etc :-)

23.02.2026 14:35 👍 1 🔁 0 💬 0 📌 0
12èmes Rencontres R - Sciencesconf.org La présence de valeurs manquantes constitue un enjeu méthodologique central dans l'analyse statistique, influençant aussi bien l'estimation des paramètres que la validité des inférences. Ce tutoriel propose une exploration des méthodes et outils pratiques de leur gestion dans R, afin de permettre aux participants de faire des choix éclairés face à des données incomplètes.

Il faut bien commencer quelque part !

Aux Rencontres R il y aura un tutoriel de Typst avec Quarto (pour faire des PDFs avec Quarto, sans LaTeX) rr2026.sciencesconf.org/resource/pag...

23.02.2026 14:14 👍 0 🔁 0 💬 1 📌 0
Video thumbnail

In case you were curious what I was sewing the other night when I shared a photo of my serger at 1am 😂 HOW CUTE IS THIS?!

Where are my fellow #rstats #databs sewists & makers?? 🧵🪡🧶

(I loved my @posit.co sweatshirt, but WOO DANG do crew neck collars bother me when they touch my neck 🥹)

23.02.2026 01:21 👍 55 🔁 3 💬 16 📌 1
Photo of a pair of handmade drop earrings with ggplot2 hex stickers

Photo of a pair of handmade drop earrings with ggplot2 hex stickers

A recent #RStats craft project of mine 🎨

23.02.2026 12:04 👍 31 🔁 4 💬 2 📌 2
Preview
One atlas to rule them all: ggseg 2.0 – ggsegverse Athanasia M. Mowinckel

ggseg 2.0: One atlas object for both 2D and 3D brain visualization.

In v1, you loaded `dk` for 2D and `dk_3d` for 3D.

That's gone. One call — dk() — feeds both renderers.
ggsegverse.github.io/news/ecosyst...

#rstats #neuroscience #datavisualization

23.02.2026 11:00 👍 10 🔁 3 💬 1 📌 0
GitHub - kantiles/rr_2025_ia: https://kantiles.github.io/rr_2025_ia/prez_verbatim_ia_kantiles.html https://kantiles.github.io/rr_2025_ia/prez_verbatim_ia_kantiles.html - kantiles/rr_2025_ia

Celle-ci ça semble être du Quarto : github.com/kantiles/rr_... (quarto.org/docs/present...)

23.02.2026 06:37 👍 1 🔁 0 💬 1 📌 0