Jon Harmon (he/him/his)
banner
jonthegeek.com
Jon Harmon (he/him/his)
@jonthegeek.com
🗣️#RStats #DataScience #Dogs
@dslc.io Executive Director
#TidyTuesday poster

🔗http://linkedin.com/in/jonthegeek
🔗http://github.com/jonthegeek
There's a clearer definition that you might be more familiar with in section 2.3 of a familiar paper: tidy-data.pdf share.google/GlF5MJ73iS1a...
1. Each variable forms a column.
2. Each observation forms a row.
3. Each type of observational unit forms a table.
share.google
November 12, 2025 at 4:52 AM
bsky.app/profile/jont...

It's specifically `.bsky` (with a period) so it won't show up in my Environment panel in RStudio (nor session variables in Positron, evidently, yay!) and generally stays out of the way.
# https://bsky.app/settings/app-passwords
keyring::key_set("BSKY_APP_PASS")
.bsky <- function(text, ..., user = "jonthegeek.com", key = "BSKY_APP_PASS") {
bskyr::bs_post(text = text, ..., user = user, pass = keyring::key_get(key))
}
.bsky("Hello from my #RStats console, Bluesky!")
bsky.app
November 8, 2025 at 4:33 PM
I'm figuring out the most straightforward way to add "Google '{dataset description} controversy'" to my dataset todos in a way that I won't forget. I'm also going to try to make better use of the dormant `#club-tt_testers` on DSLC.io to review datasets ahead of time, now that I have a runway.
dslc.io
DSLC.io
November 8, 2025 at 4:31 PM
FYI, we've removed this dataset, after being advised of www.studocu.com/en-us/docume... (summarized here: researchblog.duke.edu/2016/10/24/d...). Sorry for accidentally embroiling you in controversy!
www.studocu.com
November 8, 2025 at 4:19 PM
Because I didn't know better. Thanks you for this post! I've removed that dataset, and am working on improvements to my dataset submission review process to avoid repeating this mistake. If you identify an issue in the future, we'd love an issue or PR (github.com/rfordatascie...).
rfordatascience/tidytuesday
Official repo for the #tidytuesday project. Contribute to rfordatascience/tidytuesday development by creating an account on GitHub.
github.com
November 8, 2025 at 4:17 PM
Yup! Ok, this works!
November 8, 2025 at 3:00 PM
Can the uri in the {bskyr} result be used as the url for `reply`?
November 8, 2025 at 2:59 PM
I don't think I needed an extra auth stepping, confirming
November 8, 2025 at 2:50 PM
While digging in there to copy/paste the code I found a thing I started but forgot about 😁
bsky.app/profile/jont...
I started to add a `.bsky()` function to my #RStats .Rprofile about a year ago and never finished it until just now. Let's see if it works!
November 8, 2025 at 2:49 PM
This is in a branch named "encounters" of a package I'm working on.
November 8, 2025 at 2:36 PM
That's inside this:
```
if (interactive() && getOption("load_specials", FALSE)) {
## Fancy stuff
}
```

And at the top I have `options(load_specials = TRUE)`, so I can comment that out to turn off all my fancy stuff when I'm testing something.
November 8, 2025 at 2:20 PM
This is how I learned that Rstudio shows the current branch in the title bar. Doh!

I have this in my .Rprofile to show branch & time in console on RStudio & Positron:
```r
prompt::set_prompt(
function(...) {
paste0("[", prompt::git_branch(), " ", format(Sys.time(), "%T"), "] > ")
}
)
```
November 8, 2025 at 2:20 PM
That caveat is what has killed all of my time-tracking plans. How has it gone for you?
November 6, 2025 at 1:41 PM
#TidyTuesday dataset curation PRs are #RStats only right now, but I'd welcome a PR to make it work for #PyData and/or #JuliaLang! You'd need to help me adapt the automations to your preferred programming language, but I'd love to work with you on that!
October 24, 2025 at 11:28 AM