Maëlle Salmon
banner
masalmon.eu
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).
Pinned
New R-hub blog post!

"Lazy introduction to laziness in #RStats"

by @frick.ws, @drmowinckels.io &me

Read about lazy as in...

🦥 lazy evaluation
🦥 lazy database operation
🦥 LazyData
🦥 frugal file modifications
🦥 {lazytest}
🦥 quantifiers in regular expressions

blog.r-hub.io/2025/02/13/l...
Lazy introduction to laziness in R - R-hub blog
In the programming world, laziness can often be a good thing: it is both a human quality that can motivate automation efforts, and a programming concept that avoids wasting resources such as memory. N...
blog.r-hub.io
Reposted by Maëlle Salmon
Call for abstracts for the first ever @rainbowr.org conference is still open! We're looking for talks that either

🦄 Showcase how our diverse community uses #RStats
🏳️‍🌈 Use LGBTQ+ data

Get in your abstracts before December 1st.

conference.rainbowr.org/abstracts.html
#queerdata #PrideinSTEMDay
Abstracts – rainbowR conference
conference.rainbowr.org
November 20, 2025 at 4:59 PM
Reposted by Maëlle Salmon
#rstats Please welcome Jarl, a new R linter.

Jarl is a CLI tool with extensions in VS Code, Positron, and Zed. It can check thousands of lines of R code in milliseconds.

Jarl provides several output formats, a Github Actions workflow, and more.

