---
tags: Workshop-2023-Mar
---
# CodeRefinery workshop 2023-03 planning
[toc]
## Links
- [Workshop page](https://coderefinery.github.io/2023-03-21-workshop/)
- This document: https://hackmd.io/@coderefinery/2023-mar-ws-planning
- [Archive HackMD]() :link:
- [HedgeDoc Q&A](https://notes.coderefinery.org/workshop-2023-march)
- [Twitch channel](https://www.twitch.tv/coderefinery/about)
- [Emails and communication](https://github.com/coderefinery/2023-03-21-workshop/tree/main/content/communication)
- [Zoom for onboarding and install help](https://uit.zoom.us/j/63658383518)
:::danger
Add missing links! :link: :arrow_up:
:::
## Workshop roles
([overview](https://coderefinery.github.io/manuals/roles-overview/))
:::success
**If you want to take part, add your name here, sign up in Indico and select "I am interestest in being a helper, co-instructor, or observer", and you will be contacted.**
### Instructors ([description](https://coderefinery.github.io/manuals/instructors/#instructors), [lesson links](https://coderefinery.org/lessons/core/))
Two names per lesson, first is primary
- [x] [day 1 - git-intro](https://coderefinery.github.io/git-intro/): Bjørn, Diana
- [x] [day 2 - git-intro](https://coderefinery.github.io/git-intro/): Bjørn, Diana
- [X] [day 3 - git-collab](https://coderefinery.github.io/git-collaborative/): Radovan, Dhanya
- [ ] [day 4 - reproducible research](https://coderefinery.github.io/reproducible-research/): Radovan, Matias
- [ ] [day 4 - social coding](https://coderefinery.github.io/social-coding/): Radovan, Matias
- [x] [day 5 - jupyter](https://coderefinery.github.io/jupyter/): Johan, Teemu
- [x] [day 5 - documentation](https://coderefinery.github.io/documentation/): Bjørn, Johan
- [x] [day 6 - testing](https://coderefinery.github.io/testing/): Thomas, Teemu
- [ ] [day 6 - modular code development](https://coderefinery.github.io/modular-type-along/): Thomas, ???
Extra:
- DI: Possibly teach something during week 2 instead of week 1 if external teachers (that should receive prio) are interested in teaching Git
### Learner Zoom team leaders
([description](https://coderefinery.github.io/manuals/team-leaders/))
Not needed since we (description above now does not match anymore: this time no Zoom organized by us) assume teams bring their own.
### Expert helpers
([description](https://coderefinery.github.io/manuals/expert-helpers/))
Help answering questions in hedgedoc.
- [ ] day 1 - git-intro: Stephan, ???, ...
- [ ] day 2 - git-intro: Stephan, ???, ...
- [ ] day 3 - git-collab: Stephan, ???, ...
- [ ] day 4 - reproducible research: Stephan, Dhanya, ...
- [ ] day 4 - social coding: Stephan, Dhanya, ...
- [ ] day 5 - jupyter: Stephan, Dhanya, ...
- [ ] day 5 - documentation: Stephan, Dhanya, ...
- [ ] day 6 - testing: Stephan, Dhanya, ...
- [ ] day 6 - modular code development: Stephan, Dhanya, ...
### HackMD manager
([description](https://coderefinery.github.io/manuals/hackmd-helper/#hackmd-manager))
Keep HackMD organized, check for unanswered questions, and archive notes each day
- [x] preparation before workshop:
- [x] day 1 - git-intro: ???, Radovan, ...
- [x] day 2 - git-intro: Matias, Radovan, ...
- [ ] day 3 - git-collab: ???, Matias, ...
- [ ] day 4 - reproducible research: Johan, Diana, ...
- [ ] day 4 - social coding: Johan, Diana, ...
- [ ] day 5 - jupyter: Diana, Radovan, ...
- [ ] day 5 - documentation: Diana, Radovan, ...
- [ ] day 6 - testing: Johan, Matias, ...
- [ ] day 6 - modular code development: Johan, Matias, ...
:::
## Workshop organization; roles "behind the scenes"
Roles and their responsibilities. This does not mean that a person will do
everything that is part of their responsibility, but they will make sure that
their responsibilities are followed-up and not forgotten.
### Event director
([description](https://coderefinery.github.io/manuals/director/))
- lead: Radovan
- backup: Stephan
:::spoiler Checklist
- [x] Create planning HackMD by copying this page to a new HackMD in [CodeRefinery HackMD](https://hackmd.io/team/coderefinery)
- [x] Distribute roles using the planning HackMD
- [x] Ask collaborators/stakeholders to pick roles
- [x] Add all sessions to [CodeRefinery calendar](https://github.com/coderefinery/calendar) separately
- [x] Send calendar invite to all organizers, instructors, expert helpers, with all relevant links
- [x] Decide if certificates will be possible and what is needed for getting a certificate/credits (ask from partner universities)
- [ ] Remind co-organizers to register
- After the workshop:
- [ ] Summarize lessons learned and make it a blog post in [coderefinery.org repo](https://github.com/coderefinery/coderefinery.org)
- [ ] Coordinate post-workshop survey eg. in Indico
- [ ] :bulb: Merge new edits from here (no names ofc) to the [Playbook](https://github.com/coderefinery/manuals/blob/master/workshop-playbook.md)
:::
### Registration coordinator
([description](https://coderefinery.github.io/manuals/registration-coordinator))
- lead: @MatiasJJ
- backup: Radovan
:::spoiler Checklist without CR ZOOM
- **When workshop details are set:**
- [x] Create [Indico registration page](https://indico.neic.no/category/5/) for the event
- [x] Include event information
- [x] Customise the registration form
- [x] Customise the confirmation email (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
- [x] Set up a workshop page from [template page](https://github.com/coderefinery/template-workshop-webpage)
- [x] Add workshop to ["upcoming courses"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/upcoming.md)
- **ca. 1 month before:**
- [x] reach out to team leads and those who indicated interest in co-organizing and co-teaching
- [x] https://github.com/coderefinery/2023-03-21-workshop/tree/d62016d4c4a3b98f9259432111c479d0d9e06e52/content/communication
- [x] Communicate about self organising teams
- **Every day: **
- check support email (Freshdesk) for requests/questions
- **Every week: **
- check registrations for prokshop-webpage)
- Two weeks before
- (see [Next emails (bottom)](#Next-emails))
- [ ] inform all about the next steps, onboarding, installation, we add the email to website and we adapt auto-reply to point to website
- those who have a team, please organize your own zoom/video
- [ ] we need to do sxmething about those who wanted in-person
- one email that lists all
- we have decided not to do this this time
- we list also "2 people from Tromso, 4 people in Gothenburg" but there is no event yet organized
- we collect answers via form where we ask: "i want to organize this" or "i am ok if the local organizer gets my email address to reach out to me"
- We know these LO's
- Aalto (in-person)
- TU Delft (in-person)
- VU Amsterdam (video)
- EMBL ()
- [ ] we need to match up learners and helpers who wanted to be part of a team
- [ ] Draft email templates
- [x] Registration confirmation email
- [ ] Info to instructors (with [instructor coordinator](#Instructor-coordinator))
- [ ] Info to observers (with [instructor coordinator](#Instructor-coordinator))
- [x] Info to team leads (with [exercise coordinator](#Exercise-and-team-leader-coordinator))
- [x] Info to participants (with [registration coordinator](#Registration-coordinator))
- **ca. 1 week before**
- [ ] Update indico auto-reply for last minute registrations
- [ ] Rather make it nice from the get-go
- **After the workshop:**
- [ ] port changes from workshop page to [template page](https://github.com/coderefinery/template-workshop-webpage)
- [ ] on CR website move from ["upcoming"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/upcoming.md) to ["past"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/past.md)
- [ ] add viewing statistics to [CodeRefinery webpage](https://github.com/coderefinery/coderefinery.org/tree/main/content/about/statistics)
- [ ] Use [statistics repo](https://github.com/coderefinery/workshop-stats) (feel free to edit)events we know about
@MatiasJJ Clean this up!!! - @MatiasJJ
:::
### Broadcaster
([description](https://coderefinery.github.io/manuals/broadcaster/))
- lead: Richard
- backup: @MatiasJJ
:::spoiler Checklist
- [ ] Prepare Ice-breakers for each day (in learner HackMD)
- [ ] Create instructor Zoom and communicates it (with [exercise coordinator](#Exercise-and-team-leader-coordinator) and [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
- [ ] Publish recordings (does not do all the work but coordinates it)
- [ ] Prepare for upload (use [ffmpeg-editlist](https://github.com/coderefinery/ffmpeg-editlist) and collaborate)
- [ ] Upload videos and communicate (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
:::
### Instructor coordinator
([description](https://coderefinery.github.io/manuals/instructors/))
- lead: Radovan
- backup: Samantha, Matias (interested to test-listen and give feedback)
:::spoiler Checklist
- [x] Schedule calls with each instructor pair to distill most important questions and tasks to them
- [x] show where the detailed schedule is and recommend to move it to instructor guide
- [x] discuss that the detailed schedule can and should be improved
- [x] show where Q&A and feedback from past workshop can be found
- [x] discuss plans for exercises: try 3 exercises each half-day, each not shorter than 20 mins
- [ ] ask them to check their lesson's exercise list
- [x] ask for any software requirements changes
- [x] inform about audience (at the time of writing half of registrants prefer to follow on their own) - adapt exercise expectations to audience
- [x] recommend high-quality screen share
- [ ] Confirm that each lesson and session has co-instructors
- [x] Inform instructors that they need to register
- [ ] Send email to Observers and save to website
- [ ] Instructor briefing: make sure learners get a good experience (lesson material, issues, style, screen share)
- [x] Remind instructors to send software install requirements in time
- [x] Make sure software install instructions work
- [ ] List instructors on the website (with [exercise coordinator](#Exercise-and-team-leader-coordinator))
- [ ] Organize team leader On-boarding sessions (with [exercise coordinator](#Exercise-and-team-leader-coordinator))
:::
### Exercise and team leader coordinator
([description](https://coderefinery.github.io/manuals/exercise-coordinator/))
- lead: Radovan
- backup: ?
:::spoiler Checklist
- [ ] Create and host exercise Zoom (with [instructor coordinator](#Instructor-coordinator))
- [ ] Create exercise groups
- [ ] Inform those who we can't accommodate into groups that they can follow stream and need to somehow self-organize
- [ ] Communicate exercise Zoom to paricipants (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
- [ ] Provide [practical instructions](https://github.com/coderefinery/template-workshop-webpage/issues/73) in the exercise zoom
- [ ] Makes sure exercise list is communicated (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
- [ ] List all team leads (who consent to being listed) on the website (with [instructor coordinator](#Instructor-coordinator))
- [ ] List expert helpers on the website (with [instructor coordinator](#Instructor-coordinator))
- [ ] Create learner HackMD (create nice URL) with all relevant links
- [ ] Use [CodeRefinery HedgeDoc](https://notes.coderefinery.org) or [HackMD](https://hackmd.io/team/coderefinery)
- [ ] Makes sure that each workshop day has a learner HackMD editor who edits and archives at the end of the day
- [ ] Organize Staff & Helpers On-boarding sessions (with [instructor coordinator](#Instructor-coordinator))
- [ ] Communicate to staff + helpers (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator))
- [ ] Send team leader onboarding summary email + save it to the website (with [outreach and marketing coordinator](#Outreach-aor and exercise & team leader coordinator with their outreach
- [ ] Draft email templates
- [x] Registration confirmation email
- [ ] Info to instructors (with [instructor coordinator](#Instructor-coordinator))
- [ ] Info to observers (with [instructor coordinator](#Instructor-coordinator))
- [ ] Info to team leads (with [exercise coordinator](#Exercise-and-team-leader-coordinator))
- [ ] Info to participants (with [registration coordinator](#Registration-coordinator))
- [ ] Create/update [advertising texts](https://github.com/coderefinery/template-workshop-webpage/tree/main/content/communication) and relevant news on the workshop page
- [ ] After each workshop day, send summary and preparation for next day email to
all (can be based on the website news and link there so that it can be
updated)
- [ ] [EXAMPLE: day 1 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/33)
- [ ] [EXAMPLE: day 2 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/41)
- [ ] [EXAMPLE: day 3 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/43)
- [ ] [EXAMPLE: day 4 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/49)
- [ ] [EXAMPLE: day 5 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/51)
- [ ] [EXAMPLE: summary and thank you](https://github.com/coderefinery/2022-03-22-workshop/issues/56)
- [ ] [EXAMPLE: invitation to debriefing (feedback)](https://github.com/coderefinery/2022-03-22-workshop/issues/52)
- After the workshop
- [ ] Help other roles in putting everybody who contributed and consents on the [website as credit](https://github.com/coderefinery/coderefinery.org/blob/main/content/about/contributors.md)
- [ ] Help event director with Post-Workshop survey
:::
## Advertisement channels (outreach lead finds people to do take care of the different channels)
- [x] Newsletter
- https://tinyletter.com/coderefinery/archive
- draft: https://hackmd.io/@coderefinery/CRnewsletter_1_2023
- [x] Advertising texts on the workshop page
- https://coderefinery.github.io/2023-03-21-workshop/communication/
- https://github.com/coderefinery/2023-03-21-workshop/tree/main/content/communication
- [x] CodeRefinery Twitter
- https://coderefinery.zulipchat.com/#narrow/stream/119815-general/topic/tweet-toot-suggestions
- [x] CodeRefinery Mastodon
- https://coderefinery.zulipchat.com/#narrow/stream/119815-general/topic/tweet-toot-suggestions
- [x] CodeRefinery LinkedIn
- https://www.linkedin.com/events/coderefineryworkshopmarch21-23a7031623728480272384/comments/
- [x] CHCAA LinkedIn (Aarhus University)
- [ ] Partner Twitter, retweet and own tweets
- [ ] Aalto Scientific Computing
- [ ] Partner newsletters
- [x] Sigma2
- [x] SNIC/NAISS
- [x] ENCCS
- [ ] CSC
- [x] Partner websites training calendars
- [x] [CSC](https://ssl.eventilla.com/event/Y7LvO)
- [x] ENCCS
- [x] UiB
- [x] AU (Aarhus University)
- [ ] Partner and other email lists
- [ ] Aalto STEM students
- [ ] Aalto triton users
- [ ] Delta doctoral network
- [x] UiB researcher
- [X] UiB HPC
- [ ] NERSC Bergen
- [ ] Bjerknes Bergen
- [ ] University of Oslo computational biology
- [ ] University of Oslo Phd and Postdocs
- [ ] University of Oslo Dcince contact (?)
- [ ] Research institutes in all countries
- [ ] Partner posters
- [ ] Aalto (CS,U,NBE,PHYS,VAARE)
:::spoiler aalto email
It's time for the next CodeRefinery workshop. In case you didn't know:
Our extremely popular CodeRefinery course doesn't teach programming, but all of the other tools that go around programming that are needed to be an
efficient coputational scientist (version control, testing, reproducibility, collaboration, etc.). You could
look it it as one of central computational scientist training courses, along with our HPC Kickstart course each June:
https://coderefinery.github.io/2023-03-21-workshop/
Group leaders in computational sciences, make sure that all of your group members attend this at least once - it will imprve long-term productivity and collaboration.
Junior researchers, invest in your career by attending, these skills will improve your work both now and in the future.
If you register and are in Finland, you will be invited to an in-person session where we can work together on exercises. Online attendance via livestream is also possible.
We have worked very hard to make this as accessible as possible:
- all material is public and usable independently
- videos also available immediately in case you miss a session
- registration isn't actually required, and you don't have to come each day if you register, thanks to our livestream format. So there's no reason not to sign up.
- you can attend with your friends, n
We don't just teach in isolation, we support everything we teach long term, just drop by the garage and ask: https://scicomp.aalto.fi/help/garage/
:::
## Planning area
### Teams registration part
[Conceptboard with options, pros and cons](https://app.conceptboard.com/board/bsdm-3fio-oaq9-ic0o-uayf)
### Summary day 2, briefing for day 3
+++
title = "2023-03-23 Summary Day 3, week 2 preparation"
[extra]
subject = "[CodeRefinery workshop] Day 3 summary + week 2 preparation"
+++
Dear CodeRefinery workshop partipant,
We continue the event next week, Thuesday 28.3. at 08:50 CET (UTC+01)!
Please find summary of Day 3 in https://coderefinery.github.io/2023-03-21-workshop/#news
Next week we will talk about how to do science and coding in a way that you or your peers can repeat the exact steps also a few years after the original research was conducted. Feel free to invite more friends and colleagues to follow!
- Everybody: Make sure you have CodeRefinery Conda environment up and running: https://coderefinery.github.io/installation/
And the basic links again:
Stream link https://twitch.tv/coderefinery (no Twitch account needed)
Our collaborative document (Q&A): https://notes.coderefinery.org/workshop-2023-march
All emails that we send out can also be found at https://coderefinery.github.io/2023-03-21-workshop/communication/
Looking forward to see you next week!
CodeRefinery team
---
> For archiving: [please register to get it – check your spam folder for confirmation email]
## Teacher's planning
## Schedule Day 1
- 08:50 - 09:00 (10 min) Soft start and icebreaker question
- 09:00 - 09:15 (15 min) Welcome and practical information (Richard?)
- Introduction to version control (part 1/2)
- 09:15 - 09:30 (15 min) [Diana: Motivation - teaching & demo](https://coderefinery.github.io/git-intro/motivation/#motivation)
- 09:30 - 09:45 (15 min) [Diana: Basics - teaching & type along](https://coderefinery.github.io/git-intro/basics/#basics)
- 09:45 - 10:05 (20 min) [Diana: Basics - exercises](https://coderefinery.github.io/git-intro/basics/#exercise-record-changes)
1. [Record changes](https://coderefinery.github.io/git-intro/basics/#exercise-record-changes)
2. [Optional: Comparing, renaming, and removing](https://coderefinery.github.io/git-intro/basics/#optional-exercises-comparing-renaming-and-removing) - if time allows
- 10:05 - 10:15 (10 min) :coffee: :walking: :tea: Break
- 10:15 - 10:35 (20 min) [Bjørn: Basics - History, commit log, ignoring - teaching](https://coderefinery.github.io/git-intro/basics/#git-history-and-log)
- 10:35 - 10:50 (15 min) [Bjørn: Branching and merging - teaching](https://coderefinery.github.io/git-intro/branches/#branching-and-merging)
- 10:50 - 11:10 (20 min) [Bjørn: Branching and merging - exercises](https://coderefinery.github.io/git-intro/branches/#exercise-create-and-commit-to-branches)
1. [Create and commit to branches](https://coderefinery.github.io/git-intro/branches/#exercise-create-and-commit-to-branches) Teaching resumed before merging branches.
2. [Optional exercises with branches: Fast-forward merge and Rebasing](https://coderefinery.github.io/git-intro/branches/#optional-exercises-with-branches) - if time allows
- 11:10 - 11:20 (10 min) :coffee: :walking: :tea: Break
- 11:20 - 11:35 (15 min) Bjørn: Summarize branching and merging
- 11:35 - 11:45 (10 min) [Diana: Conflict resolution (teaching)](https://coderefinery.github.io/git-intro/conflicts/)
- 11:45 - 12:05 (20 min) [Diana: Exercise conflict resolution](https://coderefinery.github.io/git-intro/conflicts/#exercise-create-and-resolve-a-conflict)
- 12:05 - 12:10 (5 min) :coffee: :walking: :tea: Break
- 12:10 - 12:25 (15 min) Bjørn Buffer, Q&A session
- 12:25 - 12:30 ( 5 min) Bjørn Feedback & What will we be doing tomorrow?
## Schedule Day 2
* 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.github.io/git-intro/)
- 09:10 - 09:20 (10 min) [Diana Sharing repositories online - teaching/type-along](https://coderefinery.github.io/git-intro/remotes/#sharing-repositories-online)
- 09:20 - 09:40 (20 min) Diana Exercise: [Pushing our guacamole recipe repository to GitHub](https://coderefinery.github.io/git-intro/remotes/#pushing-our-guacamole-recipe-repository-to-github)
- 09:40 - 09:55 (15 min) [Bjørn Inspecting history - teaching/type-along](https://coderefinery.github.io/git-intro/archaeology/#inspecting-history)
- 09:55 - 10:10 :coffee: :walking: :tea: Break
- 10:10 - 10:40 (30 min) [Bjørn Inspecting history - breakout room exercises](https://coderefinery.github.io/git-intro/archaeology/#exercise-basic-archaeology-commands)
1. [Basic archeology commands](https://coderefinery.github.io/git-intro/archaeology/#exercise-basic-archaeology-commands)
2. [Optional: Git bisect](https://coderefinery.github.io/git-intro/archaeology/#optional-exercise-git-bisect) - to be done if time allows
- 10:40 - 10:50 (10 min) Bjørn Summarize inspecting history
- 10:50 - 11:05 (15 min) [Bjørn Undoing and recovering - teaching/type-along](https://coderefinery.github.io/git-intro/recovering/#undoing-and-recovering)
- 11:05 - 11:15 :coffee: :walking: :tea: Break
- 11:15 - 11:35 (20 min) [Bjørn Undoing and recovering - exercises](https://coderefinery.github.io/git-intro/recovering/#exercise-revert-a-commit)
1. [Revert a commit](https://coderefinery.github.io/git-intro/recovering/#exercise-revert-a-commit)
2. [Modify a previous commit](https://coderefinery.github.io/git-intro/recovering/#exercise-modify-a-previous-commit)
3. [Git reset](https://coderefinery.github.io/git-intro/recovering/#exercise-git-reset)
- 11:35 - 11:50 (15 min) Bjørn Summarize undoing and recovering and discussion and mention that staging area exists
- 11:50 - 12:00 :coffee: :walking: :tea: Break
- 12:00 - 12:25 (25 min) [Diana How much Git is necessary?](https://coderefinery.github.io/git-intro/level/#practical-advice-how-much-git-is-necessary)
- 12:25 - 12:30 (05 min) Diana Feedback & What will we be doing tomorrow?
## Schedule Day 3
* 08:50 - 09:00 Soft start and icebreaker question
* 09:00 - 09:15 Recap Git, any Hackmd questions to highlight
- 09:15 - 09:30 Concepts around collaboration (Radovan leads)
1. Explain terms. Pull, push, clone, fork. Focus on pull and not fetch.
2. Focus more on Clone and less on Generating from templates and importing
- 09:30 - 11:10 Centralized workflow + a break (Dhanya leads)
- 9:30 - 9:45 : Explain concepts.
- 9:45 - 9:55 break
- 9:55 - 10:00 Inform clearly what is expected outcome.
- 10:00 - 10:30 Excercise
- 10:30 - 10:50 Instructors go through the exercise
- 10:50 - 11:00 - break
- 11:00 - 12:10 Distributed version control and forking workflow + one breake (Radovan leads)
- 11:00 - 11:15 - Concepts and what are exercise outcomes
- 11:15 - 11:45 - Exercise
- 11:45 - 12:00 - Instructors go through excercises
- 12:00 - 12:10 - break
- 12:10 - 12:30 - How to contribute changes to somebody else’s project and Q&A (Radovan leads)
- and more: https://coderefinery.github.io/2023-03-21-workshop/join/#accessibility