George Stagg
@gws.phd
2.3K followers 220 following 13 posts
Software Engineer @ Posit working on webR & WebAssembly. Maths. Physics. I like making things.
Posts Media Videos Starter Packs
Reposted by George Stagg
jeroenooms.bsky.social
Super excited for the new release of #rstats V8 which now also works in WebR by running js/wasm natively in web worker (thanks to @gws.phd). Will release some cool new packages soon to show the potential of WASM in R ✨
gws.phd
That’s correct, unfortunately. It’s a fundamental limitation of running the Shiny server under Wasm in the user’s browser. Everything is visible in the browser dev tools.
gws.phd
The webR changes haven’t filtered down into Shinylive yet. Once we cut a new release, and Shinylive is updated, we’re hoping curl and friends should work well!
gws.phd
Even ellmer works! Here using a provider that does not require auth: webr.r-wasm.org/latest/#code...

Of course, the usual rules about API keys in webR still apply: *ALL* R source is visible client-side, so *NEVER* publish anything that actually includes any secret keys. This is just a neat demo!
gws.phd
Here's an example using an R package that relies on {httr2} to query a Hacker News API: webr.r-wasm.org/latest/#code...
gws.phd
Thanks to some joint work with @jeroenooms.bsky.social the latest dev build of webR now supports the {curl} package, along with many other packages that rely on it! 🎉 If you're able to use a WebSocket SOCKS proxy (outside of the browser), you can now use {curl} to make HTTP requests in webR.
Reposted by George Stagg
gws.phd
webR 0.5.4 has been released! Some new updates include sharing URLs for the webR app, filesystem support for JupyterLite 0.6, and an upgrade to the Emscripten runtime. Read all about it in my latest post on the tidyverse blog: www.tidyverse.org/blog/2025/07...
webR 0.5.4
webR 0.5.4 brings the latest version of R to the browser, with sharing URLs, an upgraded Emscripten runtime, and filesystem support for JupyterLite.
www.tidyverse.org
Reposted by George Stagg
pyopensci.org
🚀Quarto Live developer @gws.phd shows how to make interactive, explorable, & reproducible docs. #Python & R in the browser—no setup, no servers!

✅ Live coding exercises & auto-checking
✅ Works on mobile!

📺 Watch now → buff.ly/41BnAsT
#Quarto #DataScience #WebAssembly
Quarto Live: WebAssembly powered data science learning | pyOpenSci
🚀 How Quarto Live Brings Code to Life in the Browser! 🌍✨Quarto Live takes interactive coding & publishing to the next level with WebAssembly-powered execut...
buff.ly
Reposted by George Stagg
incidentalfindings.org
As far as I’m concerned, #webr and #shinylive is indistinguishable from magic.

I can’t believe that since first installing #quarto-webr a few hours ago till now, I’ve gotten a relatively complicated #shinyapp exported, deployed, and running serverless.

This is magic. #rstats
Reposted by George Stagg
clauswilke.com
I have now also ported the color vision deficiency simulation app to Shiny live. Advantage is this runs entirely in your browser, even though you "upload" the image it never leaves your computer.
gws.phd
Recently I've been working on getting #polars running in #pyodide. This was a fun one, even requiring patches to LLVM's #wasm writer! Everything has now been upstreamed and earlier this week Pyodide v0.27.0 released, including a Wasm build of Polars usable in Pyodide, Shinylive and Quarto Live 🎉
A screenshot of a Pyodide REPL executing Polars code:

import polars as pl
import requests
r = requests.get("https://raw.githubusercontent.com/pola-rs/polars/refs/heads/main/examples/datasets/foods2.csv")
pl.read_csv(r.content).group_by("category").mean() A screenshot of a Quarto Live code cell executing Polars code:

import polars as pl
import requests
r = requests.get("https://raw.githubusercontent.com/pola-rs/polars/refs/heads/main/examples/datasets/foods2.csv")
pl.read_csv(r.content).group_by("category").mean() A screenshot of a Shinylive app using Polars code:

from shiny import App, render, ui
import polars as pl
from pathlib import Path

app_ui = ui.page_fluid(
    ui.input_select("cyl", "Select Cylinders", choices=["4", "6", "8"]),
    ui.output_data_frame("filtered_data")
)

def server(input, output, session):
    df = pl.read_csv(Path(__file__).parent / "mtcars.csv")
    
    @output
    @render.data_frame
    def filtered_data():
        return (df
                .filter(pl.col("cyl") == int(input.cyl()))
                .select(["mpg", "cyl", "hp"]))

app = App(app_ui, server)
gws.phd
Ooooooh this looks super fun!
Reposted by George Stagg
jennybryan.bsky.social
📦 usethis 3.1.0 📦 is released. `use_vignette()` and `use_article()` can now help you initiate a Quarto (.qmd) vignette or article. #rstats

usethis.r-lib.org/news/index.h...
Changelog
usethis.r-lib.org
Reposted by George Stagg
colinfay.bsky.social
#RStats I'm so happy to finally share what we've been experimenting on at ThinkR for the past couple of weeks — A native mobile app that can run R code through #webR

Read more at 👉 rtask.thinkr.fr/youve-been-w...
Reposted by George Stagg
jeroenooms.bsky.social
Slides on how R-universe uses @cloudflare.social to get fast global routing and caching: jeroen.github.io/technotes2024
Reposted by George Stagg
cderv.bsky.social
We’ve been working hard on next quarto version and it is coming out soon. It is already available so if you are ok to try it please do ! Feedback welcome to find the remaining bugs that could still be hidden. Thanks !
Reposted by George Stagg
grrrck.xyz
I made a starter pack with #Shiny for #RStats and #Python devs and friends! And if you're a Shiny person and want to be included, let me know.
go.bsky.app/BFEQ1HY
gws.phd
{rayshader} one day! Maybe we could it hook up with webGL/webGPU 🤔
gws.phd
I've written a series of blog posts about what I've been up to over the last few months! 📝

In the posts I talk about webR, R Shinylive, and a new Quarto extension for interactive code exercises.

Take a look if you're interested in the latest for R for WebAssembly.
www.tidyverse.org/blog/2024/10...
WebAssembly roundup part 1: webR 0.4.2 - Tidyverse
First in a series of blog posts about what's new in R for WebAssembly. The latest release of webR 0.4.2 is now available, with updates to the viewer mechanism, support for displaying htmlwidgets, an I...
www.tidyverse.org
Reposted by George Stagg
posit.co
Posit @posit.co · Oct 31
No trick, all treats - posit::conf(2024) talks are now on YouTube! 🍬

Over a thousand people gathered in Seattle and online to dive into all things open-source data science. With 100+ talks, there's a lot to explore!

Check out the playlist: www.youtube.com/playlist?lis...

#RStats #Python
posit conf 2024 talk recordings and workshop materials
Reposted by George Stagg
hadley.nz
R in Production, r-in-production.org, is a new book that will help you put R into production, coupled with (in the near future) new tools to make the process less painful. I'm working on this with @thomasp85.com , @gaborcsardi.bsky.social, and @hfrick.bsky.social.
R in Production
r-in-production.org