--- tags: workshop-2022-March --- # March 2022 workshop planning :::info - Workshop page: https://coderefinery.github.io/2022-03-22-workshop/ - This document: https://hackmd.io/@coderefinery/2022-march-planning ::: ## Advertising Templates (please do not hesitate to adapt also and please also share yours): https://github.com/coderefinery/2022-03-22-workshop/issues/1 - [x] Twitter: https://github.com/coderefinery/coderefinery-twitter/pull/34 (of course we need more tweets later) - [x] Sigma2 newsletter (RB) - [x] Notify-me list (RB) - [x] SNIC newsletter (JH or DI) - [x] ENCCS website (TW) - [x] CSC training newsletter (SW) - [x] [CSC training calendar](https://ssl.eventilla.com/event/6PQrJ) (SW) - [ ] Aalto STEM students e-lists (EG) [one email sent] - [ ] Aalto triton users (EG) [one email sent] - [ ] Otaniemi posters at CS+U+NBE+PHYS+VAARE (EG) - [ ] [Delta doctoral network](https://sites.tuni.fi/delta/) (LF) - [x] Notify UiB researchers [one mail sent to faculties] (DP) - [x] UiB hpc mailing list (DP) - [x] NERSC, Bergen mailing list(DP) - [X] University of Oslo computational biology mailing list (SR) - [X] University of Oslo Phd and Postdocs mailing list (SR) - [X] University of Oslo dDcince contact (SR) ### Tweets - [x] The next CodeRefinery workshop has [x] instructors and helpers from [y] institutions, and so far [z] total registrations. - The CodeRefiney workshop is not about programming, but tools for development. It's targeted towards scientists, and this year everyone can attend online - This CodeRefinery workshop is livestreamed, anyone can attend. Imagine the possibilities: form your own watching party, watch in your own room, and do exercises together - When you can reach thousands of people in a workshop (Twitch livestream), should we require registrations? In the end, we don't require, but recommend for our reporting: [link] - CodeRefinery started emphasizing learning teams (leader + 5 learners) for its previous workshops. But that's hard with livestreams, any ideas? - Wonder why we use livestream for massive courses? Many reasons, for example we need to teach teach anyway, and separating teaching from learners makes things very easy. - Instructor point of view in a livestream: most amazing thing is that during breaks, you flip the scene and you can talk without everyone seeing your planning time. Very convenient! - After you've done co-teaching (or seen it), you'll never want to teach alone again. Watch our course to see how it works - Or if you want to know now, watch our livestream sample video [youtube lin] ## Role distribution - Anything, just let me know (expert helpers): - Luca - Video production (streaming, scene selection, video editing and archiving) - lead: Richard - backup and help: Enrico (I will be in Otaniemi for the hybrid CR, so I cannot run "the studio", however I can help for post-processing part) - Luca: I have very rudimental skills in video processing/editing etc., but would be glad to help and maybe learn something on the way) - Zoom host (all Zoom logistics and breakoutroom setup) - lead: Radovan - backup: Enrico - Communication (email communication with participants) - lead: Radovan (I changed this only because a lot of communication has to happen already before the workshop) - backup, helps reviewing: Diana, Enrico - HackMD editors (edit and archive notes each day) - prepares it for the workshop: Radovan - day 1: Thor - day 2: Thor - day 3: Thor - day 4: Diana - day 5: Diana - day 6: Diana - Exercise leads onboarding & EL communication ([onboarding material](https://hackmd.io/@coderefinery/March22_EL_onboarding) and [EL HackMD](https://hackmd.io/@coderefinery/EL_hackmd_22)) - Samantha - Radovan - Luca (only Mar 16) - Johan (only Mar 16) - Enrico (only Mar 17) - Thomas (only Mar 17) - Richard (if Jarno and Thomas are in Aalto garage) - Sabry - Diana (only March 16) - Install help (be present during install help session, see workshop page for times): - Radovan - Enrico - Thomas - Pavlin - Johan (only Mar 16) - Luca (only Mar 16) - Jarno (only Mar 17) - Sabry - Teaching lead (coordinates schedule, finds instructors, schedules a call with each lesson pair and leads exercise lead onboarding) - Radovan - Instructors (**work together on lesson issues, create a list of their exercises, and teach**) - (add your preferences, each lesson needs two people for co-teaching/backup) - Git intro day 1: Radovan and Diana - Git intro day 2: Radovan and Diana - Collaborate Git: Jarno and Radovan - Reproducible research and FAIR data: Thor and Samantha - Social coding and open software: Richard and Sabry - Jupyter: Thor and Johan - Documentation: Jarno and Samantha - Software testing: Johan and Luca - Modular code development Radovan and Luca - Can do anything left over: Richard, Luca (cannot attend 29th and 30th) # Schedule - time given in CET **Day 1 - tentative (March 22, Tuesday)** * 08:50 - 09:00 (10 min) Soft start and icebreaker question * 09:00 - 09:20 (20 min) Welcome and practical information Richard * 09:20 - 12:30 [Introduction to version control (part 1/2)](https://coderefinery.org/git-intro/) - 09:20 - 09:35 (15 min) [Motivation - teaching & demo](https://coderefinery.org/git-intro/motivation/#motivation) Radovan - 09:35 - 09:50 (15 min) [Basics - teaching & type-along](https://coderefinery.org/git-intro/basics/#basics) Radovan - 09:50 - 10:05 (15 min) [Basics - breakout room exercises](https://coderefinery.org/git-intro/basics/#exercise-record-changes) Radovan and ELs/EHs 1. [Record changes](https://coderefinery.org/git-intro/basics/#exercise-record-changes) 2. [Optional: Comparing, renaming, and removing](https://coderefinery.org/git-intro/basics/#optional-exercises-comparing-renaming-and-removing) - to be done if time allows - 10:05 - 10:15 :coffee: :walking: :tea: Break - 10:15 - 10:35 (20 min) [Basics - History, commit log, ignoring - teaching](https://coderefinery.org/git-intro/basics/#git-history-and-log) - Radovan - 10:35 - 10:55 (20 min) [Branching and merging - teaching/type-along](https://coderefinery.org/git-intro/branches/#branching-and-merging) Diana - 10:55 - 11:10 (15 min) [Branching and merging - breakout room exercises](https://coderefinery.org/git-intro/branches/#exercise-create-and-commit-to-branches) Diana and ELs/EHs 1. [Create and commit to branches](https://coderefinery.org/git-intro/branches/#exercise-create-and-commit-to-branches) Teaching resumed before merging branches. 3. [Optional exercies with branches: Fast-forward merge and Rebasing](https://coderefinery.org/git-intro/branches/#optional-exercises-with-branches) - to be done if time allows - 11:10 - 11:20 :coffee: :walking: :tea: Break - 11:20 - 11:30 (10 min) Summarize branching and merging - 11:30 - 11:45 (15 min) [Conflict resolution - teaching/type-along](https://coderefinery.org/git-intro/conflicts/#conflict-resolution) Radovan - 11:45 - 12:00 (15 min) [Conflict resolution - breakout room exercises](https://coderefinery.org/git-intro/conflicts/#exercise-create-and-resolve-a-conflict) Radovan and ELs/EHs 1. [Create and resolve a conflict](https://coderefinery.org/git-intro/conflicts/#exercise-create-and-resolve-a-conflict) 2. [Optional exercise with conflict resolution](https://coderefinery.org/git-intro/conflicts/#optional-exercises-with-conflict-resolution) - to be done if time allows - 12:00 - 12:10 (10 min) Discuss conflicts - 12:10 - 12:25 (15 min) Buffer, Q&A session - 12:25 - 12:30 (05 min) Feedback & What will we be doing tomorrow? **Day 2 - tentative (March 23, Wednesday)** * 08:50 - 09:00 (10 min) Soft start and icebreaker question * 09:00 - 09:10 (10 min) Recap and Q&A from day 1 * 09:10 - 12:30 [Introduction to version control (part 2/2)](https://coderefinery.org/git-intro/) - 09:10 - 09:40 (30 min) [Sharing repositories online - teaching/type-along](https://coderefinery.org/git-intro/remotes/#sharing-repositories-online) Diana - 09:40 - 09:55 (15 min) [Inspecting history - teaching/type-along](https://coderefinery.org/git-intro/archaeology/#inspecting-history) Radovan - 09:55 - 10:10 :coffee: :walking: :tea: Break - 10:10 - 10:40 (30 min) [Inspecting history - breakout room exercises](https://coderefinery.org/git-intro/archaeology/#exercise-basic-archaeology-commands) Radovan and ELs/EHs 1. [Basic archeology commands](https://coderefinery.org/git-intro/archaeology/#exercise-basic-archaeology-commands) 2. [Optional: Git bisect](https://coderefinery.org/git-intro/archaeology/#optional-exercise-git-bisect) - to be done if time allows - 10:40 - 10:45 (05 min) Summarize inspecting history - 10:45 - 11:00 (15 min) [Undoing and recovering - teaching/type-along](https://coderefinery.org/git-intro/recovering/#undoing-and-recovering) Diana - 11:00 - 11:10 :coffee: :walking: :tea: Break - 11:10 - 11:30 (20 min) [Undoing and recovering - breakout room exercises](https://coderefinery.org/git-intro/recovering/#exercise-revert-a-commit) Diana and ELs/EHs 1. [Revert a commit](https://coderefinery.org/git-intro/recovering/#exercise-revert-a-commit) 2. [Modify a previous commit](https://coderefinery.org/git-intro/recovering/#exercise-modify-a-previous-commit) 3. [Git reset](https://coderefinery.org/git-intro/recovering/#exercise-git-reset) - 11:30 - 11:35 (05 min) Summarize undoing and recovering - 11:35 - 12:00 (25 min) [Using the Git staging area - teaching/type-along](https://coderefinery.org/git-intro/staging-area/#) Radovan - 12:00 - 12:10 (10 min) [How much Git is neccessary?](https://coderefinery.org/git-intro/level/#practical-advice-how-much-git-is-necessary) Radovan - 12:10 - 12:25 (15 min) Q&A session - 12:25 - 12:30 (05 min) Feedback & What will we be doing tomorrow? **Day 4 - tentative (March 29, Tuesday)** * 08:50 - 09:00 Soft start and icebreaker question * 09:00 - 11:15 [Reproducible research](https://coderefinery.org/reproducible-research/) (Thor, Samantha) - 09:00 - 09:10 [Motivation](https://coderefinery.org/reproducible-research/motivation/) (Thor) - 09:10 - 09:20 [Organizing your projects](https://coderefinery.org/reproducible-research/organizing-projects/) (Samantha) - 09:20 - 09:50 [Recording dependencies](https://coderefinery.org/reproducible-research/dependencies/) (Samantha) - discussion (15 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/dependencies/#exploring-conda-environments) - 09:50 - 10:00 Break - 10:00 - 10:30 [Recording computational steps](https://coderefinery.org/reproducible-research/workflow-management/) (Thor) - discussion (15 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/workflow-management/#using-snakemake) - 10:30 - 10:45 [Recording environments](https://coderefinery.org/reproducible-research/environments/) (Samantha) - 10:45 - 11:10 [Sharing code and data](https://coderefinery.org/reproducible-research/sharing/) (Thor) - discussion (10 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/sharing/#connecting-repositories-to-zenodo) - 11:10 - 11:15 Break/buffer **Day 5 - tentative (March 30, Wednesday)** * 08:50 - 09:00 Soft start and icebreaker question * 09:00 - 10:45 [Jupyter](https://coderefinery.org/jupyter/) (Thor, Johan) - 09:00 - 09:10 [Jupyter notebooks](https://coderefinery.org/jupyter/motivation/) (Johan) - 09:10 - 09:25 [JupyterLab and notebook interface](https://coderefinery.org/jupyter/interface/) (Johan) - 09:25 - 09:45 [A first computational notebook](https://coderefinery.org/jupyter/first-notebook/) (Johan) discussion (5 min) and [breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/first-notebook/#exercise) - 09:45 - 10:00 Notebooks and version control (Thor) - demo, 10-15 min - 10:00 - 10:10 Break - 10:10 - 10:30 Sharing notebooks (Thor) - Binder [Breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/sharing/#sharing-dynamic-notebooks-on-binder) - 10:30 - 10:40 Wrap-up - 10:40 - 10:45 Break/buffer * 10:45 - 12:30 Documentation (Jarno, Samantha) - 10:45 - 11:00 Motivation and tools (Samantha) - create a wishlist in HackMD - 11:00 - 11:30 Writing good README files (Jarno) - (mention in Tuesday after course email to get familiar with README exercises) - 15 minutes for exercises, choosing either 1, 2 or 3 (or do multiple of time allows) - Check that you have Sphinx before break - 11:30 - 11:40 BREAK - 11:40 - 12:10 Sphinx and markdown (Samantha) - look at Lesson source (briefly) - Exercise 1 as type along (10min) - Exercise 2 in groups (20 min), Exercise -3 as optional if time allows - 12:10 - 12:25 Deploying (Jarno) - Exercise 1 as demo - 12:25 - 12:30 Summary (Samantha) **Day 6 (March 31, Thursday)** * 9:00 - 10:45 Software testing (Luca, Johan) - 9:00-9:05 Short info about today's breakout rooms and possible questions from yesterday - 9:05-9:10 [Motivation](https://coderefinery.github.io/testing/motivation/) Johan - 9:10-9:20 [Concepts](https://coderefinery.github.io/testing/concepts/) Johan - 9:20-9:45 [Testing locally](https://coderefinery.github.io/testing/pytest/) Luca - 15 minute breakout session, normal rooms - 9:45-9:55 Break - 9:55-10:20 [Automated testing](https://coderefinery.github.io/testing/continuous-integration/) - type-along session Johan live codes, Luca comments and asks questions and DJs comments from hackmd - 10:20-10:45 [Test design](https://coderefinery.github.io/testing/test-design/) - main room: Luca live codes, Johan comments and asks questions and DJs comments from hackmd - live demo in Julia (emphasis that the session is not about a specific language but about test design strategy) - 10:45-11:00 Break * 11:00 - 12:15 Modular code development () * break around 11:40, at a good breakpoint * all as demo in main room * 12:15 - 12:30 Summary and where to go from here Exercises planning (possibly outdated): https://hackmd.io/@coderefinery/CR_May21_Exercises Contents can be migrated to here also from the May 2021 workshop coordination note: https://hackmd.io/l7VDOAyESLuOABRDVLQsvA?both ## Exercise groups Link to here: https://hackmd.io/@coderefinery/2022-march-planning#Exercise-groups groups that need an exercise lead today: - team-3: Pedro (1-3) (missing EL days 4-6) - seems empty - DigiEco-VTT: Luca (1-2) Sabry (3-5) (missing EL day 6) - Radovan there groups without EL: - SINTEF - was empty on Tue - BloodCounts! - RB was there and going well - ntnu-2 - was empty on Tue - xtra-room-... - all empty groups that have an exercise lead: - Potatisgratäng: Ingrid - WindTUD: Manuel - Lund-KI: Juan Sebastian - AAU_plan: Agneta - bio-microcnb: Toby (1-3) Diana (4-6) - bio-uib: Niharika (1-2) Dhanya (3-6) - chem-UiBKvant: Marco - CiTG: Lora - Code-heirs: Heather - GU-team: Romain - ntnu-1: Bjørn - sdu-dtu-itu: Stephan - team-1: Thor (1) Thomas (2-4) (needs EL days 5 and 6) - team-2: Björn - the refiners: Jose - TUD_DCC_ALEKS: Aleksandra - TUDelft04: Susan - tudelftdcc: Niket - tudelft-maurits: Maurits groups working on their own or working in-person: - SSCRG-Abel: Abel - SSCRG-Inigo: Inigo - Otaniemi: Enrico and Jarno - Marbhl