class: left top hide-count background-image: url(assets/images/golem_pic_revised.png) background-size: 100% .talk-meta[ .talk-title[ # Creating (and Reviving) Shiny apps with {golem}! ] <img src="https://raw.githubusercontent.com/ThinkR-open/golem/master/inst/rstudio/templates/project/golem.png" width=150px> .talk-author[ Eric Nantz ] [
@thercast](http://twitter.com/thercast) | [
@rpodcast](http://github.com/rpodcast) <br> [
r-podcast.org](https://r-podcast.org) | [
shinydevseries.com](https://shinydevseries.com) .talk-institution[ Eli Lilly & Company ] .talk-date[ bit.ly/golemrpharma | R/Pharma | August 22nd, 2019 ] ] <!-- this ends up being the title slide since seal = FALSE--> --- layout:true <div class="my-footer"><span>R/Pharma 2019                    Creating (and reviving) Shiny apps with {golem}                    bit.ly/golemrpharma</span></div> --- # If You Recall ... .large[ Shiny has enabled many new and innovative workflows across drug development ] * Automation of statistical analysis visualizations and reports * Intuitive web interfaces for basic and advanced methodologies * Evaluating candidate treatments in discovery ## 😲 Over 50% of 2018's R/Pharma presentations involved Shiny! --- # Motivating Example .pull-left[ Frontend to subgroup identification<sup>1</sup> algorithms from the [`TSDT`](https://cran.rstudio.com/web/packages/TSDT/) 📦 🚧 Non-trivial requirements: * session management * dynamic UI * HPC integration ] .pull-right[ ![:scale 120%](assets/images/tsdt_screenshot.png) ] <br> .footnote[ [1] [A Framework of Statistical Methods for Identification of Subgroups with Differential Treatment Effects in Randomized Trials](https://rd.springer.com/chapter/10.1007/978-3-319-12694-4_25) ] --- class: hide-count animated fadeIn background-image: url(assets/images/non_modules_slides.svg) background-size: contain --- class: middle background-image: url(assets/images/non_modules_slides.svg) background-size: contain .f2.moffitt-bg-light-blue-o90.white.pa5.shadow-3[ * Entangled R scripts mixing UI, backend, and non-Shiny code * Lack of developer-friendly documentation for functions * Unorganized tests scattered throughout code repository * Dependency packages used inconsistently ] --- class: middle animated fadeIn background-image: url(assets/images/non_modules_slides.svg) background-size: contain .center[ ![:scale 85%](assets/images/confused_mPytjcsG3XS4o.gif) ] --- # Applications as
packages .pull-left[ What's in it for me? * Create functions tailored to specific user interface and backend capabilities * Encourages documentation of important functions and app as a whole * Streamlined workflow for testing functions via [`testthat`](https://testthat.r-lib.org/) ] .pull-right[ .center[ ![:scale 50%](assets/images/r_packages_cover.png) [r-pkgs.org](https://r-pkgs.org) ] ] --- layout: true background-image: url(https://raw.githubusercontent.com/ThinkR-open/golem/master/inst/rstudio/templates/project/golem.png) background-position: 98% 1% background-size: 9% <div class="my-footer"><span>R/Pharma 2019                              Creating (and reviving) Shiny apps with {golem}               bit.ly/golemrpharma</span></div> --- # Enter the golem! .large[ 🚀 Shiny app development by enhancing package workflows frameworks like [`{devtools}`](https://devtools.r-lib.org) and [`{usethis}`](https://usethis.r-lib.org) ] <hr /> .pull-left[ .center[ __Advantages__ ] * Scripts guide you with first steps and convenience functions * Encourages development best practices (especially [modules!](https://resources.rstudio.com/rstudio-conf-2019/effective-use-of-shiny-modules-in-application-development)) * Streamlines deployment on multiple platforms ] .pull-right[ .center[ __Resources__ ] 📦 [thinkr-open.github.io/golem](https://thinkr-open.github.io/golem) 📖 [Building Big Shiny Apps - A Workflow](https://thinkr-open.github.io/building-shiny-apps-workflow) 🎥 [Shiny Developer Series Episode 2](https://shinydevseries.com/post/episode-2-golem/) & hands-on [demo](https://shinydevseries.com/post/golem-demo/) with [Colin Faye](https://twitter.com/_colinfay?lang=en) ] --- layout:false class: hide-count animated fadeIn background-image: url(assets/images/non_modules_slides.svg) background-size: contain --- class: hide-count animated fadeIn background-image: url(assets/images/modules_slide.svg) background-size: contain ---
--- # Early Benefits of {golem} * Logical application bootstrapping via easy-to-understand setup scripts * Straightforward inclusion of customized styling (CSS) and javascript functions * Collaboration among team of developers streamlined and transparent * Facilitates deployment across different platforms (on-premises and cloud) without overhead * Seamlessly integrates with dependency management systems like [{packrat}](http://rstudio.github.io/packrat/) and [{renv}](https://rstudio.github.io/renv/) --- # The Possibilities ... .large[ Potential impact of `{golem}` in Life Sciences ] * Common standard for the infrastructure __within__ a Shiny application, tailored to established package development workflows * Ability to augment traditional and novel testing frameworks * Foundational piece for sharing applications with regulatory agencies -- .pull-left[ .center[ ![:scale 80%](assets/images/highfive.gif) ] ] .pull-right[ .large[ Let's see where it takes us! ] ] --- # Thank you! .center[ <table style="border-style:none;padding-top:30px;" class=".table"> <tr> <th style="padding-right:25px!important" align="center"><a href="https://twitter.com/thercast"> <i class="fab fa-twitter fa-3x"></i> </a></th> <th style="padding-left:25px!important" align="center"><a href="https://github.com/rpodcast"> <i class="fab fa-github fa-3x"></i> </a></th> <th style="padding-left:25px!important" align="center"><a href="https://gitlab.com/rpodcast"> <i class="fab fa-gitlab fa-3x"></i> </a></th> <th style="padding-left:25px!important" align="center"><a href="https://r-podcast.org"> <i class="fa fa-microphone fa-3x"></i> </a></th> <th style="padding-left:25px!important" align="center"><a href="https://shinydevseries.com"> <i class="fa fa-tv fa-3x"></i> </a></th> </tr> <tr style="background-color:#fafafa"> <th style="padding-right:25px!important"><a href="https://twitter.com/thercast"> @thercast </a></th> <th style="padding-left:25px!important"><a href="https://github.com/thercast"> @rpodcast </a></th> <th style="padding-left:25px!important"><a href="https://gitlab.com/rpodcast"> @rpodcast </a></th> <th style="padding-left:25px!important"><a href="https://r-podcast.org"> r-podcast.org </a></th> <th style="padding-left:25px!important"><a href="https://shinydevseries.com"> shinydevseries.com </a></th> </tr></table> ] Other efforts in the
community: * Curator for [R Weekly](https://rweekly.org/) * [RStudio Community](https://community.rstudio.com/) sustainer * Member of [Rbind](https://support.rbind.io/) administrator team Slides available at [bit.ly/golemrpharma](https://bit.ly/golemrpharma) 📦 Created with [xaringan](https://slides.yihui.name/xaringan)
[gitlab.com/rpodcast/golem_rpharma2019](https://gitlab.com/rpodcast/golem_rpharma2019)