Blog post: www.etiennebacher.com/posts/2025-1...
November 20, 2025 at 4:50 PM
Reposted by Maëlle Salmon
testthat 3.3.0 out now! This is a massive release with tons of improvements including better failure messages, new expectations, improved snapshotting, new vignettes, and much much more: tidyverse.org/blog/2025/11... Post includes some thoughts on developing an #rstats package with Claude Code.
testthat 3.3.0
testthat 3.3.0 brings improved expectations with better error messages, new expectations for common testing patterns, and lifecycle changes including the removal of `local_mock()` and `with_mock()`. I...
tidyverse.org
November 13, 2025 at 5:24 PM
Reposted by Maëlle Salmon
Our data science team is hiring for a summer 2026 undergraduate intern! Applications close Friday, Nov 14. #rstats msk.wd1.myworkdayjobs.com/MSKCC_Career...
Data Science Summer Intern
About Us: The people of Memorial Sloan Kettering Cancer Center (MSK) are united by a singular mission: ending cancer for life. Our specialized care teams provide personalized, compassionate, expert…
msk.wd1.myworkdayjobs.com
November 10, 2025 at 1:38 PM
Reposted by Maëlle Salmon
pkgdown 2.2.0 now out — tidyverse.org/blog/2025/11.... Main feature is new build_llm_docs() which makes your websites easier to understand by LLMs. (Which you can easily turn off if desired) #rstats
pkgdown 2.2.0
The latest version of pkgdown automatically builds markdown files that make it easy for LLMs to use your website.
tidyverse.org
November 6, 2025 at 1:45 PM
Reposted by Maëlle Salmon
Supporting blog contributions beyond authorship
This week the Rogue Scholar science blog archive has launched a new feature: contributor roles. Blog posts can now have contributor roles attached to each author, and this information is shown in the Rogue Scholar and Crossref metadata. We have discussed contributor roles for blog posts for several months, in particular with the ropensci team. And when the ropensci blog launched support for contributor roles two weeks ago, Rogue Scholar finally had blog post metadata with contributor roles. ropensci implemented the following roles, and they are now all picked up by Rogue Scholar: * Editor (who edited the blog post), e.g. https://doi.org/10.59350/510pg-zzf58 * Translator (who translated the blog post), e.g. https://doi.org/10.59350/b73e6-3wm19 * Interviewee (who was interviewed for a blog post), e.g. https://doi.org/10.59350/s8m95-ap410 The last blog post looks like this in the Rogue Scholar frontend: In the backend InvenioRDM makes a distinction between authors/creators and contributors, similar to the DataCite data model it is based on. Therefore Rogue Scholar first lists the authors (who can't have a role in DataCite), followed by the contributors (who must have a role, aka _contributorType_). Crossref metadata support the roles _editor_ and _translator_ , so this information is passed on during DOI registration, as Rogue Scholar uses Crossref DOIs. Whether these roles are shown in a formatted citation depends on the citation style, and currently this is probably the exception. At this time neither InvenioRDM (the repository platform powering Rogue Scholar) nor Crossref support multiple contributor roles. Crossref plans to add support for CrediT contributor roles in 2026, and at this point might add support for multiple roles, which are common in CrediT. Rogue Scholar and Crossref support other contributor roles currently not used by the ropensci blog, e.g. _reviewer_. And Rogue Scholar will support _CrediT_ contributor roles as soon as they are implemented by Crossref. ### Contributor roles in blog feeds The rOpenSci blogs (in English, Spanish, and French) use JSON Feed as syndication format, and that is how Rogue Scholar automatically receives content and metadata. JSON Feed supports custom extensions that start with an underscore, e.g. "authors": [ { "name": "Maëlle Salmon", "url": "https://orcid.org/0000-0002-2815-0399", "avatar": "https://ropensci.org/img/team/maelle_salmon.jpg", "_roles": ["author"] }, { "name": "Steffi LaZerte", "url": "https://orcid.org/0000-0002-7690-8360", "avatar": "https://github.com/steffilazerte.png", "_roles": ["editor"] }, { "name": "Yanina Bellini Saibene", "url": "https://orcid.org/0000-0002-4522-7466", "avatar": "https://github.com/yabellini.png", "_roles": ["author"] } ], For blogs using Atom feeds, the specification allows mixing in other namespaces that define custom XML elements. For contributor roles we can use the relators vocabulary from the Library of Congress that defines the above three roles (edt editor, trl translator, ive interviewee, but also rev reviewer), e.g. <feed xmlns="http://www.w3.org/2005/Atom" xmlns:mrel="http://id.loc.gov/vocabulary/relators/"> ... <author> <name>Maëlle Salmon</name> <uri>https://orcid.org/0000-0002-2815-0399</uri> </author> <author> <name>Steffi LaZerte</name> <uri>https://orcid.org/0000-0002-7690-8360</uri> <mrel:roleTerm valueURI="http://id.loc.gov/vocabulary/relators/edt">edt</mrel:roleTerm> </author> <author> <name>Yanina Bellini Saibene</name> <uri>https://orcid.org/0000-0002-4522-7466</uri> </author> ... </feed> Blogs that provide a JSON API and are database-driven (e.g. WordPress, Blogger, Ghost, or Substack) can be extended if they are open source, e.g. via a WordPress plugin. ### Other uses of contributor roles Rogue Scholar is a science blog archive, so contributor roles for other types of scholarly content, e.g. datasets or software, are out of scope. The DataCite data model currently doesn't support roles for creators, making it difficult to implement CrediT, or contributor roles adapted to non-textual content types. As a science blog archive, Rogue Scholar is not really concerned with research evaluation, and whether contributor roles might help with this work. Please use Slack, email, Mastodon, or Bluesky if you have any questions or comments regarding Rogue Scholar contributor roles. Rogue Scholar is a scholarly infrastructure that is free for all authors and readers. You can support Rogue Scholar with a one-time or recurring donation or by becoming a sponsor. ## References 1. Salmon, M., Bellini Saibene, Y., & LaZerte, S. (2025, October 14). Recognition Beyond Blog Post Authors. _rOpenSci - Open Tools for Open Science_. https://doi.org/10.59350/510pg-zzf58 2. Salmon, M., LaZerte, S., & Bellini Saibene, Y. (2025, October 22). ¡Prepárense para el lanzamiento! Paquetes enviados al R-multiverse. _Ropensci - herramientas abiertas para una ciencia abierta_. https://doi.org/10.59350/b73e6-3wm19 3. Bellini, A., Casalla, L., Bellini Saibene, Y., & LaZerte, S. (2023, June 6). Meeting the Stars of the R-Universe: PEcAn, an Open Source Project to Take Care of the Planet. _rOpenSci - Open Tools for Open Science_. https://doi.org/10.59350/s8m95-ap410 4. Brand, A., Allen, L., Altman, M., Hlava, M., & Scott, J. (2015). Beyond authorship: Attribution, contribution, collaboration, and credit. _Learned Publishing_ , _28_(2), 151–155. https://doi.org/10.1087/20150211
blog.front-matter.io
October 27, 2025 at 6:11 PM
💙 "Python Foundation goes ride or DEI, rejects government grant with strings attached"

