├── .Rprofile ├── renv ├── .gitignore ├── settings.dcf └── activate.R ├── .gitignore ├── icons ├── github.png ├── homepage.png ├── linkedin.png └── twitter.png ├── speakers ├── zj.jpg ├── karawoo.jpg ├── mayagans.jpg ├── mikepage.jpg ├── seanlopp.png ├── alanfeder.jpg ├── andrewtran.jpg ├── jeroenooms.jpg ├── mattthomas.jpg ├── simoncouch.jpg ├── aaronjacobs.jpg ├── ahmadoudicko.jpg ├── alexcookson.png ├── allisonhorst.png ├── carsonsievert.png ├── deanmarchiori.jpg ├── dorrisscott.jpg ├── emilyriederer.jpg ├── grantfleming.png ├── hadleywickham.jpg ├── irenesteves.jpg ├── jooyoungseo.jpg ├── katehertweck.jpg ├── marcusadams.jpg ├── meganbeckett.jpg ├── michaelchow.jpg ├── nicolekramer.jpg ├── pamelapairo.jpg ├── richardvogg.jpg ├── rivaquiroga.jpg ├── sophiebeiers.jpg ├── vickiboykis.jpg ├── wolframking.jpg ├── barretschloerke.png ├── garrickadenbuie.jpg ├── javierluraschi.jpg ├── johnburnmurdoch.jpg ├── malcolmbarrett.jpg ├── michaelchirico.jpg ├── nealrichardson.jpg ├── nicholaspylypiw.jpg ├── shelmithkariuki.png ├── athanasiamowinckel.png ├── marievendettuoli.jpg ├── ericgunnarcronstrom.jpg ├── lucydagostinomcgowan.png ├── minecetinkayarundel.jpg ├── yaninabellinisaibene.jpg ├── chelseaparlettpelleriti.png ├── daniellesmallsperkins.jpg ├── maxkuhn.md ├── winstonchang.md ├── shirbiishshalom.md ├── vickiboykis.md ├── hadleywickham.md ├── danielleoberdier.md ├── wolframking.md ├── karawoo.md ├── barretschloerke.md ├── lucydagostinomcgowan.md ├── johnburnmurdoch.md ├── michaelchow.md ├── nealrichardson.md ├── zj.md ├── colinrundel.md ├── irenesteves.md ├── simoncouch.md ├── andrewtran.md ├── garrickadenbuie.md ├── alexcookson.md ├── athanasiamowinckel.md ├── daniellesmallsperkins.md ├── javierluraschi.md ├── jeroenooms.md ├── sophiebeiers.md ├── malcolmbarrett.md ├── mayagans.md ├── michaelchirico.md ├── seanlopp.md ├── chelseaparlettpelleriti.md ├── pamelapairo.md ├── richardvogg.md ├── mikepage.md ├── dorrisscott.md ├── nicholaspylypiw.md ├── aaronjacobs.md ├── grantfleming.md ├── alanfeder.md ├── carsonsievert.md ├── nicolekramer.md ├── emilyriederer.md ├── rikagorn.md ├── yaninabellinisaibene.md ├── allisonhorst.md ├── jooyoungseo.md ├── minecetinkayarundel.md ├── mattthomas.md ├── rivaquiroga.md ├── meganbeckett.md ├── ahmadoudicko.md ├── ericgunnarcronstrom.md ├── deanmarchiori.md ├── marievendettuoli.md ├── shelmithkariuki.md ├── johnhelveston.md ├── katehertweck.md └── marcusadams.md ├── MAIN.R ├── block-times-gmt.yml ├── rstudio-global-2021-program.Rproj ├── session-names.yml ├── _helpers.R ├── export-joined.R ├── README.md ├── talk_times.csv ├── export-times.R ├── prepopulate.R ├── discussion_sessions.csv ├── export-sessions.R └── renv.lock /.Rprofile: -------------------------------------------------------------------------------- 1 | source("renv/activate.R") 2 | -------------------------------------------------------------------------------- /renv/.gitignore: -------------------------------------------------------------------------------- 1 | library/ 2 | python/ 3 | staging/ 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | yaml_output 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/icons/github.png -------------------------------------------------------------------------------- /speakers/zj.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/zj.jpg -------------------------------------------------------------------------------- /icons/homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/icons/homepage.png -------------------------------------------------------------------------------- /icons/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/icons/linkedin.png -------------------------------------------------------------------------------- /icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/icons/twitter.png -------------------------------------------------------------------------------- /speakers/karawoo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/karawoo.jpg -------------------------------------------------------------------------------- /speakers/mayagans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/mayagans.jpg -------------------------------------------------------------------------------- /speakers/mikepage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/mikepage.jpg -------------------------------------------------------------------------------- /speakers/seanlopp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/seanlopp.png -------------------------------------------------------------------------------- /speakers/alanfeder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/alanfeder.jpg -------------------------------------------------------------------------------- /speakers/andrewtran.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/andrewtran.jpg -------------------------------------------------------------------------------- /speakers/jeroenooms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/jeroenooms.jpg -------------------------------------------------------------------------------- /speakers/mattthomas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/mattthomas.jpg -------------------------------------------------------------------------------- /speakers/simoncouch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/simoncouch.jpg -------------------------------------------------------------------------------- /speakers/aaronjacobs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/aaronjacobs.jpg -------------------------------------------------------------------------------- /speakers/ahmadoudicko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/ahmadoudicko.jpg -------------------------------------------------------------------------------- /speakers/alexcookson.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/alexcookson.png -------------------------------------------------------------------------------- /speakers/allisonhorst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/allisonhorst.png -------------------------------------------------------------------------------- /speakers/carsonsievert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/carsonsievert.png -------------------------------------------------------------------------------- /speakers/deanmarchiori.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/deanmarchiori.jpg -------------------------------------------------------------------------------- /speakers/dorrisscott.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/dorrisscott.jpg -------------------------------------------------------------------------------- /speakers/emilyriederer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/emilyriederer.jpg -------------------------------------------------------------------------------- /speakers/grantfleming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/grantfleming.png -------------------------------------------------------------------------------- /speakers/hadleywickham.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/hadleywickham.jpg -------------------------------------------------------------------------------- /speakers/irenesteves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/irenesteves.jpg -------------------------------------------------------------------------------- /speakers/jooyoungseo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/jooyoungseo.jpg -------------------------------------------------------------------------------- /speakers/katehertweck.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/katehertweck.jpg -------------------------------------------------------------------------------- /speakers/marcusadams.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/marcusadams.jpg -------------------------------------------------------------------------------- /speakers/meganbeckett.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/meganbeckett.jpg -------------------------------------------------------------------------------- /speakers/michaelchow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/michaelchow.jpg -------------------------------------------------------------------------------- /speakers/nicolekramer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/nicolekramer.jpg -------------------------------------------------------------------------------- /speakers/pamelapairo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/pamelapairo.jpg -------------------------------------------------------------------------------- /speakers/richardvogg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/richardvogg.jpg -------------------------------------------------------------------------------- /speakers/rivaquiroga.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/rivaquiroga.jpg -------------------------------------------------------------------------------- /speakers/sophiebeiers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/sophiebeiers.jpg -------------------------------------------------------------------------------- /speakers/vickiboykis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/vickiboykis.jpg -------------------------------------------------------------------------------- /speakers/wolframking.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/wolframking.jpg -------------------------------------------------------------------------------- /speakers/barretschloerke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/barretschloerke.png -------------------------------------------------------------------------------- /speakers/garrickadenbuie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/garrickadenbuie.jpg -------------------------------------------------------------------------------- /speakers/javierluraschi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/javierluraschi.jpg -------------------------------------------------------------------------------- /speakers/johnburnmurdoch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/johnburnmurdoch.jpg -------------------------------------------------------------------------------- /speakers/malcolmbarrett.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/malcolmbarrett.jpg -------------------------------------------------------------------------------- /speakers/michaelchirico.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/michaelchirico.jpg -------------------------------------------------------------------------------- /speakers/nealrichardson.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/nealrichardson.jpg -------------------------------------------------------------------------------- /speakers/nicholaspylypiw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/nicholaspylypiw.jpg -------------------------------------------------------------------------------- /speakers/shelmithkariuki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/shelmithkariuki.png -------------------------------------------------------------------------------- /speakers/athanasiamowinckel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/athanasiamowinckel.png -------------------------------------------------------------------------------- /speakers/marievendettuoli.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/marievendettuoli.jpg -------------------------------------------------------------------------------- /speakers/ericgunnarcronstrom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/ericgunnarcronstrom.jpg -------------------------------------------------------------------------------- /speakers/lucydagostinomcgowan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/lucydagostinomcgowan.png -------------------------------------------------------------------------------- /speakers/minecetinkayarundel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/minecetinkayarundel.jpg -------------------------------------------------------------------------------- /speakers/yaninabellinisaibene.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/yaninabellinisaibene.jpg -------------------------------------------------------------------------------- /speakers/chelseaparlettpelleriti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/chelseaparlettpelleriti.png -------------------------------------------------------------------------------- /speakers/daniellesmallsperkins.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio/rstudio-global-2021-program/HEAD/speakers/daniellesmallsperkins.jpg -------------------------------------------------------------------------------- /MAIN.R: -------------------------------------------------------------------------------- 1 | source("export-times.R", local = new.env()) 2 | source("export-sessions.R", local = new.env()) 3 | source("export-joined.R", local = new.env()) 4 | -------------------------------------------------------------------------------- /renv/settings.dcf: -------------------------------------------------------------------------------- 1 | external.libraries: 2 | ignored.packages: 3 | package.dependency.fields: Imports, Depends, LinkingTo 4 | snapshot.type: implicit 5 | use.cache: TRUE 6 | vcs.ignore.library: TRUE 7 | -------------------------------------------------------------------------------- /block-times-gmt.yml: -------------------------------------------------------------------------------- 1 | alfa: 2021-01-21 16:00 2 | bravo: 2021-01-21 18:00 3 | charlie: 2021-01-21 20:00 4 | delta: 2021-01-21 22:00 5 | echo: 2021-01-22 00:00 6 | foxtrot: 2021-01-22 02:00 7 | golf: 2021-01-22 04:00 8 | hotel: 2021-01-22 06:00 9 | india: 2021-01-22 08:00 10 | juliett: 2021-01-22 10:00 11 | kilo: 2021-01-22 12:00 12 | lima: 2021-01-22 14:00 13 | -------------------------------------------------------------------------------- /rstudio-global-2021-program.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | -------------------------------------------------------------------------------- /session-names.yml: -------------------------------------------------------------------------------- 1 | alfa: Keynote 2 | bravo: 3 | A: Learning 4 | B: Language interop 5 | C: Visualisation 6 | charlie: Keynote 7 | delta: 8 | A: Teaching 9 | B: Package dev 10 | C: Modelling 11 | echo: Keynote 12 | foxtrot: 13 | A: Data for good 14 | B: Organisational tooling 15 | C: Programming 16 | golf: Keynote 17 | hotel: 18 | A: Learning 19 | B: Language interop 20 | C: Visualisation 21 | india: Keynote 22 | juliett: 23 | A: Teaching 24 | B: Package dev 25 | C: Modelling 26 | kilo: Keynote 27 | lima: 28 | A: Data for good 29 | B: Organisational tooling 30 | C: Programming 31 | -------------------------------------------------------------------------------- /_helpers.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | 3 | session_df <- local({ 4 | sessionnames <- yaml::read_yaml("session-names.yml") 5 | 6 | mapply(names(sessionnames), sessionnames, FUN = function(nm, e) { 7 | if (is.list(e)) { 8 | tibble::tibble(block = rep_len(nm, length(e)), track = names(e), session = unlist(e)) 9 | } else if (is.character(e)) { 10 | tibble::tibble(block = nm, track = NA_character_, session = e) 11 | } 12 | }, USE.NAMES = FALSE, SIMPLIFY = FALSE) %>% dplyr::bind_rows() 13 | }) 14 | 15 | intellum_datetime <- . %>% 16 | lubridate::with_tz("America/New_York") %>% 17 | (lubridate::stamp("2008-01-30 14:30", "ymdHM")) 18 | -------------------------------------------------------------------------------- /speakers/maxkuhn.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 222 3 | url: https://global.rstudio.com/student/page/40625 4 | type: talk 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Max Kuhn 10 | affiliation: RStudio 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # What's new in tidymodels? 20 | 21 | tidymodels is a collection of packages for modeling using a tidy interface. In the last year there have been numerous improvements and extensions. This talk gives an overview of additional tuning methods, new extension packages for models and recipes, and other features. 22 | 23 | # Speaker bio 24 | 25 | Max Kuhn is a human person. 26 | -------------------------------------------------------------------------------- /export-joined.R: -------------------------------------------------------------------------------- 1 | library(dplyr) 2 | source("_helpers.R", local = TRUE) 3 | 4 | talks <- readr::read_csv("simple_schedule.csv") 5 | discussion <- readr::read_csv("discussion_sessions_normalized.csv") %>% 6 | rename(title_text = title) %>% 7 | rename(abstract_text = description) %>% 8 | mutate(abstract_html = paste0("

", 9 | vapply(abstract_text, htmltools::htmlEscape, character(1)), 10 | "

