# JSM 2018 Itinerary

by Mine Çetinkaya-Rundel

JSM 2018 is almost here! Usually around this time, I comb through the entire program manually making an itinerary for myself. But this year I decided to try something new – a programmatic way of going through the program, and then building a Shiny app that helps me better navigate the online program.

The end result of the app is below. (I might tweak it a bit further after this post goes live, depending on feedback I receive.) You can interact with the app here.

I’m often dissatisfied with conference webpages, and almost always dissatisfied with conference apps, so I thought this was a good opportunity to build one myself. Also, I’m teaching Shiny at JSM and have been wanting to acquaint myself better with the glue package, so I figured spending some time web scraping, text wrangling, and building an app could be fun. (Note to self: Next time do this after you’re done preparing all your presentations!)

This is a three part blog post: (1) the data, (2) the app, and (3) the itinerary.

All relevant source code can be found here.

## The data

The data were scraped from the JSM 2018 Online Program.

Before scraping the data, I checked that the scraping is allowed on this page using robotstxt::paths_allowed().

library(robotstxt)
paths_allowed("http://ww2.amstat.org/meetings/jsm/2018/onlineprogram/index.cfm")
##
ww2.amstat.org                      No encoding supplied: defaulting to UTF-8.
## [1] TRUE

Looks like we’re good to go!

Once you’re on the online program landing page, you need to click Search without setting any search parameters in order to get to a page with information on all JSM sessions. For convenience, I saved the resulting HTML file for this page in my repo. (You can access it here.)

The next step is using rvest and the SelectorGadget to scrape the data. This process allows us to take not-so-tidy data from the web and turn it into a tidy data frame that we can then work with in R.

Based on these data, I created two data frames: one for sessions and the other for talks. These two data frames will serve as the source data for the two tabs in the app. The code for data scraping the data and wrangling into these two data frames can be found here.

## The app

The app is built with Shiny, using a navbarPage to allow for two separate tabPanels.

The first panel is the session schedule. This tab allows users to subset sessions based on days and times, as well as session sponsors and types. This is similar to the functionality on the JSM page; however, it’s designed to easily subset for sessions I like having on my radar, and it allows me to subset by time of day.

The second tab is designed to navigate talks, as opposed to sessions. You can look for keywords in talk titles. Curious how many talks have “R” in their title? How about “tidy”? Take a guess first, then peek at the app to check your answer.

The source code for the app can be found here.

## The itinerary

Using a combination of the app I build and good ol’ Ctrl-F on the online program, I came up with the following itinerary for JSM. The foci of the sessions I selected are education, data science, computing, visualization, and social responsibility. I obviously won’t make it to all the sessions I list here, but I plan to at least try to get my hands on the slides for the talks I don’t make.

I also plan on stopping by the JSM Data Art Show at some point!

If you have suggestions for other sessions (in these topics or other) that you think should be on this list, let me know in the comments!

### Saturday, Jul 28

• 8:00 AM - 12:00 PM: Shiny Essentials - This morning I will be teaching a half-day workshop on building Shiny apps and dashboards. If you’re interested, you can sign up here.

• 8:00 AM - 4:00 PM: Preparing Graduate Students to Teach Statistics and Data Science - This is a workshop designed to prepare graduate students for a role as undergraduate faculty responsible for teaching statistics and data science. I will be teaching two modules in this workshop in the afternoon.