James Balamuta
@coatless
omnipresent explorer of the unknown, fashionably caffeinated informatics phd, amorous cavalier. design, build, analyze. #rstats on #macos + #webr and #python with #pyodide
Nothing says your niche R Observatory project has made it like a hosting provider gently asking if you are aware you are being attacked. Happy Monday!
Every painter has a gpaint_*() twin that returns a real ggplot, so it works with ggsave() and patchwork() like other ggplot2 extension packages. Thus, you get the same drawing either way, in four palettes.
Formatting further aims to emphasize magnitude by showing significant figures, but the digits it drops go grey rather than vanishing, so 123456.789 still reads as a bold 123 with a faded 457 with decimals rounded if its a large number. NA is red. Inf is blue.
show_indices = 'cell' stamps every matrix cell with the [row, column] that reaches it. Useful when the thing you are explaining is not the values but the addressing.
You already know a data frame is a list whose elements happen to share a length. Your students do not. paint_list() and paint_data_frame() draw the same card until one element changes length and the bottom edge goes ragged. That is the lesson, drawn.
Every R course has the whiteboard moment where you draw a vector as a row of boxes. {paintr} draws it and writes the accessor in each cell, so the diagram and the code are one object. Now on CRAN. #rstats blog.thecoatlessprofessor.com/software-rel...
Now on CRAN: {livelink}. Hand it a string, a file path, or your clipboard and get back a URL that opens a live R session in the browser, code already loaded. CRAN: cran.r-project.org/web/packages... Release notes: blog.thecoatlessprofessor.com/software-rel... #rstats
#webR and #Shinylive already share browser-runnable links from their editors. livelink is a small #Rstats wrapper around that idea: build those links from R (scripts & projects) and decode any of them back into files. GH github.com/coatless-rpk... Post blog.thecoatlessprofessor.com/programming/...
It was part of the underlying rule set in addition to the CRAN cookbook. blog.thecoatlessprofessor.com/programming/...
After 2 years collecting dust on GH, peeky has finally peeked out onto CRAN and kept its own release quiet for a week. It downloads & rebuilds the source behind any published #Shinylive app, in #Rstats | #Python CRAN: cran.r-project.org/package=peeky blog.thecoatlessprofessor.com/programming/...
The best part of getting on CRAN wasn't the acceptance email. It was the PS. This made my whole week.
R CMD check comes back clean. Then CRAN emails you about title case and a missing @ return tag. checktor is in. It catches those before you submit. On CRAN as of last week 7/2! CRAN: cran.r-project.org/package=chec... Blog: blog.thecoatlessprofessor.com/programming/... #rstats
Yes, yes it was a #quarto playground I spied back in the day. Confirmed by @shikokuchuo.net 's #user2026 talk. Quarto levels up via: quarto-hub.com
Thanks, we were overprotective regarding periods. data.table and other packages with periods should now show up on search now.
That's a slice of it. It's free and works for decently well for many of the 25K packages on CRAN as well as having some Bioconductor support (still improving!), so go look up one you maintain or rely on. r-observatory.thecoatlessprofessor.com
R Observatory has pages for authors, not just packages: your published packages, their check results, your overall impact, and a collaborator network graph. Go look up your own. r-observatory.thecoatlessprofessor.com/authors/
ggplot2's license quietly moved from GPL-2 to MIT. R Observatory's version diff catches that, plus minimum R, download size, contributors added or dropped, and how code, tests, and docs grew. r-observatory.thecoatlessprofessor.com/packages/ggp...
Then there's the license side. You add one small package, it brings a few of its own, and now a GPL dependency is sitting under your MIT project. RObs walks the whole install tree so you can see the license picture instead of guessing at it. r-observatory.thecoatlessprofessor.com/packages/ggp...
On each package page, the call graph is tinted by test coverage: functions green where tests reach them, red where they don't. That needs the package to have tests. covr measures your own coverage; here you can see it for other packages too. r-observatory.thecoatlessprofessor.com/packages/Rcp...
The download number everyone cites is a single CRAN mirror. R Observatory also counts conda-forge, Bioconductor, bioconda, r2u, & more, so you see much more of where a package actually gets installed. Still not every source, but well past one mirror. r-observatory.thecoatlessprofessor.com/downloads
Checking on an R package usually takes five open tabs: CRAN, GitHub, download counts, reverse deps, check results. R Observatory collects all of that on one page, for every CRAN and Bioconductor package. r-observatory.thecoatlessprofessor.com #rstats
Signing desktop apps is per developer, per platform: macOS needs Apple Developer credentials ($99/yr), Windows a certificate ($100+/yr). We cover Apple but do not develop on Windows, so the demos there trip SmartScreen. Click More info → Run anyway to launch.
Five runtime strategies to pick from: offline shinylive (WebR/Pyodide), a bundled interpreter, the system install, auto-download on first launch, or a container. One export() call converts the app and builds the installer for each platform.
Try the demos, read the write-up, or browse the code: Demos + docs: r-pkg.thecoatlessprofessor.com/shinyelectron Write-up: blog.thecoatlessprofessor.com/posts/reintr... Source: github.com/coatless-rpk...
Apparently I shipped Mac versions of my iPhone/iPad apps by leaving a checkbox on. Pyodios #python and webRios #rstats run on macOS now. #WebAssembly really does go anywhere. TIL.
A well-earned Rousseeuw Prize for the R Core Team, the quietly heroic group behind #rstats, with Brian Ripley speaking for everyone. The stray photo of Excel is an accidental but perfect tribute to where most of us started before we found their work. www.bbc.com/news/article...