www.theregister.com/2025/10/27/p...
Python Foundation rejects $1.5M grant with no-DEI strings
: Foundation says it won't compromise policy of inclusivity even if that cash would've really helped
www.theregister.com
November 3, 2025 at 7:01 AM
Reposted by Maëlle Salmon
💫 Next week rOpenSci Community Call!

Graceful Internet Packages with Salix Dubois, Tan Ho & Matthias Grenié

📆Thursday, 06 November 2025, 15:00 UTC

Information+How to join+find your local time: ropensci.org/commcalls/gr...

Please share with your contacts! We look forward to seeing you!

#RStats
Graceful Internet Packages · Community Call
Join us for our next Community Call, “Graceful Internet Packages,” featuring Matthias, Tan, and Salix. In this session, we’ll explore how to design and maintain R packages that interact with online da...
ropensci.org
October 31, 2025 at 12:15 PM
Reposted by Maëlle Salmon
Happy Halloween to all who celebrate. Hope you and/or your kids get some nice candy and fun times tonight!

Here's a silly little post on making neon ghosts in #rstats with #ggplot2

drmowinckels.io/blog/2025/ne...
Neon Ghosts with ggplot2 - Dr. Mowinckel’s
Make your own glowing, wiggly ghosts in R with a dash of randomness and a lot of neon.
drmowinckels.io
October 31, 2025 at 7:02 PM
Reposted by Maëlle Salmon
Just published! 🎉 My new blog post tackles the mighty `apply()` function in R. Demystify `MARGIN` and master operations from matrices to 5D neuroimaging data. Say goodbye to loops! 🧠📊

drmo.site/k40xD5

#RStats #DataScience #Neuroimaging
Mastering Apply: From Matrices to Multidimensional Neuroimaging Data - Dr. Mowinckel’s
Master apply() in R for multidimensional data analysis.
drmo.site
November 1, 2025 at 6:53 PM
Reposted by Maëlle Salmon
October news! 🗞️ #rstats

🦋 2025-11-06 Community call: Graceful Internet Packages

📼 Community call recording: R-multiverse, a new way to publish R packages

📆 Coworking

📦 New package {partialling.out}

👋 Call for new maintainers

🗒️ 4 blog posts!

🧰 Package Development Corner […]
Original post on hachyderm.io
hachyderm.io
October 24, 2025 at 7:09 AM
Reposted by Maëlle Salmon
That was a recent R dev days initiative, see this recent entry from the NEWS changes feed.
October 23, 2025 at 1:34 PM
Did "Writing R Extensions" go to a beauty salon?!

cran.r-project.org/doc/manuals/...

#RStats
Writing R Extensions
Writing R Extensions
cran.r-project.org
October 23, 2025 at 8:44 AM
Reposted by Maëlle Salmon
¡Anunciamos nuestra primera Keynote para #LatinR2025!

Nos emociona contar con Heather Turner, RSE Fellow y Associate Professor en la University of Warwick, como conferencista principal.

🗓️ Del 1 al 5 de diciembre de 2025 – online y gratuito

📢 Pronto abriremos inscripciones
October 21, 2025 at 1:44 PM
Reposted by Maëlle Salmon
[blog] Go for Launch! Packages Shipped to the R-Multiverse ✨

https://ropensci.org/blog/2025/10/22/packages-multiverse/
Go for Launch! Packages Shipped to the R-Multiverse
Packages submitted to the R-multiverse during our recent coworking session.
ropensci.org
October 22, 2025 at 11:12 AM
👀 "Développement d’une alternative open-source sous R aux logiciels propriétaires de calcul de taille d’échantillon en oncologie"

