Davis Vaughan's Avatar

Davis Vaughan

@davisvaughan.bsky.social

Building tools for R users, these days mostly in Rust ๐Ÿฆ€ https://blog.davisvaughan.com https://github.com/DavisVaughan

2,833 Followers  |  210 Following  |  171 Posts  |  Joined: 12.11.2023  |  2.1674

Latest posts by davisvaughan.bsky.social on Bluesky

This means the IDE is in control over actual editing the file, so it doesn't look to the IDE like the whole file changed out from under it, and your experience with undo is much much better.

This will only get better in RStudio if you complain to @kevinushey.bsky.social loudly enough ๐Ÿ˜†

03.12.2025 20:52 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yea, this only occurs in RStudio. In RStudio, it's "one shot" as you said. To RStudio, the whole file changed out from under it, so when you undo, you replace the whole file.

To Positron, or any other LSP backed implementation, air sends over _edits_ that the IDE uses to actually modify the file.

03.12.2025 20:52 โ€” ๐Ÿ‘ 1    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Great slides! I love the sentiment of the whole talk. I can't resist a plug for Air, it's the perfect companion for the busy scientist who doesn't want to care about code style ๐Ÿ™‚ github.com/posit-dev/air

26.11.2025 13:15 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I think it's taken us so long to realize we need this because it really is one of those things where you have to stub your toe on it enough to realize it's actually quite hard with just `filter()`!

25.11.2025 18:57 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Put differently, if people say "no! we want custom rules!", then I will happily defend the fact that jarl is a better tool without that ๐Ÿ˜†

21.11.2025 15:00 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I think ruff proved that a linter doesn't have to provide a way for users to add custom rules to be successful. Instead, letting jarl just implement lots of useful rules and categorizing them into families does seem like a much better approach.

21.11.2025 14:59 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Consider if `{webr}` chunks should be treated like `{r}` from the LSPs perspective ยท Issue #870 ยท quarto-dev/quarto For things like formatting requests, where I think you could just treat it like an R chunk and ask Air to format it? https://bsky.app/profile/jshebehe.bsky.social/post/3m63kmqt7yk2w

Not currently, but I've opened github.com/quarto-dev/q... for us to consider

21.11.2025 14:55 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

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

20.11.2025 16:50 โ€” ๐Ÿ‘ 81    ๐Ÿ” 29    ๐Ÿ’ฌ 9    ๐Ÿ“Œ 3

yes, yes it would ๐Ÿ™‚

17.11.2025 22:36 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Update runtimed to fix compatibility issue with the Ark kernel by lionel- ยท Pull Request #40889 ยท zed-industries/zed Closes #40888 This updates runtimed to the latest version, which handles the "starting" variant of execution_state. It actually handles a bunch of other variants that are not documented i...

Much thanks to @lionelhenry.bsky.social and @cirw.in for pushing the rust bindings for Jupyter further and making @posit.co's Ark runtime work in @zed.dev! github.com/zed-industri...

13.11.2025 19:38 โ€” ๐Ÿ‘ 6    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

It's pretty amazing how the `|` and extra `()` really add to the cognitive load vs a simple `,`

08.11.2025 13:20 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

That's purposeful in the name! If you see "when" in one of our function names, then I'd like it to mean that you should see some logical vectors being used in some way.

08.11.2025 13:12 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Strong agree!

08.11.2025 13:11 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I believe it's possible you've misinterpreted the examples. Both `filter()` and `filter_out()` combine conditions using `&`. Have you read the tidyup? github.com/tidyverse/ti...

08.11.2025 02:24 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

new #dplyr filtering function who dis ๐Ÿ˜ meet filter_out()!

๐Ÿ‘ GO PUT A THUMBS UP ON DAVIS'S TIDYUP THINGY ON GITHUB TO SHARE MY ENTHUSIASMMMM!! #rstats #databs

And, you know, provide your thoughts on this newly-proposed function if you have them ๐Ÿ˜Œ

07.11.2025 23:16 โ€” ๐Ÿ‘ 63    ๐Ÿ” 9    ๐Ÿ’ฌ 6    ๐Ÿ“Œ 1

They are different. when_any/all when you have arbitrary logical conditions. if_any/all when you have a single function you want to apply to multiple columns.

07.11.2025 19:37 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Implement `list_pall()` and `list_pany()` by DavisVaughan ยท Pull Request #2092 ยท r-lib/vctrs Closes #1675, 3 years later! If you find yourself questioning whether we need all 3 options for missing = NULL / FALSE / TRUE, the answer is yes: vctrs Data frame Vector list_pall(missing = ...

