class: right, top background-image: url(https://images.unsplash.com/photo-1472289065668-ce650ac443d2?ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80) background-position: 75% 75% background-size: cover .right-column[ # Using R to Teach R ### Myles Mitchell</br></br> #### http://bit.ly/jr-teach-r ] .left[.footnote[<span>Photo by <a href="https://unsplash.com/@joannakosinska?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Joanna Kosinska</a> on <a href="https://unsplash.com/backgrounds/colors?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></span>]] --- name: jr ## Jumping Rivers .pull-left[ <img src="img/computer-small.jpg" class = "center"> ] .pull-right[ .right[ ### Stats Consultancy ### R & Python training ### Infrastructure ] ] --- name: many-training-courses ## Over a hundred courses a year <img src="img/r-lecture.jpg" width="1625" /> ??? * We deliver over 100 R, Python and Stan training courses each year * Engaging with thousands of new learners. --- class: top inverse # Before 2020 -- ###
In person training -- ###
Ran RStudio locally -- ###
Physical notes and exercises -- ###
Very interactive -- ###
Then March 2020 happened... --- class: top inverse # Moving training online -- ###
We tested online training internally -- ###
It was DULL -- ###
Made it more interactive -- ###
Lots of work for trainers -- ###
Automated as much as possible ??? The necessity to move to fully online training in March last year meant we quickly had to completely rethink how to deliver R training interactively online. We internally trialled running our usual in-person training just on Zoom - and it really doesn’t work trust us! --- class: middle inverse # Our training stack --- class: middle <img src="img/deborah.jpg" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/osheen.png" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-1.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/asana-zoom.png" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-2.png" width="100%" style="display: block; margin: auto;" /> --- class: middle ```r jrDroplet::create_droplet_from_asana("https://app.asana.com/...") ℹ Creating a Droplet from Asana task ... ✓ Droplet configuration finished ``` --- class: middle <img src="img/flow-3.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-4.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/notes.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/scripts.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-5.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/welcome.png" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-6.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/workbench.png" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-7.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/virtual_training_env.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-8.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/slack-notify.png" width="80%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-9.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-10.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-11.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/flow-12.png" width="100%" style="display: block; margin: auto;" /> --- class: middle inverse # Our standardised approach --- class: middle <img src="img/git-1.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # Central repository -- ###
Internal R packages for building courses -- ###
Makefiles -- ###
GitLab CI/CD rules -- ###
Other template files (.gitignore, README, etc) -- ###
Standardised course structure --- class: middle <img src="img/git-2.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # R courses -- ###
~25 downstream repositories -- ###
Materials written in R Markdown -- ###
Notes compiled to PDF -- ###
Slides compiled to HTML -- ###
Scripts / exercises converted to .R --- class: middle <img src="img/git-3.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # Non-R courses -- ###
Code chunks in Python, SQL, etc -- ###
... that's all! --- class: middle <img src="img/git-4.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/git-5.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/git-6.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # Alert system -- ###
Changing central repo triggers CI -- ###
Downstream repos also triggered -- ###
Fails are flagged on Slack -- ###
All courses tested monthly --- class: middle <img src="img/git-7.png" width="100%" style="display: block; margin: auto;" /> --- class: middle <img src="img/git-8.png" width="100%" style="display: block; margin: auto;" /> --- class: middle inverse # R for admin! --- class: top inverse # R for admin! -- ###
Pricing app generates quotes -- ###
Post-training certification -- ###
Attendee feedback summaries --- class: middle inverse # Is it worth it? --- name: worth-it # Worth the effort? <div class="figure" style="text-align: center"> <img src="img/xkcd-1205.png" alt="https://xkcd.com/1205/" width="70%" /> <p class="caption">https://xkcd.com/1205/</p> </div> --- class: top inverse # Benefits -- ###
Less duplication -- ###
Easy(ish) to write new courses -- ###
Issues are flagged immediately -- ###
Trainer can focus on ... training! -- ###
>100 courses taught per year -- ###
Asana is an accessible interface --- class: middle <img src="img/flow-10.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # Drawbacks -- ###
R-centric setup -- ###
Course structure can be restrictive... -- ###
One change can break 40 repositories! --- class: middle <img src="img/git-8.png" width="100%" style="display: block; margin: auto;" /> --- class: top inverse # Take-home lessons -- ###
One central location -- ###
Packaging source code -- ###
Utilise CI/CD and Git workflow -- ###
Focus on what matters -- ###
Think about your colleagues --- class: right, middle, inverse <img style="border-radius: 5%;" src="img/robot.png" width="200px"/> ## Learn more... #### [
@jumping_uk](https://twitter.com/jumping_uk) #### [
jumpingrivers.com](https://www.jumpingrivers.com/) #### [
http://bit.ly/jr-teach-r](http://bit.ly/jr-teach-r)