generated from coderefinery/template-workshop-webpage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
video-editlist.yaml
530 lines (481 loc) · 17.6 KB
/
video-editlist.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
- 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:15:25
- stop: 00:39:15
# 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:39:15
- -: Overview of the day
- 00:45:00: '§ Motivation to version control'
- 00:55:59: '§ Browsing an existing project'
- 01:01:07: Exercise introduction (Browsing)
- stop: 01:04:05
- start: 01:23:24
- -: Exercise follow-up (Browsing)
- stop: 01:24:21
- start: 01:34:30
- -: Going through the exercise (Browsing)
- 01:42:38: '§ Committing changes'
- 01:47:26: Exercise introduction (Committing)
- stop: 01:50:04
- start: 02:08:21
- -: Going over the exercise (Committing)
- stop: 02:18:20
# lunch
- start: 03:13:35
- -: Quick recap so far (and Q&A)
- 03:15:29: '§ Merging changes'
- 03:23:28: Demo of the exercise topcis (Merging)
- 03:26:20: Exercise introduction (Merging)
- stop: 03:28:34
- start: 03:48:38
- -: Going over the exercise (Merging)
- 03:56:49: Looking at more pull requests and discussing what this all means
- 04:01:19: Q&A from notes
- stop: 04:09:48
- start: 04:19:30
- -: Demonstration of creating a pull req conflict
- 04:21:45: Create new branch and add commit
- 04:23:20: Create new commit on main branch
- 04:24:04: Create a new pull request from new branch → main branch and discuss
- 04:25:56: Try to resolve the conflicting change
- 04:28:08: Summary
- 04:30:27: Big picture of the day
- 04:31:51: Q&A, feedback of the day
- 04:41:24: News of day 1, preparation for day 2
- stop: 04:44:30
# Day 2
- input: raw/day2-obs.mkv
# Day 2 icebreaker
- output: out/day2-icebreaker.mkv
title: 2.1 Day 2 icebreaker and intro
description: >
The icebreaker part of day 2, which includes following up on some
questions from yesterday and an outlook for today.
time:
- start: 00:06:14
- stop: 00:20:28
## 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=yoK3p4FZ66U&list=PLpLblYHCzJAC5BCOYGsbxg9hWpVX2g8nf&index=2
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:20:28
- -: Starting words
- 00:24:55: '§ Cloning a git repository and working locally'
#- : Demonstration of cloning a repository locally
- 00:34:40: Exercise introduction (cloning)
- stop: 00:39:13
#- start: 01:18:04
#- -: After exercise
#- stop: ??
- start: 01:04:01
- -: Exercise Q&A (cloning)
- 01:05:14: Going thourgh exercise solution
- stop: 01:16:39
- start: 01:25:51
- -: A bit more Q&A (and comparison of GitHub, VSCode, and command line)
- 001:28:56: '§ Inspecting history'
- 01:30:05: Demonstration of the exercise topics
- 01:40:36: Exercise introduction (inspecting history)
- stop: 01:44:35
- start: 02:04:23
- -: Exercise Q&A (inspecting history)
- stop: 02:13:54
- start: 03:11:23
- -: "Back from break, more comments on previous exercise"
- 03:13:05: '§ How to turn your project into a Git repo and share it'
- 03:25:42: Exercise introduction (sharing)
- stop: 03:27:44
- start: 03:51:00
- -: Exercise Q&A (sharing)
- 03:52:13: Thoughts on publishing work
- 03:55:33: '§ Practical advice: how much git is necessary? (general Q&A)'
- stop: 04:07:58
- start: 04:17:46
- -: General discussion and Q&A session
- 04:23:38: '§ What to avoid'
- 04:30:17: Feedback of the day and more discussion
- 04:31:33: Preparation for day 3
- stop: 04:39:17
## 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:21:31
- -: Some initial discussion, requesting access
- 00:24:22: "§ Concepts around collaboration"
- 00:39:32: "§ Collaborating within the same repository"
- 00:41:23: Exercise preparation
- 00:50:34: Exercise introduction (same repository)
- stop: 00:56:20
- start: 01:15:07
- -: Break intro
- stop: 01:15:55
- start: 01:25:32
- -: 'Exercise demo and Q&A and § Practicing code review (straight to exercise)'
- stop: 02:16:48
# lunch
- start: 03:16:46
- -: "§ Contributing changes to others' repositories"
#- 03:26:11: Demo of main exercise steps
#- 03:43:19: Starting the exercise (code review
- stop: 03:38:23
- start: 03:59:27
- -: After exercise commentary
- 04:21:10: Q&A and misc topics
#- stop: 04:17:47
#- start: 04:26:48
#- -: "More general Q&A and recommendations (bottom of 'contributing changes')"
- 04:40:59: Final words and preparation for day 3
- stop: 04:48:10
### Day 4
- input: raw/day4-obs.mkv
- output: out/day4-icebreaker.mkv
title: 4.1 Second week intro
# 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:
- input: raw/day4-twitch.mp4
- start: 00:15:20
- 00:19:28: How the weeks fit together
- stop: 00:21:13
- 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:
- input: raw/day4-obs.mkv
- start: 00:00:49
- -: § Motivation
- 00:09:07: § Organizing your projects
- 00:26:25: § Recording computational steps
- stop: 00:47:59
- start: 00:57:05
- -: § Recording dependencies
- 01:24:31: § Recording environments
- 01:47:48: § Where to go from here?
- stop: 01:53:59
- 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: 02:54:44
- 02:59:15: § Social Coding
- 03:19:27: § Software licensing
- stop: 03:47:10
- start: 03:57:01
- -: § Software citation
- 04:08:20: § Sharing data
- 04:17:22: Feedback, news for day, and further Q&A
- stop: 04:24:32
######- 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