Thomas Lin Pedersen's Avatar

Thomas Lin Pedersen

@thomasp85.com

Visualisation and graphics @posit.co Classic Generative Art Weirdo using πŸ–€ and R: http://thomaslinpedersen.art and http://deca.art/thomasp85 he/him

8,665
Followers
148
Following
410
Posts
28.04.2023
Joined
Posts Following

Latest posts by Thomas Lin Pedersen @thomasp85.com

|οΏ£οΏ£οΏ£οΏ£οΏ£οΏ£οΏ£οΏ£|
| SEIZE THE |
| MEANS OF |
| ART |
| PRODUCTION |
| οΌΏοΌΏοΌΏοΌΏοΌΏοΌΏοΌΏ|
(\__/) ||
(β€’γ……β€’) ||
/ γ€€ γ₯

05.03.2026 09:31 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

I built a free tool that shows how night-time lights have changed anywhere on Earth.

Here's how it works and why it's useful for monitoring conflict, disasters, development and growth. πŸ‘‡

02.03.2026 21:50 πŸ‘ 94 πŸ” 48 πŸ’¬ 9 πŸ“Œ 1
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
Post image

Screens #521 (2022)

23.02.2026 19:11 πŸ‘ 16 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

that's just too big, man... too big...

23.02.2026 16:24 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

looking around a bit I'm not sure which current HP model I'd liken mine to

23.02.2026 16:24 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

damn 33" is huge...

23.02.2026 16:22 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This is the model name back in the days: HP Z27 27-inch 4K UHD Display

It has the niceness of charging the MacBook through the same cable as the video. That is probably more standard these days but back then it was pretty premium

23.02.2026 16:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

For reference I've had the same monitor for the totality of my Posit employment

23.02.2026 16:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've been happy with the HP Z line of monitors

23.02.2026 16:12 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Upcoming CFP Deadlines

Upcoming CFP Deadlines

posit::conf(2026) call for talks may be over, but there are still many #RStats & #Python events where you can submit! Maybe we'll see you there:

πŸ‡¬πŸ‡­ Ghana R Conference (Jul 9-10, Virtual): Feb 25 ghana-rusers.org
🐍 SciPy (Jul 13-19, Minneapolis, MN): Feb 25 pretalx.com/scipy-2026/cfp

23.02.2026 15:16 πŸ‘ 5 πŸ” 2 πŸ’¬ 2 πŸ“Œ 0

I think it all started when our PM had the audacity to call Trumps idea of buying Greenland "absurd" during his first playdate with presidency

23.02.2026 10:02 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
rainbowR Conference 2026 Feb. 25 – 26, 2026

🌈 rainbowR is next week!

⏳ Registration closes this Sunday at 23:59 UTC.

If you’re planning to join us, now’s the time to sign up πŸ’œ

πŸ”— pretix.eu/rainbowr/con...

#RStats #LGBTQ #QueerInTech #DataScience

20.02.2026 12:10 πŸ‘ 10 πŸ” 11 πŸ’¬ 2 πŸ“Œ 2
Post image

Storms 3118 (2020)

#rstats and #ggplot2

20.02.2026 08:49 πŸ‘ 13 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Here's a small portion of an animated bumper I made to promote a video game from @owlcatgames.bsky.social (Blind Descent). Seeing the latest advances in generative AI and how they've invaded space, I feel lucky to have at least produced this little piece from start to finish πŸ₯².

19.02.2026 12:03 πŸ‘ 1323 πŸ” 342 πŸ’¬ 31 πŸ“Œ 6

We have all met a physicist who believe with great ferocity that all sciences are just varying degrees of applied physics

19.02.2026 14:03 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

came here to compliment that analogy as well

19.02.2026 13:42 πŸ‘ 4 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Post image

Inprecision #26 (2022)

GLSL

19.02.2026 11:21 πŸ‘ 12 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail
19.02.2026 06:53 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I'm pretty sure confidence intervals show how confident you are in interpreting the interval

19.02.2026 06:43 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

First they came for our virologist
and I did not speak out
because I'm not a virus

...

or however it goes

18.02.2026 15:07 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

I started making this R package 6 years ago. I finally have it in a state I'm happy with, thanks to Claude Code #Rstats github.com/MattCowgill/...

18.02.2026 11:48 πŸ‘ 188 πŸ” 38 πŸ’¬ 8 πŸ“Œ 6

igraph?

18.02.2026 10:21 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Wonder 152 (2024)

GLSL

18.02.2026 08:50 πŸ‘ 17 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
plumber2 hex

plumber2 hex

Announcing plumber2 0.2.0 for APIs in #RStats πŸ”§

plumber2 0.2.0 brings essential observability and authentication features to your R workflows:

Native support for traces and metrics, streamlined request handling for higher throughput, and more!

Read more: tidyverse.org/blog/2026/01...

17.02.2026 20:05 πŸ‘ 27 πŸ” 7 πŸ’¬ 0 πŸ“Œ 1
Post image

Phases 2423 (2019)

#rstats and #ggplot2

17.02.2026 08:21 πŸ‘ 26 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Constructive 72 (2021)

#rstats and #ggplot2

16.02.2026 07:57 πŸ‘ 25 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

"You need to show it relative to 100%!" I yell, as the police officer takes me away for drunk driving

15.02.2026 08:33 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Entrance (2022)

GLSL and Budapest Symphonic Orchestra (sound on)

14.02.2026 09:49 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

TSLAMP by MGMT would be the perfect soundtrack for this painting - beautiful

12.02.2026 11:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0