James Balamuta
@coatless.bsky.social
1K followers 15 following 290 posts
omnipresent explorer of the unknown, fashionably caffeinated informatics phd, amorous cavalier. design, build, analyze. #rstats on #macos + #webr and #python with #pyodide
Posts Media Videos Starter Packs
Pinned
coatless.bsky.social
Thank you @pyopensci.org! 🙏 These 6 months as EiC have been incredibly rewarding - from reviewing innovative tools to working with an amazing community of developers. Excited to continue contributing to making computational science more accessible! #OpenSource #Python #DataScience
pyopensci.org
Cheers to James Balamuta for wrapping up 6 months as pyOpenSci Editor in Chief! 🎉 His #R + #Python skills + passion for accessible tools made a big impact. Grateful he’ll keep contributing!

💡 Want to join our peer review crew? www.pyopensci.org/software-pee...
Graphic highlighting James Balamuta as pyOpenSci’s Editor in Chief for Winter 2025. On the left is a photo of James standing outside with a sunset over water in the background. The right side features text about James’s community impact, passions, and a fun fact about traveling to Turkey. The pyOpenSci logo appears at the top along with links to the organization’s website, Mastodon, and Discourse forum.
coatless.bsky.social
I did; but at the end of the day it's just eye candy for a README that I touch once every 3 years. The license section at the end of the README with "GPL (>=2)" is more than sufficient. In the end, I'm trying to pay it forward to my future self on simplifying CRAN maintenance tasks pings.
coatless.bsky.social
Aye, I noticed the timeout persisting despite the changes. So, to get ~10 packages update; I'm just dropping all badges in the README sin the R CMD check one.
coatless.bsky.social
Nothing makes you feel vintage like your license getting moved to the retirement home directory. GNU put GPL 2.0 in /old-licenses/ causing #rstats packages to throw URL warnings. Somewhere a CRAN maintainer is rubbing their hands together, ready to trigger 847 email requests...
Screenshot of a code diff showing line 10 being updated. The removed line (red) shows a GPL 2.0 license URL pointing to gnu.org/licenses/gpl-2.0.html, while the added line (green) shows the same URL updated to point to gnu.org/licenses/old-licenses/gpl-2.0.html, indicating the license documentation has been moved to an 'old-licenses' directory.
coatless.bsky.social
Flying to Istanbul to meet my SO's family felt like nervous excitement. Flying to California felt like possibility. Flying back home for a funeral feels like gravity remembering how to work. Now Illinois feels like living in a house where all the furniture is made of memories.
coatless.bsky.social
macOS 26 Tahoe + R 4.5.1: Keeps #rstats moving along on #macOS. Upgrade confidently, just remember to update Xcode CLI afterwards if using stan & compiled code.
A screenshot showing R 4.5.1 working under RStudio 2025.9.0.387 on macOS Tahoe (26.0.0) with a call to compiled code requiring gfortran through RcppArmadillo. A screenshot showing R 4.5.1 working under Positron 2025.9.0 (Universal) on macOS Tahoe (26.0.0) with a call to compiled code requiring gfortran through RcppArmadillo.
coatless.bsky.social
R that travels light on #Linux: Portable R AppImages.

Now working everywhere: your Ubuntu, friend's Fedora, cousin's Arch setup (btw)

No sudo, no tears, just base R science ✨

(package support coming soon!)

#RStats #AppImage #DataScience
Terminal session showing the download and execution of an R AppImage from GitHub releases. The commands show wget downloading the ARM64 AppImage built on Ubuntu 24.04, making it executable with chmod +x, and then launching it to run R statistical analysis including a linear regression model with income vs age data, demonstrating the workflow from GitHub release to running statistical computations. VS Code showing the successful completion of an R AppImage build process. The terminal displays the build summary indicating a 76MB minimal R 4.5.1 AppImage for ARM64 architecture with package installation disabled (immutable). The output shows usage examples and confirms the build completed successfully, with R actually running at the bottom showing the standard R startup message and executing system environment commands, demonstrating the fully functional portable R installation. VS Code terminal showing R 4.5.1 running from an AppImage on ARM64 architecture. The file explorer shows the typical AppImage directory structure with usr/bin, usr/lib, and usr/share folders, demonstrating the self-contained portable nature of the R installation.
coatless.bsky.social
Linux support 🐧

