Software by Winston Chang#
Events attended by Winston Chang#
Posts and resources by Winston Chang#
Positron AI Session (George Stagg, Winston Chang, Tomasz Kalinowski , Carson Sievert) | posit::conf
George Stagg, Winston Chang, and Tomasz Kalinowski introduce AI capabilities in Positron, including Positron Assistant, a tool still in preview that enhances coding and data analysis.
0:00 Introduction to Posit’s approach to AI 0:23 George Stagg: Positron Assistant 11:03 Winston Chang: Databot 21:30 Tomasz Kalinowski: ragnar 31:13 Carson Sievert: chatlas 41:42 Q&A
posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/




Web applications with Shiny and React and AI (Winston Chang, Posit) | posit::conf(2025)
Web applications with Shiny and React (and AI)
Speaker(s): Winston Chang
If you’ve ever wanted to have complete control over the UI for a Shiny application, this talk might be for you. In this talk I’ll show how to integrate a back end written in Shiny (for R or Python) with a front end written in React.js. This lets you combine Shiny’s reactivity with the flexibility of the React web development ecosystem.
In the past, writing a front end in React was a large time investment, and would be reserved only for a serious project. However, with today’s agentic AI coding tools, it can make sense to create a React front end even for smaller-scale applications. But even with AI involved, you will still need to know some React or be willing to learn about it.
GitHub Repo - https://github.com/wch/shiny-react CLI tool - https://github.com/wch/create-shiny-react-app Anthropic Dashboard - https://github.com/wch/anthropic_dashboard posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/

Shiny Assistant: Prototype and build Shiny applications with the help of AI | Winston Chang | Posit
Have you ever had an idea for a great web application with Shiny but felt something holding you back from getting started? Maybe it’s that you don’t know where to start, or that you don’t know which packages use to build the app, or maybe it’s just that you can’t muster the energy to get started. Sometimes you just need a little help to get unstuck.
We’re excited to announce a new addition to the Shiny ecosystem that can help: Shiny Assistant.
Try it out here, free: https://gallery.shinyapps.io/assistant/
Get started with Shiny for R and Python: https://shiny.posit.co

How to write and deploy a Python web app with Shiny Express and Posit Team
Winston Chang at Posit joined us to share a quicker and simpler way of writing Shiny applications in Python, called Shiny Express
With Shiny Express you can create interactive data dashboards and data-driven applications faster than ever.
Helpful resources: ️ Introducing Shiny Express: https://shiny.posit.co/blog/posts/shiny-express/ ️ Shinylive: https://shinylive.io/py/examples/ ️ Component Gallery: https://shiny.posit.co/py/components/ ️ VS Code Shiny extension: https://marketplace.visualstudio.com/items?itemName=Posit.shiny-python ️ Q&A recording: https://youtube.com/live/zg4LP4lkihM?feature=share rsconnect-python package: https://pypi.org/project/rsconnect-python/
️ Follow-up links: Event Survey: https://forms.gle/8AcMAnjfPFSTQZJK6 Posit Team: https://posit.co/products/enterprise/team/ Request evaluation: pos.it/chat-with-us Posit Team demo resources: pos.it/demo-resources
What will you learn? If you’re new to Shiny → you’ll get started writing and deploying your first Shiny Express application in Python.
If you already know Shiny → you’ll see how Shiny Express can make your development experience quicker and more efficient.
Happy with the way things are? No need to change what you’re doing! We think of Shiny Express and Shiny Core as complementary, and intend to support both syntaxes indefinitely. Last month’s Workflow with Posit Team Demo featured Shiny in R and used bslib for custom theming, which you can check out here in the recording: https://youtu.be/O6WLERr5bKU?feature=shared
LIVE Q&A ROOM for ~11:30 am on Feb 28th: https://youtube.com/live/zg4LP4lkihM?feature=share
There is no need to register; join us here on YouTube at the time above or you can add to your calendar using the link below:
pos.it/team-demo
We host these Workflow Demos on the last Wednesday of every month, so you can use the link above to add the recurring event as well.
#python

AI and Shiny for Python: Unlocking New Possibilities - posit::conf
Presented by Winston Chang
In the past year, people have come to realize that AI can revolutionize the way we work. This talk focuses on using AI tools with Shiny for Python, demonstrating how AI can accelerate Shiny application development and enhance its capabilities. We’ll also explore Shiny’s unique ability to interface with AI models, offering possibilities beyond Python web frameworks like Streamlit and Dash. Learn how Shiny and AI together can empower you to do more, and do it faster.
Presented at Posit Conference, between Sept 19-20 2023, Learn more at posit.co/conference.#
Talk Track: I can’t believe it’s not magic: new tools for data science. Session Code: TALK-1153

