Sign in

ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ

@drmowinckels.io
3K followers 649 following 1.8K posts

Staff scientists / RSE @LCBC_UiO & @LifebrainEU. She/Her. PhD Cognitive Neurosciences 🧠 @rladies.org Global Team. #Rstats #Nerd 🌈🏳️‍🌈 Drmowinckels.io

PostsRepliesMedia
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 01/10/2026
The #ggsegverse website how has a proper playground! Served through @posit.co Cloud Connect, a n #rstats session to explore atlases, how to alter their positions, colours etc. An excellent resource to also learn how to use it, as it shows the code. #shiny ggsegverse.github.io/news/2026-10...
The demo app in 2D view. A sidebar on the left holds the atlas picker, a Colour regions by radio set with Example values selected, a Viridis colour scale, a seed slider, and layout and theme pickers. The main panel shows the Desikan-Killiany atlas drawn in eight views, two rows of four, each region filled from a viridis scale. Below the figure a code panel titled The code behind this figure shows the R script that made it, beginning with library(ggseg) and library(ggplot2).The demo app in 3D view. The sidebar offers Surface, Hemispheres, Add glass brain, Camera and Background controls. The main panel shows an inflated left hemisphere seen from the lateral side, each cortical region a different colour, with a region legend to the right. The code panel below reads library(ggseg3d), then a ggseg3d call with atlas and surface arguments piped into pan_camera and set_background.
070
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 18/09/2026
`atlas = dk` stopped working in ggseg 2.0.0. It's `dk()` now, and I owe you the reason: R cannot re-export a dataset from another package's namespace. A function is the honest way to put a name there. 🧠 #RStats l.drmowinckels.io/DVergO
A 3D minimalist illustration comparing an open doorway to a bricked-off door. On the left, an open door glows with teal light, flanked by a giant pair of curved parentheses. Inside the doorway sits a glowing pedestal with a stylized brain outline and a small tag reading "dk()". On the right, a second door is completely walled off with grey bricks and a nameplate reading "dk". Below the doors, code text reads "ggplot() + geom_brain(atlas = dk())
021
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 01/08/2026
101 tests passed — then R crashed on exit with a Windows stack-buffer-overrun 🫠 I wrapped Rust's link checker lychee into an R package (rambutan). The whole trip, teardown bug and all: #rstats #rust l.drmowinckels.io/ajLoWM
The rambutan R package hex logo. Three spiky rambutan fruits in shades of maroon and dusty pink sit inside a pale pink hexagon; the largest is half-peeled to reveal a smiling white face. The word "rambutan" runs across the bottom in rounded dark red letters.
270
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 16/07/2026
Its so dang warm! Happy we have AC to cool down. Even forced the cat to stay indoor the last hour so she is out of the worst of it and can cool down.
screenshot of a weather station report showing its 34C, and feels like 39C
030
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 15/07/2026
I'm an R person who just shipped two cross-platform desktop apps in Rust + Tauri + React — a stack I'd never written before. One built straight in code with Claude, one designed first as a clickable artifact. Story: l.drmowinckels.io/sNeRrN
A modern minimalist desk setup in warm, natural light. On a light wooden surface, a stylized cairn of stacked stones glows with digital, circuit-board patterns. Next to it, an open silver laptop displays a dark-mode productivity dashboard with charts and UI elements labeled "Cairn." A blurred succulent sits in the background.
2318
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 20/06/2026
Do you use The StoryGraph to catalogue the books you read, and find it cumbersome to sync the devices you read from to the website? drmowinckels.io/storywell/ #books #storyGraph #bibliophile
Promotional banner for Storywell — "Sync your shelf" service that pulls every finished book from Audible, Goodreads and more and marks them read on The StoryGraph.
110
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 01/06/2026
Quarto's `hugo-md` format wraps every figure in raw HTML, so Hugo's image render hook never fires on them. Fifteen lines of Lua + one line in `_quarto.yml` and every figure comes out as clean `![alt](src)` markdown instead. l.drmowinckels.io/WgOEMR
A simplified diagram showing a Quarto qmd document on the left flowing through a Lua filter labelled figure-to-markdown into a Hugo theme on the right, with the figure being converted from HTML to a clean markdown image syntax.
1133
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 30/03/2026
ggseg.extra now builds cortical brain atlases directly from the mesh geometry! A 150-region Destrieux atlas tok 9 seconds. No screenshots, no ImageMagick, no headless browser. #rstats #neuroscience #brainimaging
140
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 18/03/2026
It's full of new features, and likely lots of new bugs. I'd love folks to test how it works, I've really tried making things more robust and I hope its payed off! #rstats #ggsegverse #neuroimaging
020
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 02/03/2026
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: drmo.site/CCrf37
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.
172
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 15/02/2026
New neuromapr #rstats package is available from GitHub! Highly experimental, early adopters and bug identifiers are super welcome to report issues! github.com/lcbc-uio/neu... #neuroscience #rstats #neuroimaging
14716
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 09/02/2026
The ggseg ecosystem finally has a proper home! 🧠 For those who don't know, ggseg is an R package ecosystem for visualizing brain atlas data. Think ggplot2, but for brains. #rstats #neuroimaging #openscience
Dark blue hexagon, with a light blue frame. Features a brain facing the left, with the front half as a wire-frame mesh of light blue, and the back half with several polygon segments of different colours. Below is written "ggseg" in light blue.
18125
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 03/02/2026
Stop playing "diagnostics ping-pong" with your users 🏓 Wrote about why every R package wrapping external tools needs a sitrep() function — with real examples from meetupr and freesurfer. #RStats drmo.site/F5gVjR
A close-up view of a computer monitor in a dimly lit room, showing a terminal console. The terminal displays the output of an R function called meetupr_sitrep(). The report shows green checkmarks for "Active Authentication" and "Cached Token," and a blue information icon for package settings. At the bottom, a red "X" marks a failed "API Connectivity Test," illustrating a diagnostic situation report in action. In the foreground, a coffee mug and a person’s hand on a keyboard are visible but slightly out of focus.
0226
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 23/01/2026
15 years together, and going strong. Growing, learning, supporting, laughing, crying, loving.
picture of two women in the woods.
0131
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 19/01/2026
My 2025 Year in Review is out! 📝 A year of deliberate work amidst post-COVID recovery. Highlights: deep dives into #RStats APIs w/ #httr2, the R Package Dev Advent Calendar, & `ggseg` improvements. Focus on sustainable, impactful work. Read more & share your 2025! 👇 drmo.site/8NNsxa
image of a woman (me) with dark hair and glasses wearing mauve-burgundy dress, sitting next to an evergreen tree decorated with lights and Christmas ornaments
0110
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 16/01/2026
Managing a Hugo site gets complex fast - builds, dev servers, and getting dependencies where Hugo expects them. Here's how npm scripts solved our R-Ladies website workflow 🧵 #Hugo #NPM #WebDev #BuildTools #OpenSource #Automation
NPM json setup.