Same #rshiny → desktop workflow on #Fedora 42 aarch64:

shinyelectron::export() → #rshinylive#AppImage → portable #Linux app

Plot twist: no more "go buy yourself a real computer" moments - you get zero #rstats dependencies too! The condescending Unix users have won this round.
coatless.bsky.social
Core Shiny Application (Shinylive Layer): 61.9 MB

This represents the base Shiny application code and dependencies

Platform-Specific Packaging Overhead (ARM64):

Windows: 300.1 MB
macOS: 264.1 MB
Linux: 304.9 MB

Total Application Size by Platform:

Windows: 362 MB
macOS: 326.4 MB
Linux: 366.8 MB
Windows 11 File Explorer displaying the Programs folder with properties dialogs open for "My-App-Title," showing the application size as 362 MB (379,900,896 bytes) in the Local Programs directory, demonstrating the Windows build footprint. macOS Finder window showing the contents of an "electron-app" folder with various build artifacts from running {shinyelectron} to create a standalone R Shiny App, highlighting the "converted-app" executable file sized at 326.4 MB, representing the packaged macOS application bundle. Screenshot of RStudio IDE on Ubuntu 24.04 showing R code in the editor and a system file browser dialog displaying the "linux-arm64-unpacked" folder containing 76 items with a total size of 366.8 MB, representing the Linux build of the standalone R Shiny application created using {shinyelectron} with shinylive. macOS Finder window displaying the contents of the "converted-app" folder with the "shinylive-app" subfolder selected and its info panel open, showing the Shiny application components (app.json, index.html, shinylive folder, and shinylive-sw.js) with a total size of 61.8 MB (244 items). This is the core Shinylive layer footprint shared across applications.
coatless.bsky.social
{flexdashboard} will not work as that requires a genuine R shiny backend. The rest depend on capabilities of webR and what assets are included in r-shinylive.

For persistence, electron does allow writing to disk in the user directory. This isn't supported under the VFS for shinylive variant though
coatless.bsky.social
{golem} should work with some creativeness, e.g. place app.R in the package-level directory:

pkgload::load_all(export_all = FALSE, helpers = FALSE, attach_testthat = FALSE)
options( "golem.app.prod" = TRUE)
mygolemapp::run_app()

This side steps the custom WASM compile of the golem app.
coatless.bsky.social
Eh, I've tended to stay away from VMware post-broadcom acquisition. Appreciate the note though...
coatless.bsky.social
Correct, we're not embedding genuine R (like prior attempts). We're limited by webR/Shinylive capabilities. If the package compiles under webR, you're set!

As of webR v0.5.5, making HTTP requests was addressed by George. But, genuine R embedding is on the feature list.
coatless.bsky.social
Agreed. More coming soon...
coatless.bsky.social
Should work out of the box on Windows 10. I only have a Windows 11 license to test with.
coatless.bsky.social
By request: Same #rshiny app → native #electron desktop app workflow now on #Windows11

shinyelectron::export() → #rshinylive → installer → app.exe

[Worth the Parallels license to record this from my Mac]

Still no #rstats dependencies for end users. Living the cross-platform life (virtually).
coatless.bsky.social
It’s straightforward under shinylive variants at the cost of needing to be WebAssembly compliant + lowers the security risk considerably (VFS instead of FS access).

Still working on genuine embedded R. Likely possible with outsourcing installer packaging on different OS to GH actions.
coatless.bsky.social
JJ Allaire & Charles Teague (of Posit fame) launched Meridian Labs, a nonprofit dedicated to frontier AI research and evaluation tools.

