 Hi, my name is Herb Seussman and I'm really happy to be here for user 2020 to talk about Reactor, Reactive Notebooks for R. Reactor is an experimental R package that provides a Reactive Notebook interface for R. Reactive Notebooks are really just collections of cells containing R code. When you update a cell, all of the cells that reference that are automatically updated as well, like how a spreadsheet works. When you change the value of a cell in a spreadsheet, automatically every cell that depends on it is automatically updated as well. Reactor brings together R code, plots, HTML, latech, and markdown all into one document. And this is really building off the ideas of R Notebooks, Jupyter, Shiny, and especially observable JavaScript Notebooks. The use cases for observable are for prototyping exploration, anytime you need to quickly develop or think through some R code interactively, and for education as well if you want to put together an interactive plot to explain something, a statistical idea, it's really easy to put that together in Reactor. The easiest way to get started with Reactor right now is to download it from GitHub. Once you load Reactor as a library, you can create a new notebook and then use the startReactor function to launch the Reactor interface, which will start a web server and automatically bring up a web browser. I think the easiest way to show what Reactor is all about is through a live demo. So I'm going to switch to a demo, although all of the code examples I'll use in the demo are also here in the slides. This is the base interface that you'll see when you launch Reactor. Let's go ahead and use this first cell. I'm going to say a equals one, which is set a variable equal to one. And when I run it by clicking the run button or shift enter, we see the output one. Now if I enter a second cell, let's just print out the value of a, and we get one like we would expect. But now the main feature of Reactor is if I go back here and I change the first cell in our notebook and I rerun it automatically without any, without me having to tell the notebook anything, the second one automatically updates. So we can use this to do things like we can build interactive things by using things like sliders. So if I say, let's say a is a slider from min zero to 10, now we get a nice HTML slider here. And now let's create a new cell where we just print out the value of a converting it to a numeric first. So if I run this, we see five. And now every time I change the slider, automatically that second cell is rerun. So we can use these primitives to build up more complicated things. So let's say let's make a slider for a variable called alpha, also going from zero to 10. And let's make one for beta slider from zero to 10. And then our third cell, let's plot the value, let's plot the density of a beta distribution with parameters alpha beta. So let's say curve d beta x alpha and beta zero to one. So when I run this, we automatically got a plot that shows up. And now when I change the values of these sliders changing the parameters of the beta distribution, automatically that plot gets updated. So it's really easy to set up little interactive notebooks to explore things like different probability distributions, for example. So I'm going to switch back to my slides. Some of the other features that I didn't have time to talk about in this talk. Reactor supports things like HTML widgets, you can embed things like leaflet maps in your notebooks, you can add latech and markdown to add explainers for for the R code, you can export to an R script where it automatically sorts the code by by execution order. An experimental feature that I'm working on is to be able to run Reactor notebooks as shiny apps so that you can leverage all of the great infrastructure for sharing shiny apps. And you can find more information about these features and a longer demo video at herbseisman.com slash reactor. Thanks so much for taking the time to watch this lightning talk. I hope you enjoyed and I hope you had you'll have time to check out Reactor.