```json
{
    "name": "hugo-rladies-theme-js",
    "private": true,
    "version": "0.1.0",
    "scripts": {
        "clean": "rm -rf assets/js/vendor assets/scss/vendor",
        "setup": "mkdir -p assets/js/vendor assets/scss/vendor",
        "build": "npm run clean && npm run setup && npm run sync:bootstrap && npm run sync:jquery",
        "sync:bootstrap": "cp node_modules/bootstrap/dist/js/bootstrap.bundle.min.js* assets/js/vendor/ 2>/dev/null || true && cp -r node_modules/bootstrap/scss assets/scss/vendor/bootstrap",
        "sync:jquery": "cp node_modules/jquery/dist/jquery.min.js* assets/js/vendor/ 2>/dev/null || true",
        "update": "npm update && npm run build",
        "postinstall": "npm run build"
    },
    "dependencies": {
        "bootstrap": "^5.3.8",
        "jquery": "^3.7.0"
    }
}
```
131
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 28/12/2025
My #RPackageAdvent2025 recap is live! 📦✨ Get the complete guide to modern R package development: setup, docs, testing, CI/CD, and CRAN submission. All 25 days of tips, tools, and best practices in one place! Dive in! #RStats #RPackageDevelopment Link: drmo.site/8ny3eU
A festive digital illustration features the blue R logo wearing a red Santa hat with white trim on the left. To its right stands a green Christmas tree made entirely of curly braces arranged in a triangular shape. White and light-blue %>% pipe symbols float across a dark blue, starry background like snowflakes. A speech bubble above the R logo says “Ho Ho Ho! 📦” in red text. At the bottom, white text reads: “R Package Development Advent Calendar 2025” and below it, “25 Days of Coding Magic • Dec 1–25.
02713
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 28/12/2025
Excited to share my R Package Development Advent Calendar 2025 summary! 🎁 All 25 days of modern R pkg dev in one guide. Master `usethis`, GitHub Actions, `pkgdown`, `testthat`, & CRAN prep. Level up your R packages! 🚀 #RStats #RPackageAdvent2025 #Rpkg drmo.site/8ny3eU
A festive digital illustration features the blue R logo wearing a red Santa hat with white trim on the left. To its right stands a green Christmas tree made entirely of curly braces arranged in a triangular shape. White and light-blue %>% pipe symbols float across a dark blue, starry background like snowflakes. A speech bubble above the R logo says “Ho Ho Ho! 📦” in red text. At the bottom, white text reads: “R Package Development Advent Calendar 2025” and below it, “25 Days of Coding Magic • Dec 1–25.
091
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 26/12/2025
We Made It! 🎉 25 days. Complete modern R package development workflow. From usethis automation to CRAN submission. You have everything you need! #rstats #CRAN #RPackageAdvent2025 #ThatsAWrap
3342
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 25/12/2025
Day 25: CRAN Submission Checklist and cran-comments.md Final steps for successful CRAN submission. Pro Tip: Be proactive about communicating any unusual aspects of your package to CRAN reviewers. #rstats #RPackageAdvent2025
160
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 24/12/2025
Happy Christmas to all who celebrate, and to those who don't I hope you get to enjoy the end of the year. We celebrated just the three of us, with a quiet and lovely celebration. After two Christmases that have been quite difficult, it was nice to have a semblance of normality.
image of a woman (me) with darl hair and glasses wearing mauve dress, sitting next to an evergreen tree decorated with lights and Christmas ornamentsphoto of a tabby cat sitting on a rug being incredibly cute
1150
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 24/12/2025
Day 24: rlang - Tidy Evaluation in Packages Handle user expressions safely in package functions. Pro Tip: Use {{ }} (embrace) for single arguments, ... for multiple arguments. Resources: rlang.r-lib.org #rstats #RPackageAdvent2025
my_summarise <- function(data, ...) {
  data |>
    dplyr::summarise(...)
}my_mutate <- function(data, col, value) {
  data |>
    dplyr::mutate({{ col }} := value)
}
my_function <- function(...) {
  dots <- rlang::list2(...)
  # process dots
}
1110
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 23/12/2025
Day 23: cli - Beautiful Command Line Interfaces Create user-friendly messages and progress indicators. Pro Tip: Use semantic markup like {.fn function_name} and {.val value} for consistent formatting. Resources: cli.r-lib.org #RpackageAdvent2025 #rstats
cli::cli_progress_bar("Processing files", total = length(files))
for (file in files) {
  # process file
  cli::cli_progress_update()
}cli::cli_alert_success("Package built successfully!")
cli::cli_alert_warning("Missing documentation for {.fn my_function}")
cli::cli_abort("Invalid input: {.val {invalid_value}}")
0111
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 22/12/2025
Day 22: S3, S4, and S7 Object Systems Create robust object-oriented interfaces with R's object systems. Pro Tip: Use S3 for simple classes, S4 for complex validation, S7 for modern OOP. Resources: rconsortium.github.io/S7 #rstats #RPackageAdvent2025
173
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 21/12/2025
Day 21: rhub - Multi-Platform Testing (Thread) Test your package on multiple platforms before CRAN submission. Resources: r-hub.github.io/rhub/ #rstats #RPackageAdvent2025
182
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 20/12/2025
Day 20: Performance Testing with bench Profile and benchmark your package functions. Pro Tip: Include benchmarks in your test suite to catch performance regressions. Resources: bench.r-lib.org #rstats #RPackageAdvent2025
bench::mark(
  my_function(big_data),
  filter_gc = FALSE
)results <- bench::mark(
  old_approach = old_function(data),
  new_approach = new_function(data),
  check = FALSE,  # Skip result equality check
  iterations = 100
)
plot(results)
271
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 19/12/2025
5/ The Bottom Line: goodpractice is your package health checkup. Catches issues before they become problems. Run regularly, maintain quality.
011
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 18/12/2025
Day 18: Use linters! Maintain consistent, readable code style automatically. Usage: lintr::lint_package() styler::style_pkg() Pro Tip: Add both to pre-commit hooks for automatic code formatting. Resources: lintr.r-lib.org #rstats #RPackageAdvent2025
lintr::lint_package()
styler::style_pkg()# .lintr file in project root
linters: linters_with_defaults(
  line_length_linter(120),
  commented_code_linter = NULL
)
1123
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 17/12/2025
Day 17: vcr - Recording API Calls for Tests Record real API responses for reliable, fast tests without hitting live APIs. Pro Tip: Commit cassette files to git for reproducible tests across environments. Resources: docs.ropensci.org/vcr #rstats #RPackageAdvent2025
# In vignette setup
vcr::use_cassette("demo_data", {
  demo_data <- fetch_api_data("example")
})test_that("API returns expected data", {
  use_cassette("github_api", {
    response <- httr::GET("https://api.github.com/users/octocat")
    expect_equal(httr::status_code(response), 200)
  })
})
110
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 16/12/2025
Day 16: Testing with Mocks using testthat Test functions that depend on external resources using testthat's built-in mocking. Pro Tip: Use local_mocked_bindings() to mock functions within the test scope only. Resources: testthat.r-lib.org #rstats #RPackageAdvent2025
120
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 15/12/2025
Day 15: Snapshot Testing with testthat Test complex outputs that are hard to specify exactly. Pro Tip: Review snapshot changes carefully - they capture everything, including whitespace and formatting. #rstats #RPackageAdvent2025
test_that("plots look right", {
  p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
  vdiffr::expect_doppelganger("mtcars-scatter", p)
})
test_that("error messages are informative", {
  expect_snapshot(my_function(bad_input), error = TRUE)
})
141
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 14/12/2025
Day 14: testthat 3rd Edition Features Modern testing with the latest testthat features. Setup: usethis::use_testthat(3) Pro Tip: Use test_that() with descriptive names that explain what should happen. Resources: testthat.r-lib.org #rstats #RPackageAdvent2025
test_that("plot output is stable", {
  p <- my_plot(data)
  vdiffr::expect_doppelganger("basic-plot", p)
})
261
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 13/12/2025
Day 13: covr - Test Coverage Reporting Track how much of your code is tested. use #nocov for code you don't want to cover (like basic R functions etc) Pro Tip: Focus on testing critical functions thoroughly rather than chasing 100%. Resources: covr.r-lib.org #rstats #RPackageAdvent2025
usethis::use_github_action("test-coverage")
usethis::use_coverage()  # Adds codecov badge
covr::package_coverage()
covr::report()  
covr::package_coverage() |>
    covr::zero_coverage()