Early focus: LLM evals + visualization & SWE Agent tooling for Inspect AI.

meridianlabs.ai | github.com/meridianlabs-ai

#AI #Research
Meridian Research Labs
meridianlabs.ai
coatless.bsky.social
Yes, the goal is to create a standalone Shiny application that mirrors a traditional application. For now, the experimental build supports R shiny apps via `r-shinylive`. This will likely be available for PyShiny via `py-shinylive`; but, that's a ways off and maybe a Python package later ;)
coatless.bsky.social
Prototyping #rshiny apps to native #electron desktop apps:

shinyelectron::export() → #rshinylive conversion → .dmg → Native Mac app

Zero #rstats dependencies for end users! Early days but promising 👀
coatless.bsky.social
I think that covers SciServer Essentials v1.0. There are 4 different versions. The latest has software at #rstats 4.2.2 and #Python 3.9 inside of #JupyterLab.

The R+RStudio image has R 4.2.1 and RStudio Build 2022.07.2.

Maybe raise a ticket to update the underlying suites?
Screenshot of JupyterLab launcher interface showing the main dashboard with two sections: "Notebook" and "Console". Each section displays kernel options for Python 3.9 (py39) and R 4.2.2 with their respective icons. The left sidebar contains a file browser showing "Storage" and "Temporary" folders, both modified "a minute ago", with a search filter box at the top. The interface includes typical JupyterLab navigation elements and is running on sciserver.org as shown in the browser tab. Screenshot of RStudio Server interface showing an "About RStudio Server" dialog box. The dialog displays version 2022.07.2 Build 576 with copyright information from 2009-2022 RStudio, PBC. Behind the dialog, the RStudio interface is visible with the console panel showing R version 4.2.1 startup information, a terminal tab, and various menu options (File, Edit, Code, View, Plots, Session, Build, Debug, Profile, Tools, Help). The right side shows a Tutorial panel and file browser. The browser tab indicates this is running on sciserver.org.
coatless.bsky.social
TIL about SciServer.org: Free scientific computing platform with persistent accounts (#NSF-funded). All the power of #JupyterHub without the setup hassle. Focus on building great teaching + research notebooks, not infrastructure! #OpenScience
Screenshot of SciServer homepage showing a blue header with the SciServer logo and "Collaborative data-driven science" tagline. The main section features a colorful nebula background with white text reading "The Science Platform" and "A collaborative environment for server-side analysis with extremely large datasets." Below are six feature boxes with icons for About, Hosted Datasets, Compute Images, Science Domains, Education, and Help, each containing brief descriptions. The page includes a "Login to SciServer" button and NSF funding acknowledgment at the bottom. Screenshot of SciServer's Education page with the same blue header design. The main content shows "Education" as the page title, followed by explanatory text about using SciServer to teach data science. The page includes sections on "How to Teach with SciServer" with detailed instructions, and an "Examples" section featuring astronomy course examples from University of St Andrews and University of North Carolina Asheville, with links to GitHub repositories containing sample notebooks.
coatless.bsky.social
{multideploy} is now on CRAN! 🎉

This #rstats 📦 streamlines file deployments across multiple #GitHub repositories. Update CI workflows, configs, and templates at scale with precision + automated PRs.

Install with: install.packages("multideploy")

CRAN: cran.r-project.org/package=mult...
coatless.bsky.social
Request fulfilled! Converted {macrtools::openmp_*()} #OpenMP suite into standalone shell scripts for #macOS:

🎯 Auto Xcode detection & OpenMP library mapping
🔬 Diagnostics tests
🧹 Safe uninstall

📦 Repo: github.com/coatless-she...
📝 Post: blog.thecoatlessprofessor.com/programming/...
The toolkit consists of three focused shell scripts: install-openmp.sh handles automatic Xcode version detection and downloads official CRAN binaries; check-openmp.sh performs diagnostics across five categories; and uninstall-openmp.sh provides safe removal with confirmation prompts and cleanup guidance.