Shiny Developer Series

Shiny Developer Series

Download on the App Store

Shiny Developer Series episodes

  • Episode 15: Maya Gans
    We have another fun installment of the Shiny Developer Series in episode 15! Our guest is statistical programmer and data scientist Maya Gans, and she tells us about her unique journey to R, her experience as a summer intern at RStudio, and the ways she has wielded some magical integrations of Shiny and javascript to create powerful applications in life sciences. Plus you will not want to miss the inside story behind the shinykeyboard widget!
    Resources mentioned in the episode
    • TidyBlocks (A block-based tool for teaching basic data science): [https://tidyblocks.tech/](tidyblocks.tech)
    • shinyBody A custom Shiny input widget built with HTML and CSS that lets you select a body part and will return that body part's name.You can also color limbs based on data by specifying high and low color values: [https://github.com/MayaGans/shinyBody](github.com/MayaGans/shinyBody)
    • JavaScript for Data Science: [https://js4ds.org/](js4ds.org)
    • TidyCDISC application demonstration at the R/Medicine 2020 Virtual Conference: [https://www.youtube.com/watch?v=QeHSjw-vU3U](youtube.com/watch?v=QeHSjw-vU3U)
    • Interactive web-based data visualization with R, plotly, and Shiny: [https://plotly-r.com/](plotly-r.com)
    • timevis R package for creating timeline visualizations: [https://daattali.com/shiny/timevis-demo/](daattali.com/shiny/timevis-demo)
    • ggkeyboard: [https://github.com/sharlagelfand/ggkeyboard](github.com/sharlagelfand/ggkeyboard)
    • shinykeyboard R package to create an on-screen keyboard as a custom R Shiny input binding: [https://github.com/willdebras/shinykeyboard](github.com/willdebras/shinykeyboard)
    • dreamRs Shiny gallery: [http://shinyapps.dreamrs.fr/](shinyapps.dreamrs.fr)
    Episode Timestamps
    0:00 Episode introduction
    4:30 TidyBlocks tidyblocks.tech. A block-based tool for teaching basic data science.
    7:00 Garrick Aden-Buie, https://www.garrickadenbuie.com/
    7:45 shinyBody. Everyone asks, “What are good ways to level up on R and Shiny?”, the shinyBody Shiny app is a relatively simple, focused Shiny app that helps you get JavaScript started talking to R.
    14:20 David Granjon’s Outstanding User Interfaces
    14:35 R + Shiny for JS Visualizations. JavaScript for Data Science, website. Find it on Google Books, amazon
    15:25 tidyCDISC Shiny App. tidyCDISC CDISC is a file format for clinical trials. This app helps you explore your CDISC data, following common patterns and at least as a first pass, helping you produce standard tables and figures the FDA will want to see.
    17:18 golem, not just a nice tool for Shiny app development , but also for multi-developer, collaborative Shiny app development. “golem: If you’re working with a team of people, I highly recommend it, for easier collaboration.”
    19:00 CDISC table generator.
    25:20 plot.ly in shiny apps. Carson’s Book on ploy.ly with R.
    27:15 shiny timevis by Dean Attali. On github.
    29:15 Extending Sharla Gelfand’s ggkeyboard into shinykeyboard made with Will Bonnell. A visual keyboard, a tool for added accessibility with R.
    33:50 “What advice do you have for Shiny developers in our audience who want to take their skills to the next level?”
    36:20 Episode conclusion
    40 min
  • Episode 13: Inside Plumber 1.0 (Barret Schloerke Part 2)
    In episode 13 of the Shiny Developer Series, we continue our conversation with RStudio software engineer Barrett Schloerke to highlight how you can integrate Shiny apps with custom APIs written in R via the plumber package! You’ll see awesome demonstrations of the key features that are part of the brand new plumber 1.0 release, including brand new serializers and parsers for custom objects, a new tidy API compliant with magrittr pipelines, utilizing asynchronous execution, and more.
    Resources mentioned in the episode
    • plumber allows you to create a web API by merely decorating your existing R source code with roxygen2 style comments. 
      • Site: https://www.rplumber.io/
      • Demos:
      • NEW - Hex logo and website!
      • NEW - pipe-able programatic interface 
        • Demo: plumb(dir = "plumber/pipe") %>% pr_run()
      • NEW - POST body parsing 
        • Process incoming POST body data
        • Ex: HTML forms, multipart forms, csv, tsv, json, yaml, feather and rds.
        • Like serializers, register new POST body parsers
        • Site: https://www.rplumber.io/reference/parsers.html
      • More Serializers! 
        • Serialize outgoing route data
        • Ex: plain text, json, yaml, csv, tsv, rds, feather
        • NEW - Register image serializers: svg, tiff, bmp, pdf. (Pre existing: png, jpeg)
        • Site: https://www.rplumber.io/reference/serializers.html
      • NEW - Download return values as attachments! 
        • Site: https://www.rplumber.io/reference/as_attachment.html
        • Demo: plumb_api("plumber", "16-attachment") %>% pr_run()
      • NEW - Async / promises 
        • Demo: plumb("plumber/plumber-future.R") %>% pr_run()
      • NEW - API UIs (rapidoc) 
        • Register new User Interfaces to look at your API
        • Demo: plumb(dir = "plumber/rapidoc") %>% pr_run()
      • Thank you to Bruno Tremblay (@meztez) for his heavy contributions to plumber!
    • Recent conference talks about plumber: 
      • Democratizing R with plumber APIs (James Blair): rstudio.com/resources/rstudioconf-2019/democratizing-r-with-plumber-apis
      • Practical plumber patterns (James Blair): rstudio.com/resources/rstudioconf-2020/practical-plumber-patterns/
    • Bike Prediction example application with plumber API and Shiny: solutions.rstudio.com/tour/bike_predict/
    Episode Timestamps
    0:00 - Intro
     1:14 - Introduction to plumber
    4:14 - Example of plumber API
    7:14 - Pipeable interface for plumber
    9:19 - plumber's new hex logo!
    9:24 - Serializers in plumber
    13:04 - Parsers in plumber
    14:30 - as_attachment for serializers
    15:50 - Demo of downloading an attachment from API
    16:07 - A consistent way to check for plumber APIs with available_apis()
    18:50 - Async processing in plumber
    24:23 - Demo of the plumber documentation UI
    29:20 - Example of decoupling data source from Shiny app
    29:50 - Episode wrapup
    35 min
  • Episode 12: Barret Schloerke Part 1 (reactlog)
    In episode 12 of the Shiny Developer Series, we begin a multi-part series with RStudio software engineer on the Shiny team Barret Schloerke! In part 1 we learn more about Barret’s journey to the Shiny team and take a deep dive into the very powerful reactlog framework to help users shed some light on what can be a confusing world of reactivity in their applications. Barret leads us through interactive demonstrations of reactlog applied to simple and complex applications to pinpoint various issues on reactive logic and the flow of information from inputs to outputs.
    Resources mentioned in the episode
    • {rbokeh} - R interface for Bokeh: hafen.github.io/rbokeh
    • {trelliscopejs} - Create interactive trelliscope displays: hafen.github.io/trelliscopejs
    • {autocogs}: github.com/schloerke/autocogs
    • {reactlog} - Provides a visual insight into that black box of Shiny reactivity: rstudio.github.io/reactlog
    • Demos: 
      • (Launch reactlog: cmd + F3 or ctrl + f3)
      • shiny::runApp("reactlog/reactlog-pythagorus.R")
      • shiny::runApp("reactlog/reactlog-pythagorus-broken.R")
      • shiny::runApp("reactlog/reactlog-cranwhales.R")
      • shiny::runApp("reactlog/reactlog-anti-pattern.R")
    Episode Timestamps
    0:00 - Intro
     0:42 - Barret’s background, how he got started with R, Shiny, and RStudio.
    3:41 - Bokey, Trelliscope, Ryan Hafen
    4:36 - Autocogs
    5:56 - Starting with RStudio
    7:31 - Introduction to reactlog
    9:31 - Demonstration of reactlog
    10:51 - How reactlog can help diagnose issues
    11:11 - Diagnosing a Shiny app's output example
    13:30 - Demo of using reactlog with a larger application
    14:31 - Zooming in example
    15:00 - Using the search bar
    17:25 - Finding anti-patterns
    23:27 - Wrapup
    26 min
  • Episode 11: Yoni Sidi
    In episode 11 of the Shiny Developer Series, we are joined by R package author and Shiny enthusiast Yoni Sidi. We discuss Yoni\'s stories of how Shiny brought immediate and positive impact to his daily work across industries such as life sciences, the origins of his popular ggedit package, a new package to drill deeper into testing reactivity in Shiny apps, and much more!
    Resources mentioned in the episode
    • {ggedit} - Interactively edit ggplot layer aesthetics and theme definitons: yonicd.github.io/ggedit
    • Lightning talk on {ggedit} at rstudio::conf 2017 (timestamp 13:35-19:35): rstudio.com/resources/rstudioconf-2017/lightning-talks-users
    • {ggedit} video series on YouTube: www.youtube.com/playlist?list=PLruc2EmpfX8Vceb2rE4uwbWV3CrkTlwLj
    • {reactor} - Unit testing for Shiny reactivity (likely will be renamed): github.com/yonicd/reactor
    • {reactor} demonstration YouTube video: youtu.be/RW5hYtXxmCA
    • {qibble} - Tidy framework to manage jobs on the Open Grid Scheduler: github.com/yonicd/qibble
    • {shinyHeatmaply} - Shiny application and Shiny gadget for the {heatmaply} package: yonicd.github.io/shinyHeatmaply
    • Israel Election Polls Analysis Depot Shiny application: yonicd.github.io/Elections
    • Track NONMEM (Nonlinear Mixed Effects Modelling) progress while model evaluates with Shiny: github.com/yonicd/NMTracker
    • {streamline} - Utilities to work with NONMEM Control Stream files: github.com/yonicd/streamline
    • {lintr} - Static code analysis for R: github.com/jimhester/lintr
    • The slackverse family of packages to interact with Slack: 
      • {slackteams} - Manage and interact with multiple Slack teams in R: yonicd.github.io/slackteams
      • {slackcalls} - Generic package to call slack API from R: github.com/yonicd/slackcalls
      • {slackthreads} - Wrangle Slack conversations, replies, and threads in R: github.com/yonicd/slackthreads
      • {slackblocks} - Slack Blocks in R: github.com/yonicd/slackblocks
      • {slackreprex} - reprex + slack: yonicd.github.io/slackreprex
    Episode Timestamps
    0:00 - Intro
     3:10 - Breaking R into Israel's central bank
    6:25 - First Shiny app and growing as a Shiny developer
    11:35 - On working with Tal Galili & heatmaply
    12:45 - The story of ggedit
    23:30 - The value of Shiny in Yoni's work
    32:50 - Advice on learning Shiny
    36:22 - reactor package for unit testing reactivity
    43:30 - Closing thoughts
    47 min
  • Episode 10: The Importance of User Experience with John Coene
    In this packed episode of the Shiny Developer Series, we are joined by the very talented John (JP) Coene to explore tools and skills that can ease your journey in creating production-grade Shiny applications! We examine the backstory of John's highly-regarded Coronavirus mobile-first Shiny application, how you can use his excellent {waiter} and {server} packages to improve user experience, and much more!
    Resources mentioned in the episode
    • Covid19 tracker - A popular Coronavirus tracker application built upon {shinyMobile}: johncoene.shinyapps.io/contest-coronavirus
      • John's blog post about the application: blog.john-coene.com/posts/2020-02-08-ncov-2019/
      • RStudio Community post: community.rstudio.com/t/coronavirus-2020-shiny-contest-submission/53061
    • {waiter} - Loading screens for Shiny: shiny.john-coene.com/waiter/
    • {sever} - Good-looking problems by customizing your Shiny disconnected screen and error messages: sever.john-coene.com/
    • {echarts4r} - Interactive visualizations for R: echarts4r.john-coene.com/
    • How to build htmlwidgets (e-Rum 2020 virtual workshop): htmlwidgets.john-coene.com/
    • Blog post on building htmlwidgets for Shiny apps: blog.john-coene.com/posts/2018-01-01-widget
    • Engineering Production-Grade Shiny Apps by Colin Faye: engineering-shiny.org/
    Episode Timestamps
    0:00 - Intro
    2:37 - Covid19 tracker - A popular Coronavirus Tracker app, built on shiny mobile: https://johncoene.shinyapps.io/contest-coronavirus
    5:37 - Golem - Within the Covid19 Tracker discussion, on the usefulness of golem for building shiny apps with best practices. 
    8:57 - On working with shinyMobile https://rinterface.github.io/shinyMobile, Maintainer; David Granjon
    12:47 - Shiny with R in Production and at scale. 
    17:27 - Waiter package. A key, simple way to improve the experience of your shiny app is giving the user clear information about how quickly app-components will take to load. https://shiny.john-coene.com/waiter/
    32:57 - On the importance of ensuring your shiny apps looks and feels good to the end user
    34:10 sever. More pleasing and better handling of shiny app error & disconnection messages. https://sever.john-coene.com
    38:57 - Building htmlwidgets for shiny apps https://blog.john-coene.com/posts/2018-01-01-widget/
    44:14 echarts4r. A package for powerful visualizations with R. It is a good showcase for how htmlwidgets can interact with your shiny-app, sending messages between your user and your server to improve the types of interactions possible with your visualizations. https://echarts4r.john-coene.com
    57:27 Advice for Shiny developers that want to take that “next step” in building complex applications for production use. 
    • Hadley Wickham’s Mastering-shiny.org (still under development)
    • Divad nojnarg - outstanding shiny ui, https://divadnojnarg.github.io/outstanding-shiny-ui/intro.html
    • Colin Fay’s “Engineering Production-Grade Shiny Apps” at https://engineering-shiny.org/
    1:00:46 Wrapup
    1 hr 3 min
  • Episode 9: Shiny Dev Center & Education with Mine Cetinkaya-Rundel
    The Shiny Developer Series is back! In our first session of 2020, we are joined by professional educator and data scientist Mine Cetinkaya-Rundel to get the inside story of the newly updated Shiny Dev Center (including a major revision of the Shiny Gallery) and the insights RStudio gained from the Shiny Contest. Also Mine shares her advice on developing educational material for Shiny users and where she sees future opportunities in this evolving space.
    Resources
    • Shiny Gallery: shiny.rstudio.com/gallery
    • Shiny Tutorials: shiny.rstudio.com/tutorial
    • Reprex guide for Shiny questions on RStudio Community: community.rstudio.com/10001
    • 2020 Shiny Contest information: blog.rstudio.com/2020/02/12/shiny-contest-2020-is-here
    • Mastering Shiny by Hadley Wickham: mastering-shiny.org
    Episode Timestamps
    00:56 Mine Introduction.
    03:01 Shiny Gallery - walkthrough and recent revamp.
    04:15 Shiny Demos - live examples and deep-dive into shiny's features.
    05:20 Shiny User Showcase - A large set of example shiny apps, by the Shiny community. Including code on github, and interactive code on rstudio.cloud.
    06:10 Shiny Contest 2019 lead to the revamp of the showcase.
    09:00 Example running an app on the Shiny Showcase interactively with rstudio.cloud.
    12:40 Shiny Gallery walkthrough - Mine's learnings from reviewing the Shiny apps on the gallery. There's a lot to learn from, but Mine highlighted just a few:
    13:40 1. BYOD Apps - Bring your own data shiny app best practices.
    14:42 2. App Walkthroughs and jintrojs package. iSEE Shiny App.
    17:15 3. Apps that don't look like Shiny apps.
    17:30 Example 1. 69 Love Songs by the Magnetic Fields.
    18:25 Example 2. Uber explorer app - another example that doesn't look like a standard shiny app.
    19:04 Example 3. CRAN Explorer.
    19:55 Example 4. Hex memory game. An example of a game Shiny app.
    22:15 Teaching and Educational Materials for Shiny - Shiny development has its own set of challenges and Mine spends a lot of time thinking about teaching Shiny.
    23:45 Learn Shiny tutorial - a nice short intro to Shiny. Includes written articles, videos, and code examples. shiny.rstudio.com/tutorial.
    24:30 Asking good questions about the issues you're having with your Shiny app. What are good workflows for seeking help? Barret's Shiny debugging and reprex guide http://community.rstudio.com/t/10001
    26:17 Materials for intermediate Shiny users. Articles on shiny.rstudio.com, workshop and conference videos, and a call to the Shiny Community.
    28:00 Also for advanced Shiny developers, Hadley's Mastering Shiny book. Coming late 2020 mastering-shiny.org.
    30:10 Shiny Contest 2020 - learnings from last year's contest, and advice to folks submitting to the next contest. https://blog.rstudio.com/2020/02/12/shiny-contest-2020-is-here/
    39:12 Shiny Dev Series Outtro

    40 min
  • Shiny and Javascript Wizardry with Garrick Aiden-Buie
    About this Episode

    This is the second of multiple episodes covering the recent rstudio::conf 2020! In this episode, Eric shares the backstory behind his Shiny Community e-poster and welcomes data scientist Garrick Aiden-Buie to discuss his spectacular JavaScript for Shiny Users course, the mind-blowing features of the package accompanying the course, and much more. Plus takeaways from Shiny-related presentations at the conference and a fresh batch of listener feedback.

    Links
    • rstudio::conf(2020L) recordings: resources.rstudio.com/rstudio-conf-2020
    • Reaping the benfits of the Shiny community e-poster: rpodcast.shinyapps.io/highlights-shiny
    • Poster source code: github.com/rpodcast/highlights.shiny
    • Javascript for Shiny Users: js4shiny.com/
    • Garrick's GitHub: github.com/gadenbuie
    • js4shiny package: pkg.js4shiny.com/
    • Styling Shiny apps with Sass and Bootstrap 4 (Joe Cheng): resources.rstudio.com/rstudio-conf-2020/styling-shiny-apps-with-sass-and-bootstrap-4-joe-cheng
    • Reproducible Shiny apps with shinymeta (Carson Sievert): resources.rstudio.com/rstudio-conf-2020/reproducible-shiny-apps-with-shinymeta-dr-carson-sievert
    • Getting things logged (Gergely Daroczi): resources.rstudio.com/rstudio-conf-2020/getting-things-logged-gergely-daroczi
    • Listener Ricardo's R & tidyverse tutorial: predictcrypto.org/tutorials
    • xaringan package's infinite moon reader: [https://bookdown.org/yihui/rmarkdown/xaringan-preview.html](bookdown.org/yihui/rmarkdown/xaringan-preview.html)
    • My appearance on Michael Dominick Show: https://www.automator.show/8
    • NSSD 101 interview with JJ Allaire: nssdeviations.com/101-special-guest-jj-allaire
    • Feedback
      • Leave a comment on this episode's post
      • Email the show: thercast[at]gmail.com
      • Use the R-Podcast contact page
      • Episode Timestamps
        00:00:00.000 Intro
        00:01:48.000 Shiny community e-poster
        00:20:12.000 Garrick Aiden-Buie
        00:38:10.000 Styling Shiny apps
        00:40:56.000 Shinymeta
        00:44:20.000 logger
        00:49:49.000 listener feedback
        00:57:25.000 Wrapup
        Music Credits
        • Opening and closing themes: Training Montage by WillRock from the Return All Robots Remix Album at ocremix.org
        • 59 min
        • RStudio's Big Move & Kevin Ushey
          About this Episode

          This is the first of multiple episodes covering the recent rstudio::conf 2020! In this episode, Eric shares his take on the big news made by RStudio and has a great interview with RStudio software engineer Kevin Ushey.

          Links
          • RStudio becomes a Public Benefit Corporation: blog.rstudio.com/2020/01/29/rstudio-pbc
          • RStudio changes structure to focus on public benefit: www.infoworld.com/article/3518390/rstudio-changes-structure-to-focus-on-public-benefit.html
          • JJ Allaire's keynote slides: rstudio.com/slides/rstudio-pbc/
          • A corporate paradign shift - Public Benefit Corporations [https://www.gibsondunn.com/a-corporate-paradigm-shift-public-benefit-corporations/](www.gibsondunn.com/a-corporate-paradigm-shift-public-benefit-corporations)
          • renv: Project Environments for R kevinushey-2020-rstudio-conf.netlify.com/slides.html
          • renv GitHub repository: github.com/rstudio/renv
          • Emil Hvitfeldt's repository with rstudio::conf links to slides and other materials: github.com/EmilHvitfeldt/RStudioConf2020Slides
          • Residual Snippets app: rpodcast.shinyapps.io/rsnippets
          • Feedback
            • Leave a comment on this episode's post
            • Email the show: thercast[at]gmail.com
            • Use the R-Podcast contact page
            • Episode Timestamps
              00:00:00.000 Intro
              00:01:25.000 RStudio PBC
              00:14:50.000 RWeekly Curators Unite!
              00:18:45.000 RStudio's Kevin Ushey
              00:42:26.000 Residual Snippets
              00:47:52.000 Wrapup
              Music Credits
              • Opening and closing themes: Training Montage by WillRock from the Return All Robots Remix Album at ocremix.org
              • 50 min
              • Episode 8: Exploring yonder with Nathan Teetor
                In this last webinar of the Shiny Developer Series for 2019, we are joined by Nathan Teetor of ZevRoss Spatial Analysis for an illuminating conversation about his yonder package! Nathan shares how yonder is not a full-on replacement of Shiny, but rather a collection of new functionality built on the Shiny engine. Plus some great demonstrations of key user interface features and plans for future development. Visit the follow-up thread on RStudio Community! to continue the discussion!
                Resources mentioned in the episode
                • Video version of recording available at shinydevseries.com/ep6
                • Follow-up thread for the episode on RStudio Community
                • ZevRoss Spatial Analysis - Know your Data: www.zevross.com
                • {yonder} - A reactive framework built on Shiny: nteetor.github.io/yonder
                • yonder-examples gallery: github.com/nteetor/yonder-examples
                57 min
              • Episode 7: shinyWidgets and dreamRs with Victor Perrier and Fanny Meyer
                In this webinar originally broadcast live in partnership with RStudio Community, Victor Perrier and Fanny Meyer join Eric and Curtis to share the origins of their dreamRs consulting, their journey to becoming Shiny experts, and the many innovations that their open-source packages such as {shinyWidgets} can bring to any Shiny application user interface. Victor highlights a tour of the many features of this and other great packages. Visit the follow-up thread on RStudio Community! to continue the discussion!
                Resources mentioned in the episode
                • Video version of recording available at shinydevseries.com/ep7
                • Follow-up thread for the episode on RStudio Community
                • dreamRs - Conseil, Expertise et Formation en data science Spécialisé en R: www.dreamrs.fr/
                • {shinyWidgets} - Extend widgets available in Shiny: dreamrs.github.io/shinyWidgets
                • {esquisse} - RStudio add-in to make plots with ggplot2: dreamrs.github.io/esquisse
                • {shinylogs} - Logs for Shiny apps: dreamrs.github.io/shinylogs
                • How to build a JavaScript based widget (tutorial by Hermann Sontrop and Erwin Schuijtvlot): shiny.rstudio.com/articles/js-build-widget.html
                55 min

              About Shiny Developer Series

              From the publisher's feed

              The goals of the Shiny Developer Series are to showcase the innovative applications and packages in the ever-growing Shiny ecosystem, as well as the brilliant developers behind them! This is the…