20 questions and AI chat bots - posit::conf(2023)
Presented by Winston Chang
Presented at Posit Conference, between Sept 19-20 2023, Learn more at posit.co/conference.#
Talk Track: I can’t believe it’s not magic: new tools for data science. Session Code: TALK-1153

Plot Outputs in Shiny for Python || Winston Chang || RStudio
Shiny makes it easy to build interactive web applications with the power of Python’s data and scientific stack. You can try out Shiny for Python without installing a single thing… All in the browser.
Learn more about Shiny for Python: https://shiny.rstudio.com/py/ Check out our interactive Shiny for Python examples: https://shinylive.io/py/examples/
Content: Winston Chang (@winston_chang)

Multiple Inputs in Shiny for Python || Winston Chang || RStudio
Shiny makes it easy to build interactive web applications with the power of Python’s data and scientific stack. You can try out Shiny for Python without installing a single thing… All in the browser.
Learn more about Shiny for Python: https://shiny.rstudio.com/py/ Check out our interactive Shiny for Python examples: https://shinylive.io/py/examples/
Content: Winston Chang (@winston_chang)

Getting Started with Shiny for Python - in the browser! || Winston Chang || Posit
Shiny makes it easy to build interactive web applications with the power of Python’s data and scientific stack. You can try out Shiny for Python without installing a single thing… All in the browser.
Learn more about Shiny for Python: https://shiny.rstudio.com/py/ Check out our interactive Shiny for Python examples: https://shinylive.io/py/examples/
Content: Winston Chang (@winston_chang)

Hey Shiny Team, what are some of your biggest learnings from 2022? || Shiny Developers || RStudio
BIG THINGS happened on the Shiny team in 2022! Our team built out a new Shiny UI Editor, Shiny for Python, and Shiny for Python in the browser using WebAssembly. So we asked some of our Developers what their biggest learnings have been from building these products!
Learn more about Shiny for Python: https://shiny.rstudio.com/py/
Content: Winston Chang (@winston_chang), Carson Sievert (@cpsievert), Nick Strayer (), Michael Chow (@chowthedog) Producer: Jesse Mostipak (@kierisi) Video editing + motion design: Tony Pelleriti (@TonyPelleriti)





An Interview with Winston Chang: Building a Wordle App with Shiny for Python || RStudio
Shiny makes it easy to build interactive web applications with the power of Python’s data and scientific stack.
Learn more about Shiny for Python: https://shiny.rstudio.com/py/ Check out our interactive Shiny for Python examples: https://shinylive.io/py/examples/
Content: Winston Chang (@winston_chang) + Jesse Mostipak (@kierisi) Producer: Jesse Mostipak (@kierisi) Editing and Motion Design: Tony Pelleriti (@TonyPelleriti)

A Beginner’s Guide to Shiny for Python || Winston Chang || Posit
Shiny makes it easy to build interactive web applications with the power of Python’s data and scientific stack.
Learn more about Shiny for Python: https://shiny.rstudio.com/py/ Check out our interactive Shiny for Python examples: https://shinylive.io/py/examples/
Content: Winston Chang (@winston_chang) Producer: Jesse Mostipak (@kierisi) Editing and Motion Design: Tony Pelleriti (@TonyPelleriti)

Winston Chang || Part III: Adding a Keyboard to a Wordle Shiny App || RStudio
00:00 Introduction 00:25 Setting up a keyboard 00:54 Using an HTML p tag to print out letter indicators 01:56 Back to our keyboard! 03:44 Setting up a search and replace 06:32 Removing letters using regular expressions 08:43 Making guesses a reactiveVal() 11:00 Avoiding an infinite loop with reactiveVal()
In Part III of this four-part series, Winston walks through how to build a keyboard in a Shiny Wordle app.
Code + word list: https://github.com/wch/shiny-wordle Check out the full Shiny app here: https://winston.shinyapps.io/wordle/ You can learn more about Shiny here: https://shiny.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Developer (@winston_chang) Animation, design, and editing: Jesse Mostipak (@kierisi)
Wordle: https://www.powerlanguage.co.uk/wordle/

