Advertisement · 728 × 90

Posts by George Stagg

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 ✨

6 months ago 20 2 1 0
Preview
webR - R in the browser Interactive R environment running in your browser. Execute R code, create plots, and analyze data without installing anything.

PSA for anyone beginning to use #wasm #webR to share R code snippets: We have a new short URL for the webR app: webr.sh!

8 months ago 53 16 3 1

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.

8 months ago 2 0 0 0

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!

8 months ago 6 0 1 0

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!

8 months ago 5 1 0 1
Preview
Making libcurl work in webassembly We explain how to make libcurl based applications work in webassembly without changes by tunneling all traffic over a websocket proxy.

You can read more about how this all works in Jeroen's blog post: jeroen.github.io/notes/webass...

8 months ago 1 0 1 0

Here's an example using an R package that relies on {httr2} to query a Hacker News API: webr.r-wasm.org/latest/#code...

8 months ago 1 0 1 0

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.

8 months ago 18 4 3 0
Preview
Making libcurl work in webassembly We explain how to make libcurl based applications work in webassembly without changes by tunneling all traffic over a websocket proxy.

Making libcurl work in webassembly

https://jeroen.github.io/notes/webassembly-curl/

8 months ago 26 11 0 0
Preview
Tidyverse developer day 2025 Join us in Atlanta for tidyverse developer day on September 19, 2025!

We're happy to announce that there will be another #rstats Tidy Development Day after the 2025 posit::conf in Atlanta!

www.tidyverse.org/blog/2025/07...

8 months ago 29 10 1 2
Advertisement
Preview
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.

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

9 months ago 22 5 0 0
Preview
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...

🚀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

1 year ago 20 8 0 0

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

1 year ago 88 10 2 0
Video

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.

1 year ago 65 20 1 1
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 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 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)

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)

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 🎉

1 year ago 49 9 0 0

Ooooooh this looks super fun!

1 year ago 1 0 1 0
Preview
Changelog

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

1 year ago 115 31 3 0
Advertisement
Post image Post image Post image

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

1 year ago 115 30 6 7

Slides on how R-universe uses @cloudflare.social to get fast global routing and caching: jeroen.github.io/technotes2024

1 year ago 12 6 0 0

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 !

1 year ago 26 6 0 0

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

1 year ago 98 21 21 4

{rayshader} one day! Maybe we could it hook up with webGL/webGPU 🤔

1 year ago 1 0 0 0
Preview
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...

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

1 year ago 45 12 3 1
posit conf 2024 talk recordings and workshop materials

posit conf 2024 talk recordings and workshop materials

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

1 year ago 82 33 0 3
R in Production

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.

1 year ago 197 47 3 6
Advertisement
Screenshot of the next generation of data science education website talk.

Screenshot of the next generation of data science education website talk.

🎓 Excited to speak at @pyopensci.bsky.social 's Fall Festival! Join me for insights on the future of #DataScience education using #WebAssembly tools like #Pyodide & #webR with #Quarto.

📅 Nov 1st, Workshop: "Reproducible reports and presentations"

🧵 Thread below!

1 year ago 11 4 1 0
Video

‼️ New blog post! I discuss the benefits of developing C/C++ code for R with the new #Positron IDE (from @posit.co) and provide functions to add to your user profile to automate some current pain points away!

Developing C/C++ code for R with Positron
Link: www.tylermw.com/posts/coding...

#RStats

1 year ago 37 14 2 1
Preview
Winners of the 2024 Shiny Contest - Posit

Winners of the 2024 Shiny Contest
posit.co/blog/winners...
#posit #rstats #shiny #python #pydata

1 year ago 21 7 1 5

I made an #RSats starter pack. Includes a touch of Linux, Python, and dataviz but mostly R. go.bsky.app/Ki7PjpS

1 year ago 203 94 23 12
A screenshot of a demo app consisting of a box on the left and a histogram on the right.

The digit 4 has been hand-written into the box on the left (e.g. with a mouse or touchscreen).

The histogram shows a probability distribution over the digits 0-9, attempting to classify which digit has been drawn. In this case, the bar for the digit "4" is the highest.

A screenshot of a demo app consisting of a box on the left and a histogram on the right. The digit 4 has been hand-written into the box on the left (e.g. with a mouse or touchscreen). The histogram shows a probability distribution over the digits 0-9, attempting to classify which digit has been drawn. In this case, the bar for the digit "4" is the highest.

I recently wrote a deep-dive post discussing the patches we make to LLVM Flang to cross-compile #wasm objects from Fortran source for #webR. It's at gws.phd/posts/fortra..., do take a look if you're interested. There are also some fun little interactive BLAS & LAPACK demos near the end of the post.

2 years ago 2 1 0 0