" 11 | )) %>% 12 | mutate(type = "discussion") %>% 13 | rename(time_gmt = start_time) %>% 14 | left_join(session_df, c("block", "track")) %>% 15 | rename(topic = session) %>% 16 | select(-summary) 17 | 18 | full <- bind_rows(talks, discussion) %>% arrange(block, track, time_gmt) 19 | 20 | readr::write_csv(full, "full_schedule.csv") 21 | 22 | print(processx::run("aws", c( 23 | "s3", 24 | "cp", 25 | rprojroot::find_rstudio_root_file("full_schedule.csv"), 26 | "s3://rstudio-global-2021/schedule.csv" 27 | ))) 28 | -------------------------------------------------------------------------------- /speakers/winstonchang.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 335 3 | url: https://global.rstudio.com/student/page/40644 4 | type: talk 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Winston Chang 10 | affiliation: RStudio 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # Making Shiny apps faster with caching 20 | 21 | Shiny's 1.6 has a new function, `bindCache()`, which makes it easy to dramatically speed up reactive expressions and output rendering functions. This allows many applications to scale up to serve several times more users without an increase in server resources. 22 | 23 | # Speaker bio 24 | 25 | Winston Chang is a software engineer at RStudio. He maintains several R packages, from web-related packages like `shiny`, to lower-level packages like `R6` and `profvis`. Winston has a Ph.D. in psychology from Northwestern University, and is the author of _R Graphics Cookbook_, published by O'Reilly Media. 26 | -------------------------------------------------------------------------------- /speakers/shirbiishshalom.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 323 3 | url: https://global.rstudio.com/student/page/40640 4 | type: talk 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Shirbi Ish-Shalom 10 | affiliation: Intuit 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # Using R to Up Your Experimentation Game 20 | 21 | Have you ever cut an A/B test short? Maybe because of traffic constraints, your antsy boss, or early successful results. In reality, cutting your test short can be catastrophic, making your business decision no better than a coin flip. Learn some R-driven tips & tricks to get meaningful results quickly with a statistically rigorous methodology called sequential testing, an A/B testing enhancement my team employs at Intuit. 22 | 23 | Key Takeaways. 24 | 1. What is sequential testing and how to use it. 25 | 2. How to learn (and fail!) quickly by taking big metric swings 26 | 3. How I used R to share my learnings & make them useful for anyone (even non-data scientists!) at my company. 27 | 28 | # Speaker bio 29 | 30 | Shirbi Ish-Shalom is a human person. 31 | -------------------------------------------------------------------------------- /speakers/vickiboykis.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 2 3 | url: https://global.rstudio.com/student/page/40643 4 | type: keynote 5 | track: null 6 | blocks: 7 | - echo 8 | - kilo 9 | name: Vicki Boykis 10 | affiliation: Automattic 11 | links: 12 | homepage: http://vickiboykis.com/ 13 | twitter: https://twitter.com/vboykis 14 | github: veekaybee 15 | linkedin: vickiboykis 16 | location: Philadelphia, PA 17 | --- 18 | 19 | # Your public garden 20 | 21 | Vicky will discuss how that as people who can write code and analyze data, we have a lot of input and power over what our digital and work worlds looks like, and therefore can act as agents of change and repair. 22 | 23 | # Speaker bio 24 | 25 | Vicki Boykis is a machine learning engineer at [Automattic](https://automattic.com/), the company behind [Wordpress.com](https://wordpress.com). She works mostly in Python, R, Spark, and SQL, and really enjoys building end-to-end data products. Outside of work she publishes the [Normcore Tech newsletter](https://vicki.substack.com) and blogs at . In her "spare time", she blogs, reads, and [writes terrible joke tweets about data](https://twitter.com/vboykis). 26 | -------------------------------------------------------------------------------- /speakers/hadleywickham.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 1 3 | url: https://global.rstudio.com/student/page/40521 4 | type: keynote 5 | track: null 6 | blocks: 7 | - alfa 8 | - golf 9 | name: Hadley Wickham 10 | affiliation: RStudio 11 | links: 12 | homepage: http://hadley.nz/ 13 | twitter: hadleywickham 14 | github: hadley 15 | linkedin: hadleywickham 16 | location: Houston, TX 17 | --- 18 | 19 | # Maintaining the house the tidyverse built 20 | 21 | Hadley will talk about how the tidyverse has evolved since its creation (just five years ago!). You'll learn about our greatest successes, learn from our biggest failures, and get some hints of what's coming down the pipeline for the future. 22 | 23 | # Speaker bio 24 | 25 | Hadley Wickham is Chief Scientist at RStudio. He's interested in building tools (computational and cognitive) that make data ingest, preparation, manipulation, visualization and analysis easier. He's developed over 30 R packages, for data analysis (ggplot2, dplyr, tidyr), making frustrating parts of R easier to use (lubridate for dates, stringr for strings, httr for accessing web APIs), and for streamlining the R package development (devtools, roxygen2, and testthat). 26 | -------------------------------------------------------------------------------- /speakers/danielleoberdier.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 185 3 | url: https://global.rstudio.com/student/page/40604 4 | type: lightning 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Danielle Oberdier 10 | affiliation: null 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: null 17 | --- 18 | 19 | # How Content Makes the Data Go 'Round 20 | 21 | What makes a successful data science community thrive across industries? A recent Aflac WorkForces Report showed that professionals who are engaged in a community within their industry are 70% more likely to be satisfied with their work. 22 | I believe anyone can and should create content about data. In this talk, I will direct your attention towards 1) the ways that content creation can lead to heightened data science opportunities 2) how to know which type/s of content mediums (podcasts, blogs, video) are right for you 3) how to leverage social media and networking connections to make your content reach the right audiences. I hope to inspire listeners to create their own content and online brands as resources for fellow R community members. 23 | 24 | # Speaker bio 25 | 26 | Danielle Oberdier is a human person. 27 | -------------------------------------------------------------------------------- /speakers/wolframking.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 162 3 | url: https://global.rstudio.com/student/page/40645 4 | type: lightning 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Wolfram King 10 | affiliation: R Weekly 11 | links: 12 | homepage: https://rweekly.org 13 | twitter: https://twitter.com/rweekly_org 14 | github: https://github.com/rweekly/rweekly.org 15 | linkedin: null 16 | location: China 17 | --- 18 | 19 | # Lifelong Learning with R Weekly 20 | 21 | R Weekly is a weekly newsletter with many great R blogs post, tutorials, and other formats of resources. https://rweekly.org 22 | 23 | R Weekly wants to keep track of these great things in the R community and make it more accessible to everyone. 24 | 25 | This is a warm and welcoming place. The team welcomes everyone who wants to contribute to the R community. 26 | 27 | In this talk I will cover these 6 topics: 28 | 29 | 1. How to use the R Weekly website 30 | 2. Why I created R Weekly 31 | 3. How to Contribute to R Weekly 32 | 4. How to release a new post 33 | 5. How to join the team 34 | 6. Learning from building the community 35 | 36 | # Speaker bio 37 | 38 | Wolfram King is the founder of the R Weekly project. He is an active member of the R community and has several popular R open-source projects on GitHub. 39 | -------------------------------------------------------------------------------- /speakers/karawoo.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 286 3 | url: https://global.rstudio.com/student/page/40618 4 | type: talk 5 | track: A 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Kara Woo 10 | affiliation: Sage Bionetworks 11 | links: 12 | homepage: https://karawoo.com/ 13 | twitter: https://twitter.com/kara_woo 14 | github: https://github.com/karawoo 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # Always look on the bright side of plots 20 | 21 | Everyone who creates visualizations in R is bound to make mistakes that prevent their plots from looking as they should. Sometimes, these mistakes create beautiful "accidental aRt", though other times they're just plain frustrating. Either way, however, there's something to be learned. This talk will draw on years of watching both the ggplot2 issue tracker and the @accidental__aRt twitter account to highlight some common plot foibles and explain what they can teach us about how ggplot2 works. 22 | 23 | # Speaker bio 24 | 25 | Kara Woo is a principal bioinformatics engineer at Sage Bionetworks. She leads a team of developers building tools and infrastructure for open science. Kara previously worked at Washington State University and at the National Center for Ecological Analysis and Synthesis (NCEAS), where she combined data management with fieldwork in Siberia at Lake Baikal. She has four cats. 26 | -------------------------------------------------------------------------------- /speakers/barretschloerke.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 312 3 | url: https://global.rstudio.com/student/page/40600 4 | type: talk 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Barret Schloerke 10 | affiliation: RStudio 11 | links: 12 | homepage: http://schloerke.com/ 13 | twitter: https://twitter.com/schloerke 14 | github: https://github.com/schloerke 15 | linkedin: https://www.linkedin.com/in/schloerke/ 16 | location: United States 17 | --- 18 | 19 | # plumber + future: Async Web APIs 20 | 21 | `plumber` is an R package that allows users to create web APIs by decorating R functions using `roxygen2`-like comments. In the latest release, asynchronous code (using `future` or `promises`) may be inserted at any stage of a `plumber` route execution, enabling parallel processing using multiple workers. In this talk, I will go through how you can set up your own asynchronous `plumber` API to leverage your full computing potential. 22 | 23 | # Speaker bio 24 | 25 | `hello()`! Dr. Barret Schloerke is a Software Engineer on the Shiny team at RStudio. He currently maintains and creates many R packages surrounding the Shiny ecosystem, including `shiny`, `reactlog`, `plumber`, and `learnr`. Dr. Schloerke received his PhD in Statistics from Purdue University under the direction of Dr. Ryan Hafen and Dr. William Cleveland, specializing in Large Data Visualization (using R!). 26 | -------------------------------------------------------------------------------- /speakers/lucydagostinomcgowan.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 334 3 | url: https://global.rstudio.com/student/page/40620 4 | type: lightning 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Lucy D'Agostino McGowan 10 | affiliation: Wake Forest University 11 | links: 12 | homepage: https://lucymcgowan.com 13 | twitter: https://twitter.com/LucyStats 14 | github: https://github.com/LucyMcGowan 15 | linkedin: null 16 | location: USA 17 | --- 18 | 19 | # Designing Randomized Studies using Shiny 20 | 21 | This talk will walk through building a self-contained randomized study using Shiny and learnr modules. We will discuss building informed consent, the randomization process, demographic surveys, and R-based studies into a single online framework to allow users to seamlessly enroll and participate in randomized studies via a single URL. The talk will include both practical recommendations as well as technical code snippets. 22 | 23 | # Speaker bio 24 | 25 | Lucy D'Agostino McGowan is an assistant professor of statistics at Wake Forest University, where she leads the WFU [Data Science Lab](https://dmds.lucymcgowan.com). Her research focuses on causal inference, human-data interaction, and statistical communication. She can be found on Twitter @LucyStats, podcasting on [Casual Inference](https://casualinfer.libsyn.com), and blogging at [livefreeordichtomize.com](https://livefreeordichtomize.com). 26 | -------------------------------------------------------------------------------- /speakers/johnburnmurdoch.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 3 3 | url: https://global.rstudio.com/student/page/40615 4 | type: keynote 5 | track: null 6 | blocks: 7 | - charlie 8 | - india 9 | name: John Burn-Murdoch 10 | affiliation: Financial Times 11 | links: 12 | homepage: https://ft.com/jbm 13 | twitter: jburnmurdoch 14 | github: null 15 | linkedin: null 16 | location: London 17 | --- 18 | 19 | # Reporting on and visualising the pandemic 20 | 21 | John will discuss the lessons he's learned reporting on and visualising the pandemic, including the world of difference between making charts for a technical audience and making charts for a mass audience. You'll learn from his experience navigating the highly personal and political context within which people consume and evaluate graphics and data, and how that can help us better design and communicate with visualisations down the pipeline for the future. 22 | 23 | # Speaker bio 24 | 25 | John Burn-Murdoch is the Financial Times’ senior data visualisation journalist, and creator of the FT’s coronavirus trajectory tracker charts. He has been leading the FT’s data-driven coverage of the pandemic, exploring its impacts on health, the economy and wider society. When pandemics are not happening, he also uses data and graphics to tell stories on topics including politics, economics, climate change and sport, and is a visiting lecturer at the London School of Economics. 26 | -------------------------------------------------------------------------------- /speakers/michaelchow.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 322 3 | url: https://global.rstudio.com/student/page/40629 4 | type: talk 5 | track: B 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Michael Chow 10 | affiliation: On Sabbatical 11 | links: 12 | homepage: http://mchow.com 13 | twitter: https://twitter.com/chowthedog 14 | github: https://github.com/machow 15 | linkedin: https://www.linkedin.com/in/michael-a-chow 16 | location: Philadelphia, PA, United States 17 | --- 18 | 19 | # Bringing the Tidyverse to Python with Siuba 20 | 21 | Last January I left my job to spend a year developing siuba, a python port of dplyr. At its core, this decision was driven by a decade of watching python and R users produce similar analyses, but in very different ways. 22 | 23 | In this talk, I'll discuss 3 ways siuba enables R users to transfer their hard-earned programming knowledge to python: (1) leveraging the power of dplyr syntax, (2) options to generate SQL code, and (3) working with the plotnine plotting library. 24 | 25 | Looking back, I'll consider two critical pieces that have helped me develop siuba: using it to livecode TidyTuesday analyses, and building an interactive tutorial for absolute beginners. 26 | 27 | # Speaker bio 28 | 29 | Michael Chow is a data scientist and learning researcher. He serves as a co-director at Code for Philly. In past lives, he worked on adaptive assessment tools in ed tech, and received a PhD in cognitive psychology from Princeton University. 30 | -------------------------------------------------------------------------------- /speakers/nealrichardson.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 278 3 | url: https://global.rstudio.com/student/page/40631 4 | type: talk 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Neal Richardson 10 | affiliation: Ursa Computing 11 | links: 12 | homepage: https://enpiar.com/ 13 | twitter: https://twitter.com/enpiar 14 | github: https://github.com/nealrichardson 15 | linkedin: https://www.linkedin.com/in/enpiar/ 16 | location: United States 17 | --- 18 | 19 | # Bigger Data With Ease Using Apache Arrow 20 | 21 | The Apache Arrow project enables data scientists using R, Python, and other languages to work with large datasets efficiently and with interactive speed. Arrow is so fast at some workflows that it seems to defy reality--or at least the limits of R's capabilities. This talk examines the unique characteristics of the Arrow project that enable it to redefine what is possible in R. The talk also highlights some of the latest developments in the `arrow` R package, including how you can query and manipulate multi-file datasets, and it presents strategies for speeding up workflows by up to 100x. 22 | 23 | # Speaker bio 24 | 25 | Neal Richardson leads the engineering team at Ursa Computing, a startup working to empower data teams and accelerate data science. He is also the maintainer of several R packages, including `arrow`, and is a member of Apache Arrow's project management committee. Previously, he received a Ph.D. in Political Science and worked in survey analytics. 26 | -------------------------------------------------------------------------------- /speakers/zj.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 114 3 | url: https://global.rstudio.com/student/page/40647 4 | type: lightning 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: ZJ 10 | affiliation: null 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/evalparse 14 | github: https://github.com/xiaodaigh/ 15 | linkedin: https://linkedin.com/in/daizj 16 | location: Australia 17 | --- 18 | 19 | # Easy larger-than-RAM data manipulation with {disk.frame} 20 | 21 | Learn how to handle 100GBs of data with ease using {disk.frame} - the larger-than-RAM-data manipulation package. 22 | 23 | R loads data in its entirety into RAM. However, RAM is a precious resource and often do run out. That's why most R user would have run into the "cannot allocate vector of size xxB." error at some point. 24 | 25 | However, the need to handle larger-than-RAM data doesn't go away just because RAM isn't large enough. So many useRs turn to big data tools like Spark for the task. In this talk, I will make the case that {disk.frame} is sufficient and often preferable for manipulating larger-than-RAM data that fit on disk. I will show how you can apply familiar {dplyr}-verbs to manipulate larger-than-RAM data with {disk.frame}. 26 | 27 | # Speaker bio 28 | 29 | ZJ is a machine learning developer based in Melbourne, Australia. He regularly contributes to open source projects. He has more than 10 years of experience in banking before joining the tech sector. In his free time, he enjoys playing Go/Baduk/Weiqi. 30 | -------------------------------------------------------------------------------- /speakers/colinrundel.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 303 3 | url: https://global.rstudio.com/student/page/40603 4 | type: lightning 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Colin Rundel 10 | affiliation: University of Edinburgh & Duke University 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/rundel 14 | github: https://github.com/rundel 15 | linkedin: null 16 | location: Edinburgh, Scotland 17 | --- 18 | 19 | # parsermd - parsing R Markdown for fun and profit 20 | 21 | `parsermd` is a new R package for parsing and programmatically interacting with R Markdown (Rmd) documents. This package implements a formal grammar for Rmd documents in C++ using Boost's Spirit X3 library and provides additional user facing functions for the resulting abstract syntax tree. In this talk we will provide background on the structure and grammar of Rmd documents as well as discuss the ways in which the parsing of these documents enables a variety of automatable tasks. Specifically, we will focus on demonstrating how these tools can be used to provide automated feedback on student submissions in a statisical programming course. 22 | 23 | # Speaker bio 24 | 25 | Colin Rundel is Lecturer in Statistics and Data Science in the School of Mathematics at the University of Edinburgh and an Assistant Professor of the Practice in the Department of Statistical Science at Duke University. He is a long time user R and RStudio and his research interests include statistical computing, bayesian methods for spatial statistics, with a focus on applications in biology and ecology. 26 | -------------------------------------------------------------------------------- /speakers/irenesteves.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 273 3 | url: https://global.rstudio.com/student/page/40612 4 | type: talk 5 | track: B 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Irene Steves 10 | affiliation: Riskified 11 | links: 12 | homepage: https://irene.rbind.io/ 13 | twitter: https://twitter.com/i_steves 14 | github: https://github.com/isteves 15 | linkedin: null 16 | location: Israel 17 | --- 18 | 19 | # The dynamic duo: SQL & R 20 | 21 | There's a point in every data wranglers' career in which their full dataset can no longer fit into just CSV files, and the journey to database-world begins. I reached this point about two years ago, when I transitioned from ecological research to the world of eCommerce fraud prevention. My calls to read_csv became scarcer as I came to rely more and more on databases. In this talk, I'll demonstrate how I use R and SQL to access database tables, and how I incorporate both into my daily workflow, aided by features in RStudio IDE. I'll also discuss our company’s "riskiconn" package for handling database connections and queries, which includes customizations to simplify day-to-day data querying. 22 | 23 | # Speaker bio 24 | 25 | Irene holds an M.Sc. in Ecology and a B.A. in Integrative Biology, through which she first discovered R and data science. Her interest in data led her to the Arctic Data Center at the University of California Santa Barbara, a summer internship at RStudio, and ultimately to the Research & Data Science department at Riskified, where she now explores the complex patterns of fraud in eCommerce. In her free time, she studies Hebrew through podcasts and dubbed kids' movies. 26 | -------------------------------------------------------------------------------- /speakers/simoncouch.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 117 3 | url: https://global.rstudio.com/student/page/40641 4 | type: lightning 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Simon Couch 10 | affiliation: Reed College 11 | links: 12 | homepage: https://simonpcouch.com 13 | twitter: https://twitter.com/simonpcouch 14 | github: https://github.com/simonpcouch 15 | linkedin: https://linkedin.com/in/simonpcouch/ 16 | location: United States 17 | --- 18 | 19 | # tidymodels/stacks, Or, In Preparation for Pesto: A Grammar for Stacked Ensemble Modeling 20 | 21 | Through a community survey conducted over the summer, the RStudio tidymodels team learned that users felt the #1 priority for future development in the tidymodels package ecosystem should be ensembling, a statistical modeling technique involving the synthesis of multiple learning algorithms to improve predictive performance. This December, we were delighted to announce the initial release of stacks, a package for tidymodels-aligned ensembling. A particularly statistically-involved pesto recipe will help us get a sense for how the package works and how it advances the tidymodels package ecosystem as a whole. 22 | 23 | # Speaker bio 24 | 25 | Simon Couch is an R developer and statistics student at Reed College, where he is entering the final semester of his undergraduate degree. He co-authors and maintains R packages including broom, infer, and stacks, leads trainings and workshops as an RStudio-certified tidyverse trainer, and researches in algorithmic data privacy. He interned on the RStudio tidymodels team in summer 2020, and is currently applying to doctoral programs in statistics. 26 | -------------------------------------------------------------------------------- /speakers/andrewtran.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 290 3 | url: https://global.rstudio.com/student/page/40598 4 | type: talk 5 | track: A 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Andrew Ba Tran 10 | affiliation: The Washington Post 11 | links: 12 | homepage: https://www.washingtonpost.com/people/andrew-ba-tran/ 13 | twitter: https://twitter.com/abtran 14 | github: https://github.com/wpinvestigative 15 | linkedin: https://www.linkedin.com/in/abtran/ 16 | location: United States 17 | --- 18 | 19 | # The Opioid Files: Turning big pharmacy data over to the public 20 | 21 | Just because data is public doesn't mean it's accessible. It takes more effort, but designing data distribution so it can be analyzed by people with differing levels of data analysis skills opens up the possibility of more stories that can be told. This talk will go over how The Washington Post used R (and Python) to analyze hundreds of gigs of pain pill distribution data from the Drug Enforcement Administration as part of its investigation into the opioid epidemic. And how making the data public and showing their work enabled other journalists and researchers across the country to drill deeper than the Post could ever do on its own. 22 | 23 | # Speaker bio 24 | 25 | Andrew is a data reporter on the rapid-response investigative team at The Washington Post who has analyzed how covid-19 has disproportionately impacted certain communities, the spread of opioids across the country, and the rise of right-wing violence. He shared in winning the Pulitzer Prize for Investigative Reporting in 2018. He's an advocate for open data and reproducibility [in journalism](https://github.com/wpinvestigative). 26 | -------------------------------------------------------------------------------- /speakers/garrickadenbuie.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 245 3 | url: https://global.rstudio.com/student/page/40609 4 | type: lightning 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Garrick Aden-Buie 10 | affiliation: RStudio, PBC 11 | links: 12 | homepage: https://www.garrickadenbuie.com 13 | twitter: https://twitter.com/grrrck 14 | github: https://github.com/gadenbuie 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # xaringan Playground: Using xaringan to learn web development 20 | 21 | `xaringan` is a quirky package that extends R Markdown to create beautiful web-based HTML slides. Some of `xaringan`’s quirks come from the JavaScript library it uses, remarkjs, and some of it from the unusual naming scheme `xaringan` uses for its functions. But under this quirky exterior lies a powerful tool for learning and practicing web development, especially when combined with `infinite_moon_reader()` for immediate feedback. In this talk I'll cover some basic web concepts that illustrate how fun and rewarding it can to learn HTML, CSS and JavaScript while building awesome slides in R Markdown. 22 | 23 | # Speaker bio 24 | 25 | Garrick is a Data Science Educator at RStudio who lives in sunny St. Petersburg, Florida. His passion is combining creative coding with programming education, using code to build tools that teach coding to new and advanced R users alike. He's developed a number of open source packages and addins for `xaringan` including `xaringanthemer` for complete, custom slide themes and `xaringanExtra` for a variety of advanced additions to complete `xaringan` slides with live broadcasting, tabbed panels, custom animations, and more. 26 | -------------------------------------------------------------------------------- /speakers/alexcookson.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 307 3 | url: https://global.rstudio.com/student/page/40596 4 | type: lightning 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Alex Cookson 10 | affiliation: Royal Canadian Mint 11 | links: 12 | homepage: https://www.alexcookson.com/ 13 | twitter: https://twitter.com/alexcookson 14 | github: https://github.com/tacookson 15 | linkedin: https://www.linkedin.com/in/alexcookson/ 16 | location: Canada 17 | --- 18 | 19 | # The Power of Great Datasets 20 | 21 | There are a few classic datasets, like mtcars, nycflights, or Titanic passengers. They're okay, but they leave something to be desired for folks learning R: they're kind of boring. 22 | 23 | There's a big difference between "Okay Datasets" and "Great Datasets". Great Datasets prompt you to exclaim, "That's so cool!" They get your blood pumping and mind racing with questions you want answered. They give tremendous motivation to answer those questions. And in answering those questions, you'll probably learn some R. 24 | 25 | I want you to curate Great Datasets. You'll contribute to the richness of our community, you'll learn some R yourself, and you'll feel fantastic when someone finds your Great Dataset and exclaims, "That's so cool!" 26 | 27 | # Speaker bio 28 | 29 | Alex Cookson helps the Customer Intelligence team at the Royal Canadian Mint make the most of their data. When he's not working on A/B testing, recommendation engines, or exploratory data analysis at the Mint, he can be found participating in Tidy Tuesday or thinking up cool datasets to explore. And when he's not doing that, he's probably cycling around Toronto or doting on his two cats, Tom Tom and Ruby. 30 | -------------------------------------------------------------------------------- /speakers/athanasiamowinckel.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 128 3 | url: https://global.rstudio.com/student/page/40599 4 | type: lightning 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Athanasia M. Mowinckel 10 | affiliation: "[Center for Lifespan Changes in Brain and Cognition](https://www.oslobrains.no/)" 11 | links: 12 | homepage: https://drmowinckels.io/ 13 | twitter: https://twitter.com/DrMowinckels 14 | github: Athanasiamo 15 | linkedin: https://www.linkedin.com/in/drmowinckels/ 16 | location: Oslo, Norway 17 | --- 18 | 19 | # Make a package - Make some friends 20 | 21 | In 2017, I had never exposed my code to anyone other than a select few before, and I was terrified. I had some functions made from a colleagues script that I thought might be useful for others, and dared myself to make a package and push it to github. 22 | 23 | In stead of the dreaded ridiculing of poor code and development, people embraced the package and helped us make it better. Within just a couple of days, pull requests came from others to help us improve the code, implement tests, and improve documentation. I learned so much just by looking through the PRs and seeing how others worked. 24 | 25 | Rather than make me shy off development, the R neuro community's positive feedback has helped me find a new interest and joy in developing tools. 26 | 27 | # Speaker bio 28 | 29 | Athanasia M. Mowinckel is a staff scientist at the Center for Lifespan Changes in Brain and Cognition, at the University of Oslo. 30 | She has a background on cognitive psychology, and uses R for almost everything. 31 | She goes by the nickname "Mo" (closer to 'Mou' than 'Moe'), and is a member of the R-Ladies Global team. 32 | -------------------------------------------------------------------------------- /speakers/daniellesmallsperkins.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 180 3 | url: https://global.rstudio.com/student/page/40605 4 | type: lightning 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Danielle Smalls-Perkins 10 | affiliation: null 11 | links: 12 | homepage: https://danielle.pizza 13 | twitter: smallperks 14 | github: null 15 | linkedin: null 16 | location: null 17 | --- 18 | 19 | # Your R is My R too: Reflections on creating the Mi-R community 20 | 21 | While the R community has made strides in increasing the representation and participation for women and users from underrepresented regions, there are still members of the R community that have expressed desires for a more inclusive space in addition to these strides. In addition, there are unique challenges that underrepresented R users experience in their respective workspaces or academic environments. In late February of 2020, Danielle Smalls-Perkins and Dorris Scott created Mi-R (Minorities in R) as a result of their various experiences both in and outside the R community. The purpose of this talk is to reflect on the challenges, highlights, and future directions of the first six months since the creation of Mi-R. 22 | 23 | # Speaker bio 24 | 25 | Danielle Smalls-Perkins co-founded MiR Community with the hope that the R community would continue to encourage the inclusion and recognition of contributions made from R users of diverse backgrounds. She loves to use R for understanding and storytelling. 26 | Danielle currently works as a Senior Strategist in Google's Trust and Safety Team. She advocates for model fairness, interpretability, and reducing harmful outcomes of algorithmic decision-making on vulnerable populations. 27 | 28 | -------------------------------------------------------------------------------- /speakers/javierluraschi.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 112 3 | url: https://global.rstudio.com/student/page/40613 4 | type: talk 5 | track: B 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Javier Luraschi 10 | affiliation: "" 11 | links: 12 | homepage: http://about.me/javierluraschi 13 | twitter: https://twitter.com/javierluraschi 14 | github: https://github.com/javierluraschi 15 | linkedin: https://www.linkedin.com/in/javierluraschi/ 16 | location: United States 17 | --- 18 | 19 | # Using pins with Python and JavaScript 20 | 21 | Last year, [pins](https://pins.rstudio.com) got released as a brand new R package to pin, discover and cache remote resources for R users. This package has matured to support many use cases; from caching remote URLs, and easily sharing datasets with other R users, to building automated pipelines. 22 | 23 | However, in order to truly collaborate in multi-disciplinary data-driven teams, one needs to consider how to collaborate beyond R? How can we share resources with designers and machine learning experts who happen to use different programming languages like Python and JavaScript? 24 | 25 | This talk will introduce the [pinsjs](https://pinsjs.github.io/) project, a cross-language community project which has the goal of bringing `pins` to the broader open source community to enable rich workflows across larger data-driven teams. 26 | 27 | # Speaker bio 28 | 29 | Javier is the author of “Mastering Spark with R”, pins, sparklyr, mlflow and torch. He holds a double degree in Math and Software Engineer and decades of industry experience with a focus on data analysis. Javier is currently working on a project of his own; and previously worked in RStudio, Microsoft Research and SAP. 30 | -------------------------------------------------------------------------------- /speakers/jeroenooms.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 239 3 | url: https://global.rstudio.com/student/page/40614 4 | type: talk 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Jeroen Ooms 10 | affiliation: UC Berkeley 11 | links: 12 | twitter: opencpu 13 | github: jeroen 14 | linkedin: datajeroen 15 | location: Netherlands 16 | --- 17 | 18 | # Monitoring health and impact of open-source projects 19 | 20 | At rOpenSci, we have come to realize that in order to help researchers get the most out of R, we need better tooling to monitor the quality, health, and impact of R packages. This applies both to our internal projects, as well as other packages in the R ecosystem. But what exactly makes a good R package? 21 | 22 | In this talk we discuss various aspects of open-source software that are not always immediately obvious, and that you may want to consider when depending on an R package. We identify several categories of indicators you could look for, ranging from the role in the dependency network, to expectations around maintenance and participation. 23 | 24 | Finally we introduce an ambitious new rOpenSci project called [R-universe](https://r-universe.dev): an open platform, where we will experiment with showing metrics and other background information about packages, that may reveal something about the health and the impact of the project, and also facilitate discovery of other software. 25 | 26 | # Speaker bio 27 | 28 | Jeroen Ooms is a researcher and software developer with the rOpenSci group at UC Berkeley. He has written (too) many CRAN packages, and also maintains the compilers and build infrastructure for R on Windows. In this talk he will finally reveal how to pronounce his name. 29 | 30 | -------------------------------------------------------------------------------- /speakers/sophiebeiers.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 274 3 | url: https://global.rstudio.com/student/page/40642 4 | type: talk 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Sophie Beiers 10 | affiliation: American Civil Liberties Union 11 | links: 12 | homepage: http://www.sophiebeiers.com 13 | twitter: https://twitter.com/sophiebeiers 14 | github: https://github.com/sophiebeiers 15 | linkedin: https://www.linkedin.com/in/sophiebeiers/ 16 | location: United States 17 | --- 18 | 19 | # Trial and Error in Data Viz at the ACLU 20 | 21 | Visualizing data the “right” way requires many considerations — the topic, the quality of your data, your audience, your time frame, and the various channels of (sometimes conflicting) feedback you received. In this presentation, I’ll introduce some reflections on these considerations and ways I’ve incorporated feedback (or not) into my work as Data Journalist at the ACLU. Lastly, I’ll present some of the sillier trials and errors I’ve made that were arguably necessary to my process in creating effective data visualizations using R. 22 | 23 | # Speaker bio 24 | 25 | Sophie Beiers works on the ACLU's Analytics team as a Data Journalist where she analyzes and visualizes data for their lawyers’ legal arguments and for external advocacy pieces. Prior to her time at the ACLU, she received her master’s degree in Quantitative Methods in Social Sciences at Columbia University where she also TA’d at the Lede Program for Data Journalism. Before NYC, she kicked off her career in analytics in San Francisco at the education nonprofit "YouthTruth." Sophie is a Bay Area native but currently lives in Portland, OR and enjoys running, hiking, and making pottery in her free time. 26 | -------------------------------------------------------------------------------- /speakers/malcolmbarrett.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 279 3 | url: https://global.rstudio.com/student/page/40621 4 | type: talk 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Malcolm Barrett 10 | affiliation: Teladoc Health 11 | links: 12 | homepage: "https://malco.io/" 13 | twitter: "https://twitter.com/malco_barrett" 14 | github: "https://github.com/malcolmbarrett/" 15 | linkedin: "https://www.linkedin.com/in/malcolm-barrett-33b307138/" 16 | location: United States 17 | --- 18 | 19 | # You're Already Ready: Zen and the Art of R Package Development 20 | 21 | R packages make it easier to write robust, reproducible code, and modern tools in R development like usethis make it easy to work with packages. When you write R packages, you also unlock a whole ecosystem of tools that will make it easier to test, document, and share your code. Despite these benefits, many believe package development is too advanced for them or that they have nothing to offer. A fundamental belief in Zen is that you are already complete, that you already have everything you need. I’ll talk about why your project is already an R package, why you’re already an R package developer, and why you already have the skills to walk the path of development. 22 | 23 | # Speaker bio 24 | 25 | Malcolm Barrett is Clinical Research Data Scientist at Teladoc Health, an epidemiologist, and an R developer. He is also an organizer for the Los Angeles R Users Group. Malcolm is the author of several R packages, including ggdag and precisely. Previousy, he was an intern at RStudio and spent two years of service in AmeriCorps. In 2013 and 2014, while serving in AmeriCorps, Malcolm lived in the Zen Center of New York City, where he is still a student. 26 | -------------------------------------------------------------------------------- /speakers/mayagans.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 148 3 | url: https://global.rstudio.com/student/page/40626 4 | type: talk 5 | track: A 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Maya Gans 10 | affiliation: Atorus Research 11 | links: 12 | homepage: "https://maya.rbind.io" 13 | twitter: "https://twitter.com/Mayacelium" 14 | github: "https://github.com/MayaGans" 15 | linkedin: "https://www.linkedin.com/in/mayagans/" 16 | location: United States 17 | --- 18 | 19 | # Starting an R Book Club: Cooking Up Friendships in Isolation 20 | 21 | Amidst a global pandemic there’s been one consistency in my life: every Tuesday a group of friends meet to discuss Hadley Wickham’s Advanced R. I crowdsourced interest using the R4DS Slack and the results were magical: a group of incredibly curious and generous people motivated to learn and teach one another emerged. The meetings evolved from a group of strangers giving timid presentations to a safe space where we share and improve upon personal applications. The 1 club has grown to 3 regional cohorts, and became a model for discussing other books too. This talk will go over the structure of our meetings in hopes of empowering others to start their own book clubs, showcasing a different way people can create and engage in communities. 22 | 23 | # Speaker bio 24 | 25 | Maya is an R and JavaScript developer mainly focused on data visulaization and user experience. She currently works for Atorus Research where she is a web and Shiny developer. During her time as an intern at RStudio, she created a blocks-based programming language called TidyBlocks and co-authored “JavaScript for Data Science.” Passionate about data science education, Maya has given multiple trainings and workshops. 26 | -------------------------------------------------------------------------------- /speakers/michaelchirico.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 328 3 | url: https://global.rstudio.com/student/page/40628 4 | type: lightning 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Michael Chirico 10 | affiliation: Google, Inc. 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/michael_chirico 14 | github: https://github.com/michaelchirico/ 15 | linkedin: https://www.linkedin.com/in/michael-chirico-9b6b0527/ 16 | location: Palo Alto 17 | --- 18 | 19 | # Making .pot-ery with R: Translations in R Packages 20 | 21 | The R community is globally distributed and R itself is available with messages in 14 languages. Adding translations for non-native English-speaking users of your package can ease their experience and empower them to build better things with less frustration (though please note that "object of type 'closure' is not subsettable" is equally inscrutable in all human languages). 22 | 23 | In this talk, I will cover translations in R packages -- how to implement them, why to do so, and how to maintain them. This will summarize and extend learnings based on our experience adding Mandarin translations to data.table and culminating in the potools package. 24 | 25 | # Speaker bio 26 | 27 | Michael Chirico is a data scientist working on compute memory efficiency at Google. Before that he worked at Grab in Singapore and earlier got his PhD in Economics at the University of Pennsylvania. 28 | 29 | He is passionate about making tools to empower others who work with data (most of this energy is directed towards `data.table`) and loves learning languages (at various middling levels of proficiency in Japanese, Spanish, and Mandarin, with goals to learn Cantonese, Hokkien, Vietnamese and Bahasa). 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository contains files relating to the Program and Schedule for [rstudio::global 2021](https://rstudio.com/conference/). It includes: 2 | 3 | - The "master data" about speakers and talks 4 | 5 | - Scripts for converting that data to YAML for downstream processes to consume 6 | 7 | ## Instructions for speakers 8 | 9 | (These instructions assume you're familiar with Git and GitHub. If you're not, you can simply email your final talk title, abstract, speaker bio, and headshot to joe@rstudio.com with the subject "Program details".) 10 | 11 | 1. Find your Markdown file under the `speakers/` directory. 12 | 13 | 1. Ensure the existing metadata is correct, and fill out any of the `null` links. If your location field is `null`, you can add your country if you like. (Do not add additional fields, they will be ignored.) 14 | 15 | 2. Edit the talk title and abstract. (Markdown is allowed, but please stick to simple formatting.) 16 | 17 | 3. Fill out the speaker bio section with a paragraph (or two). 18 | 19 | 2. **Provide a square headshot** by uploading a .jpg or .png to the `speakers/` directory. The filename must match your Markdown file, except for the file extension. (For example, Sean Lopp has `speakers/seanlopp.md`, so his headshot would need to be `speakers/seanlopp.jpg` or `speakers/seanlopp.png`.) 20 | 21 | 3. Submit your changes as a PR and someone on the program committee will approve ASAP. 22 | 23 | **You don't need to run any of the scripts in this repo**--just edit your Markdown file and provide the headshot. 24 | 25 | You may submit as many changes/PRs as you want, up until the deadline of December 25. 26 | 27 | Thank you again for your participation in rstudio::global 2021! 28 | -------------------------------------------------------------------------------- /speakers/seanlopp.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 218 3 | url: https://global.rstudio.com/student/page/40638 4 | type: talk 5 | track: B 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Sean Lopp 10 | affiliation: RStudio 11 | links: 12 | homepage: https://loppsided.blog 13 | twitter: lopp_sean 14 | github: slopp 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # R & Python: Going Steady 20 | 21 | While there has been a lot of excitement about the R and Python love story, there are still misconceptions that individuals, teams, or organizations must pick between R or Python. This talk will explain why this false choice exists, debunk the myths that cause teams to be stuck with only one tool, and clarify how data scientists can use both languages to be more effective. We will explore this love story's blossoming relationship by looking at updates to RStudio's packages and products that make it easier to develop and collaborate in R and Python. This talk is for individuals who want to uncover the benefits of multilingual data science, IT professionals who are skeptical their life can get better by supporting more languages, and data science managers interested in enabling their teams instead of forcing their data superheros to be subservient to particular tools. 22 | 23 | # Speaker bio 24 | 25 | Sean Lopp is an engineer, data scientist, and product leader. At RStudio, he helps data science teams uncover better habits and adopt better tools. He has worked with hundreds of organizations in finance, manufacturing, consumer tech, pharma, and healthcare. Sean led the creation of RStudio's Package Manager. Before RStudio Sean worked in NREL's transportation research group. He lives in Colorado and skis and bikes with his family. 26 | -------------------------------------------------------------------------------- /speakers/chelseaparlettpelleriti.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 193 3 | url: https://global.rstudio.com/student/page/40602 4 | type: lightning 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Chelsea Parlett-Pelleriti 10 | affiliation: Chapman University 11 | links: 12 | homepage: https://cmparlettpelleriti.github.io/ 13 | twitter: https://twitter.com/ChelseaParlett 14 | github: https://github.com/cmparlettpelleriti 15 | linkedin: https://www.linkedin.com/in/chelseaparlettpelleriti/ 16 | location: null 17 | --- 18 | 19 | # Using Guided Simulation Exercises to Teach Data Science with R 20 | 21 | With more learning occurring virtually or in hybrid mode, hands-on ways to remotely teach DS are invaluable. Guided simulation exercises in R allow learners to explore concepts deeply, on their own time, and with others. They can also experiment with the simulations, try out edge cases, and challenge their assumptions, leading to more fruitful discussions. The comparison between coefficient estimates in regular, LASSO, and RIDGE regression, or how PCA performs when data are related are great examples of concepts where guided simulations can encourage learners to build intuitive knowledge. This talk explores how to use simulation exercises in R to help learners explore DS concepts and provides examples. 22 | 23 | # Speaker bio 24 | 25 | Chelsea Parlett-Pelleriti is a PhD Candidate and full-time instructional faculty teaching Data Science at Chapman University. Her research centers around how we can use statistics and machine learning to improve the way we analyze behavioral (read: psychology) data. In her free time, you can find Chelsea on Twitter making stats memes or #statsTikTok's. She also writes about statistics, machine learning, and using R for various blogs. 26 | -------------------------------------------------------------------------------- /speakers/pamelapairo.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 251 3 | url: https://global.rstudio.com/student/page/40634 4 | type: lightning 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Pamela E. Pairo 10 | affiliation: null 11 | links: 12 | homepage: https://pamepairo.netlify.app/ 13 | twitter: https://twitter.com/PamePairo 14 | github: https://github.com/PamelaPairo 15 | linkedin: https://www.linkedin.com/in/pamela-e-pairo-5a2004202/ 16 | location: Argentina 17 | --- 18 | 19 | # An easy and friendly way to build your multilingual website 20 | 21 | Having a personal website is a great way to share our experiences with other people, that also allows us to improve our communication skills and expand our networking groups. Besides, if the website is multilingual, the scope will be extended considerably by facilitating the exchange of ideas. I will give the key steps, some tips, and important considerations to bear in mind when creating a multilingual website using Blogdown, Hugo, and Netlify. Although having a multilingual website demands more effort, R enables us to build a website easily and keep it updated. I aim to help and encourage others to build their website to promote exchange experiences among people from different native languages. 22 | 23 | # Speaker bio 24 | 25 | Pamela E. Pairo is a Ph.D. in Biological Sciences of the University of Buenos Aires, with expertise in community ecology. One of her research lines focuses on analyzing the impact of human activities on the diversity and composition of biological communities with particular interest in arthropods. In addition, she is interested in studying the spatio-temporal patterns of dengue disease in Argentina. She also is a teaching assistant in statistics at the Argentine University of Enterprise (UADE). 26 | -------------------------------------------------------------------------------- /speakers/richardvogg.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 225 3 | url: https://global.rstudio.com/student/page/40635 4 | type: lightning 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Richard Vogg 10 | affiliation: null 11 | links: 12 | homepage: https://r-vogg-blog.netlify.app/ 13 | twitter: https://twitter.com/richard_vogg 14 | github: https://github.com/richardvogg 15 | linkedin: https://www.linkedin.com/in/richard-vogg-185764145/ 16 | location: Germany 17 | --- 18 | 19 | # How I became a Data Composer – examples of simulated datasets that bring value to a data-driven company 20 | 21 | How can I get the buy-in from business partners to use more advanced techniques? What can I do to make a data project involving several teams more efficient? And how can I train analysts who do not (yet) have access to sensitive data? 22 | A good data composer is skilled at creating suitable data quickly and efficiently. R has many functions and packages that help with simulating independent variables and composing those in a meaningful way. 23 | In this talk, I will share how I started creating data and how this skill helped me with solving some of the issues described above. Showing a few examples – of small, medium-sized, and large data composition – I want to encourage attendees to simulate data and enrich their data skillset. 24 | 25 | # Speaker bio 26 | 27 | Richard Vogg studied mathematics at TU Kaiserslautern, Germany, where he focused on statistics and obtained a Master’s degree. 28 | He worked as a Senior Business Analyst at Evalueserve in Chile for the last years, analyzing data for a major US bank. At the end of 2020, he moved back to Germany. 29 | Richard is a fan of applied statistics and storytelling with data. Outside of R, he enjoys playing the ukulele, trumpet, and didgeridoo. 30 | -------------------------------------------------------------------------------- /speakers/mikepage.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 179 3 | url: https://global.rstudio.com/student/page/40624 4 | type: talk 5 | track: A 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Mike Page 10 | affiliation: British Red Cross 11 | links: 12 | homepage: https://www.mikejohnpage.com/ 13 | twitter: https://twitter.com/MikeJohnPage 14 | github: https://github.com/mikejohnpage 15 | linkedin: null 16 | location: Switzerland 17 | --- 18 | 19 | # Cognitive speed: How the Tidyverse helped the British Red Cross respond quickly to COVID-19 20 | 21 | We will discuss the importance of cognitive speed, defined here as the rate in which an idea can be translated into code, and why the Tidyverse excels in this domain. We will demonstrate this idea in relation to a suite of tools we were required to rapidly develop at the British Red Cross in order to respond effectively to the COVID-19 pandemic. To do this, we will exhibit how elements of the unifying design principles outlined in the ‘tidyverse design guide - Tidyverse team’ relate to the notion of cognitive speed, giving specific examples for various design considerations. We believe this talk will encourage reflection on better design practices for future R developers, using the design principles of the tidyverse as the guiding beacon. 22 | 23 | # Speaker bio 24 | 25 | Mike Page is a data scientist on the Strategic Insight and Foresight team at the British Red Cross. Here, he helps to develop a suite of open source tools and dashboards including the [Vulnerability Index](https://britishredcrosssociety.github.io/covid-19-vulnerability/) and [Resilience Index](https://britishredcross.shinyapps.io/resilience-index/). Mike is also the author of several R packages including mortyr and newsrivr. In his spare time you can find him rock climbing around the Alps. 26 | -------------------------------------------------------------------------------- /speakers/dorrisscott.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 180 3 | url: https://global.rstudio.com/student/page/40605 4 | type: lightning 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Dorris Scott 10 | affiliation: Washington University in St. Louis 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: null 17 | --- 18 | 19 | # Your R is My R too: Reflections on creating the Mi-R community 20 | 21 | While the R community has made strides in increasing the representation and participation for women and users from underrepresented regions, there are still members of the R community that have expressed desires for a more inclusive space in addition to these strides. In addition, there are unique challenges that underrepresented R users experience in their respective workspaces or academic environments. In late February of 2020, Danielle Smalls-Perkins and Dorris Scott created Mi-R (Minorities in R) as a result of their various experiences both in and outside the R community. The purpose of this talk is to reflect on the challenges, highlights, and future directions of the first six months since the creation of Mi-R. 22 | 23 | # Speaker bio 24 | 25 | Dorris Scott is the GIS Librarian and Social Science Data Curator at Washington University – St. Louis, where she provides consultation on projects that use geospatial data along with providing training in various GIS software, programming applications of geospatial data, and data management. She also serves as a liaison between Washington University Libraries and social science departments assisting faculty with their data needs such as data management and data curation. Dorris received her PhD in Geography from the University of Georgia, with a specialization in GIS applications for public health. 26 | -------------------------------------------------------------------------------- /speakers/nicholaspylypiw.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 167 3 | url: https://global.rstudio.com/student/page/40632 4 | type: lightning 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Nicholas Pylypiw 10 | affiliation: Cape Fear Collective 11 | links: 12 | homepage: https://capefearcollective.org 13 | twitter: null 14 | github: https://github.com/NickPyll 15 | linkedin: https://www.linkedin.com/in/nicholaspylypiw/ 16 | location: United States 17 | --- 18 | 19 | # Racial Equity Dashboard: Unpacking Systemic Inequity 20 | 21 | At Cape Fear Collective, we’re redefining what a town square looks like in our community, serving as a place where all people, organizations, and ideas can come together to effect real, lasting, and systemic change. By merging cutting edge data science with an emphasis on equity and the lived experience of our most marginalized communities, Cape Fear Collective supports Southeastern North Carolina’s front line organizations in combating poverty, racism, poor health and education outcomes, and socio-economic disparities. This talk is about how we bring that model to life through our [Racial Equity Dashboard](https://cape-fear-collective.shinyapps.io/racial-equity/), from data sourcing, to modeling and, ultimately, action. 22 | 23 | # Speaker bio 24 | 25 | Nick is the Director of Data Science at Cape Fear Collective, a non profit which supports Southeastern North Carolina’s front line organizations in combating poverty, racism, poor health and education outcomes, and socio-economic disparities. Prior to CFC, he honed his data science and consulting skills in the marketing analytics space, transforming the way Fortune 500+ companies (Lowe's Southwest Airlines, P&G, and many others) think about their customer strategy and value proposition. He lives in Raleigh, North Carolina. 26 | -------------------------------------------------------------------------------- /speakers/aaronjacobs.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 293 3 | url: https://global.rstudio.com/student/page/40593 4 | type: talk 5 | track: C 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Aaron Jacobs 10 | affiliation: Crescendo Technology 11 | links: 12 | homepage: https://unconj.ca 13 | twitter: https://twitter.com/unconj1 14 | github: https://github.com/atheriel 15 | linkedin: null 16 | location: Toronto, Canada 17 | --- 18 | 19 | # Introducing xrprof: A New Way to Profile R 20 | 21 | Tracking down performance issues in R code usually means using R's built-in `Rprof()` profiler or one of the packages built around it. But the changing nature of the R community (towards more deployed applications) makes local profiling workflows frustrating, which is why I have written a new profiler: xrprof. 22 | 23 | xprof is compatible with existing R tools, but unlike them it can be used to profile R code that is already running -- in fact, it is designed to be safe to point at R code running "in production". xrprof also works seamlessly when R is run inside Docker, and can even be run in complex environments like Kubernetes clusters. 24 | 25 | Taking inspiration from the {jointprof} package, xrprof can also show function calls at the C/C++ level alongside those from R. This can be immensely useful for diagnosing problems in packages that make heavy use of compiled code. 26 | 27 | # Speaker bio 28 | 29 | Aaron Jacobs is a Senior Data Scientist on the R&D team at Crescendo, a technology company in the sports betting space with a large internal R ecosystem. Prior to Crescendo he worked in Canadian public policy research. Aaron has a strong interest in the engineering side of data science and the emerging use of R "in production". He is the author of several CRAN and GitHub packages, as well as xrprof -- a new R profiling tool. 30 | -------------------------------------------------------------------------------- /speakers/grantfleming.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 315 3 | url: https://global.rstudio.com/student/page/40610 4 | type: talk 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Grant Fleming 10 | affiliation: Elder Research Inc. 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/hearthehearsay 14 | github: https://github.com/Gflemin 15 | linkedin: https://www.linkedin.com/in/grant-fleming-a1712a131 16 | location: United States 17 | --- 18 | 19 | # Fairness and Data Science: Failures, Factors, and Futures 20 | 21 | In recent years, numerous highly publicized failures in data science have made evident that biases or issues of fairness in training data can sneak into, and be magnified by, our models, leading to harmful, incorrect predictions being made once the models are deployed into the real world. But what actually constitutes an unfiar or biased model, and how can we diagnose and address these issues within our own work? In this talk, I will present a framework for better understanding how issues of fairness overlap with data science as well as how we can improve our modeling pipelines to make them more interpretable, reproducible, and fair to the groups that they are intended to serve. We will explore this new framework together through an analysis of ProPublica's COMPAS recidivism dataset using the tidymodels, drake, and iml packages. 22 | 23 | # Speaker bio 24 | 25 | Grant Fleming is a Data Scientist at Elder Research, co-author of the Wiley book _Responsible Data Science_ (2021), and contributor to the O'Reilly book _97 Things About Ethics Everyone in Data Science Should Know_. His professional focus is on machine learning for social science applications, model explainability, and building tools for reproducible data science. Previously, Grant was a research contractor for USAID. 26 | -------------------------------------------------------------------------------- /speakers/alanfeder.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 224 3 | url: https://global.rstudio.com/student/page/40595 4 | type: lightning 5 | track: C 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Alan Feder 10 | affiliation: Invesco 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/AlanFeder 14 | github: https://github.com/AlanFeder 15 | linkedin: https://www.linkedin.com/in/alanfeder/ 16 | location: New York City, NY, USA 17 | --- 18 | 19 | # Categorical Embeddings: New Ways to Simplify Complex Data 20 | 21 | When building a predictive model in R, many of the functions (such as `lm()`, `glm()`, `randomForest`, `xgboost`, or neural networks in `keras`) require that all input variables are numeric. If your data has categorical variables, you may have to choose between ignoring some of your data and too many new columns. 22 | 23 | Categorical embeddings are a relative new method, utilizing methods popularized in Natural Language Processing that help models solve this problem and can help you understand more about the categories themselves. 24 | 25 | While there are a number of online tutorials on how to use Keras (usually in Python) to create these embeddings, this talk will use [`embed::step_embed()`](https://embed.tidymodels.org/reference/step_embed.html), an extension of the `recipes` package, to create the embeddings. 26 | 27 | # Speaker bio 28 | 29 | Alan Feder is a Principal Data Scientist at Invesco, where he uses as much R as possible to solve problems and build products throughout the company. Previously, he worked as a data scientist at AIG and an actuary at Swiss Re. He studied statistics and mathematics at Columbia University. He is unreasonably excited to spread the word about categorical embeddings. 30 | 31 | Alan lives in New York City with his wife, Ashira, and two children, Matan and Sarit. 32 | -------------------------------------------------------------------------------- /speakers/carsonsievert.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 163 3 | url: https://global.rstudio.com/student/page/40601 4 | type: lightning 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Carson Sievert 10 | affiliation: null 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: null 17 | --- 18 | 19 | # Custom theming in Shiny & R Markdown with bslib & thematic 20 | 21 | Custom theming in Shiny and R Markdown often requires writing styling rules in both CSS and R. In particular, styles for HTML content (e.g., `actionButton()`, `tabsetPanel()`, `titlePanel()`, etc) derive from Bootstrap CSS, so customization is traditionally done by overwriting that CSS, which is difficult to do 100% correctly. The `{bslib}` package helps solve this problem by making it easy to customize (any version of) Bootstrap CSS defaults from R. However, this only solves part of the problem since CSS doesn't necessarily effect output(s) rendered by R, such as `plotOutput()`. The thematic package helps solve this problem by providing auto theming of `plotOutput()`s (based on CSS) as well as a simple interface for styling any R graphic for any output format. 22 | 23 | # Speaker bio 24 | 25 | Carson is a software engineer at RStudio working on projects that bridge R with web technologies, such as `{shiny}`, `{bslib}`, `{thematic}`, and `{plotly}`. Before joining RStudio in late 2018, Carson worked as consultant, delivering analytical and scientific software to organizations such as the Library of Congress, NOAA, Sandia National Labs, and plotly. Carson began consulting part-time during his PhD in statistics at Iowa State, where his work on the R package `{plotly}` was recognized by the ASA with the 2017 Chambers Award. His book "Interactive data visualization with R, plotly, and shiny"" is freely available online at https://plotly-r.com. 26 | -------------------------------------------------------------------------------- /speakers/nicolekramer.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 182 3 | url: https://global.rstudio.com/student/page/40633 4 | type: talk 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Nicole Kramer 10 | affiliation: University of North Carolina at Chapel Hill 11 | links: 12 | homepage: NULL 13 | twitter: https://twitter.com/nekramer27 14 | github: https://github.com/PhanstielLab 15 | linkedin: https://www.linkedin.com/in/nicole-kramer-229183127/ 16 | location: United States 17 | --- 18 | 19 | # A New Paradigm for Multifigure, Coordinate-Based Plotting in R 20 | 21 | R is unparalleled in its ability to transform raw data into a wide array of beautiful graphics, all within the same environment. However, when it comes to complex, multi-paneled plots, users rely on 3rd party graphic design software to arrange plots. Here I present the new world of programmatic, coordinate-based multi-figure plotting in R. Employing grid Graphics and drawing from the paradigms of base plotting and ggplot2, I am developing a package that will revolutionize the way plots are laid out in R. Not only will individual plots be aesthetically customizable and tailored for speed, users will also be offered exquisite control over all aspects of page layout, plot placement, and arrangements. Come join me in changing how we plot in R! 22 | 23 | # Speaker bio 24 | 25 | Nicole Kramer is a third year [Bioinformatics and Computational Biology](https://bcb.unc.edu/) graduate student at the University of North Carolina at Chapel Hill. She works in the [lab of Dr. Doug Phanstiel](http://phanstiel-lab.med.unc.edu/), where her and her colleagues use experimental and computational techniques to study human genomics. Prior to grad school, Nicole received her B.S. in Biological Engineering from MIT in 2018. When not doing science, you can find Nicole petting dogs, admiring giraffes, or knitting tiny animals! 26 | -------------------------------------------------------------------------------- /speakers/emilyriederer.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 125 3 | url: https://global.rstudio.com/student/page/40607 4 | type: talk 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Emily Riederer 10 | affiliation: Capital One 11 | links: 12 | homepage: https://emily.rbind.io/ 13 | twitter: https://twitter.com/EmilyRiederer 14 | github: https://github.com/emilyriederer 15 | linkedin: https://www.linkedin.com/in/emilyriederer/ 16 | location: United States 17 | --- 18 | 19 | # oRganization: How to make internal R packages part of your team 20 | 21 | Many case studies demonstrate the benefits of organizations developing internal R packages. But how do you move your organization from individual internal packages to a coherent internal ecosystem? 22 | 23 | This talk applies the jobs-to-be-done framework to consider the different roles that internal tools can play, from unblocking IT challenges to democratizing tribal knowledge. Beyond technical functionality, we will explore design principles and practice that make internal packages good teammates and consider how these deviate from open-source standards. 24 | 25 | Finally, we will consider how to exploit the unique challenges and opportunities of developing within an organization to make packages that collaborate well -- both with other packages and their human teammates. 26 | 27 | # Speaker bio 28 | 29 | Emily Riederer is a Senior Analytics Manager at Capital One where she leads a team building innersource data products, tools, and applications in R. Emily is an active member of the R community; she is the developer of the `projmgr` and `convo` R packages, a founding co-organizer of the annual satRday Chicago conference, and frequently writes about R and data science on Twitter and her blog (emily.rbind.io). Most recently, she coauthored the *R Markdown Cookbook* from CRC Press and contributed essays to the forthcoming O'Reilly book *97 Things Data Engineers Should Know*. 30 | -------------------------------------------------------------------------------- /speakers/rikagorn.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 186 3 | url: https://global.rstudio.com/student/page/40636 4 | type: talk 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Rika 10 | affiliation: Spring Health 11 | links: 12 | homepage: null 13 | twitter: https://twitter.com/RikaGorn 14 | github: null 15 | linkedin: https://www.linkedin.com/in/rika-gorn/ 16 | location: United States 17 | --- 18 | 19 | # From Zero to Hero: Best practices for setting up Rstudio Team in the Cloud 20 | 21 | Learn best practices for setting up the entire Rstudio team infrastructure - Server Pro, Connect, Package Manager from the perspective of a data scientist and for a data science audience - especially those who have never worked with servers, AWS, or bash. This talk will also be applicable to data scientists looking to start on an engineering project outside of Rstudio as well. 22 | 23 | I started out as a complete novice, & throughout my learning experience I noticed a distinct lack of resources for non-engineers. This talk will focus on best practices for AWS architecture and cloud formation, key security issues such as SSL and https, server configurations, deployment errors, and most importantly resources that are understandable for data scientists just getting into the data engineering or devops space. 24 | 25 | # Speaker bio 26 | 27 | Rika Gorn is the Manager of Business Intelligence at Spring Health - a mental healthcare tech start-up that provides comprehensive mental healthcare benefits. Previously, she worked on quality assurance for a mobile mental health team at Coordinated Behavioral Care, data analytics at Covenant House International, strategic management and evaluation at TCC Group, and program analysis at the Vera Institute of Justice. Rika received her Bachelors in Political Science from Hunter College and her Masters in Public Administration at the NYU Wagner School of Public Service. Rika is also a proud board member of R-Ladies NYC. 28 | 29 | 30 | -------------------------------------------------------------------------------- /speakers/yaninabellinisaibene.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 214 3 | url: https://global.rstudio.com/student/page/40646 4 | type: talk 5 | track: A 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Yanina Bellini Saibene 10 | affiliation: INTA - MetaDocencia - R-Ladies 11 | links: 12 | homepage: https://yabellini.netlify.app/ 13 | twitter: https://twitter.com/yabellini 14 | github: https://github.com/yabellini 15 | linkedin: https://www.linkedin.com/in/yabellini/ 16 | location: Argentina 17 | --- 18 | 19 | # On programming, teaching, and building interactive tutorials with learnr:: 20 | 21 | Teaching R is part of my activities as a community organizer, an RStudio Certified Instructor, a conference chair, and a researcher. Since 2019, I use the learnr package to generate interactive tutorials to teach R synchronously and asynchronously. The addition of the Tutorials panel in RStudio IDE and the need for virtual classes made the use of this package even more interesting. In this talk, I will tell you how to generate interactive tutorials, how to add pedagogical tools to them, what other packages you can use with {learnr} and show multilingual examples. 22 | 23 | # Speaker bio 24 | 25 | Yanina Bellini Saibene is a researcher at INTA (National Institute of Agricultural Technology) dedicated to applying data science to the agricultural sector and a professor in several regional specializations about Digital Agriculture and Data Analysis. Yanina is formally trained as a Licenciate in Information System with a Master degree in Data Mining and Knowledge Management. She is an active member of the R Community as an R-Ladies organizer and part of the R-Ladies Global Team. She also is a co-founder and co-chair of LatinR and part of the organizing team of useR!2020 and user!2021 (co-chair). 26 | She also co-founder of MetaDocencia, an open, free, volunteer-lead, not-for-profit educational organization and part of the teams that translate educational and technical material to Spanish. 27 | -------------------------------------------------------------------------------- /speakers/allisonhorst.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 308 3 | url: https://global.rstudio.com/student/page/40597 4 | type: talk 5 | track: A 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Allison Horst 10 | affiliation: UC Santa Barbara / RStudio 11 | links: 12 | homepage: https://www.allisonhorst.com/ 13 | twitter: https://twitter.com/allison_horst 14 | github: https://github.com/allisonhorst 15 | linkedin: https://www.linkedin.com/in/allison-horst-16a885158/ 16 | location: United States 17 | --- 18 | 19 | # Art Lessons: One Year as RStudio’s Artist-in-Residence 20 | 21 | Art can be a welcoming bridge for learners and users to engage with and learn tools and skills in R. As RStudio’s first Artist-in-Residence, my goal has been to make the R landscape more welcoming for a broader community of users through engaging, didactic artwork. In this R, art, and heart-filled talk, I’ll share the motivation behind my R artwork and some lessons learned over the past year as Artist-in-Residence, including: 22 | 23 | - Learning to embrace cute *and* credible artwork 24 | - Art to help students engage with, learn and remember R skills 25 | - Art for community building and support 26 | 27 | I hope this talk inspires viewers to use, create and share more artwork, so that together we can make the R landscape feel even brighter. 28 | 29 | # Speaker bio 30 | 31 | Allison is an Assistant Teaching Professor at the Bren School of Environmental Science and Management (UC Santa Barbara), where she teaches environmental data science, math, and statistics courses. She has been an Artist-in-Residence with the National Center for Ecological Analysis and Synthesis (NCEAS) (2018 - 2019) and RStudio (2019 - 2020). Allison's background is in engineering (BS in Chemical Engineering, MS in Mechanical Engineering) and environmental science (PhD Environmental Science and Management). She is a co-founder and member of R-Ladies Santa Barbara, and co-founded and organizes the weekly UCSB TidyTuesday coding club. 32 | -------------------------------------------------------------------------------- /speakers/jooyoungseo.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 314 3 | url: https://global.rstudio.com/student/page/40617 4 | type: talk 5 | track: C 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: JooYoung Seo 10 | affiliation: The Pennsylvania State University 11 | links: 12 | homepage: "https://jooyoungseo.com" 13 | twitter: "https://twitter.com/seo_jooyoung" 14 | github: "https://github.com/jooyoungseo" 15 | linkedin: "https://www.linkedin.com/in/jooyoungseo" 16 | location: United States 17 | --- 18 | 19 | # Accessible Data Science Beyond Visual Models: Non-Visual Interactions with R and RStudio Packages 20 | 21 | Data science is full of vision-dominant practices, and most data scientists rely heavily on visual models. 22 | 23 | However, data science itself should require insight and computational thinking beyond what is just seen by eyes. 24 | 25 | JooYoung Seo, who is a blind data scientist and who was working for RStudio's accessibility projects over the summer 2020, will talk about his experience with some non-visual techniques to interact with data. 26 | 27 | If you would like to know more about various ways of making data science accessible via R, and new accessibility features introduced in RStudio IDE and Shiny, his demonstration without sight will be thought-provoking. 28 | 29 | # Speaker bio 30 | 31 | JooYoung Seo is a Ph.D candidate in the Learning, Design, and Technology program at the Pennsylvania State University, and internationally certified accessibility professional whose research and development focuses on accessible computing for all. As an RStudio's double-certified data science instructor (i.e., Tidyverse + Shiny), who is blind, he is committed to making data science ecosystem more accessible to people with and without dis/abilities using R. To this end, he has been actively contributing to R open-source projects including `{shiny}`, `{rmarkdown}`, `{bookdown}`, and `{distill}` for accessibility, and interned on the RStudio IDE and Shiny team as an accessibility engineer in summer 2020. 32 | -------------------------------------------------------------------------------- /speakers/minecetinkayarundel.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 309 3 | url: https://global.rstudio.com/student/page/40630 4 | type: talk 5 | track: A 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Mine Çetinkaya-Rundel 10 | affiliation: RStudio & University of Edinburgh & Duke University 11 | links: 12 | homepage: http://mine-cr.com/ 13 | twitter: https://twitter.com/minebocek 14 | github: https://github.com/mine-cetinkaya-rundel 15 | linkedin: https://www.linkedin.com/in/minec/ 16 | location: United Kingdom 17 | --- 18 | 19 | # Feedback at scale 20 | 21 | As enrollments in statistics and data science courses grow and as these courses become more computational, educators are faced with an interesting challenge -- providing timely and meaningful feedback, particularly with online delivery of courses. The simplest solution is using assignments that are easier to auto-grade, e.g. multiple-choice questions, simplistic coding exercises, but it is impossible to assess mastery of the entire data science cycle using only these types of exercises. In this talk I will discuss writing effective learnr exercises, providing useful and motivating feedback with gradethis, distributing them at scale online and as an R package, and collecting student data for formative assessment with learnrhash. 22 | 23 | # Speaker bio 24 | 25 | Mine Çetinkaya-Rundel is Professional Educator and Data Scientist at RStudio as well as Senior Lecturer at University of Edinburgh and Associate Professor of the Practice at Duke University. Mine’s work focuses on innovation in statistics and data science pedagogy, with an emphasis on computing, reproducible research, student-centered learning, and open-source education as well as pedagogical approaches for enhancing retention of women and under-represented minorities in STEM. She works on the [OpenIntro](https://www.openintro.org/) project, is also the creator and maintainer of [datasciencebox.org](https://datasciencebox.org/), teaches the popular [Statistics with R](https://www.coursera.org/specializations/statistics) MOOC on Coursera. She has four cats. 26 | -------------------------------------------------------------------------------- /speakers/mattthomas.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 179 3 | url: https://global.rstudio.com/student/page/40624 4 | type: talk 5 | track: A 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Matt Thomas 10 | affiliation: British Red Cross 11 | links: 12 | homepage: http://matthewgthomas.co.uk 13 | twitter: https://twitter.com/matthewgthomas 14 | github: https://github.com/matthewgthomas 15 | linkedin: https://www.linkedin.com/in/matthewgthomas/ 16 | location: United Kingdom 17 | --- 18 | 19 | # Cognitive speed: How the Tidyverse helped the British Red Cross respond quickly to COVID-19 20 | 21 | We will discuss the importance of cognitive speed, defined here as the rate in which an idea can be translated into code, and why the Tidyverse excels in this domain. We will demonstrate this idea in relation to a suite of tools we were required to rapidly develop at the British Red Cross in order to respond effectively to the COVID-19 pandemic. To do this, we will exhibit how elements of the unifying design principles outlined in the ‘tidyverse design guide - Tidyverse team’ relate to the notion of cognitive speed, giving specific examples for various design considerations. We believe this talk will encourage reflection on better design practices for future R developers, using the design principles of the tidyverse as the guiding beacon. 22 | 23 | # Speaker bio 24 | 25 | Dr Matt Thomas is Head of Strategic Insight and Foresight at the British Red Cross. Matt's team aims to help the Red Cross become more anticipatory and proactive by producing insights and tools including the [Vulnerability Index](https://britishredcrosssociety.github.io/covid-19-vulnerability/) and [Resilience Index](https://britishredcross.shinyapps.io/resilience-index/). He holds a PhD in Evolutionary Anthropology and, prior to joining the British Red Cross, was researching topics including reindeer herders in the Arctic, hunter-gatherers in the Philippines, and witches in China. Outside of work, Matt writes a column for [an anthropology magazine](https://www.sapiens.org/column/machinations/) as well as fiction. 26 | -------------------------------------------------------------------------------- /speakers/rivaquiroga.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 327 3 | url: https://global.rstudio.com/student/page/40637 4 | type: talk 5 | track: A 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Riva Quiroga 10 | affiliation: Programming Historian 11 | links: 12 | homepage: https://rivaquiroga.cl/ 13 | twitter: https://twitter.com/rivaquiroga 14 | github: https://github.com/rivaquiroga 15 | linkedin: null 16 | location: Valparaíso, Chile 17 | --- 18 | 19 | # How to do things with words: learning to program in R with a "communicative approach" 20 | 21 | Textbooks for learning a new language always start the same: you learn to say hello, to introduce yourself, and some simple and useful sentences to communicate with others. In language teaching, this is called a “communicative approach”, and is based on the idea that learning a language successfully comes through having to communicate real meaning to real people. This is what I expected to find when I first tried to learn R seven years ago. Sadly, I got stuck in resources that started with definitions of abstract concepts and no real examples of how to say things with data. In this talk I will discuss the benefits of adopting a communicative approach and how to implement it when teaching/learning R, writing documentation, and writing code that will be read by other human beings. 22 | 23 | # Speaker bio 24 | 25 | Riva is a linguist and educator by training. In her day-to-day work she teaches R programming, data visualization, and communication skills. She is also an editor at Programming Historian, an online project that publishes novice-friendly, peer-reviewed tutorials that help humanists learn a wide range of digital tools, techniques and workflows to facilitate research and teaching. She is currently pursuing a PhD in Linguistics, where she uses R to identify and visualize linguistic patterns in political speeches. 26 | Riva is an active member of the Latin American R community, where she likes to organize events, RLadies chapters, and translation projects. She lives with two cats, another human being, and an absurdly high number of plants. 27 | -------------------------------------------------------------------------------- /speakers/meganbeckett.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 261 3 | url: https://global.rstudio.com/student/page/40627 4 | type: talk 5 | track: A 6 | blocks: 7 | - bravo 8 | - hotel 9 | name: Megan Beckett 10 | affiliation: Exegetic Analytics 11 | links: 12 | homepage: https://meganbeckett.github.io/mbeckett_cv 13 | twitter: https://twitter.com/mbeckett_za 14 | github: https://github.com/MeganBeckett 15 | linkedin: https://www.linkedin.com/in/meganbeckett/ 16 | location: South Africa 17 | --- 18 | 19 | # Aesthetically automated figure production 20 | 21 | Automation, reproducibility, data driven. These are not normally concepts one would associate with the traditional publishing industry, where designers normally manually produce every artefact in proprietary software. And, when you have 1000s of figures to produce and update for a single textbook, this becomes an insurmountable task, meaning our textbooks quickly become outdated, especially in our rapidly advancing world. 22 | 23 | With R and the tidyverse in our back pocket, we rose to the challenge to revolutionize this workflow. I will explain how we collaborated with a publishing group to develop a system to aesthetically automate the production of figures for a textbook including translations into several languages. 24 | 25 | I think you’ll find this talk interesting as it shows how we applied tools that are familiar to us, but in an unconventional way to fundamentally transform a conventional process. 26 | 27 | # Speaker bio 28 | 29 | Megan Beckett is a Data Scientist at Exegetic Analytics, where she consults, develops and leads several analytical projects across a wide range of fields and industries. *"Scientifically creative; creatively scientific."* This aptly describes her philosophy and approach in her work and life. Megan helped co-found and organises the Cape Town R-Ladies chapter and is a co-organiser of the satRday events in South Africa. She loves to paint, with her most recent work exploring the [biodiversity of southern Africa](https://mappamundi.netlify.app/portfolio/), and running is her passion, whether on the road or the trail. 30 | -------------------------------------------------------------------------------- /speakers/ahmadoudicko.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 291 3 | url: https://global.rstudio.com/student/page/40594 4 | type: talk 5 | track: A 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Ahmadou Dicko 10 | affiliation: UNHCR 11 | links: 12 | homepage: https://www.ahmadoudicko.com 13 | twitter: https://twitter.com/dickoah 14 | github: https://github.com/dickoa 15 | linkedin: https://www.linkedin.com/in/ahmadou-dicko-4118175a 16 | location: Senegal 17 | --- 18 | 19 | # Humanitarian Data Science with R 20 | 21 | Humanitarian actors are increasingly using data to drive their decisions. Since the Haiti 2010 earthquake, the volume of data collected and used by humanitarians has been growing exponentially and organizations are now relying on data specialists to turn all this data into life-saving data products. 22 | 23 | These data products are created by teams using proprietary point and click software. The process from the raw data to the final data product involves a lot of clicking, copying and pasting and is usually not reproducible. 24 | 25 | Another approach to humanitarian data science is possible using `R`. In this talk, I will show how to seamlessly develop reproducible, reusable humanitarian data products using the `tidyverse`, `rmarkdown` and some domain-focused `R` packages. 26 | 27 | # Speaker bio 28 | 29 | Ahmadou Dicko is a statistics and data analysis officer at the United Nations High Commissioner for Refugees (UNHCR) where he uses statistics and data science to help safeguard the rights and well-being of refugees in West and Central Africa. He has an extensive experience in the use of statistics and data science in development and humanitarian projects. Ahmadou was the lead of the OCHA Center for Humanitarian Data team for West and Central Africa and has worked with several humanitarian and development organizations such as IFRC, FAO, IAEA, OCHA. Ahmadou is a [Rstudio trainer](https://education.rstudio.com/trainers/) and he is passionate about the R community. He is currently co-organizing the [Dakar R User Group](https://www.meetup.com/DakaR-R-User-Group/) and co-leading the [AfricaR initiative](https://africa-r.org/). 30 | -------------------------------------------------------------------------------- /speakers/ericgunnarcronstrom.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 246 3 | url: https://global.rstudio.com/student/page/40608 4 | type: talk 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Eric Gunnar Cronstrom 10 | affiliation: Central Michigan University 11 | links: 12 | homepage: null 13 | twitter: null 14 | github: null 15 | linkedin: null 16 | location: United States 17 | --- 18 | 19 | # How we made the switch: a case study on automating a complex report. 20 | 21 | The Center for Charter Schools at Central Michigan University produces annual reports for about 60 schools. The reporting process used to be a cumbersome blend of many technologies. The Center used to use a blend of SQL, Excel, inDesign, and VBScript that would all culminate in a nice looking, branded report for each school. 2 years ago, staff turnover allowed the data team to rethink the process, having had experience in R from graduate work the team at the Center decided to go all in on R Studio and R Markdown for report production a mere 1 month before the reports were due to be published. 22 | This talk will be a case study of how we as an organization adopted RStudio tools to streamline a cumbersome process to fantastic results. 23 | 24 | # Speaker bio 25 | 26 | Eric is responsible for administering a wide range of day to day program functions associated with the performance and accountability of CMU partner schools. He ensures that the data the Center utilizes to evaluate school performance is accurate and stored within a sound data infrastructure. He also leverages his wide range of technical skills to lead the development and production of reports and respond to questions regarding school performance and demographic context. 27 | 28 | Prior to joining the Center, Eric was a database administrator for Central Michigan University Libraries. He has also served as a lecturer at Central Michigan University teaching courses in web design, database design and programming. He earned a master’s degree in information systems management and a bachelor’s degree in computer science from Central Michigan University. He is also pursuing an additional master’s degree in applied statistics at Central Michigan University. 29 | 30 | 31 | -------------------------------------------------------------------------------- /speakers/deanmarchiori.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 100 3 | url: https://global.rstudio.com/student/page/40606 4 | type: lightning 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Dean Marchiori 10 | affiliation: null 11 | links: 12 | homepage: https://deanmarchiori.github.io 13 | twitter: https://twitter.com/deanmarchiori 14 | github: https://github.com/deanmarchiori 15 | linkedin: https://www.linkedin.com/in/deanmarchiori 16 | location: Australia 17 | --- 18 | 19 | # How reproducible am I? A retrospective on a year of commercial data science projects in R 20 | 21 | Reproducibility is a critical aspect in science to enable trust & communication. In R, many tools exist to bring in the best practices of reproducibility into the hands of data scientists. However, outside of a research setting, how does reproducibility hold up in commercial data science projects? In this talk I take an honest retrospective of my own commercial R projects in the last year. I look at the various types of analyses completed, and which workflows were selected and why. Through this process we can learn how workflow choices may help in the short term but hinder in the long term. More importantly what can be done strike the balance between progress and perfection when doing data science in the wild? 22 | 23 | # Speaker bio 24 | 25 | Dean Marchiori is a Statistician based in Sydney, Australia. He currently works with Endeavour Energy as a Senior Data Scientist modelling bushfire and vegetation risk on the electricity network. 26 | Dean's career started in finance as an equities trader before moving into advanced analytics, where he has worked with some of Australia’s largest organisations. His professional interests are in geospatial analysis, time series modelling and the R programming language. 27 | In 2019, Dean was named one of the top 10 analytics leaders in Australia by IAPA. He is also recognised as an Accredited Statistician with the Statistical Society of Australia. He holds a Bachelor of Science in Mathematics (awarded with University Medal) and a Masters degree in Applied Finance. 28 | Outside of work Dean enjoys bodysurfing, running and spending time with his wife and two boys. 29 | 30 | -------------------------------------------------------------------------------- /speakers/marievendettuoli.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 254 3 | url: https://global.rstudio.com/student/page/40623 4 | type: lightning 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Marie Vendettuoli 10 | affiliation: Statistical Center for HIV/AIDS Research and Prevention (SCHARP) @ FredHutch 11 | links: 12 | homepage: http://mariev.github.io/studiousmarie/ 13 | twitter: null 14 | github: https://github.com/mariev 15 | linkedin: https://www.linkedin.com/in/mvendettuoli 16 | location: Seattle, WA 17 | --- 18 | 19 | # Towards an integrated {verse}: lessons learned developing a library of validated packages 20 | 21 | Developing R packages as a unified {verse} – a set of packages that work well together but with each focusing on individual tasks – is an efficient strategy to structure support for complex workflows. The ongoing challenge becomes managing the growth of related packages in a holistic manner. This is especially problematic in industries with a heavy emphasis on stability, for example if packages need to be validated prior to use in production. In this talk, I will discuss a paradigm for developing and maintaining validated R packages, emphasizing the following areas: (1) strategies for organizing packages to prevent excessive re-work (2) facilitating responsive, iterative development and (3) empathy for developer and user experiences. 22 | 23 | # Speaker bio 24 | 25 | Marie Vendettuoli is a Senior Statistical Programmer at Statistical Center for HIV/AIDS Research and Prevention ([SCHARP](https://www.fredhutch.org/en/research/divisions/vaccine-infectious-disease-division/research/biostatistics-bioinformatics-and-epidemiology/statistical-center-for-hiv-aids-research-and-prevention.html)) @ FredHutch. 26 | She holds a PhD from Iowa State University in Human Computer Interaction and started 27 | developing R packages for use within regulatory frameworks while working as a Data Scientist at 28 | [USDA Center for Veterinary Biologics](https://www.aphis.usda.gov/aphis/ourfocus/animalhealth/veterinary-biologics/sa_about_vb/ct_vb_about). Before discovering R, Marie worked in a [CBER](https://www.fda.gov/about-fda/fda-organization/center-biologics-evaluation-and-research-cber)-regulated laboratory. 29 | Her main interest is developing analytical infrastructure to facilitate scientific analysis 30 | for fellow data scientists working in a regulatory environment. 31 | -------------------------------------------------------------------------------- /speakers/shelmithkariuki.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 221 3 | url: https://global.rstudio.com/student/page/40639 4 | type: talk 5 | track: A 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Shelmith Kariuki 10 | affiliation: 'Data Analytics Consultant: UN DESA' 11 | links: 12 | homepage: https://shelkariuki.netlify.app/ 13 | twitter: https://twitter.com/Shel_Kariuki 14 | github: https://github.com/Shelmith-Kariuki 15 | linkedin: https://www.linkedin.com/in/shelmith-kariuki-44351363/ 16 | location: Kenya 17 | --- 18 | 19 | # rKenyaCensus Package 20 | 21 | The rKenyaCensus package contains the results of the 2109 Kenya Population Census. The census exercise was carried out in August 2019, and the results were released in February 2020. Kenya leveraged on technology to capture data during cartographic mapping, enumeration and data transmission, making the 2019 Census the first paperless census to be conducted in Kenya. 22 | The data was published in four different pdf files (Volume 1 - Volume 4) which can be found in the Kenya National Bureau of statistics. The data in its current form was open and accessible, but not usable and so there was need to convert it into a machine readable format. This data can be used by the government, non-governmental organizations and any other entities for data driven policy making and development. During the talk, I will explain the reasons behind development of the package, take you through the steps I took during the process and finally showcase analysis of certain aspects of the data. 23 | 24 | # Speaker bio 25 | 26 | Shelmith Kariuki is a Senior Data Analyst based in Nairobi, Kenya. She is an [RStudio Certified Tidyverse trainer](https://education.rstudio.com/trainers/), currently working as a Data Analytics consultant with UN DESA. She previously worked as a Research Manager at Geopoll, and as a Data Analyst at Busara Center for Behavioral Economics. She also worked as an assistant lecturer in various Kenyan universities, teaching units in Statistics and Actuarial Science. She has extensive experience in data analysis using R. She co-organizes a community of R users in Nairobi [#NairobiR](https://www.linkedin.com/feed/hashtag/nairobir/) and in Africa [#AfricaR](https://twitter.com/AfricaRUsers). One of the missions of her community work is to make sure that there is an increased number of R adopters, in Africa. She is very passionate about training and using data analytics to drive development projects in Africa. 27 | 28 | 29 | -------------------------------------------------------------------------------- /speakers/johnhelveston.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 134 3 | url: https://global.rstudio.com/student/page/40616 4 | type: lightning 5 | track: B 6 | blocks: 7 | - delta 8 | - juliett 9 | name: John Helveston 10 | affiliation: George Washington University 11 | links: 12 | homepage: http://www.jhelvy.com/ 13 | twitter: JohnHelveston 14 | github: jhelvy 15 | linkedin: jhelvy 16 | location: Washington, D.C. 17 | --- 18 | 19 | # Using formr to create R-powered surveys with individualized feedback 20 | 21 | This talk demonstrates how the formr study framework extends the power and flexibility of R to surveys. Using R and RMarkdown code, researchers and teachers can use the formr platform to generate both simple surveys and complex studies with individualized feedback. The platform is built on a web-based application programming interface for R via OpenCPU, enabling complex features such as automated email and text message reminders, adaptive testing, graphical and interactive feedback, and integration with external data sources. In this talk, I introduce some of the formr basics and showcase two examples of how I have used it, including making conjoint surveys with randomized images and timed, randomized quizzes for my students. 22 | 23 | # Speaker bio 24 | 25 | John Paul Helveston is an Assistant Professor in the [Engineering Management and Systems Engineering Department](https://www.emse.seas.gwu.edu/) at the [George Washington University](https://www.gwu.edu/). He studies technological change, with a particular interest in accelerating the transition to environmentally sustainable and energy-saving technologies. His research centers around how consumer preferences, market dynamics, and policy affect the emergence of critical technologies, such as electric vehicles and solar energy. He is an expert on China's rapidly emerging electric vehicle industry as well as the critical relationship between the US and China in developing and mass producing low carbon energy technologies. He applies an interdisciplinary approach to research, with expertise in discrete choice modeling and conjoint analysis as well as interview-based case studies. He has conducted extensive fieldwork in China, collaborating with colleagues at Tsinghua university, Beijing Normal University, and China's State Information Center on past projects. He is a fluent speaker of Mandarin Chinese and also an award-winning swing dancer. John holds a Ph.D. and M.S. in [Engineering and Public Policy](https://www.cmu.edu/epp/) from Carnegie Mellon University and a B.S. in [Engineering Science and Mechanics](http://www.beam.vt.edu/) from Virginia Tech. 26 | -------------------------------------------------------------------------------- /speakers/katehertweck.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 262 3 | url: https://global.rstudio.com/student/page/40619 4 | type: talk 5 | track: A 6 | blocks: 7 | - delta 8 | - juliett 9 | name: Kate Hertweck 10 | affiliation: Fred Hutchinson Cancer Research Center 11 | links: 12 | homepage: https://katehertweck.com 13 | twitter: https://twitter.com/k8hert 14 | github: https://github.com/k8hertweck 15 | linkedin: https://www.linkedin.com/in/katehertweck/ 16 | location: United States 17 | --- 18 | 19 | # Making the jump from learning to applying: R training and documentation for different levels of expertise 20 | 21 | How does someone make the leap from learning R to actively applying R in professional work? 22 | At what point (if ever!) do we get to call ourselves "experts" in R? 23 | This talk explores what differentiates novice, practitioner, and expert R programmers, 24 | and how transitions 25 | between these stages occur. 26 | I'll discuss the type of support required for R users to move from one level of expertise to the next, 27 | and how different types of training and documentation can support R users at each level. 28 | Understanding variable levels of education among R practitioners supports our own professional work, 29 | from collaborative coding to package development, 30 | and helps build a bigger, more inclusive R community. 31 | 32 | # Speaker bio 33 | 34 | Kate Hertweck is a scientist and educator 35 | who endeavors to uphold core values like: 36 | diversity/equity/inclusion, 37 | accessibility of information, and 38 | learning over knowing. 39 | Kate’s graduate training at University of Missouri focused on genomic evolution of plants, 40 | and was followed by a postdoctoral fellowship at the National Evolutionary Synthesis Center (NESCent, Duke University) 41 | where they began working exclusively in computational biology. 42 | Kate then spent four years as an assistant professor teaching 43 | bioinformatics, genomics, plant taxonomy, 44 | and scientific communication. 45 | Kate is currently bioinformatics training manager at Fred Hutchinson Cancer Research Center, 46 | where they lead and implement training and community building to support the data-intensive biomedical research community. 47 | Kate is an instructor and trainer for The Carpentries (serving as a leader in community governance from 2016-2019), 48 | and is an advisor for Metadocencia. 49 | These non-profit groups support best practices in teaching 50 | for data/computational skills and Spanish-speaking educators, respectively. 51 | Kate likes to spend their time enjoying all things science fiction 52 | and knitting sweaters from handspun yarn for their tiny, grumpy, elderly rescue dog, Loki. 53 | Kate uses perceived pronouns, 54 | so any pronoun you think fits also works for them. 55 | -------------------------------------------------------------------------------- /speakers/marcusadams.md: -------------------------------------------------------------------------------- 1 | --- 2 | talk_id: 187 3 | url: https://global.rstudio.com/student/page/40622 4 | type: talk 5 | track: B 6 | blocks: 7 | - foxtrot 8 | - lima 9 | name: Marcus Adams 10 | affiliation: Merck 11 | links: 12 | homepage: null 13 | twitter: "@mtotheadams" 14 | github: https://github.com/adamsma 15 | linkedin: https://www.linkedin.com/in/marcus-adams-6779852a 16 | location: United States 17 | --- 18 | 19 | # Not The App We Deserve. The App We Need: Putting a GMP Shiny App into Production 20 | 21 | In February 2020, the Digital Proactive Process Analytics (DPPA) group within Merck’s manufacturing division officially launched a Shiny app to automate the creation of Continuous Process Verification (CPV) reports into production. That’s right – the almighty, mysterious, coveted production. From a technical perspective, the app is nothing particularly special (except other than getting LaTeX successfully installed to support the use of R Markdown). Users enter a few parameters and out pops a PDF with a series statistical analyses of a product’s quality testing data. The R blogosphere is filled with examples of similar Shiny apps. 22 | 23 | What mattered was the app was in production, and furthermore it was approved for GMP use. This meant these reports could be submitted to the FDA and other regulatory agencies. This meant the data could be used to support product release decisions. This meant Merck’s engineers were about to save thousands of hours per year in compiling data, generating charts, and calculating summary statistics. This was the app manufacturing sites needed. 24 | 25 | Most of the work in getting this app into production was not implementing the top-level features. Sorry, no discussion of fancy statistical process control methods here. Instead this talk will discuss some of the many things the development team (none of which came from a software development background) needed to learn in order to create a robust, secure, and maintainable production application. 26 | 27 | 28 | # Speaker bio 29 | 30 | Marcus Adams is an Associate Director, Engineering at the biopharmaceutical company Merck. He earned his BEng and MS in Chemical Engineering from the University of Delaware and Villanova University, respectively. His more than decade of experience at Merck spans the bio-pharmaceutical spectrum and includes experience in pre-clinical PK/PD modeling, product commercialization, in-line technology support, procurement, and vaccine distribution technology development. Currently, he works as a part of the Digital Proactive Process Analytics team, leveraging Merck’s Big Data Platform in the development of manufacturing information data models, report automation tools, and integrated-systems analysis applications. His professional interests include effective digital visualization, reproducible research/analysis, and convincing his coworkers of the diverse, flourishing world beyond Microsoft Excel. 31 | -------------------------------------------------------------------------------- /talk_times.csv: -------------------------------------------------------------------------------- 1 | talk_id,start,duration 2 | 1,2021-01-21T16:00:00Z,1980 3 | 286,2021-01-21T18:00:00Z,1316 4 | 148,2021-01-21T18:21:56Z,426 5 | 308,2021-01-21T19:00:00Z,1172 6 | 261,2021-01-21T19:19:32Z,1126 7 | 322,2021-01-21T18:00:00Z,1157 8 | 218,2021-01-21T18:19:17Z,915 9 | 112,2021-01-21T19:00:00Z,1164 10 | 273,2021-01-21T19:19:24Z,1079 11 | 314,2021-01-21T18:00:00Z,1174 12 | 182,2021-01-21T18:19:34Z,848 13 | 274,2021-01-21T19:00:00Z,960 14 | 167,2021-01-21T19:16:00Z,285 15 | 180,2021-01-21T19:20:45Z,295 16 | 251,2021-01-21T19:25:40Z,300 17 | 328,2021-01-21T19:30:40Z,282 18 | 3,2021-01-21T20:00:00Z,3011 19 | 262,2021-01-21T22:00:00Z,1348 20 | 214,2021-01-21T22:22:28Z,1040 21 | 309,2021-01-21T23:00:00Z,1206 22 | 327,2021-01-21T23:20:06Z,1020 23 | 125,2021-01-21T22:00:00Z,1180 24 | 279,2021-01-21T22:19:40Z,913 25 | 239,2021-01-21T23:00:00Z,1220 26 | 128,2021-01-21T23:20:20Z,305 27 | 134,2021-01-21T23:25:25Z,312 28 | 254,2021-01-21T23:30:37Z,313 29 | 307,2021-01-21T23:35:50Z,302 30 | 222,2021-01-21T22:00:00Z,982 31 | 323,2021-01-21T22:16:22Z,767 32 | 315,2021-01-21T23:00:00Z,1429 33 | 117,2021-01-21T23:23:49Z,254 34 | 193,2021-01-21T23:28:03Z,311 35 | 225,2021-01-21T23:33:14Z,306 36 | 224,2021-01-21T23:38:20Z,283 37 | 2,2021-01-22T00:00:00Z,1454 38 | 290,2021-01-22T02:00:00Z,1125 39 | 221,2021-01-22T02:18:45Z,629 40 | 291,2021-01-22T03:00:00Z,1159 41 | 179,2021-01-22T03:19:19Z,734 42 | 187,2021-01-22T02:00:00Z,1257 43 | 246,2021-01-22T02:20:57Z,763 44 | 186,2021-01-22T03:00:00Z,1054 45 | 100,2021-01-22T03:17:34Z,271 46 | 162,2021-01-22T03:22:05Z,248 47 | 163,2021-01-22T03:26:13Z,304 48 | 185,2021-01-22T03:31:17Z,303 49 | 293,2021-01-22T02:00:00Z,1094 50 | 312,2021-01-22T02:18:14Z,498 51 | 335,2021-01-22T02:26:32Z,312 52 | 278,2021-01-22T03:00:00Z,1195 53 | 114,2021-01-22T03:19:55Z,267 54 | 245,2021-01-22T03:24:22Z,293 55 | 303,2021-01-22T03:29:15Z,314 56 | 334,2021-01-22T03:34:29Z,308 57 | 1,2021-01-22T04:00:00Z,1980 58 | 286,2021-01-22T06:00:00Z,1316 59 | 148,2021-01-22T06:21:56Z,426 60 | 308,2021-01-22T07:00:00Z,1172 61 | 261,2021-01-22T07:19:32Z,1126 62 | 322,2021-01-22T06:00:00Z,1157 63 | 218,2021-01-22T06:19:17Z,915 64 | 112,2021-01-22T07:00:00Z,1164 65 | 273,2021-01-22T07:19:24Z,1079 66 | 314,2021-01-22T06:00:00Z,1174 67 | 182,2021-01-22T06:19:34Z,848 68 | 274,2021-01-22T07:00:00Z,960 69 | 167,2021-01-22T07:16:00Z,285 70 | 180,2021-01-22T07:20:45Z,295 71 | 251,2021-01-22T07:25:40Z,300 72 | 328,2021-01-22T07:30:40Z,282 73 | 3,2021-01-22T08:00:00Z,3011 74 | 262,2021-01-22T10:00:00Z,1348 75 | 214,2021-01-22T10:22:28Z,1040 76 | 309,2021-01-22T11:00:00Z,1206 77 | 327,2021-01-22T11:20:06Z,1020 78 | 125,2021-01-22T10:00:00Z,1180 79 | 279,2021-01-22T10:19:40Z,913 80 | 239,2021-01-22T11:00:00Z,1220 81 | 128,2021-01-22T11:20:20Z,305 82 | 134,2021-01-22T11:25:25Z,312 83 | 254,2021-01-22T11:30:37Z,313 84 | 307,2021-01-22T11:35:50Z,302 85 | 222,2021-01-22T10:00:00Z,982 86 | 323,2021-01-22T10:16:22Z,767 87 | 315,2021-01-22T11:00:00Z,1429 88 | 117,2021-01-22T11:23:49Z,254 89 | 193,2021-01-22T11:28:03Z,311 90 | 225,2021-01-22T11:33:14Z,306 91 | 224,2021-01-22T11:38:20Z,283 92 | 2,2021-01-22T12:00:00Z,1454 93 | 290,2021-01-22T14:00:00Z,1125 94 | 221,2021-01-22T14:18:45Z,629 95 | 291,2021-01-22T15:00:00Z,1159 96 | 179,2021-01-22T15:19:19Z,734 97 | 187,2021-01-22T14:00:00Z,1257 98 | 246,2021-01-22T14:20:57Z,763 99 | 186,2021-01-22T15:00:00Z,1054 100 | 100,2021-01-22T15:17:34Z,271 101 | 162,2021-01-22T15:22:05Z,248 102 | 163,2021-01-22T15:26:13Z,304 103 | 185,2021-01-22T15:31:17Z,303 104 | 293,2021-01-22T14:00:00Z,1094 105 | 312,2021-01-22T14:18:14Z,498 106 | 335,2021-01-22T14:26:32Z,312 107 | 278,2021-01-22T15:00:00Z,1195 108 | 114,2021-01-22T15:19:55Z,267 109 | 245,2021-01-22T15:24:22Z,293 110 | 303,2021-01-22T15:29:15Z,314 111 | 334,2021-01-22T15:34:29Z,308 112 | -------------------------------------------------------------------------------- /export-times.R: -------------------------------------------------------------------------------- 1 | library(googlesheets4) 2 | library(dplyr) 3 | library(lubridate) 4 | 5 | source("_helpers.R") 6 | 7 | url <- "https://docs.google.com/spreadsheets/d/1M6tEh7LBb0VejHSwfxE-6Fvn7kQJIPYrIyhH9UqCcpk/edit#gid=1179995302" 8 | if (!exists("speaker_program_df")) { 9 | speaker_program_df <- read_sheet(url, sheet = "speaker-program") 10 | } 11 | 12 | url2 <- "https://docs.google.com/spreadsheets/d/19NMt0A9vXzUV5eNhGkUPY3r7dFSsXcgPx4GAnxnU2ds/edit#gid=0" 13 | if (!exists("host_df")) { 14 | host_df <- read_sheet(url2, sheet = "hosts") %>% 15 | rowwise() %>% 16 | mutate(hosts = paste(collapse = " and ", na.omit(c(name, `co-host`)))) %>% 17 | ungroup() %>% 18 | select(block, track, session_topic, hosts) 19 | } 20 | 21 | stopifnot(all(table(speaker_program_df$talk_id) == 2)) 22 | 23 | df <- speaker_program_df %>% 24 | mutate(base_time = parse_date_time(`Europe/London`, "m d, H:M p") %>% `year<-`(2021)) %>% 25 | mutate(duration_secs = case_when( 26 | is.na(actual_duration) ~ duration * 60, 27 | TRUE ~ suppressWarnings(period_to_seconds(ms(actual_duration))) 28 | )) %>% 29 | select(talk_id, block, track, name, actual_duration, order, base_time, duration_secs) 30 | 31 | df2 <- df %>% mutate(sub_block = case_when( 32 | is.na(order) ~ NA_integer_, 33 | order < 3 ~ 1L, 34 | order >= 3 ~ 2L 35 | )) 36 | 37 | df3 <- df2 %>% 38 | group_by(block, track, sub_block) %>% 39 | mutate(offset = ifelse(sub_block == 2, 60*60, 0) + cumsum(duration_secs) - duration_secs) %>% 40 | ungroup() %>% 41 | mutate( 42 | precise_start = base_time + seconds(offset), 43 | precise_end = precise_start + duration_secs 44 | ) 45 | 46 | df4 <- df3 %>% 47 | select(talk_id, start = precise_start, duration = duration_secs) 48 | 49 | readr::write_csv(df4, "talk_times.csv") 50 | 51 | df5 <- df3 %>% 52 | group_by(block, track, sub_block) %>% 53 | summarise(.groups = "drop", name = paste(name, collapse = ", "), start = min(precise_start), discuss_start = max(precise_end)) %>% 54 | arrange(block, sub_block, track) %>% 55 | mutate(discuss_end = case_when( 56 | is.na(track) ~ lubridate::ceiling_date(discuss_start, unit = "hours") + lubridate::minutes(20), 57 | TRUE ~ lubridate::ceiling_date(discuss_start, unit = "hours") 58 | )) %>% 59 | mutate(discuss_duration = as.double(discuss_end - discuss_start, units = "secs")) %>% 60 | left_join(session_df, by = c("block", "track")) %>% 61 | left_join(host_df, by = c("block", "track")) %>% 62 | mutate(topic = case_when( 63 | is.na(track) ~ paste(sep = "/", "Discussion", session), 64 | TRUE ~ paste(sep = "/", "Discussion", paste("Track", track), session) 65 | )) %>% 66 | mutate(title = case_when( 67 | is.na(track) ~ paste0("Q&A: ", name), 68 | TRUE ~ paste0("Discussion: ", session, " ", sub_block) 69 | )) %>% 70 | mutate(description = case_when( 71 | is.na(track) ~ paste0("Join ", hosts, " for audience Q&A with keynote speaker ", name, "."), 72 | TRUE ~ paste0("Join ", hosts, " for audience Q&A with the preceding speakers in this session.") 73 | )) %>% 74 | mutate(summary = case_when( 75 | is.na(track) ~ paste0("Live audience Q&A with keynote speaker ", name, "."), 76 | TRUE ~ paste0("Live audience Q&A and discussion with session hosts and speakers for the ", 77 | ifelse(sub_block == 1, "first", "second"), 78 | " half of the \"", 79 | session, 80 | "\" session.") 81 | )) %>% 82 | select(topic, block, track, title, summary, description, start_time = discuss_start, duration = discuss_duration) 83 | 84 | readr::write_csv(df5 %>% select(-topic), "discussion_sessions_normalized.csv") 85 | 86 | df6 <- df5 %>% 87 | arrange(start_time) %>% 88 | group_by(topic, title, summary, duration) %>% 89 | summarise(.groups = "drop", 90 | time1 = intellum_datetime(start_time[[1]]), 91 | desc1 = description[[1]], 92 | time2 = intellum_datetime(start_time[[2]]), 93 | desc2 = description[[2]] 94 | ) %>% 95 | arrange(time1) 96 | 97 | readr::write_csv(df6, "discussion_sessions.csv") 98 | # googlesheets4::gs4_create(, sheets = df6) 99 | -------------------------------------------------------------------------------- /prepopulate.R: -------------------------------------------------------------------------------- 1 | library(dplyr) 2 | library(purrr) 3 | library(yaml) 4 | 5 | slugify <- . %>% 6 | # Remove middle initials 7 | sub(" [A-Z]\\. ", " ", .) %>% 8 | # Remove special characters 9 | gsub("[ '-]+", "", .) %>% 10 | tolower() 11 | 12 | speaker_details_url <- "https://docs.google.com/spreadsheets/d/1PKlltk03RD9jAxMCKnMGOiFaMTpC_j0SYT47OzI3aDk/edit#gid=2077809528" 13 | 14 | speakers <- googlesheets4::read_sheet(speaker_details_url) 15 | speakers <- speakers %>% select( 16 | name = `What's your name?`, 17 | email = `Email Address`, 18 | affiliation = `What's your affiliation?`, 19 | country = `What country do you live in?`, 20 | tz = `What's your time zone?` 21 | ) %>% mutate(.before = 1, slug = slugify(name)) 22 | 23 | speakers$country <- speakers$country %>% 24 | gsub("U.S.", "United States", ., fixed = TRUE) %>% 25 | gsub("^USA?$", "United States", .) %>% 26 | gsub("UK", "United Kingdom", ., fixed = TRUE) 27 | 28 | submissions_url <- "https://docs.google.com/spreadsheets/d/1b9Kr--fqvNk-fVse9APvWdSCwHtPx61iHhQPULflEIk/edit#gid=1099129659" 29 | submissions <- googlesheets4::read_sheet(submissions_url) %>% 30 | filter(decision %in% c("accept", "lightning")) %>% 31 | mutate(speaker_slug = slugify(name)) 32 | 33 | # Some speakers submitted their proposal by one name, but gave a subtly 34 | # different name when asked for their details. We'll use the latter, 35 | # because it was more recent. 36 | submissions_to_speakers <- c(andrewbatran = "andrewtran", 37 | ericcronstrom = "ericgunnarcronstrom", 38 | meganbeckettandandrewcollier = "meganbeckett", 39 | michaelpage = "mikepage", 40 | rika = "rikagorn" 41 | ) 42 | replace_idx <- match(submissions$speaker_slug, names(submissions_to_speakers)) 43 | submissions$speaker_slug[which(!is.na(replace_idx))] <- submissions_to_speakers[na.omit(replace_idx)] 44 | 45 | joined <- submissions %>% full_join(speakers, by = c(speaker_slug = "slug")) 46 | 47 | # Make sure all slugs contain only lowercase characters 48 | stopifnot(all(grepl("^[a-z]+$", joined$speaker_slug))) 49 | 50 | # Hack to join mattthomas to mikepage 51 | joined$id[joined$speaker_slug == "mattthomas"] <- joined[joined$speaker_slug == "mikepage", "id"] 52 | 53 | yaml_null <- structure("null", class = "verbatim") 54 | 55 | # == Create speakers/*.md ======== 56 | 57 | dir.create("speakers", showWarnings = FALSE) 58 | unlink(list.files("speakers", pattern = "*.md", full.names = TRUE)) 59 | 60 | joined %>% 61 | pwalk(function(...) { 62 | s <- tibble(...) 63 | destfile <- file.path("speakers", paste0(s$speaker_slug, ".md")) 64 | 65 | f <- file(destfile, "w+") 66 | on.exit(close(f)) 67 | 68 | writeLines("---", f) 69 | speaker_name <- if (!is.na(s$name.y)) s$name.y else s$name.x 70 | data <- list( 71 | talk_id = as.integer(s$id), 72 | type = switch(s$decision, 73 | lightning = "lightning", 74 | accept = "talk", 75 | `NA` = "talk", 76 | stop("Unexpected decision value for ", s$speaker_slug, ": ", s$decision)), 77 | name = speaker_name, 78 | affiliation = s$affiliation, 79 | links = list( 80 | homepage = yaml_null, 81 | twitter = yaml_null, 82 | github = yaml_null, 83 | linkedin = yaml_null 84 | ), 85 | location = s$country 86 | ) 87 | data <- lapply(data, function(x) { 88 | if (identical(x, NA_character_)) yaml_null else x 89 | }) 90 | yaml::write_yaml(data, f) 91 | writeLines(c("---", ""), f) 92 | 93 | # Talk title/abstract 94 | writeLines(paste0("# ", s$title), f) 95 | writeLines("", f) 96 | writeLines(s$abstract, f) 97 | writeLines("", f) 98 | 99 | # Bio 100 | writeLines(paste0("# Speaker bio"), f) 101 | writeLines("", f) 102 | writeLines(paste0(speaker_name, " is a human person."), f) 103 | }) 104 | 105 | # # == Create talks/*.md ======== 106 | # 107 | # dir.create("talks", showWarnings = FALSE) 108 | # unlink(list.files("talks", pattern = "*.md", full.names = TRUE)) 109 | # 110 | # joined %>% 111 | # pwalk(function(...) { 112 | # s <- tibble(...) 113 | # destfile <- file.path("talks", paste0(s$speaker_slug, ".md")) 114 | # 115 | # f <- file(destfile, "w+") 116 | # on.exit(close(f)) 117 | # 118 | # writeLines("---", f) 119 | # yaml::write_yaml(list( 120 | # title = s$title, 121 | # links = list( 122 | # slides = yaml_null, 123 | # code = yaml_null 124 | # ) 125 | # ), f) 126 | # writeLines(c("---", ""), f) 127 | # writeLines(paste0(s$name.y, " is a human person."), f) 128 | # }) 129 | -------------------------------------------------------------------------------- /discussion_sessions.csv: -------------------------------------------------------------------------------- 1 | topic,title,summary,duration,time1,desc1,time2,desc2 2 | Discussion/Keynote,Q&A: Hadley Wickham,Live audience Q&A with keynote speaker Hadley Wickham.,2820,2021-01-21 11:33,Join Jenny Bryan for audience Q&A with keynote speaker Hadley Wickham.,2021-01-21 23:33,Join Andrie de Vries for audience Q&A with keynote speaker Hadley Wickham. 3 | Discussion/Track A/Learning,Discussion: Learning 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Learning"" session.",1858,2021-01-21 13:29,Join Jesse Mostipak and Ryan Estrellado for audience Q&A with the preceding speakers in this session.,2021-01-22 01:29,Join Rob Hyndman and Emi Tanaka for audience Q&A with the preceding speakers in this session. 4 | Discussion/Track C/Visualisation,Discussion: Visualisation 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Visualisation"" session.",1578,2021-01-21 13:33,Join Thomas Pedersen and Danielle Navarro for audience Q&A with the preceding speakers in this session.,2021-01-22 01:33,Join Di Cook and Ursula Laa for audience Q&A with the preceding speakers in this session. 5 | Discussion/Track B/Language interop,Discussion: Language interop 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Language interop"" session.",1528,2021-01-21 13:34,Join Amanda Gadrow and Teon Brooks for audience Q&A with the preceding speakers in this session.,2021-01-22 01:34,Join Earo Wang and Stuart Lee for audience Q&A with the preceding speakers in this session. 6 | Discussion/Track C/Visualisation,Discussion: Visualisation 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Visualisation"" session.",1478,2021-01-21 14:35,Join Thomas Pedersen and Danielle Navarro for audience Q&A with the preceding speakers in this session.,2021-01-22 02:35,Join Di Cook and Ursula Laa for audience Q&A with the preceding speakers in this session. 7 | Discussion/Track B/Language interop,Discussion: Language interop 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Language interop"" session.",1357,2021-01-21 14:37,Join Amanda Gadrow and Teon Brooks for audience Q&A with the preceding speakers in this session.,2021-01-22 02:37,Join Earo Wang and Stuart Lee for audience Q&A with the preceding speakers in this session. 8 | Discussion/Track A/Learning,Discussion: Learning 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Learning"" session.",1302,2021-01-21 14:38,Join Jesse Mostipak and Ryan Estrellado for audience Q&A with the preceding speakers in this session.,2021-01-22 02:38,Join Rob Hyndman and Emi Tanaka for audience Q&A with the preceding speakers in this session. 9 | Discussion/Keynote,Q&A: John Burn-Murdoch,Live audience Q&A with keynote speaker John Burn-Murdoch.,1789,2021-01-21 15:50,Join Jenny Bryan for audience Q&A with keynote speaker John Burn-Murdoch.,2021-01-22 03:50,Join Andrie de Vries for audience Q&A with keynote speaker John Burn-Murdoch. 10 | Discussion/Track C/Modelling,Discussion: Modelling 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Modelling"" session.",1851,2021-01-21 17:29,Join Julia Silge and Erin Ledell for audience Q&A with the preceding speakers in this session.,2021-01-22 05:29,Join Hannah Frick and Bruna Wundervald for audience Q&A with the preceding speakers in this session. 11 | Discussion/Track B/Package dev,Discussion: Package dev 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Package dev"" session.",1507,2021-01-21 17:34,Join Rich Iannone and Daniel Sjoberg for audience Q&A with the preceding speakers in this session.,2021-01-22 05:34,Join Colin Fay and Ahmadou Dicko for audience Q&A with the preceding speakers in this session. 12 | Discussion/Track A/Teaching,Discussion: Teaching 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Teaching"" session.",1212,2021-01-21 17:39,Join Desirée De Leon and Hasse Walum for audience Q&A with the preceding speakers in this session.,2021-01-22 05:39,Join Maelle Salmon and Vebashini Naidoo for audience Q&A with the preceding speakers in this session. 13 | Discussion/Track A/Teaching,Discussion: Teaching 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Teaching"" session.",1374,2021-01-21 18:37,Join Desirée De Leon and Hasse Walum for audience Q&A with the preceding speakers in this session.,2021-01-22 06:37,Join Maelle Salmon and Vebashini Naidoo for audience Q&A with the preceding speakers in this session. 14 | Discussion/Track B/Package dev,Discussion: Package dev 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Package dev"" session.",1148,2021-01-21 18:40,Join Rich Iannone and Daniel Sjoberg for audience Q&A with the preceding speakers in this session.,2021-01-22 06:40,Join Colin Fay and Ahmadou Dicko for audience Q&A with the preceding speakers in this session. 15 | Discussion/Track C/Modelling,Discussion: Modelling 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Modelling"" session.",1017,2021-01-21 18:43,Join Julia Silge and Erin Ledell for audience Q&A with the preceding speakers in this session.,2021-01-22 06:43,Join Hannah Frick and Bruna Wundervald for audience Q&A with the preceding speakers in this session. 16 | Discussion/Keynote,Q&A: Vicki Boykis,Live audience Q&A with keynote speaker Vicki Boykis.,3346,2021-01-21 19:24,Join Jenny Bryan for audience Q&A with keynote speaker Vicki Boykis.,2021-01-22 07:24,Join Andrie de Vries for audience Q&A with keynote speaker Vicki Boykis. 17 | Discussion/Track A/Data for good,Discussion: Data for good 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Data for good"" session.",1846,2021-01-21 21:29,Join Tom Mock and Sharla Gelfand for audience Q&A with the preceding speakers in this session.,2021-01-22 09:29,Join Carl Howe and Jeffrey Breen for audience Q&A with the preceding speakers in this session. 18 | Discussion/Track C/Programming,Discussion: Programming 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Programming"" session.",1696,2021-01-21 21:31,Join Nick Strayer and Jasmine Daly for audience Q&A with the preceding speakers in this session.,2021-01-22 09:31,Join Joe Cheng and Susan Vanderplas for audience Q&A with the preceding speakers in this session. 19 | Discussion/Track B/Organisational tooling,Discussion: Organisational tooling 1,"Live audience Q&A and discussion with session hosts and speakers for the first half of the ""Organisational tooling"" session.",1580,2021-01-21 21:33,Join Alex Gold and Elaine McVey for audience Q&A with the preceding speakers in this session.,2021-01-22 09:33,Join Rachael Dempsey and Daniella Mark for audience Q&A with the preceding speakers in this session. 20 | Discussion/Track A/Data for good,Discussion: Data for good 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Data for good"" session.",1707,2021-01-21 22:31,Join Tom Mock and Sharla Gelfand for audience Q&A with the preceding speakers in this session.,2021-01-22 10:31,Join Carl Howe and Jeffrey Breen for audience Q&A with the preceding speakers in this session. 21 | Discussion/Track B/Organisational tooling,Discussion: Organisational tooling 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Organisational tooling"" session.",1420,2021-01-21 22:36,Join Alex Gold and Elaine McVey for audience Q&A with the preceding speakers in this session.,2021-01-22 10:36,Join Rachael Dempsey and Daniella Mark for audience Q&A with the preceding speakers in this session. 22 | Discussion/Track C/Programming,Discussion: Programming 2,"Live audience Q&A and discussion with session hosts and speakers for the second half of the ""Programming"" session.",1223,2021-01-21 22:39,Join Nick Strayer and Jasmine Daly for audience Q&A with the preceding speakers in this session.,2021-01-22 10:39,Join Joe Cheng and Susan Vanderplas for audience Q&A with the preceding speakers in this session. 23 | -------------------------------------------------------------------------------- /export-sessions.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | library(parsermd) 3 | library(commonmark) 4 | library(yaml) 5 | library(dplyr) 6 | library(htmltools) 7 | library(tidyr) 8 | library(lubridate) 9 | 10 | source("_helpers.R") 11 | 12 | `%||%` <- function(a, b) { 13 | if (is.null(a)) b else a 14 | } 15 | 16 | blocknames <- c("alfa", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", 17 | "hotel", "india", "juliett", "kilo", "lima") 18 | blocktimes <- unlist(read_yaml("block-times-gmt.yml")) 19 | 20 | talk_times <- readr::read_csv("talk_times.csv") %>% 21 | group_by(talk_id) %>% 22 | summarise(.groups = "drop", 23 | time1 = start[[1]], time2 = start[[2]], duration = mean(duration) 24 | ) 25 | 26 | sessionnames <- read_yaml("session-names.yml") 27 | 28 | normalize_social <- function(x, url_prefix) { 29 | if (is.null(x)) { 30 | return(NA_character_) 31 | } 32 | 33 | x <- sub("^@", "", x, perl = TRUE) 34 | 35 | if (grepl("^[\\da-zA-Z_]+$", x)) { 36 | paste0(url_prefix, x) 37 | } else if (grepl(url_prefix, x, fixed = TRUE)) { 38 | x 39 | } else if (grepl(sub("www\\.linkedin\\.", "linkedin\\.", url_prefix), x, fixed = TRUE)) { 40 | x 41 | } else { 42 | stop("Unexpected URL: ", x) 43 | } 44 | } 45 | 46 | parse_file <- function(filename) { 47 | message(filename) 48 | rmd <- parse_rmd(filename) 49 | rmd_df <- as_tibble(rmd) 50 | 51 | if (!identical(rmd_df$type[[1]], "rmd_yaml_list")) { 52 | stop("Must begin with a YAML metadata block") 53 | } 54 | 55 | expected_types <- c("rmd_yaml_list", "rmd_heading", "rmd_markdown", "rmd_heading", "rmd_markdown") 56 | if (!identical(rmd_df$type, expected_types)) { 57 | stop("Parsed rmd contained sections [", 58 | paste(rmd_df$type, collapse = ","), 59 | "]; we were expecting [", 60 | paste(expected_types, collapse = ","), 61 | "]") 62 | } 63 | 64 | talk_title <- rmd[[2]]$name %>% markdown_html %>% sub("^