Winston Chang || Part II: Handling Duplicate Letters in a Shiny Wordle App || RStudio
00:00 Introduction 00:52 Setting up the problem with duplicate letters 02:08 Coding the first pass for exact matches in the correct position 06:29 Re-evaluating how to approach the problem 12:28 Removing only one instance of a letter 13:56 Testing our code 14:54 Setting up the second pass 19:08 Scoping with a double arrow 19:52 Debugging with a browser() statement 21:28 Checking our code
In Part II of this four-part series, Winston walks through how to handle duplicate letters when building your Shiny Wordle app.
Code + word list: https://github.com/wch/shiny-wordle Check out the full Shiny app here: https://winston.shinyapps.io/wordle/ You can learn more about Shiny here: https://shiny.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Developer (@winston_chang) Animation, design, and editing: Jesse Mostipak (@kierisi)
Wordle: https://www.powerlanguage.co.uk/wordle/

Winston Chang || Part I: Build a Basic Wordle App with Shiny || RStudio
00:00 Introduction 00:12 What is Wordle? 00:36 The Wordle app we’ll build by the end of this four-part series 01:08 How to approach the problem 01:38 Word list (link to file below) 01:52 UI function with fluidPage() 02:24 Print out what player guesses using verbatimTextOutput() 03:36 Run app in Viewer Panel 04:04 Adding an action button with actionButton() 04:29 Using bindEvent() with actionButton() 06:02 Limiting guesses to words with five characters 07:40 Using req() and cancelOutput() 08:54 Incorporating the word list 10:13 Matching player guess to word list 11:06 Matching player guess to target word 13:50 Writing a function to match guess to target word with feedback 18:15 Checking word length between guess and target 23:02 Why we’re using intermediary functions 28:51 Printing formatted letter information
In Part I of this four-part series, Winston walks through how to build a basic Wordle app using Shiny!
Code + word list: https://github.com/wch/shiny-wordle Check out the full Shiny app here: https://winston.shinyapps.io/wordle/ You can learn more about Shiny here: https://shiny.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Developer (@winston_chang) Animation, design, and editing: Jesse Mostipak (@kierisi)
Wordle: https://www.powerlanguage.co.uk/wordle/

Winston Chang | Making Shiny apps faster with caching | RStudio
Shiny’s 1.6 has a new function, bindCache(), which makes it easy to dramatically speed up reactive expressions and output rendering functions. This allows many applications to scale up to serve several times more users without an increase in server resources.
Note: Shiny 1.6.0 isn’t yet on CRAN, but will be in the next few days. In the meantime, you can install it with:
remotes::install_github(““rstudio/shiny@rc-v1.6.0 "”)
About Winston: Winston is a software engineer at RStudio. He holds a Ph.D. in psychology from Northwestern University and is the author of R Graphics Cookbook, published by O’Reilly Media

Intermediate Shiny 2-Day-Workshop - rstudio::conf(2019L)
What is the 2-day Intermediate Shiny Workshop? That’s a great question, I’m glad you asked….
Register at https://rstd.io/conf Learn more at https://rstd.io/conf-agenda
Intermediate Shiny Workshop - 2 Days
This two-day workshop is designed by Shiny author Joe Cheng for the experienced Shiny developer. By taking this workshop, you’ll improve your understanding of shiny’s foundations and learn how to make the most of reactive programming, techniques for extending and improving UI, techniques for debugging and tools for modularizing applications. By the end of the two days, you’ll be able to push the envelope of what you and your organizations can do with Shiny.
You should take this workshop if you are already familiar with the basics of shiny and you have built your own simple applications.
This course is led by friend of RStudio and Education Practice Lead at RStudio Certified Partner Mango Solutions, Aimee Gott. Winston Chang, RStudio Data Scientist, Developer, and author of the R Graphics Cookbook will join Aimee to provide hands-on advice and answers to the Shiny application development questions that stump you.
Speakers: Aimee Gott (Mango Solutions), with Winston Chang (RStudio)


Shiny and R to Build Dynamic Dashboards
In a static report, you answer known questions. With a dynamic report, you give the reader the tools to answer their own questions. Unleash the full flexibility of analytic app development with Shiny.
In this talk, Winston Chang will discuss how to use R and Shiny to quickly create data dashboards. You’ll also get a glimpse of some new features in Shiny for presenting and interacting with data. He will also demonstrate how you can easily deploy apps to the web via RStudio’s hosting service shinyapps.io.
Related blog post: https://blog.rstudio.com/2017/05/18/shinydashboard-0-6-0/

