Carson Sievert (he/him)
@cpsievert.bsky.social
1.4K followers 180 following 4 posts
Shiny engineer at Posit (formerly RStudio). #rstats #python
Posts Media Videos Starter Packs
Reposted by Carson Sievert (he/him)
thomasp85.com
I am super hyped to finally share the first release of plumber2 with all of you. This has been the center of my attention for a big part of 2025 and I hope you'll find it a worthy update to the venerable plumber package.

The blog post will tell you more

#rstats
plumber2 0.1.0
plumber2, a complete rewrite of plumber, has landed on CRAN, providing a modern, future proof solution for creating web servers in R. Read all about the new features here.
www.tidyverse.org
Reposted by Carson Sievert (he/him)
kylewalker.bsky.social
On the blog: building an AI-powered location explorer with Shiny and Claude

Intrigued by apps you’ve seen that bridge GIS and LLMs? You can build them yourselves in #rstats!

Read the post: walker-data.com/posts/ai-loc...
Building an AI-powered location explorer with Shiny and Claude – WALKER DATA
GIS, demographics, and data science consulting
walker-data.com
Reposted by Carson Sievert (he/him)
posit.co
Posit @posit.co · Jul 14
Announcing Orbital for Python! For Scikit-learn users, this tool transforms your ML pipelines into SQL queries, letting predictions run directly in your database without a #Python environment.

Learn more: posit.co/blog/introdu...
A white stylized serpent or "S" curve with a circular head and dot for an eye, is centered on a dark blue circle. Behind the circle is a dark blue background with lighter blue vertical lines of varying heights, resembling an audio waveform.
Reposted by Carson Sievert (he/him)
hadley.nz
At Posit, we love @typst.app:

⚡ Make PDFs in milliseconds, not minutes
✨ The power of LaTeX with today's technologies
✍️ Modern typography (including emojis!)
🧠 Clear mental model

So I'm thrilled to announce that we're now supporting its development: posit.co/blog/posit-a...

#rstats
Posit
We’re happy to announce that we’re supporting Typst by funding one of their full-time engineers.
posit.co
Reposted by Carson Sievert (he/him)
simonwillison.net
Risky post!

(This is great, fun to read and the frustrated tone throughout really does capture how it feels sometimes to be an experienced programmer trying to argue that "LLMs are actually really useful" in many corners of the internet)
cpsievert.bsky.social
This feature is currently only available in python but is coming to R soon
Reposted by Carson Sievert (he/him)
chadwhitacre.com
Found some @opensourcepledge.com member companies at #pycon!
Reposted by Carson Sievert (he/him)
noamross.net
Wow, this talk-to-the-data #RStats dashboard of terminated #NSF grants is really something.
Screenshot of Shiny querychat dashboard, showing chat interface where I ask "Which universities lost the most STEM directorate funding?".  It responds with:

To find out which universities lost the most STEM Education funding from the NSF directorate, I'll query the database for sums of the obligations by organization and sort the results. Please hold on one moment.

SELECT org_name, SUM(usaspending_obligated) AS total_lost_funding
FROM nsf_terminations
WHERE directorate = 'STEM Education'
GROUP BY org_name
ORDER BY total_lost_funding DESC
LIMIT 10

(tabular data omitted)

The universities that lost the most STEM Education funding are:

    Arizona State University - $23,806,114
    University of California-Berkeley - $21,354,803
    University of Texas at El Paso - $16,931,897
    Auburn University - $13,200,926
    Northeastern University - $11,626,667
    University of Pittsburgh - $11,505,436
    University of Maryland Baltimore County - $11,389,110
    Regents of the University of Michigan - Ann Arbor - $9,907,132
    Michigan State University - $9,905,930
    Clark Atlanta University - $9,750,869
cpsievert.bsky.social
Shiny v1.4 is now on PyPI! 🎉

Highlights include bookmarking and new Generative AI documentation. 🔖🤖

Read here for more. 👀