extremely, they are backed by these github.com/r-lib/vctrs/...

07.11.2025 19:36 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Let me introduce you to `replace_when()` in tidyup #7 ๐Ÿ™‚ github.com/tidyverse/ti...

07.11.2025 19:23 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yes! They are "just" normal vector functions so they can be used anywhere, even outside a dplyr verb. If you are familiar with `pmin()` and `pmax()`, these are really the idea of `pany()` and `pall()`, but with friendly names. See this for a use in `summarise()` github.com/tidyverse/ti...

07.11.2025 19:00 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Using `when_any()` inside `filter()` to simplify conditions combined with an or operator rather than an and operator.

Using `when_any()` inside `filter()` to simplify conditions combined with an or operator rather than an and operator.

`when_any()` allows you to write `filter()`s that combine conditions with `|` rather than with `&`. This is so nice because your conditions stay comma separated, rather than having to squish them into one giant condition that uses `|` and adds extra layers of parentheses.

07.11.2025 16:02 โ€” ๐Ÿ‘ 23    ๐Ÿ” 1    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0

`filter_out()` is not just syntactic sugar!

If you've used `filter()` to drop rows, you've likely had to sprinkle in `& !is.na(col)` all over the place. No more! `filter_out()`'s default behavior should line up much better with your expectations around `NA`s when dropping rows.

07.11.2025 16:02 โ€” ๐Ÿ‘ 23    ๐Ÿ” 2    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 1
Example of using `filter_out()` on the `penguins` dataset, showing how it is much easier than `filter()`, especially with `NA`s

Example of using `filter_out()` on the `penguins` dataset, showing how it is much easier than `filter()`, especially with `NA`s

We are looking for #rstats community feedback on 3 new dplyr functions!

We're aiming to expand the `filter()` family:

- `filter()` to keep rows
- `filter_out()` to drop rows
- `when_any()` and `when_all()` as modifiers

Read more and leave feedback here:
github.com/tidyverse/ti...

07.11.2025 16:02 โ€” ๐Ÿ‘ 148    ๐Ÿ” 34    ๐Ÿ’ฌ 10    ๐Ÿ“Œ 6

TOMORROW, I'm hosting what I'm calling Data Science Lab. This debut session will be our fave Positron settings for #rstats & #python ๐Ÿ˜

I called it DS Lounge at first, but that doesn't feel right. You'll see "Lounge" when you register at pos.it/dslab, but future sessions will be "Lab" ๐Ÿงช๐Ÿ˜Ž #databs

04.11.2025 19:06 โ€” ๐Ÿ‘ 35    ๐Ÿ” 6    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Come hang with me Nov 5th 12PM ET! We'll be chatting with Isabel Zimmerman & Davis Vaughan from Posit about our favorite #Positron settings. New to to the IDE? Come learn! If you're super familiar & have tricks of your own to show, come share! #databs #rstats #python

events.zoom.us/ev/AnxRH-OLd...

24.10.2025 00:30 โ€” ๐Ÿ‘ 19    ๐Ÿ” 9    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1

I think that is exactly what ignoring trailing commas gets you. Say you delete condition 3 from this

filter(
TRUE,
vs==1,
mpg>20,
)

filter(
TRUE,
vs==1,
)

Note how you don't have to remove the trailing comma from `vs == 1,`, so the diff is contained to one line.

22.10.2025 12:36 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

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!

21.10.2025 12:14 โ€” ๐Ÿ‘ 17    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
GitHub - posit-dev/air: R formatter and language server R formatter and language server. Contribute to posit-dev/air development by creating an account on GitHub.

Can confirm that a formatter is "the hard part" and that Biome's infra works extremely well to build on top of, thanks again for all your work on making it generic enough to be reusable by others ๐Ÿ™‚ github.com/posit-dev/air

17.10.2025 12:39 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
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...

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?

16.10.2025 14:13 โ€” ๐Ÿ‘ 27    ๐Ÿ” 32    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 0
Post image

These are my #Positron extensions I've currently installed. Are there any "must haves" missing in my list, what other extensions would you recommend etc.? (answers including "python" will be ignored... ๐Ÿ˜Ž) #rstats #rstudio #vscode

16.10.2025 09:22 โ€” ๐Ÿ‘ 20    ๐Ÿ” 3    ๐Ÿ’ฌ 8    ๐Ÿ“Œ 0
VS Code and Positron โ€“ Air

If you ever edit `air.toml` (or other TOML files), then Tombi is great because it gives you autocompletion, formatting, and highlighting posit-dev.github.io/air/editor-v...

16.10.2025 13:34 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@davisvaughan is following 20 prominent accounts