Sign in

George Stagg

@gws.phd
2.4K followers 222 following 25 posts

Software Engineer @ Posit working on Open Source & AI. Maths. Physics. I like making things.

PostsRepliesMedia
Reposted by George Stagg
Thomas Lin Pedersen @thomasp85.com · 24/09/2026
As announced at posit::conf(2026) #ggsql is now, with the release of version 0.5.0, in Beta. I'm so excited for the future of this project. Read all about what the latest version brings you in the release post
opensource.posit.co
ggsql 0.5.0: Readers, Writers, and Beta status
Announcing ggsql 0.5.0, with new readers and writers for getting data in and out, and the project's graduation to beta status.
14814
George Stagg @gws.phd · 21/09/2026
Some great work here by the QuantStack team! Improving the Fortran on Wasm ecosystem and better NumPy performance in the browser notebook.link/blog/the-las...
notebook.link
The last mile of a long road: faster NumPy in the browser | Notebook.link
NumPy on Emscripten-forge now links OpenBLAS in WebAssembly, with large speedups for matmul and linear algebra in the browser.
063
Reposted by George Stagg
Ryan Johnson @ryjohnson09.bsky.social · 17/08/2026
🎓 Our most requested course is live on Posit Academy: Getting Started with R & the Tidyverse! Learn R basics, wrangle data with dplyr, & build ggplot2 plots all in your browser via Quarto Live. Free course 👇 academy.posit.co/getting-star... #rstats #tidyverse
0112
George Stagg @gws.phd · 26/07/2026
“Remember me” and “Stay signed in” are the biggest lies in our industry.
080
George Stagg @gws.phd · 04/07/2026
This article has some really great advice, especially in the agentic era where code can be rewritten quickly if needed. dannorth.net/blog/best-si... The author articulates things I feel intuitively about building software, particularly the idea of “as simple as possible, but no simpler”.
dannorth.net
Best Simple System for Now
You can have your cake and eat it, as long as you bake it carefully. ‘We can do this the quick way and pay later, or the thorough way and pay now.’ This seems to be a fundamental dichotomy in software...
050
Reposted by George Stagg
Thomas Lin Pedersen @thomasp85.com · 23/06/2026
Do you love maps? Of course you do! With the latest release of #ggsql we now support spatial plotting directly from your database. As a cherry on top, the release also provides powerful in-layer aggregation. Read all about it on the blog
opensource.posit.co
ggsql 0.4.1: Spatial plotting and in-layer aggregation
ggsql 0.4.1 adds support for spatial plotting and data aggregation within layers. Read all about the new features in this release post.
08122
George Stagg @gws.phd · 21/06/2026
At least, that was my experience when describing geometric orientations and rotations, and another occasion when generalising something in C to a Clifford Algebra. I think the jump from Euler angles to quaternions is a much more fundamental and mind expanding experience, at least for rotations.
110
George Stagg @gws.phd · 21/06/2026
I like the elegance of GA, especially Clifford Algebra as an abstraction of quaternions. My main problem with it from a computational point of view is to go from the very elegant way of writing operations to actually _calculating_ something, the additions and multiplications all end up the same.
110
Reposted by George Stagg
Bryce @brycemecum.com · 19/05/2026
Demo at amoeba.github.io/arrow-r-wasm/. I've never had to do so little work to add support for a new platform. Thanks to @gws.phd and team for Web-R and @jeroenooms.bsky.social for the R-Universe infra.
amoeba.github.io
Arrow R WASM Demo
183
George Stagg @gws.phd · 18/05/2026
I vaguely remember typing out “code” to load games from cassette on my dad’s C64, but with no idea how it worked. My first code was probably Logo, self-taught from tutorials bundled with the application. First useful code VBA macros. Stack Overflow wasn’t around but I think Experts Exchange was!
020
George Stagg @gws.phd · 28/04/2026
This week's #TidyTuesday is about agricultural tariffs in the US. Today I've been working some more on #ggsql, so here is a ggsql plot! Code: gist.github.com/georgestagg/...
Distribution of US Agricultural Tariff Rates

Rates at time of introduction, by 5-year period and HTS product section

Source: USITC Tariff Database

