diff --git a/video-editlist.yaml b/video-editlist.yaml new file mode 100644 index 0000000..3298c4b --- /dev/null +++ b/video-editlist.yaml @@ -0,0 +1,525 @@ +- workshop_title: CodeRefinery 2024 Sep +- workshop_description: > + This is part of the CodeRefinery September 2024 workshop. The videos + are available to everyone, but may be most useful to the people + who attended the workshop and want to review later. In this + workshop, week 1 was redesigned and day 1 starts with concepts in + the GitHub web interface, and days 2-3 move to local work. + + Playlist: https://www.youtube.com/playlist?list=PLpLblYHCzJAC5BCOYGsbxg9hWpVX2g8nf + + Workshop webpage: https://coderefinery.github.io/2024-09-10-workshop/ + + CodeRefinery: https://coderefinery.org/ + +# This input will be used for all segments until redefined +- input: raw/day1-obs.mkv + + +## Preview icebreaker +#- output: out/day1-icebreaker.mkv +# title: 1.1 Icebreaker +# description: >- +# The pre-start discussion and icebreakers. You probably want to go +# on to the next video. +# time: +# - start: 00:14:20 +# - end: 00:19:32 + + +## Intro +#- output: out/day1-intro.mkv +# title: 1.1 Intro +# description: > +# The introduction to this workshop, explaining general mechanics +# and what CodeRefinery is. +# +# https://github.com/coderefinery/workshop-intro/blob/master/livestream.md +# time: +# - start: 00:20:53 +# - stop: 42:00 +# +## Git-intro day 1 +#- output: out/day1-git-intro-1.mkv +# title: 1.2 Git Intro (day 1) +# description: > +# Here, we go over the basics of git from first principles, using +# the GitHub web interface. First, we talk about basic motivation +# about why version control. Then, we use the GitHub web interface +# to understand the basics of history, branches, commits, and +# merges, conflict resolution (online), and how everything fits +# together. This isn't how normal work would happen, but it's a +# much easier starting point. Part 2 (on day 2) goes to local work +# using all the same concepts we learned today. +# +# Multi-user work and remotes is the next lesson, git-collaborative, +# on day 3. +# +# There are two external videos which are excluded from this +# recording. You can find the link to them in the table of contents +# below. +# +# https://coderefinery.github.io/git-intro/ +# +# time: +# - start: 00:42:14 +# - -: Overview of the day +# - 00:45:11: Introduction, overview of lesson +# - 00:47:47: '§ Motivation to version control' +# - 00:56:31: '§ Browsing an existing project' +# - 01:01:26: Exercise introduction (Browsing) +# - stop: 01:05:15 +# - start: 01:24:47 +# - -: Exercise follow-up (Browsing) +# - stop: 01:25:36 +# - start: 01:34:40 +# - 01:36:01: Going through the exercise (Browsing) +# - 01:43:03: '§ Committing changes' +# - 01:52:22: Exercise introduction (Committing) +# #- stop: 01:53:11 +# #- start: 02:14:17 +# - stop: 01:53:11 +# - start: 02:14:17 +# - -: Going over the exercise (Committing) +# - stop: 02:19:17 +# - start: 03:19:43 +# - -: Quick recap so far (and Q&A) +# - 03:26:06: VS Code demo +# - 03:33:18: '§ Merging changes' +# - 03:37:45: Exercise introduction (Merging) +# - stop: 03:42:44 +# - start: 04:04:05 +# - -: Going over the exercise (Merging) +# - stop: 04:13:40 +# - start: 04:19:11 +# - -: 'Demo: create a pull request across repositories' +# - 04:22:30: Create new branch in coderefinery/recipe-book and open pull request +# - 04:27:23: Create new branch in [other-repo]/recipe-book and open pull request +# - 04:30:01: Looking at the two pull requests +# - 04:32:20: Try to merge the conflicting PR. Resolve the conflict +# - 04:37:08: Summary +# - 04:38:05: Q&A +# - 04:40:35: Feedback and more Q&A +# - 04:42:39: Outlook for tomorrow +# - stop: 04:49:30 +# +# +# +# +## Day 2 +#- input: raw/day2-obs.mkv +# +## Day 2 icebreaker +#- output: out/day2-icebreaker.mkv +# title: 2.1 Day 2 icebreaker +# description: > +# The icebreaker part of day 2. +# time: +# - start: 00:10:12 +# - stop: 00:18:08 +# +## Day 2 intro +#- output: out/day2-intro.mkv +# title: 2.2 Day 2 introduction +# description: > +# The introduction to day 2 recapping day 1 and giving background of +# day 2. +# editlist: +# - start: 00:18:08 +# - 00:20:42: For newcomers +# - stop: 00:26:16 +# +## Git-intro day 2 +#- output: out/day2-git-intro-2.mkv +# title: 2.3 Git Intro day 2 +# description: > +# Part 2 of the previous video: https://www.youtube.com/watch?v=sddxBsL799M&list=PLpLblYHCzJADIsbUhXSrC0qW5wDsH-F9U&index=3 +# +# We continue where we left off from day 1. We advance by working +# locally: first, cloning a repository and doing some of the same +# things we did yesterday (committing, branching, etc). Then, we +# clone a sample repository and use it to practice more advanced +# history inspection. Then, we show and practice taking a project +# that isn't controlled by git, doing the "git init", and doing all +# of the tracking, linking to the web repository (GitHub, GitLab, +# etc). The day ends with lots of practical advice on various +# topics. +# +# https://coderefinery.github.io/git-intro/ +# editlist: +# - start: 00:26:16 +# - -: Starting words +# - 00:32:20: '§ Cloning a git repository and working locally' +# - 00:40:36: Demonstration of cloning a repository locally +# - 00:49:12: Exercise introduction (cloning) +# - stop: 00:52:05 +# #- start: 01:18:04 +# #- -: After exercise +# #- stop: ?? +# - start: 01:27:41 +# - -: Exercise Q&A (cloning) +# - 01:34:00: '§ Inspecting history' +# - 01:37:11: Demonstration of important commands +# - 01:41:04: Exercise introduction (inspecting history) +# - stop: 01:46:13 +# - start: 02:08:29 +# - -: Exercise Q&A (inspecting history) +# - stop: 02:19:35 +# - start: 03:17:49 +# - -: "Back from break, more comments on previous exercise" +# - 03:24:28: '§ How to turn your project into a Git repo and share it' +# - 03:24:55: Exercise introduction (sharing) +# - stop: 03:29:03 +# - start: 03:52:50 +# - -: Exercise Q&A (sharing) +# - 04:01:44: '§ Practical advice: how much git is necessary? (general Q&A)' +# - stop: 04:12:12 +# - start: 04:22:43 +# - -: General discussion and Q&A session +# - 04:24:57: gitignore and git status +# - 04:30:04: 'Branch design (when to branch) (continuation of practical advice)' +# - 04:36:02: How large should a commit be? +# - 04:38:40: '§ What to avoid' +# - 04:43:53: Feedback of the day and more discussion +# - 04:45:21: Preparation for day 3 +# - stop: 04:50:32 +# +# +# +### Day 3 +#- input: raw/day3-obs.mkv +# +#- output: out/day3-icebreaker.mkv +# title: 3.1 Day 3 icebreaker +# description: > +# The icebreaker of day 3. We have a guest who prepares for us by +# discussing about their experience with the MNE project and how has +# collaboration with many people using the things we will learn +# about today. +# time: +# - start: 00:14:15 +# - stop: 00:21:56 +# +#- output: out/day3-intro.mkv +# title: 3.2 Day 3 intro +# description: > +# The intro of day 1, where we position the day in the bigger +# picture of the course and re-introduce things for any new people. +# time: +# - start: 00:21:56 +# - stop: 00:27:53 +# +# +# +# +#- output: out/day3-git-collab.mkv +# title: 3.3 Git collaborative +# description: > +# Today, we expand from using git by yourself to using it in a +# team. We use Github, centralized workflows, forking on Github, +# pull requests, code review, commenting on pull requests, +# practical advice on using Git and version control in real projects, +# contributing to other projects, and more. This really puts the +# previous two days together and lets you know how things work in +# bigger projects. +# +# https://coderefinery.org/git-collaborative/ +# time: +# - start: 00:27:53 +# - -: Some initial discussion +# - 00:29:36: Collaborative distributed version control +# - 00:33:26: "§ Concepts around collaboration" +# - 00:42:21: "§ Collaborating within the same repository" +# - 00:42:50: Exercise preparation +# - 00:45:18: Exercise overview (same repository) +# - stop: 00:51:23 +# - start: 01:31:45 +# - -: Exercise demo Q&A (same repository) +# - 01:49:39: '§ Practicing code review (straight to exercise)' +# - stop: 01:57:45 +# - start: 03:21:42 +# - -: "§ Contributing changes to others' repositories" +# - 03:26:11: Demo of main exercise steps +# - 03:43:19: Starting the exercise (code review +# - stop: 03:44:59 +# - start: 04:16:41 +# - -: After exercise commentary +# - stop: 04:17:47 +# - start: 04:26:48 +# - -: "More general Q&A and recommendations (bottom of 'contributing changes')" +# - 04:51:20: Final words and preparation for day 3 +# - stop: 04:55:52 +# +# +### Day 4 +#- input: raw/day4-obs.mkv +# +#- output: out/day4-icebreaker.mkv +# title: 4.1 Second week icebreaker # /introduction +## description: > +## The introduction to the second week, where we go into slightly +## more detail bout what we will cover this week and how it fits +## together. There is also a guest to give us an introduction of +## reproducible research and social coding, which are the topics of +## today. +## +## In short, if last week was about tracking code, this week is about +## managing software. +# description: >- +# The random icebreaking discussion for day 4. +# time: +# - start: 00:17:37 +# #- -: Guest talking about reproducibility and science +# #- 00:27:35: Introduction to week 2 +# - end: 00:24:33 +# +# +#- output: out/day4-reproducible-research.mkv +# title: 4.2 Reproducible Research +# description: > +# If you can't get your code to do the same thing again, is it +# really science? Or more practically, are you able to do your +# work? Reproducibilty is a big deal, but we don't always learn how +# to do it. In this lesson, we cover the basics, how to organize +# projects, record computational steps with Snakemake or other +# workflow managers, how to record environments with conda (and +# containers a bit), and sharing code and data (FAIR). +# +# https://coderefinery.github.io/reproducible-research/ +# +# time: +# - start: 00:26:47 #00:25:01 +# - 00:28:16: "§ Introduction: how the whole workshop connects" +# - 00:32:20: § Motivation +# - 00:45:35: § Organizing your projects +# - 00:54:59: § Recording computational steps +# - stop: 01:27:56 +# - start: 01:38:58 +# - -: "Q&A after the break" +# - 01:40:06: § Recording dependencies +# - 01:59:27: § Recording environments +# - 02:19:19: § Where to go from here? +# - 02:22:39: Q&A from the notes, feedback, final discussion +# - stop: 02:24:43 +# +# +#- output: out/day4-social-coding.mkv +# title: 4.3 Social coding +# description: > +# We don't just program for ourselves: we are part of a community. +# As scientists, we want to get citations, so how can our software +# support this? Our work is a constant balance between using the +# work of others and hoping that others will use our work. In this +# lesson, we talk about the advantages and disadvantages of others +# building on our work, and how to support that. +# +# We cover best practices for software/data projects, requirements +# for sharing, copyright, licensing, citation, and more. +# +# https://coderefinery.github.io/social-coding/ +# time: +# - start: 03:24:13 +# - -: Bring your own code sessions +# - 03:25:33: Pre-introduction to social coding. +# - 03:27:57: § Social coding start +# - 03:30:00: § Social Coding +# - 03:55:25: § Software licensing +# - stop: 04:19:53 +# - start: 04:29:42 +# - -: Q&A after break +# - 04:37:32: § Software citation +# - 04:47:32: § Sharing data +# - 04:54:24: Feedback and news for day +# - stop: 05:01:46 +# +# +######- output: out/day4-outro.mkv +###### title: 4.3 Day 4 final remarks +###### description: > +###### ... +###### time: +###### - 3:38:30, 3:39:42 +###### +##### +#### Day 5 +# +#- input: raw/day5-obs.mkv +# +#- output: out/day5-intro.mkv +# title: 5.1 Day 5 icebreakers and intro +# description: > +# The random icebreaking discussion for day 5. +# time: +# - start: 00:12:37 +# - 00:21:19: Introduction of the day +# - stop: 00:27:46 +# +# +#- output: out/day5-documentation.mkv +# title: 5.2 Documentation +# description: > +# In this lesson we discuss different solutions for implementing and +# deploying code documentation. We start by creating a wishlist for +# how we would code documentation like to be. Then after a tour of +# available tools, we discuss how to write useful and accessible +# READMEs, and then we progress by demonstrating and practicing the +# Sphinx documentation generator and demonstrate how to deploy +# documentation to Read the Docs service. +# +# Topics and tools discussed: Markdown, reStructured text, README +# documentation, table of contents generation, Sphinx, Read the +# Docs, GitHub/GitLab pages. +# +# https://coderefinery.github.io/documentation/ +# time: +# - start: 00:27:46 +# - -: Introduction to topics, initial questions +# +# - 00:41:31: § Motivation and wishlist +# - 00:50:00: § Popular tools and solutions +# - 00:56:18: § In-code documentation +# - 01:05:19: § README files +# - stop: 01:14:33 +# - start: 01:26:26 +# - -: § Sphinx and Markdown +# - 02:02:17: § Deploying Sphinx documentation to Github Pages +# - 02:19:18: § Summary +# - 02:21:03: Teaser for after lunch +# - stop: 02:22:40 +# +#- output: out/day5-jupyter.mkv +# title: 5.3 Jupyter +# description: > +# This lesson teachs learners the user interface of JupyterLab, how +# Jupyter notebooks work, and what some common and powerful usecases +# are. Our focus is to demonstrate and discuss and guide towards +# good practices for reproducibility, collaboration, and +# reusability. The emphasis of this lesson is to demonstrate how to +# use notebooks in combination with version control and how to share +# reproducible notebooks via Binder. +# +# This lesson demonstrates the use of JupyterLab, nbdime, +# jupyterlab-git, and Binder. +# +# https://coderefinery.github.io/jupyter/ +# time: +# - start: 03:20:45 +# - 03:23:05: § Jupyter notebooks +# - 03:39:09: § JupyterLab and Notebook interface +# - 03:51:35: First Computational Notebook +# - 04:02:15: § Notebooks and version control +# - stop: 04:11:55 +# - start: 04:22:02 +# - -: Jupyter notebook opened from VS Code +# - 04:24:26: Sharing notebooks (Binder) +# - 04:36:36: Q&A +# - 04:41:16: Binder has started, take a look and discuss +# - 04:46:08: § Shell commands, magics, and widgets +# - 04:47:33: § Summary and more Q&A +# - stop: 04:51:23 +# +#####- output: out/day5-outro.mkv +##### title: 5.3 Day 5 outro +##### description: >- +##### Conclusion of day 5 and expectations for day 6. +##### time: +##### - start: 03:45:28 +##### - stop: 03:46:23 +### +### +### +#- input: raw/day6-obs.mkv +# +#- output: out/day6-intro.mkv +# title: 6.1 Day 6 icebreakers and intro +# description: > +# The random icebreaking discussion, as well as quick introduction to Day 6. +# time: +# - start: 00:11:48 +# - -: Random icebreaker +# - 00:19:18: Introduction of the day +# - end: 00:24:31 +# +# +# +#- output: out/day6-testing.mkv +# title: 6.2 Software Testing +# description: > +# Software testing is a fundamental part of modern software +# development, and especially important for science since results +# should be correct. Luckily, it's not so hard to get started, and +# anyone can do it. This is a crash course for scientists to get +# started testing their software. +# +# Tools covered include concepts of testing for science, unit +# testing, pytest, continuous integration, and GitHub actions. We +# make demos in Python, but have examples in other languages and +# this will apply to every language in some form. +# +# https://coderefinery.github.io/testing/ +# +# editlist: +# - start: 00:24:31 +# - -: Introduction +# - 00:26:01: § Motivation +# - 00:37:36: § Testing locally +# - 00:53:45: § Automated testing +# - stop: 01:22:09 +# - start: 01:33:10 +# - -: § Test design +# - 02:07:56: Q&A +# - stop: 02:21:56 +# +#- output: out/day6-modular-code-development.mkv +# title: 6.3 Modular Code Development +# description: > +# In this live-coding demo session we take a Python script as +# starting point which reads data, computes simple statistics, and +# generates a plot. Together we then improve this code based on +# suggestions from the audience to arrive at a more reusable code +# with reusable components. We start in the Jupyter notebook, later +# move to a Python script/module, introduce testing, and finally +# introduce and motivate a command line interface to our code. +# +# In this demonstration we use JupyterLab, Python, Pandas, +# Matplotlib, pytest, and Click. It is also a great demonstration +# of pair programming. +# +# https://coderefinery.github.io/modular-type-along/ +# time: +# - start: 03:18:43 +# - -: Introduction to the lesson +# - 03:28:17: § Learning outcomes +# - 03:28:50: § Our starting task +# - 03:29:21: Start by coping into a Jupyter notebook and get it to run +# - 03:35:08: How is it not modular now? +# - 03:36:13: Split code into three functions +# - 03:47:50: Make some hard-coded config be options +# - 03:49:39: Plot different values in a loop +# - 03:57:17: Lower limit as a parameter +# - 03:58:42: Moving to a command line script +# - 04:04:40: Command-line interface with click +# - stop: 04:21:05 +# - start: 04:31:06 +# - -: Discussion after break +# - 04:33:55: Move functions into an importable module +# - 04:37:20: Record dependencies in a requirements.txt +# - 04:41:15: Add tests +# - 04:44:03: Commit to version control +# - 04:44:40: Discussion +# - stop: 04:48:05 +# +#- output: out/day6-outro.mkv +# title: 6.4 Workshop outro +# description: > +# The concluding remarks of the workshop. +# +# Outro presentation (will be updated in the future): +# https://github.com/coderefinery/workshop-outro/blob/master/README.md +# +# time: +# - start: 04:48:28 +# - -: A small discussion about AI code generation +# - 04:52:56: Outro, where to go from here. +# - 05:07:11: General Q&A, more about AI code +# - stop: 05:16:10