", "", .) %>% sub("

\n?$", "", .) 65 | talk_title_text <- rmd[[2]]$name %>% markdown_text %>% sub("\n+$", "", .) 66 | talk_abstract_html <- rmd[[3]] %>% as_document %>% markdown_html 67 | talk_abstract_text <- rmd[[3]] %>% as_document %>% markdown_text 68 | 69 | speaker_bio <- rmd[[5]] %>% as_document %>% markdown_html 70 | if (grepl("is a human person.

", speaker_bio)) { 71 | speaker_bio <- "" 72 | } 73 | speaker_bio_text <- rmd[[5]] %>% as_document %>% markdown_text 74 | if (grepl("is a human person.", speaker_bio_text)) { 75 | speaker_bio_text <- "" 76 | } 77 | 78 | speaker <- unclass(rmd[[1]]) 79 | 80 | # Sanity check blocks 81 | blocks <- speaker$blocks 82 | stopifnot(length(blocks) == 2) 83 | stopifnot(all(blocks %in% blocknames)) 84 | block1_index <- which(blocknames == blocks[[1]]) 85 | stopifnot(length(block1_index) == 1) 86 | stopifnot(identical(blocknames[block1_index + 6], blocks[[2]])) 87 | 88 | if (!is.null(speaker$links$homepage)) { 89 | with(httr::parse_url(speaker$links$homepage), { 90 | stopifnot(!is.null(scheme)) 91 | stopifnot(!is.null(hostname)) 92 | }) 93 | } 94 | 95 | speaker$links$homepage <- if (!is.null(speaker$links$homepage)) speaker$links$homepage else NA_character_ 96 | speaker$links$twitter <- normalize_social(speaker$links$twitter, "https://twitter.com/") 97 | speaker$links$github <- normalize_social(speaker$links$github, "https://github.com/") 98 | speaker$links$linkedin <- normalize_social(speaker$links$linkedin, "https://www.linkedin.com/in/") 99 | 100 | links <- list( 101 | Homepage = speaker$links$homepage, 102 | Twitter = speaker$links$twitter, 103 | GitHub = speaker$links$github, 104 | LinkedIn = speaker$links$linkedin 105 | ) 106 | links <- links[!vapply(links, is.na, logical(1))] 107 | 108 | links_html <- if (length(links) > 0) { 109 | htmltools::p(class = "speaker-links", 110 | mapply(names(links), links, FUN = function(nm, url) { 111 | if (!is.na(url)) { 112 | htmltools::tags$a(href = url, 113 | htmltools::tags$img( 114 | src = paste0("https://rstudio-global-2021.s3.amazonaws.com/icons/", tolower(nm), ".png"), 115 | alt = nm, 116 | style = "border: none; width: 20px; height: 20px;" 117 | ) 118 | ) 119 | } 120 | }, SIMPLIFY = FALSE, USE.NAMES = FALSE) 121 | ) %>% as.character() 122 | } 123 | 124 | # TODO: Check speaker metadata requirements 125 | 126 | stopifnot(length(speaker_bio) == 1) 127 | stopifnot(length(links_html) <= 1) 128 | 129 | slug <- tools::file_path_sans_ext(basename(filename)) 130 | 131 | headshot <- list.files(path = rprojroot::find_rstudio_root_file("speakers"), 132 | pattern = paste0(slug, "\\.(png|jpg)$")) 133 | stopifnot(length(headshot) <= 1) 134 | headshot <- if (length(headshot) == 1) { 135 | paste0("https://rstudio-global-2021.s3.amazonaws.com/speakers/", headshot) 136 | } else { 137 | "" 138 | } 139 | 140 | # Flatten structure so all members are single-element vectors. This will make 141 | # data framing everything easier. 142 | speaker$block_1 <- speaker$blocks[[1]] 143 | speaker$block_2 <- speaker$blocks[[2]] 144 | speaker$blocks <- NULL 145 | speaker <- c(speaker, speaker$links) 146 | speaker$links <- NULL 147 | 148 | speaker <- lapply(speaker, `%||%`, b = "") 149 | 150 | as_tibble(c( 151 | speaker, 152 | summary = speaker_bio, 153 | summary_text = speaker_bio_text, 154 | bio = paste0(speaker_bio, links_html), 155 | headshot = headshot, 156 | speaker_slug = slug, 157 | title = talk_title, 158 | title_text = talk_title_text, 159 | abstract = talk_abstract_html, 160 | abstract_text = talk_abstract_text 161 | )) 162 | } 163 | 164 | speakers <- list.files("speakers", pattern = "*.md", full.names = TRUE) %>% 165 | lapply(parse_file) %>% 166 | bind_rows() %>% 167 | arrange(tolower(name)) %>% 168 | left_join(talk_times, by = "talk_id") 169 | 170 | talk_labels <- c(lightning = "Lightning Talk", talk = "Talk", keynote = "Keynote") 171 | 172 | df <- speakers %>% 173 | # mutate(time1 = blocktimes[block_1], time2 = blocktimes[block_2]) %>% 174 | select(name, affiliation, headshot, summary, bio) 175 | 176 | readr::write_csv(df, "export.csv") 177 | # googlesheets4::gs4_create(, sheets = df) 178 | 179 | df2 <- speakers %>% 180 | left_join(session_df, by = c("block_1" = "block", "track")) %>% 181 | mutate(topic = paste0(talk_labels[type], 182 | ifelse(type != "keynote", paste0("/Track ", track, "/", session), "") 183 | )) %>% 184 | select( 185 | talk_id, 186 | topic, 187 | title, 188 | abstract = abstract_text, 189 | speaker = name, 190 | speaker_summary = summary_text, time1, time2, duration) %>% 191 | mutate(time1 = intellum_datetime(time1), time2 = intellum_datetime(time2)) %>% 192 | group_by(talk_id, topic, title, abstract, time1, time2, duration) %>% 193 | summarise(.groups = "drop", 194 | speaker_info = paste(collapse = "\n", 195 | mapply(speaker, speaker_summary, FUN = function(name, summary) { 196 | paste0("Speaker: ", name, "\n\n", summary) 197 | }) 198 | ) 199 | ) %>% 200 | mutate(abstract_with_bio = paste(sep = "\n", abstract, speaker_info), .after = "abstract") %>% 201 | select(-speaker_info) 202 | 203 | df2_sorted <- df2[match(unique(speakers$talk_id), df2$talk_id),] 204 | stopifnot(nrow(df2_sorted) == nrow(df2)) 205 | df2 <- df2_sorted 206 | 207 | readr::write_csv(df2, "export_sessions.csv") 208 | # googlesheets4::gs4_create(, sheets = df2) 209 | 210 | session_to_speakers <- speakers %>% 211 | select(session = title, name) %>% 212 | group_by(session) %>% 213 | summarise(name = paste(name, collapse = ", ")) 214 | 215 | speaker_to_session <- speakers %>% 216 | select(name, session = title) 217 | 218 | # googlesheets4::gs4_create(sheets = list(session_to_speakers = session_to_speakers, speaker_to_session = speaker_to_session)) 219 | 220 | # Resize images if necessary 221 | jpeg_files <- list.files("speakers", pattern = "*.jpg", full.names = TRUE) 222 | png_files <- list.files("speakers", pattern = "*.png", full.names = TRUE) 223 | 224 | for (file in c(jpeg_files, png_files)) { 225 | img <- magick::image_read(file) 226 | if (magick::image_info(img)$width != 300) { 227 | message("Resizing ", file) 228 | img <- magick::image_resize(img, magick::geometry_size_pixels(300, preserve_aspect = TRUE)) 229 | magick::image_write(img, file) 230 | } 231 | } 232 | 233 | if (TRUE) { 234 | 235 | message("Syncing speaker headshots to S3") 236 | # Upload speaker headshots to S3 237 | print(processx::run("aws", c( 238 | "s3", 239 | "sync", 240 | "--exclude=*.md", 241 | rprojroot::find_rstudio_root_file("speakers"), 242 | "s3://rstudio-global-2021/speakers/" 243 | ))) 244 | 245 | } 246 | 247 | 248 | simple_schedule <- speakers %>% 249 | pivot_longer(starts_with("block_"), names_to = "block_num", values_to = "block") %>% 250 | mutate(time = ifelse(block_num == "block_1", format(time1), format(time2)), .after = "time2") %>% 251 | select(talk_id, type, block, track, name, title_text, time, duration, abstract_html = abstract, abstract_text, 252 | bio_html = bio, bio_text = summary_text, url) %>% 253 | # Group by everything but name 254 | group_by(talk_id, type, block, track, title_text, time, duration, abstract_html, abstract_text, url) %>% 255 | summarise(.groups = "drop", 256 | name = paste(name, collapse = "\n"), 257 | bio_html = paste(bio_html, collapse = "\n"), 258 | bio_text = paste(bio_text, collapse = "\n\n") 259 | ) %>% 260 | relocate(name, .before = title_text) %>% 261 | relocate(bio_html, bio_text, .before = url) %>% 262 | arrange(block, track, time) %>% 263 | rename("time_gmt" = time) %>% 264 | left_join(session_df, c("block", "track")) %>% 265 | mutate(session = ifelse(is.na(session), "Keynote", session)) %>% 266 | relocate(session, .after = track) %>% 267 | rename(topic = session) 268 | 269 | googlesheets4::write_sheet(simple_schedule, 270 | "https://docs.google.com/spreadsheets/d/1wYf7w-Elg5vSeZkKjRFeWzShVPXqDXJzy6vrYUyJm0c/edit#gid=0", 271 | "Sheet1") 272 | 273 | readr::write_csv(simple_schedule, "simple_schedule.csv") 274 | 275 | discussion_links <- speakers %>% 276 | select(type, track, name, time1, time2) %>% 277 | mutate( 278 | "First session join time (GMT)" = lubridate::floor_date(time1, unit = "hour") + lubridate::minutes(5), 279 | "Second session join time (GMT)" = lubridate::floor_date(time2, unit = "hour") + lubridate::minutes(5), 280 | "Zoom link" = case_when( 281 | track == "A" ~ "https://us02web.zoom.us/j/85471971782", 282 | track == "B" ~ "https://us02web.zoom.us/j/9205496340", 283 | track == "C" ~ "https://us02web.zoom.us/j/9718702413", 284 | type == "keynote" ~ "https://us02web.zoom.us/j/81544473935", 285 | TRUE ~ NA_character_ 286 | ) 287 | ) %>% 288 | select(-type, -time1, -time2) 289 | googlesheets4::write_sheet(discussion_links, 290 | "https://docs.google.com/spreadsheets/d/1dJrgRqCkIlKiWxSHkXdbbhIJXllgiYl9qug3HgJC2R8/edit#gid=0", 291 | "Sheet1") 292 | -------------------------------------------------------------------------------- /renv/activate.R: -------------------------------------------------------------------------------- 1 | 2 | local({ 3 | 4 | # the requested version of renv 5 | version <- "0.12.0" 6 | 7 | # the project directory 8 | project <- getwd() 9 | 10 | # avoid recursion 11 | if (!is.na(Sys.getenv("RENV_R_INITIALIZING", unset = NA))) 12 | return(invisible(TRUE)) 13 | 14 | # signal that we're loading renv during R startup 15 | Sys.setenv("RENV_R_INITIALIZING" = "true") 16 | on.exit(Sys.unsetenv("RENV_R_INITIALIZING"), add = TRUE) 17 | 18 | # signal that we've consented to use renv 19 | options(renv.consent = TRUE) 20 | 21 | # load the 'utils' package eagerly -- this ensures that renv shims, which 22 | # mask 'utils' packages, will come first on the search path 23 | library(utils, lib.loc = .Library) 24 | 25 | # check to see if renv has already been loaded 26 | if ("renv" %in% loadedNamespaces()) { 27 | 28 | # if renv has already been loaded, and it's the requested version of renv, 29 | # nothing to do 30 | spec <- .getNamespaceInfo(.getNamespace("renv"), "spec") 31 | if (identical(spec[["version"]], version)) 32 | return(invisible(TRUE)) 33 | 34 | # otherwise, unload and attempt to load the correct version of renv 35 | unloadNamespace("renv") 36 | 37 | } 38 | 39 | # load bootstrap tools 40 | bootstrap <- function(version, library) { 41 | 42 | # read repos (respecting override if set) 43 | repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) 44 | if (is.na(repos)) 45 | repos <- getOption("repos") 46 | 47 | # fix up repos 48 | on.exit(options(repos = repos), add = TRUE) 49 | repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" 50 | options(repos = repos) 51 | 52 | # attempt to download renv 53 | tarball <- tryCatch(renv_bootstrap_download(version), error = identity) 54 | if (inherits(tarball, "error")) 55 | stop("failed to download renv ", version) 56 | 57 | # now attempt to install 58 | status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) 59 | if (inherits(status, "error")) 60 | stop("failed to install renv ", version) 61 | 62 | } 63 | 64 | renv_bootstrap_download_impl <- function(url, destfile) { 65 | 66 | mode <- "wb" 67 | 68 | # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 69 | fixup <- 70 | Sys.info()[["sysname"]] == "Windows" && 71 | substring(url, 1L, 5L) == "file:" 72 | 73 | if (fixup) 74 | mode <- "w+b" 75 | 76 | download.file( 77 | url = url, 78 | destfile = destfile, 79 | mode = mode, 80 | quiet = TRUE 81 | ) 82 | 83 | } 84 | 85 | renv_bootstrap_download <- function(version) { 86 | 87 | methods <- list( 88 | renv_bootstrap_download_cran_latest, 89 | renv_bootstrap_download_cran_archive, 90 | renv_bootstrap_download_github 91 | ) 92 | 93 | for (method in methods) { 94 | path <- tryCatch(method(version), error = identity) 95 | if (is.character(path) && file.exists(path)) 96 | return(path) 97 | } 98 | 99 | stop("failed to download renv ", version) 100 | 101 | } 102 | 103 | renv_bootstrap_download_cran_latest <- function(version) { 104 | 105 | # check for renv on CRAN matching this version 106 | db <- as.data.frame(available.packages(), stringsAsFactors = FALSE) 107 | 108 | entry <- db[db$Package %in% "renv" & db$Version %in% version, ] 109 | if (nrow(entry) == 0) { 110 | fmt <- "renv %s is not available from your declared package repositories" 111 | stop(sprintf(fmt, version)) 112 | } 113 | 114 | message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) 115 | 116 | info <- tryCatch( 117 | download.packages("renv", destdir = tempdir()), 118 | condition = identity 119 | ) 120 | 121 | if (inherits(info, "condition")) { 122 | message("FAILED") 123 | return(FALSE) 124 | } 125 | 126 | message("OK") 127 | info[1, 2] 128 | 129 | } 130 | 131 | renv_bootstrap_download_cran_archive <- function(version) { 132 | 133 | name <- sprintf("renv_%s.tar.gz", version) 134 | repos <- getOption("repos") 135 | urls <- file.path(repos, "src/contrib/Archive/renv", name) 136 | destfile <- file.path(tempdir(), name) 137 | 138 | message("* Downloading renv ", version, " from CRAN archive ... ", appendLF = FALSE) 139 | 140 | for (url in urls) { 141 | 142 | status <- tryCatch( 143 | renv_bootstrap_download_impl(url, destfile), 144 | condition = identity 145 | ) 146 | 147 | if (identical(status, 0L)) { 148 | message("OK") 149 | return(destfile) 150 | } 151 | 152 | } 153 | 154 | message("FAILED") 155 | return(FALSE) 156 | 157 | } 158 | 159 | renv_bootstrap_download_github <- function(version) { 160 | 161 | enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") 162 | if (!identical(enabled, "TRUE")) 163 | return(FALSE) 164 | 165 | # prepare download options 166 | pat <- Sys.getenv("GITHUB_PAT") 167 | if (nzchar(Sys.which("curl")) && nzchar(pat)) { 168 | fmt <- "--location --fail --header \"Authorization: token %s\"" 169 | extra <- sprintf(fmt, pat) 170 | saved <- options("download.file.method", "download.file.extra") 171 | options(download.file.method = "curl", download.file.extra = extra) 172 | on.exit(do.call(base::options, saved), add = TRUE) 173 | } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { 174 | fmt <- "--header=\"Authorization: token %s\"" 175 | extra <- sprintf(fmt, pat) 176 | saved <- options("download.file.method", "download.file.extra") 177 | options(download.file.method = "wget", download.file.extra = extra) 178 | on.exit(do.call(base::options, saved), add = TRUE) 179 | } 180 | 181 | message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) 182 | 183 | url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) 184 | name <- sprintf("renv_%s.tar.gz", version) 185 | destfile <- file.path(tempdir(), name) 186 | 187 | status <- tryCatch( 188 | renv_bootstrap_download_impl(url, destfile), 189 | condition = identity 190 | ) 191 | 192 | if (!identical(status, 0L)) { 193 | message("FAILED") 194 | return(FALSE) 195 | } 196 | 197 | message("Done!") 198 | return(destfile) 199 | 200 | } 201 | 202 | renv_bootstrap_install <- function(version, tarball, library) { 203 | 204 | # attempt to install it into project library 205 | message("* Installing renv ", version, " ... ", appendLF = FALSE) 206 | dir.create(library, showWarnings = FALSE, recursive = TRUE) 207 | 208 | # invoke using system2 so we can capture and report output 209 | bin <- R.home("bin") 210 | exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" 211 | r <- file.path(bin, exe) 212 | args <- c("--vanilla", "CMD", "INSTALL", "-l", shQuote(library), shQuote(tarball)) 213 | output <- system2(r, args, stdout = TRUE, stderr = TRUE) 214 | message("Done!") 215 | 216 | # check for successful install 217 | status <- attr(output, "status") 218 | if (is.numeric(status) && !identical(status, 0L)) { 219 | header <- "Error installing renv:" 220 | lines <- paste(rep.int("=", nchar(header)), collapse = "") 221 | text <- c(header, lines, output) 222 | writeLines(text, con = stderr()) 223 | } 224 | 225 | status 226 | 227 | } 228 | 229 | renv_bootstrap_prefix <- function() { 230 | 231 | # construct version prefix 232 | version <- paste(R.version$major, R.version$minor, sep = ".") 233 | prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") 234 | 235 | # include SVN revision for development versions of R 236 | # (to avoid sharing platform-specific artefacts with released versions of R) 237 | devel <- 238 | identical(R.version[["status"]], "Under development (unstable)") || 239 | identical(R.version[["nickname"]], "Unsuffered Consequences") 240 | 241 | if (devel) 242 | prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") 243 | 244 | # build list of path components 245 | components <- c(prefix, R.version$platform) 246 | 247 | # include prefix if provided by user 248 | prefix <- Sys.getenv("RENV_PATHS_PREFIX") 249 | if (nzchar(prefix)) 250 | components <- c(prefix, components) 251 | 252 | # build prefix 253 | paste(components, collapse = "/") 254 | 255 | } 256 | 257 | renv_bootstrap_library_root <- function(project) { 258 | 259 | path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) 260 | if (!is.na(path)) 261 | return(path) 262 | 263 | path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) 264 | if (!is.na(path)) 265 | return(file.path(path, basename(project))) 266 | 267 | file.path(project, "renv/library") 268 | 269 | } 270 | 271 | renv_bootstrap_validate_version <- function(version) { 272 | 273 | loadedversion <- utils::packageDescription("renv", fields = "Version") 274 | if (version == loadedversion) 275 | return(TRUE) 276 | 277 | # assume four-component versions are from GitHub; three-component 278 | # versions are from CRAN 279 | components <- strsplit(loadedversion, "[.-]")[[1]] 280 | remote <- if (length(components) == 4L) 281 | paste("rstudio/renv", loadedversion, sep = "@") 282 | else 283 | paste("renv", loadedversion, sep = "@") 284 | 285 | fmt <- paste( 286 | "renv %1$s was loaded from project library, but renv %2$s is recorded in lockfile.", 287 | "Use `renv::record(\"%3$s\")` to record this version in the lockfile.", 288 | "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", 289 | sep = "\n" 290 | ) 291 | 292 | msg <- sprintf(fmt, loadedversion, version, remote) 293 | warning(msg, call. = FALSE) 294 | 295 | FALSE 296 | 297 | } 298 | 299 | renv_bootstrap_load <- function(project, libpath, version) { 300 | 301 | # try to load renv from the project library 302 | if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) 303 | return(FALSE) 304 | 305 | # warn if the version of renv loaded does not match 306 | renv_bootstrap_validate_version(version) 307 | 308 | # load the project 309 | renv::load(project) 310 | 311 | TRUE 312 | 313 | } 314 | 315 | # construct path to library root 316 | root <- renv_bootstrap_library_root(project) 317 | 318 | # construct library prefix for platform 319 | prefix <- renv_bootstrap_prefix() 320 | 321 | # construct full libpath 322 | libpath <- file.path(root, prefix) 323 | 324 | # attempt to load 325 | if (renv_bootstrap_load(project, libpath, version)) 326 | return(TRUE) 327 | 328 | # load failed; attempt to bootstrap 329 | bootstrap(version, libpath) 330 | 331 | # exit early if we're just testing bootstrap 332 | if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) 333 | return(TRUE) 334 | 335 | # try again to load 336 | if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { 337 | message("Successfully installed and loaded renv ", version, ".") 338 | return(renv::load()) 339 | } 340 | 341 | # failed to download or load renv; warn the user 342 | msg <- c( 343 | "Failed to find an renv installation: the project will not be loaded.", 344 | "Use `renv::activate()` to re-initialize the project." 345 | ) 346 | 347 | warning(paste(msg, collapse = "\n"), call. = FALSE) 348 | 349 | }) 350 | -------------------------------------------------------------------------------- /renv.lock: -------------------------------------------------------------------------------- 1 | { 2 | "R": { 3 | "Version": "4.0.3", 4 | "Repositories": [ 5 | { 6 | "Name": "CRAN", 7 | "URL": "https://cloud.r-project.org" 8 | } 9 | ] 10 | }, 11 | "Packages": { 12 | "BH": { 13 | "Package": "BH", 14 | "Version": "1.72.0-3", 15 | "Source": "Repository", 16 | "Repository": "CRAN", 17 | "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0" 18 | }, 19 | "R6": { 20 | "Package": "R6", 21 | "Version": "2.4.1", 22 | "Source": "Repository", 23 | "Repository": "CRAN", 24 | "Hash": "292b54f8f4b94669b08f94e5acce6be2" 25 | }, 26 | "Rcpp": { 27 | "Package": "Rcpp", 28 | "Version": "1.0.5", 29 | "Source": "Repository", 30 | "Repository": "CRAN", 31 | "Hash": "125dc7a0ed375eb68c0ce533b48d291f" 32 | }, 33 | "askpass": { 34 | "Package": "askpass", 35 | "Version": "1.1", 36 | "Source": "Repository", 37 | "Repository": "CRAN", 38 | "Hash": "e8a22846fff485f0be3770c2da758713" 39 | }, 40 | "assertthat": { 41 | "Package": "assertthat", 42 | "Version": "0.2.1", 43 | "Source": "Repository", 44 | "Repository": "CRAN", 45 | "Hash": "50c838a310445e954bc13f26f26a6ecf" 46 | }, 47 | "backports": { 48 | "Package": "backports", 49 | "Version": "1.1.10", 50 | "Source": "Repository", 51 | "Repository": "CRAN", 52 | "Hash": "05ffd2d4acb51aee70f1de68ad7a6aed" 53 | }, 54 | "base64enc": { 55 | "Package": "base64enc", 56 | "Version": "0.1-3", 57 | "Source": "Repository", 58 | "Repository": "CRAN", 59 | "Hash": "543776ae6848fde2f48ff3816d0628bc" 60 | }, 61 | "cellranger": { 62 | "Package": "cellranger", 63 | "Version": "1.1.0", 64 | "Source": "Repository", 65 | "Repository": "RSPM", 66 | "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" 67 | }, 68 | "checkmate": { 69 | "Package": "checkmate", 70 | "Version": "2.0.0", 71 | "Source": "Repository", 72 | "Repository": "CRAN", 73 | "Hash": "a667800d5f0350371bedeb8b8b950289" 74 | }, 75 | "cli": { 76 | "Package": "cli", 77 | "Version": "2.1.0", 78 | "Source": "Repository", 79 | "Repository": "CRAN", 80 | "Hash": "0b316487b21d21f99ebf98abe179b1ea" 81 | }, 82 | "clipr": { 83 | "Package": "clipr", 84 | "Version": "0.7.1", 85 | "Source": "Repository", 86 | "Repository": "CRAN", 87 | "Hash": "ebaa97ac99cc2daf04e77eecc7b781d7" 88 | }, 89 | "commonmark": { 90 | "Package": "commonmark", 91 | "Version": "1.7", 92 | "Source": "Repository", 93 | "Repository": "CRAN", 94 | "Hash": "0f22be39ec1d141fd03683c06f3a6e67" 95 | }, 96 | "cpp11": { 97 | "Package": "cpp11", 98 | "Version": "0.2.3", 99 | "Source": "Repository", 100 | "Repository": "CRAN", 101 | "Hash": "f9df472593124299aef98fba2c96dfd3" 102 | }, 103 | "crayon": { 104 | "Package": "crayon", 105 | "Version": "1.3.4", 106 | "Source": "Repository", 107 | "Repository": "CRAN", 108 | "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b" 109 | }, 110 | "curl": { 111 | "Package": "curl", 112 | "Version": "4.3", 113 | "Source": "Repository", 114 | "Repository": "CRAN", 115 | "Hash": "2b7d10581cc730804e9ed178c8374bd6" 116 | }, 117 | "digest": { 118 | "Package": "digest", 119 | "Version": "0.6.26", 120 | "Source": "Repository", 121 | "Repository": "CRAN", 122 | "Hash": "312b822306ececbbf7b9731937d9ec55" 123 | }, 124 | "dplyr": { 125 | "Package": "dplyr", 126 | "Version": "1.0.2", 127 | "Source": "Repository", 128 | "Repository": "CRAN", 129 | "Hash": "d0509913b27ea898189ee664b6030dc2" 130 | }, 131 | "ellipsis": { 132 | "Package": "ellipsis", 133 | "Version": "0.3.1", 134 | "Source": "Repository", 135 | "Repository": "CRAN", 136 | "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a" 137 | }, 138 | "fansi": { 139 | "Package": "fansi", 140 | "Version": "0.4.1", 141 | "Source": "Repository", 142 | "Repository": "CRAN", 143 | "Hash": "7fce217eaaf8016e72065e85c73027b5" 144 | }, 145 | "fs": { 146 | "Package": "fs", 147 | "Version": "1.5.0", 148 | "Source": "Repository", 149 | "Repository": "RSPM", 150 | "Hash": "44594a07a42e5f91fac9f93fda6d0109" 151 | }, 152 | "gargle": { 153 | "Package": "gargle", 154 | "Version": "0.5.0", 155 | "Source": "Repository", 156 | "Repository": "CRAN", 157 | "Hash": "aaacaf8b0ec3dfe45df9eb6bc040db44" 158 | }, 159 | "generics": { 160 | "Package": "generics", 161 | "Version": "0.0.2", 162 | "Source": "Repository", 163 | "Repository": "CRAN", 164 | "Hash": "b8cff1d1391fd1ad8b65877f4c7f2e53" 165 | }, 166 | "glue": { 167 | "Package": "glue", 168 | "Version": "1.4.2", 169 | "Source": "Repository", 170 | "Repository": "RSPM", 171 | "Hash": "6efd734b14c6471cfe443345f3e35e29" 172 | }, 173 | "googledrive": { 174 | "Package": "googledrive", 175 | "Version": "1.0.1", 176 | "Source": "Repository", 177 | "Repository": "CRAN", 178 | "Hash": "79ba5d18133290a69b7c135dc3dfef1a" 179 | }, 180 | "googlesheets4": { 181 | "Package": "googlesheets4", 182 | "Version": "0.2.0", 183 | "Source": "Repository", 184 | "Repository": "CRAN", 185 | "Hash": "36ed3c9b1f0bbcd574d2769b625f80fb" 186 | }, 187 | "hms": { 188 | "Package": "hms", 189 | "Version": "0.5.3", 190 | "Source": "Repository", 191 | "Repository": "CRAN", 192 | "Hash": "726671f634529d470545f9fd1a9d1869" 193 | }, 194 | "htmltools": { 195 | "Package": "htmltools", 196 | "Version": "0.5.0", 197 | "Source": "Repository", 198 | "Repository": "CRAN", 199 | "Hash": "7d651b7131794fe007b1ad6f21aaa401" 200 | }, 201 | "httr": { 202 | "Package": "httr", 203 | "Version": "1.4.2", 204 | "Source": "Repository", 205 | "Repository": "CRAN", 206 | "Hash": "a525aba14184fec243f9eaec62fbed43" 207 | }, 208 | "ids": { 209 | "Package": "ids", 210 | "Version": "1.0.1", 211 | "Source": "Repository", 212 | "Repository": "CRAN", 213 | "Hash": "99df65cfef20e525ed38c3d2577f7190" 214 | }, 215 | "jsonlite": { 216 | "Package": "jsonlite", 217 | "Version": "1.7.1", 218 | "Source": "Repository", 219 | "Repository": "RSPM", 220 | "Hash": "1ec84e070b88b37ed169f19def40d47c" 221 | }, 222 | "lifecycle": { 223 | "Package": "lifecycle", 224 | "Version": "0.2.0", 225 | "Source": "Repository", 226 | "Repository": "CRAN", 227 | "Hash": "361811f31f71f8a617a9a68bf63f1f42" 228 | }, 229 | "lubridate": { 230 | "Package": "lubridate", 231 | "Version": "1.7.9.2", 232 | "Source": "Repository", 233 | "Repository": "CRAN", 234 | "Hash": "5b5b02f621d39a499def7923a5aee746" 235 | }, 236 | "magick": { 237 | "Package": "magick", 238 | "Version": "2.5.2", 239 | "Source": "Repository", 240 | "Repository": "CRAN", 241 | "Hash": "857faefb4087451c588f37ee3f6f7312" 242 | }, 243 | "magrittr": { 244 | "Package": "magrittr", 245 | "Version": "1.5", 246 | "Source": "Repository", 247 | "Repository": "CRAN", 248 | "Hash": "1bb58822a20301cee84a41678e25d9b7" 249 | }, 250 | "mime": { 251 | "Package": "mime", 252 | "Version": "0.9", 253 | "Source": "Repository", 254 | "Repository": "CRAN", 255 | "Hash": "e87a35ec73b157552814869f45a63aa3" 256 | }, 257 | "openssl": { 258 | "Package": "openssl", 259 | "Version": "1.4.3", 260 | "Source": "Repository", 261 | "Repository": "CRAN", 262 | "Hash": "a399e4773075fc2375b71f45fca186c4" 263 | }, 264 | "parsermd": { 265 | "Package": "parsermd", 266 | "Version": "0.0.0.9000", 267 | "Source": "GitHub", 268 | "RemoteType": "github", 269 | "RemoteHost": "api.github.com", 270 | "RemoteUsername": "rundel", 271 | "RemoteRepo": "parsermd", 272 | "RemoteRef": "master", 273 | "RemoteSha": "6a8a895abb661d32dbd592ac4522d2a543226e3f", 274 | "Hash": "8859dc90c222a70fc8378d7558a47d32" 275 | }, 276 | "pillar": { 277 | "Package": "pillar", 278 | "Version": "1.4.6", 279 | "Source": "Repository", 280 | "Repository": "CRAN", 281 | "Hash": "bdf26e55ccb7df3e49a490150277f002" 282 | }, 283 | "pkgconfig": { 284 | "Package": "pkgconfig", 285 | "Version": "2.0.3", 286 | "Source": "Repository", 287 | "Repository": "CRAN", 288 | "Hash": "01f28d4278f15c76cddbea05899c5d6f" 289 | }, 290 | "processx": { 291 | "Package": "processx", 292 | "Version": "3.4.5", 293 | "Source": "Repository", 294 | "Repository": "CRAN", 295 | "Hash": "22aab6098cb14edd0a5973a8438b569b" 296 | }, 297 | "ps": { 298 | "Package": "ps", 299 | "Version": "1.5.0", 300 | "Source": "Repository", 301 | "Repository": "CRAN", 302 | "Hash": "ebaed51a03411fd5cfc1e12d9079b353" 303 | }, 304 | "purrr": { 305 | "Package": "purrr", 306 | "Version": "0.3.4", 307 | "Source": "Repository", 308 | "Repository": "CRAN", 309 | "Hash": "97def703420c8ab10d8f0e6c72101e02" 310 | }, 311 | "readr": { 312 | "Package": "readr", 313 | "Version": "1.4.0", 314 | "Source": "Repository", 315 | "Repository": "CRAN", 316 | "Hash": "2639976851f71f330264a9c9c3d43a61" 317 | }, 318 | "rematch": { 319 | "Package": "rematch", 320 | "Version": "1.0.1", 321 | "Source": "Repository", 322 | "Repository": "CRAN", 323 | "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" 324 | }, 325 | "rematch2": { 326 | "Package": "rematch2", 327 | "Version": "2.1.2", 328 | "Source": "Repository", 329 | "Repository": "CRAN", 330 | "Hash": "76c9e04c712a05848ae7a23d2f170a40" 331 | }, 332 | "renv": { 333 | "Package": "renv", 334 | "Version": "0.12.0", 335 | "Source": "Repository", 336 | "Repository": "CRAN", 337 | "Hash": "7340c71f46a0fd16506cfa804e224e44" 338 | }, 339 | "rlang": { 340 | "Package": "rlang", 341 | "Version": "0.4.10", 342 | "Source": "Repository", 343 | "Repository": "CRAN", 344 | "Hash": "599df23c40a4fce9c7b4764f28c37857" 345 | }, 346 | "rprojroot": { 347 | "Package": "rprojroot", 348 | "Version": "2.0.2", 349 | "Source": "Repository", 350 | "Repository": "CRAN", 351 | "Hash": "249d8cd1e74a8f6a26194a91b47f21d1" 352 | }, 353 | "sys": { 354 | "Package": "sys", 355 | "Version": "3.4", 356 | "Source": "Repository", 357 | "Repository": "CRAN", 358 | "Hash": "b227d13e29222b4574486cfcbde077fa" 359 | }, 360 | "tibble": { 361 | "Package": "tibble", 362 | "Version": "3.0.4", 363 | "Source": "Repository", 364 | "Repository": "CRAN", 365 | "Hash": "71dffd8544691c520dd8e41ed2d7e070" 366 | }, 367 | "tidyr": { 368 | "Package": "tidyr", 369 | "Version": "1.1.2", 370 | "Source": "Repository", 371 | "Repository": "CRAN", 372 | "Hash": "c40b2d5824d829190f4b825f4496dfae" 373 | }, 374 | "tidyselect": { 375 | "Package": "tidyselect", 376 | "Version": "1.1.0", 377 | "Source": "Repository", 378 | "Repository": "CRAN", 379 | "Hash": "6ea435c354e8448819627cf686f66e0a" 380 | }, 381 | "utf8": { 382 | "Package": "utf8", 383 | "Version": "1.1.4", 384 | "Source": "Repository", 385 | "Repository": "CRAN", 386 | "Hash": "4a5081acfb7b81a572e4384a7aaf2af1" 387 | }, 388 | "uuid": { 389 | "Package": "uuid", 390 | "Version": "0.1-4", 391 | "Source": "Repository", 392 | "Repository": "CRAN", 393 | "Hash": "e4169eb989a5d03ccb6b628cad1b1b50" 394 | }, 395 | "vctrs": { 396 | "Package": "vctrs", 397 | "Version": "0.3.4", 398 | "Source": "Repository", 399 | "Repository": "RSPM", 400 | "Hash": "0bc90078aeee42f2520b1d0a33bd6758" 401 | }, 402 | "withr": { 403 | "Package": "withr", 404 | "Version": "2.3.0", 405 | "Source": "Repository", 406 | "Repository": "CRAN", 407 | "Hash": "7307d79f58d1885b38c4f4f1a8cb19dd" 408 | }, 409 | "yaml": { 410 | "Package": "yaml", 411 | "Version": "2.2.1", 412 | "Source": "Repository", 413 | "Repository": "CRAN", 414 | "Hash": "2826c5d9efb0a88f657c7a679c7106db" 415 | } 416 | } 417 | } 418 | --------------------------------------------------------------------------------