Around 2015, high initial rates from DR-CAFTA, Korea, Colombia & Peru FTAs all overlap before declining
0133
George Stagg @gws.phd · 28/04/2026
In my experience anything to do with Wasm is a giant pile of hacks, balancing on a tightrope and held together by rope made of wishful thinking. Also the pile is on fire. You get used to it 😂
020
Reposted by George Stagg
Jeroen Ooms @jeroenooms.bsky.social · 24/04/2026
little technote about a cool trick that me and @gws.phd designed to make WebR load packages faster.
jeroen.github.io
Mounting tar archives as a filesystem in WebAssembly
How to use a file index to mount a tar.gz archive directly into the Emscripten virtual filesystem without extracting it
1255
Reposted by George Stagg
Ansgar Wolsing @ansgarw.bsky.social · 23/04/2026
The Grammar of Graphics for SQL – and it’s for real! 😅 #ggsql brings the Grammar of Graphics to SQL - developed by the team behind ggplot2 at Posit. No need to switch to another tool to create nice charts once you have queried your database. #30DayChartChallenge | Day 22 - New tool #dataviz 📊
A chart showing how the new registrations of BEV developed in Germany between January 2017 and March 2026. From a share below 1 % there were major drivers that a highlighted with annotations:
- June 2020: Purchase incentive introduced.
- Fall 2021: Rush to secure purchase incentive before scheduled 2021 expiry and government change.
Dec 2022: Last chance for maximum incentive before rates decreased in Jan 2023.
Aug 2023: Final month for incentive for commercial buyers; private buyers only thereafter.
Dec 2023: Immediate termination of all EV subsidies following federal budget ruling.
2024-25: Organic growth from 10 percent to 24 percent.
Share of Tesla cars is added from 2021 onwards, showing a typical pattern of a weak first month of the quarter, followed by two stronger months. The share increased up to 6 percent until mid 2023, since then it has declined. Strong uptick in March 2026 (about 3 percent of total new registrations).
14912
George Stagg @gws.phd · 21/04/2026
Yesterday we announced the alpha release of #ggsql 🎉 In celebration, here is a ggsql plot for #TidyTuesday Week 16 of 2026, using a dataset on global health spending! 💰 ggsql source: gist.github.com/georgestagg/...
A plot showing out-of-pocket payments as a percent of total health spending for many countries over time. Countries are grouped using 2022 World Bank income classifications. Reliance on out-of-pocket payments for health care is falling, but many countries still face heavy burdens
0122
Reposted by George Stagg
tiddlydump.bsky.social @tiddlydump.bsky.social · 20/04/2026
Cockroaches Logistic regression SQL When the world is plunged into nuclear winter, these will be the survivors.
1254
George Stagg @gws.phd · 20/04/2026
Yes! The Wasm binary will be made available in the GitHub releases and as an npm package at some point!
120
George Stagg @gws.phd · 20/04/2026
There are interactive examples at ggsql.org, and instructions for installing ggsql and its Positron extension. We've focused on duckdb to start with, so it's super easy to use data from CSV, parquet, and more, without R or Python! I'm really proud of our work so far, please give it a go!
ggsql.org
ggsql
020
George Stagg @gws.phd · 20/04/2026
I've been working on this over the last few months and in my opinion it is just beyond cool. Grammar of graphics for SQL users!
16315
Reposted by George Stagg
Jeroen Ooms @jeroenooms.bsky.social · 27/09/2025
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 ✨
1202
George Stagg @gws.phd · 14/08/2025
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!
webr.sh
webR - R in the browser
Interactive R environment running in your browser. Execute R code, create plots, and analyze data without installing anything.
35316
George Stagg @gws.phd · 07/08/2025
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.
020
George Stagg @gws.phd · 07/08/2025
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!
160
George Stagg @gws.phd · 30/07/2025
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!
051
George Stagg @gws.phd · 30/07/2025
You can read more about how this all works in Jeroen's blog post: jeroen.github.io/notes/webass...
jeroen.github.io
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.
110
George Stagg @gws.phd · 30/07/2025
Here's an example using an R package that relies on {httr2} to query a Hacker News API: webr.r-wasm.org/latest/#code...
110
George Stagg @gws.phd · 30/07/2025
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.
3184
Reposted by George Stagg
daniel:// stenberg:// @bagder.mastodon.social.ap.brid.gy · 30/07/2025
Making libcurl work in webassembly jeroen.github.io/notes/webassembly-…
jeroen.github.io
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.
02611
Reposted by George Stagg
Max kuhn @topepo.bsky.social · 21/07/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...
tidyverse.org
Tidyverse developer day 2025
Join us in Atlanta for tidyverse developer day on September 19, 2025!
12810
George Stagg @gws.phd · 14/07/2025
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...
tidyverse.org
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.
0225
Reposted by George Stagg
pyOpenSci @pyopensci.org · 04/03/2025
🚀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
buff.ly
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...
0208
Reposted by George Stagg
Joe Chou @incidentalfindings.org · 21/12/2024
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
28810
Reposted by George Stagg
Claus Wilke @clauswilke.com · 10/01/2025
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.
16420
George Stagg @gws.phd · 04/01/2025
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)
0499
George Stagg @gws.phd · 01/12/2024
Ooooooh this looks super fun!
110
Reposted by George Stagg
Jenny Bryan @jennybryan.bsky.social · 26/11/2024
📦 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...
usethis.r-lib.org
Changelog
311531
Reposted by George Stagg
Colin 🤘🌱🏃‍♀️ @colinfay.bsky.social · 19/11/2024
#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...
611530
Reposted by George Stagg
Jeroen Ooms @jeroenooms.bsky.social · 19/11/2024
Slides on how R-universe uses @cloudflare.social to get fast global routing and caching: jeroen.github.io/technotes2024
0126
Reposted by George Stagg
Christophe Dervieux @cderv.bsky.social · 17/11/2024
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 !
0266
Reposted by George Stagg
Garrick Aden-Buie @grrrck.xyz · 08/11/2024
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
2110121
George Stagg @gws.phd · 06/11/2024
{rayshader} one day! Maybe we could it hook up with webGL/webGPU 🤔
010
George Stagg @gws.phd · 06/11/2024
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...
tidyverse.org
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...
34512
Reposted by George Stagg
Posit @posit.co · 31/10/2024
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
08232
Reposted by George Stagg
Hadley Wickham @hadley.nz · 29/10/2024
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.org
R in Production
319546
Reposted by George Stagg
James Balamuta @coatless.bsky.social · 29/10/2024
🎓 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!
Screenshot of the next generation of data science education website talk.
1114
Reposted by George Stagg
Tyler Morgan-Wall @tylermw.com · 26/10/2024
‼️ 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
23714
Reposted by George Stagg
Posit @posit.co · 22/10/2024
Winners of the 2024 Shiny Contest posit.co/blog/winners... #posit #rstats #shiny #python #pydata
posit.co
Winners of the 2024 Shiny Contest - Posit
1206
Reposted by George Stagg
Jeremy Allen @jeremy-data.bsky.social · 20/10/2024
I made an #RSats starter pack. Includes a touch of Linux, Python, and dataviz but mostly R. go.bsky.app/Ki7PjpS
2320393
George Stagg @gws.phd · 14/03/2024
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.
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.
021