shiny.posit.co/blog/posts/s...
A fun and cartoonish portrayal of bookmarking a web page Screenshot of new Generative AI articles within the Shiny documentation
Reposted by Carson Sievert (he/him)
posit.co
Posit @posit.co · Mar 24
We are thrilled to announce chatlas, a Python package that simplifies working with large language models (LLM) in Python!
Chat, tool call, stream API calls, RAG, and more, with developer details like typing support and rich console output.
Read the post: posit.co/blog/announc...
#Python #AI
A dark blue hexagon with rounded corners containing a white silhouette of Atlas kneeling and holding two white chat bubbles above him. Below the hexagon is the word "CHATLAS" in white text. The background is a lighter blue with a pattern of white lines and dots resembling a circuit board. The Posit logo is in the corner.
Reposted by Carson Sievert (he/him)
posit.co
Posit @posit.co · Mar 24
We're excited for #ShinyConf2025!

Posit's Carson Sievert will talk about "Building LLM-Powered Shiny apps via ellmer and chatlas"

Learn more and see the full agenda at www.shinyconf.com/agenda.

#RShiny #ShinyForPython #rstats
Shiny Conference 2025. Carson Sievert. Building LLM-Powered Shiny apps via ellmer and chatlas.
Reposted by Carson Sievert (he/him)
coatless.bsky.social
Test BFGS, Nelder-Mead & other numerical optimization algorithms on classic functions like Rosenbrock & Ackley. Compare paths & landscapes in real-time. Built with #rstats #rshiny

🔗 App: shiny.thecoatlessprofessor.com/numerical-op...
💻 Code: github.com/coatless-shi...
The Single Optimization tab showing results for the Ackley function. The interface displays optimization metrics (final value: 0.00285506, distance to minimum: 0.00285506, total iterations: 71), a contour visualization of the function and the optimization path, a convergence plot showing objective value vs iteration, and detailed results in a table format. The left sidebar contains various configuration options The Single Optimization tab showing results for the Ackley function. The interface displays optimization metrics (final value: 0.00285506, distance to minimum: 0.00285506, total iterations: 71), a 3D visualization of the optimization path, a convergence plot showing objective value vs iteration, and detailed results in a table format. The left sidebar contains various configuration options A 3D surface plot showing an optimization path on the Ackley function. The surface is colored in yellow to green, with a clear minimum point at the center. The optimization path is shown in red, moving from the starting point (blue dot) to the end point (purple diamond), converging towards the global minimum. The Landscape Analysis tab of the optimization app showing a 3D visualization of the Simple Bowl (Sphere) function. The interface includes settings for test function selection, analysis type, and grid resolution on the left. The main panel displays the bowl-shaped function surface and its mathematical formula f(x) = Σxᵢ² along with properties including domain [-5.12, 5.12], global minimum (0), and minimum location (0, 0).
Reposted by Carson Sievert (he/him)
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)
Reposted by Carson Sievert (he/him)
vanderlab.bsky.social
Great work by @halleeshearer.bsky.social in her first first-author paper. With 🎀 shiny app 🎀 to explore how FC reliability fares ACROSS DIFFERENT movies versus rest, region-by-region. Thanks @sneuroble.bsky.social @tingsterx.bsky.social @ninetlab.bsky.social for 👍 collab.

doi.org/10.1162/imag...
Reposted by Carson Sievert (he/him)
smachlis.bsky.social
I finally tried the {shinychat} #RStats 📦 and it's nice to see LLM streaming responses in an R Shiny app!
By @jcheng5.bsky.social & @cpsievert.bsky.social at @posit.co
github.com/posit-dev/sh...
#RShiny #GenAI 1/2
Reposted by Carson Sievert (he/him)
kylewalker.bsky.social
I've been working with a variety of #LLM / #GenAI interfaces in #Python, but I haven't found one that does exactly what I need in a streamlined way.

The new chatlas package from Posit may be just that. It supports multiple providers, structured data outputs, and more!

posit-dev.github.io/...