Stage de M2 au sujet très intéressant !
Salut tout le monde !
On cherche un·e stagiaire M2/ingé pour un projet R.
Pas besoin de formation pointue en stats.
À Gustave Roussy, près de Paris (métro 14). Le/la stagiaire apprendra plein de choses !
oncostat.github.io/internships_...
N'hésitez pas à partager ou à me demander des précisions 😊
oncostat.github.io
October 21, 2025 at 2:50 PM
Reposted by Maëlle Salmon
We are extremely excited about this!

@lionelhenry.bsky.social did an awesome job shepherding this feature, and we think that both decimal alignment and using commas as "column guides" for your `tribble()` calls makes QC-ing your code easier and less error prone!
I'm excited to share a new version of the Air formatter for #rstats, with support for tabular formatting! Super useful with `tibble::tribble()` calls or `data.table::fcase()`.

It's currently experimental as we're looking to get feedback on the feature, so please let us know what you think.
October 21, 2025 at 12:14 PM
Reposted by Maëlle Salmon
I'm excited to share a new version of the Air formatter for #rstats, with support for tabular formatting! Super useful with `tibble::tribble()` calls or `data.table::fcase()`.

It's currently experimental as we're looking to get feedback on the feature, so please let us know what you think.
October 21, 2025 at 10:34 AM
Reposted by Maëlle Salmon
Quarto friends! I need your help:

We are implementing a new QMD parser in Quarto. It will be super nice. But it's a big change, and we want to minimize the impact.

1. Can you share a link to your Quarto project at github.com/quarto-dev/q...
2. repost this and let your Quarto friends know too?
Epic: are we production yet · Issue #63 · quarto-dev/quarto-markdown
We need to check against many large sites to get a good sense for the impact of this new syntax in practice. autogenerated qmd quartodoc-generated sites (tbd meet with @machow) sites quarto.org Shi...
github.com
October 16, 2025 at 2:13 PM
Reposted by Maëlle Salmon
Would any fluent speakers of Korean or Chinese have a couple of minutes to review some updated pkgdown translations at github.com/r-lib/pkgdow... ? These were generated by claude code, so they're probably ok, but I'd love a human to double check.
✨ Proofread translations ✨ by hadley · Pull Request #2926 · r-lib/pkgdown
with Claude code cc @jayhesselberth @maelle
github.com
October 16, 2025 at 12:52 PM
Reposted by Maëlle Salmon
Missing Values were dropped;
Mean Imputation was applied;
Data available on request;
Code available on request;

#rstats
In honor of spooky month, share a 4 word horror story that only someone in your profession would understand

I'll go first: Six page commercial lease.
October 13, 2025 at 6:34 AM
A bit more thankfulness on the @ropensci.org blog! 🥳

"Recognition Beyond Blog Post Authors"

ropensci.org/blog/2025/10...

A post by @yabellini.bsky.social & me, edited by Steffi LaZerte. 🙏
Recognition Beyond Blog Post Authors
How we acknowledge different types of contributions to our blog
ropensci.org
October 14, 2025 at 8:02 AM
TIL how to find out which Git commit deleted a file, by filtering commits that touched that path.

git log --oneline -- path/to/file

(Relatedly, it appears I sometimes delete test files by mistake, thanks test coverage results 🤦‍♀️ )
October 10, 2025 at 9:16 AM
🎂 "Arrow Turns 10" by @enpiar.bsky.social

"These values are capped off by the foundation’s mantra, “community over code,” which means that focusing on how people work together is more important than technical purity."

enpiar.com/2025/10/07/a...
Arrow Turns 10
A look back at Apache Arrow's first decade, how we got to where we are now, and how we can continue to thrive in the next decade.
enpiar.com
October 10, 2025 at 9:07 AM
New post on the @ropensci.org blog! "A Primer on Domain Verification"

Are you the mother goat or the wolf? 🐐🐺

ropensci.org/blog/2025/10...
A Primer on Domain Verification
How domain verification helps against impersonation and takeover attacks, and how to use it.
ropensci.org
October 10, 2025 at 6:57 AM