120
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 12/12/2025
Day 12: README.Rmd Automation Create dynamic READMEs that stay up-to-date with your code. Setup: usethis::use_readme_rmd() Include these sections: 󠁯•󠁏󠁏 Installation instructions 󠁯•󠁏󠁏 Basic usage example 󠁯•󠁏󠁏 Lifecycle badges 󠁯•󠁏󠁏 Build status badges #rstats #RPackageAdvent2025
- name: Render README
  run: Rscript -e 'rmarkdown::render("README.Rmd")'
182
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 11/12/2025
Day 11: NEWS.md and Semantic Versioning Keep users informed about package changes. Create NEWS.md: usethis::use_news_md() Pro Tip: Follow semantic versioning: MAJOR.MINOR.PATCH for breaking.feature.bugfix changes. #rstats #RPackageAdvent2025
# mypackage 1.2.0


## New features
* Added `new_function()` for advanced analysis (#15)


## Bug fixes
* Fixed issue with missing values in `existing_function()` (#12)


## Breaking changes
* `old_param` renamed to `new_param` in `main_function()`
140
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 10/12/2025
Day 10: lifecycle - Managing Function Deprecation Communicate changes to users gracefully with lifecycle badges. Setup: usethis::use_lifecycle() Pro Tip: Use lifecycle stages: experimental → stable → superseded → deprecated. Resources: lifecycle.r-lib.org #rstats #RPackageAdvent2025
#' @lifecycle experimental
new_function <- function() {
  # function body
}
#' @lifecycle deprecated
old_function <- function() {
  lifecycle::deprecate_warn("1.0.0", "old_function()", "new_function()")
  # function body
}
161
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 08/12/2025
Day 8: pkgdown Customization and Deployment Transform your package documentation into a polished website. Advanced customization: Auto-deployment: usethis::use_github_action("pkgdown") Pro Tip: Group functions logically in the reference section for better navigation. #rstats #RPackageAdvent2025
template:
  params:
    bootswatch: flatly

reference:
  - title: "Data manipulation"
    contents:
    - starts_with("mutate")
    - ends_with("_join")
140
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 07/12/2025
Day 7: roxygen2 Advanced Tags and Cross-References 📝 Master documentation with advanced roxygen2 features, with markdown-style writing! 🎯 💡 Pro Tip: Use @inheritDotParams to inherit ... parameter documentation. 📚 Resources: roxygen2.r-lib.org #rstats #roxygen2 #Documentation #RPackageAdvent2025
Cross-references: 🔗

#' @seealso [other_function()], [pkg::function()]
#' @family utility functions
#' @inheritParams parent_functionAdvanced tags: ⚡

#' @section Warning:
#' This function modifies data in place.
#' 
#' `r paste("Generated on", Sys.Date())` # Run R code
1110
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 06/12/2025
Day 6/25: Adding dependencies to your #rstats package 🧵 #rstats #RPackageAdvent2025 The Manual DESCRIPTION Problem: You need to add dplyr to your package. Open DESCRIPTION, find Imports, type "dplyr," hope you didn't typo it, wonder if you need a version constraint, forget to sort alphabetically.
usethis::use_package("dplyr")

usethis::use_package("data.table", min_version = "1.14.0")

usethis::use_package("ggplot2", type = "Suggests")
170
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 05/12/2025
Day 5: Package Structure with pkgdown Site Generation 🌐 Create beautiful documentation websites for your packages! ✨ usethis::use_pkgdown() pkgdown::build_site() 💡 Pro Tip: Use usethis::use_pkgdown_github_pages() for deployment. 📚 Resources: pkgdown.r-lib.org #rstats #RPackageAdvent2025
template:
  bootstrap: 5

navbar:
  structure:
    left: [intro, reference, articles, tutorials]
    right: [search, github]
192
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 04/12/2025
Day 4: .Rbuildignore and .gitignore Best Practices 📁 Control what gets included in your package build and git repository! 🎯 💡 Pro Tip: Use usethis::use_build_ignore() to add entries programmatically. #rstats #BestPractices #Git #RPackageAdvent2025 🗃️
Essential .gitignore entries: 🔒
.Rproj.user
.Rhistory
.RData
.Ruserdata
docs/ Essential .Rbuildignore entries: 🚫
^.*\.Rproj$
^\.Rproj\.user$
^README\.Rmd$
^LICENSE\.md$
^\.github$
^_pkgdown\.yml$
^docs$
^pkgdown$
1120
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 02/12/2025
Day 2: devtools - Essential Development Workflow 🔧 The devtools package streamlines your package development workflow with key functions! 💡 Pro Tip: Use Ctrl/Cmd + Shift + L in RStudio to quickly run load_all() 📚 Resources: devtools.r-lib.org #RPackageDev #RStats #devtools #RPackageAdvent2025
devtools::load_all()    # Load package for testing
devtools::document()    # Generate documentation  
devtools::test()        # Run tests
devtools::check()       # Run R CMD check
devtools::install()     # Install package locallyScreenshot of the development cheat sheet
1112
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 01/12/2025
Day 1: usethis - Project Setup Automation 🎯 The usethis package is your best friend for automating repetitive package development tasks! 🤖 💡 Pro Tip: Set up your global options once with usethis::edit_r_profile() to add your name, email, and preferred license.
# Start a new package
usethis::create_package("~/mypackage")

# Add essential infrastructure
usethis::use_mit_license()
usethis::use_readme_rmd()
usethis::use_github_action("check-standard")
usethis::use_testthat(3)
usethis::use_pkgdown()
usethis package logo, a cute robot with the text "usethis" on its chest.
2267
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 30/11/2025
🎄 ANNOUNCEMENT: R Package Development Advent Calendar 2025! 🎄 Starting December 1st, I'm launching a 25-day journey through modern R package development. here's why you should follow along 🧵 #rstats #RPackageAdvent2025 #OpenSource
A festive digital illustration features the blue R logo wearing a red Santa hat with white trim on the left. To its right stands a green Christmas tree made entirely of curly braces arranged in a triangular shape. White and light-blue %>% pipe symbols float across a dark blue, starry background like snowflakes. A speech bubble above the R logo says “Ho Ho Ho! 📦” in red text. At the bottom, white text reads: “R Package Development Advent Calendar 2025” and below it, “25 Days of Coding Magic • Dec 1–25.”
29733
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 18/11/2025
1. I have a test-suite that currently is not being run properly during testing. I run the tests, it seemingly does something, but there is no output and no tests get marked as failed or successful. It's not skipping, at least it should not. Anyone experienced something like that before?
210
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 18/11/2025
Today I am having some #positron issues, and I can't seem to figure things out. I'm hoping the ever amazing social media hive-mind for #rstats can help me.
121
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 22/10/2025
I made my first #lua filter today, with some #copilot aid. My #quartopub to hugo-md was not rendering figures with alt/caption in a way that let the #hugo theme deal with the styling.
Lua filter for markdown image rendering. Too long to post all text here.yaml frontmatter section of a Quarto document:

---
title: "Lua filter for Quarto to hugo-md image rendering"
author: Dr. Mowinckel
date: '2025-10-22'
format: 
  hugo-md:
    filters:
      - figure-to-markdown.lua
---
120
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 02/10/2025
Just published my new R article: 'Mapply: When You Need to Iterate Over Multiple Inputs'! 🚀 If `sapply` doesn't quite cut it for your multi-variable iterations, `mapply` is your friend. Learn to pair inputs beautifully. #RStats #Mapply drmo.site/bhXeDb
A graphic showing the concept of mapply in R, with multiple input vectors being paired and processed by a function returning a single output vector.
0298
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 03/09/2025
We're building a national application for MRI infrastructure in Norway. Help us make a strong case by completing this survey, whether you're a current user or just interested in the field! nettskjema.no/a/540995 Please boost/repost this! #MRI #Norway #Research #Science

A map of Norway showing the distribution of MRI scanners. Four MRI scanners are placed at different locations across the country. The map is overlaid with two shaded areas: a dark blue area representing a 60-minute travel radius that covers 2.471 million people, and a light blue area representing a 120-minute travel radius that covers 3.510 million people. Arrows show that data from these scanners is uploaded to and stored in a central cloud-based server.
151
ᴅʀ. ᴍᴏᴡɪɴᴄᴋᴇʟ'ꜱ @drmowinckels.io · 02/09/2025
Excited to share my new article on Hugo modules vs. Git submodules for easier website management! Learn practical approaches & share your experience! 🚀 drmo.site/fnJbML #Hugo #Git
Two folders are labeled "Hugo Modules" and "Git Submodules," surrounded by floating islands with code snippets, gears, and file icons, all connected by glowing lines.
041