└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Highlights from the Shiny Developer Conference 2 | 3 | Website: http://www.rstudio.com/shinydevcon 4 | Videos: https://www.rstudio.com/resources/webinars/shiny-developer-conference 5 | Twitter: [#shinydevcon](http://twitter.com/hashtag/shinydevcon) 6 | 7 | ## Reactivity tutorial | *Joe Cheng* 8 | 9 | Author of the Shiny reactive programming framework explains the philosophy behind reactivity and explores patterns and techniques for using it well. 10 | - Prefer using reactive expressions to model calculations, over using observers to set (reactive) variables. 11 | - Use reactive expressions for calculations (no side effects). Use observers for actions (side effects). 12 | 13 | | `reactive()` | `observe()` | 14 | | ---------- | --------- | 15 | | Callable | Not callable | 16 | | Returns a value | No return value | 17 | | Lazy | Eager | 18 | | Cached | N/A | 19 | 20 | [Slides](https://cdn.rawgit.com/rstudio/reactivity-tutorial/master/slides.html#/warm-up-side-effects) • [Tutorial](https://github.com/rstudio/reactivity-tutorial) (see `with-solutions` branch for answers) • [R-Podcast](https://www.r-podcast.org/posts/the-r-podcast-episode-18-interviews-with-the-rstudio-team.html) 21 | 22 | ## Interactive graphics | *Winston Chang* 23 | 24 | - add/select single points using `click`, `dblcick`, and `hover` 25 | - linked brushing 26 | 27 | [Slides](https://gist.github.com/wch/25a1c4ce8fc84022d3e7) 28 | 29 | ## Shiny Gadgets | *Hadley Wickham* 30 | 31 | *Things that are hard to express with code but you want to do reproducibly* -- Hadley Wickham 32 | 33 | Build interactive graphical tools for exploratory data analysis that run locally, taking your data as input and returning a result. 34 | 35 | [Article](http://shiny.rstudio.com/articles/gadgets.html) 36 | 37 | ## Modules | *Garrett Grolemund* 38 | 39 | Manage complex Shiny apps by modularizing their code. 40 | 41 | [Slides](https://cdn.rawgit.com/aoles/modules-tutorial/master/01-Modules.pdf) • [Tutorial](https://github.com/aoles/modules-tutorial) • [Article](http://shiny.rstudio.com/articles/modules.html) 42 | 43 | ## Debugging Shiny applications | *Jonathan McPherson* 44 | 45 | Debugging 46 | - breakpoints using RStudio 47 | - conditional breakpoints with `browser()` 48 | 49 | Tracing 50 | - showcase mode: `runApp(..., display.mode = "showcase")` 51 | - reactive log: `options(shiny.reactlog = TRUE)`, start visualization in app by hitting `Ctrl+F3` 52 | - print to console: `cat` 53 | - shinyapps.io: `rsconnect::showLogs(streaming = TRUE)` 54 | - Shiny Server: `tail -f /var/log/shiny-server/myapp-20160131-104403-8492.log` 55 | - client/server: `options(shiny.trace = TRUE)` 56 | 57 | Error handling 58 | - stack traces 59 | - pause on errors: `options(shiny.error = browser)` 60 | - JavaScript dev mode on OS X: `defaults write org.rstudio.RStudio WebKitDeveloperExtras -bool true` 61 | 62 | [Slides](http://rpubs.com/jmcphers/149638) • [Article](http://shiny.rstudio.com/articles/debugging.html) 63 | 64 | ## HTML templates 65 | 66 | Author the structure and style of your app's UI in HTML, but still conveniently insert input and output widgets using R functions. 67 | 68 | [Article](http://shiny.rstudio.com/articles/templates.html) 69 | 70 | ## Building dashboards | *Nathan Stephens* 71 | 72 | An increasingly popular use of Shiny is in building dashboards, especially since the release of the [shinydashboard](https://github.com/rstudio/shinydashboard) package. 73 | 74 | [Project website](http://rstudio.github.io/shinydashboard/) 75 | 76 | ## Profiling | *Winston Chang* 77 | 78 | Use [profvis](https://github.com/rstudio/profvis) to find and fix performance bottlenecks to make your apps as responsive as possible. 79 | 80 | [Vignette](https://rpubs.com/wch/123888) 81 | 82 | ## Data Tables | *Yihui Xie* 83 | 84 | The R package [DT](https://github.com/rstudio/DT) is an interface to the DataTables JavaScript library which renders HTML tables that can be paginated, filtered, and sorted. 85 | 86 | ## shinyjs | *Dean Attali* 87 | 88 | Perform common JavaScript operations in Shiny apps using plain R code 89 | - hide an element 90 | - disable an input 91 | - reset an input back to its original value 92 | - delay code execution by a few seconds 93 | - run your own custom JavaScript functions from R 94 | - color picker 95 | 96 | [CRAN](http://cran.r-project.org/web/packages/shinyjs) • [GitHub](http://github.com/daattali/shinyjs) • [R-Podcast](https://www.r-podcast.org/posts/the-r-podcast-episode-16-interview-with-dean-attali.html) • [Live demo](http://daattali.com/shiny/shinyjs-demo/) 97 | 98 | ## Radiant - Business analytics using R and Shiny | *Vincent Nijs* 99 | 100 | [GitHub](https://github.com/vnijs/radiant) • [Documentation](http://vnijs.github.io/radiant/) • [R-Podcast](https://www.r-podcast.org/posts/the-r-podcast-episode-17-a-simply-radiant-chat-with-vincent-nijs.html) • [Live demo](https://internal.shinyapps.io/vnijs/marketing/) 101 | 102 | ## Grid Style Sheets 2.0 | *Yihui Xie* 103 | 104 | http://gridstylesheets.org/ 105 | 106 | ## Bindings to popular JavaScript libraries | *Herman Sontrop ([Friss](http://www.friss.eu/en/))* 107 | 108 | [GitHub](https://github.com/FrissAnalytics/shinyJsTutorials) - tutorials will appear soon 109 | 110 | ## Further reading 111 | 112 | - [Shiny Developer Conference 2016 Recap](http://www.r-bloggers.com/shiny-developer-conference-2016-recap/) by VP Nagraj 113 | - [Shiny Developers Conference Review](http://www.r-bloggers.com/shiny-developers-conference-review/) by Aimee Gott 114 | - [Shiny Developer Conference](http://www.r-bloggers.com/shiny-developer-conference/) by John Mount 115 | - [DataScienceLA](http://www.youtube.com/user/DataScienceLA) interviews with by Joe Cheng, Yihui Xie, Hadley Wickham and JJ Alaire 116 | --------------------------------------------------------------------------------