# Coordination note for 2021 Spring CodeRefinery workshop [![hackmd-github-sync-badge](https://hackmd.io/l7VDOAyESLuOABRDVLQsvA/badge)](https://hackmd.io/l7VDOAyESLuOABRDVLQsvA) ###### tags: `workshop` `coordination` :::spoiler **Links** - Workshop dates: 2021 May 10-12 (Mon-Wed), 18-20 (Tue-Thu), 9:00-12:30 CEST - Staff meeting (instructors, expert helpers, coordinators): 2021 May 4 (Tue), 10:00-11:00 CEST - Installation help and helper onboarding: 2021 May 5th and 6th, 12:00-13:00 CEST - [Workshop website](https://coderefinery.github.io/2021-05-10-workshop/) - [Workshop repository](https://github.com/coderefinery/2021-05-10-workshop) - [Indico page](https://indico.neic.no/event/178) - [Helper availability overview](https://docs.google.com/spreadsheets/d/1NeIRs7c8br0xjcxxETNd__19JtfEERe-KFd9JUjP0wU/edit#gid=0) - [CR 2021 Exercise overview](/kEb3Tfe2RluiF7vdUSTj1A) - [Exercise leader hackmd May '21](/oUt-jWVgTdKM2vbPrk5tQg) - [Exercise leader onboarding](https://hackmd.io/YJiU17ZNQcSfOQjOrndNpg) - [Workshop HackMD for all](https://hackmd.io/@coderefinery/2021-may-workshop) ::: :::info Please write your name to the role or lesson that you are interested and/or you can take. It is **not** first come, first assigned basis. We will coordinate by good conversation and negotiation :slightly_smiling_face: Also, please note that this HackMD is for drafting and when it is agreed, it is pushed to the workshop repo. **This push needs to be approved by CR staff.** ::: ## Instructors Write your name if you are interested. When final decision is made, make the name bold by surrounding ** and **. Remaining names without ** ** mean that they will co-work on lesson maintainance (review PRs, implement revisions according to issues, etc.) - Installation help: Naoe, Radovan - Helper onboarding: Richard, Samantha - Git intro: **Diana, Juho, Sabry** - Day 1 (**Diana, Sabry**) - Soft Start 08:50 - Start 09:00 - bufffer 05 - Welcome, [intro](https://github.com/coderefinery/workshop-intro/blob/master/video.md), presentations 09:05-09:25 (**Richard**) - [Motivation](https://coderefinery.github.io/git-intro/01-motivation/) (T:15,E:0) 09:26-09:41 (**sabry**) - [Basics](https://coderefinery.github.io/git-intro/02-basics/) (T:15,E:20) 09:42-10:25 (**sabry**) - bufffer Q&A - 10 - **Break 10:35-10:50** - [Using the Git staging area](https://coderefinery.github.io/git-intro/04-staging-area/):(T:10,E:15) 10:51-11:16 (**Diana**) - buffer Q&A - 05 - [Undoing things](https://coderefinery.github.io/git-intro/05-undoing/): (T:10,E:10) 11:22-11:42 (**Sabry**) - buffer - 03 - Break 11:45-11:55 - Summary, Q&A, whats on next day 12:00-12:29 (**Sabry**) - Preparation for day2 - create a Github account - Inform that help for setting up ssh keys until 13:00 - End 12:30 - Day 2 (**Diana, Juho**) - Soft start 08:50 - Start 09:00 - buffer 05 - Welcome and summary 09:05-09:15 (**Juho**) - [Branching and merging](https://coderefinery.github.io/git-intro/06-branches/#git-introduction-branching-and-merging) 09:15-09:50 (**Diana**) - buffer Q&A - 05 - **Break 09:55-10:05** - [Conflict resolution](https://coderefinery.github.io/git-intro/08-conflicts/#git-introduction-conflict-resolution): 10:05-10:35(**Diana**) - buffer Q&A - 05 - [Sharing repositories online](https://coderefinery.github.io/git-intro/09-remotes/#git-introduction-sharing-repositories-online) 10:40-11:00(**Juho**) - buffer Q&A - 05 - **Break** 11:05-11:15 - [Inspecting history](https://coderefinery.github.io/git-intro/10-archaeology/#git-introduction-inspecting-history): 11:15-12:00(**Juho**) - **Break** 12:00-12:10 - Summary, Q&A, whats on next day 12:10-12:30 (**Juho**) - End 12:30 - Day 3 Git collab: (**Juho, Sabry**, Diana) - Soft start 08:50 - Start 09:00 - buffer 05 - Welcome and summary 09:06-09:15 (**Juho**) - [Concepts around collaboration])https://coderefinery.github.io/git-collaborative/) (T:20,E:0) 09:16-09:36 (**Juho**) - Buffer, Q&A 08 - [Centralized workflow](https://coderefinery.github.io/git-collaborative/02-centralized/) (T:20,E:40) 09:45-10:45 (**Sabry**) - Includes 10 min break before the excersises begin (10:00 - 10:10) - buffer, Q&A 10 - [ Distributed version control and forking workflow](https://coderefinery.github.io/git-collaborative/03-distributed/)(T:20,E:40) 10:55-11:55 (**Juho**) - Includes 10 min break before the excercise (11:10 - 11:20) - buffer, Q&A 05 - [How to contribute changes to somebody else's project](https://coderefinery.github.io/git-collaborative/04-contributing/) (T:15,E:0) 12:10-12:25 (**Juho**) - Summary, Q&A, whats on next day 12:25-12:30 (**Sabry**) - Remind about the conda env (we can stay now after ending if you need help). - End 12:30 **Day 4 (May 18, Tuesday)** * 8:50-9:00 Soft Start * 9:00-9:10 General introduction * 9:10 - 11:05 Reproducible research and FAIR data (Johan Hellsvik, Thor) - 9:10-9:20 [Motivation](https://coderefinery.github.io/reproducible-research/01-motivation/) - 9:20-9:30 [Organizing your projects](https://coderefinery.github.io/reproducible-research/02-organizing-projects/) - 9:30-9:55 [Recording dependencies](https://coderefinery.github.io/reproducible-research/03-dependencies/) - 9:55-10:05 **break** - 10:05-10:15 [Recording environments](https://coderefinery.github.io/reproducible-research/05-environments/) - 10:15-10:40 [Recording computational steps](https://coderefinery.github.io/reproducible-research/04-workflow-management/) - 15 min breakout session on [snakemake](https://coderefinery.github.io/reproducible-research/04-workflow-management/#exercise-using-snakemake) - 10:40-11:05 [Sharing code and data](https://coderefinery.github.io/reproducible-research/06-sharing/) - 15 minute breakout [Zenodo exercise](https://coderefinery.github.io/reproducible-research/06-sharing/#exercise-get-a-doi-by-connecting-your-repository-to-zenodo) - 11:05 - 11:15 **break** * 11:15 - 12:30 Social coding and open software (Anne Fouilloux) - Social coding - break? - ~12.05 [Make Recipe repository FAIR](https://coderefinery.github.io/social-coding/social_coding/) - Licensing - Software citation **Day 5 (May 19, Wednesday)** - 8:50 - 9:00 Soft start and icebreaker question - 9:00 - 9:05 Intro and overview - 9:05 - 11:00 Jupyter (Radovan Bast, Anne Fouilloux) - Motivation and interface (15 min) - First computational notebook: discussion (5 min) and [breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/first-notebook/#exercise) - Notebooks and version control (demo, 10-15 min) - 11:00 - 11:10 Break - 11:05 - 11:30 More Jupyter - Binder [Breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/sharing/#sharing-dynamic-notebooks-on-binder) - Wrap-up - 10:30 - 10:35 Break/buffer - 10:45 - 11:30 Documentation (Samantha Wittke, Radovan Bast) - Motivation and tools (Samantha, 15 min) - README-documentation (Radovan, 10 min) + [breakout room exercise 15 min](https://coderefinery.github.io/documentation/writing-readme-files/#exercises) (ELs, you can pre-select one of the 3 options for your room) - 11:30 - 11:40 Break - 11:40 - 12:30 More documentation - Sphinx exercise - Type-along: Part 1 (Samantha, 10 min) - [Breakout room exercise: Part 2 (15 min)](https://coderefinery.github.io/documentation/sphinx/#group-exercise-build-sphinx-documentation-using-rst) - Demo: Read The Docs (Radovan, 15 min) - Summary Co-teaching questions, Documentation: - how do you document your code/projects? - project version, what to start with? 0.1? - what is a static site generator? - in-code: why not enough for users? - sphinx: could I do the same in MD? MyST parser - sphinx: what happens when we change the header "Feature A"? TOC changes - Does it cost anything to have documentation on readthedocs/ github pages? **Day 6 (May 20, Thursday)** * 9:00 - 10:45 Software testing (Thor Wikfeldt, 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/) - 9:10-9:20 [Concepts](https://coderefinery.github.io/testing/concepts/) - 9:20-9:40 [Testing locally](https://coderefinery.github.io/testing/pytest/) - 15 minute breakout session, normal rooms - 9:40-9:50 Break - 9:50-10:20 [Automated testing](https://coderefinery.github.io/testing/continuous-integration/) - type-along session - 10:20-10:45 [Test design](https://coderefinery.github.io/testing/test-design/) - 25 minute breakout session, normal rooms plus a few language-specific rooms with (language) expert helpers - 10:45-11:00 Break * 11:00 - 12:15 Modular code development (Anne Fouilloux, Radovan) * break? * all as demo in main room * 12:15 - 12:30 Summary and where to go from here Exercises planning: https://hackmd.io/@coderefinery/CR_May21_Exercises ## Role coordination Signing up for multiple roles, or splitting them, is encouraged. Opt for efficiency over re-inventing things. ### General roles: - [x] **[Event lead](https://coderefinery.github.io/manuals/workshop-administration/):** Naoe - [x] **Registration/communication:** Richard - [x] **Dissemination:** Radovan - [x] **Teaching coordinator:** Naoe - [x] **Helper coordinator:** Samantha - [x] **HackMD preparation:** (default: hackmd of that day) Diana - [x] **Breakout rooms preparation:** (default: host) Richard ### Workshop preparation: - [x] **(5.May, 13:00-14:00 (CEST)) Installation help 1:** Richard (may attend partially?), Samantha, Naoe, (Juho comes late), Sabry, Radovan, Jarno - [x] **(6.May, 13:00-14:00 (CEST)) Installation help 2:** Richard (may attend partially?), Samantha, Naoe, Juho, Sabry - [x] **(5.May, 12:00-13:00 (CEST)) Helper training 1:** Richard, Samantha, Naoe, Radovan - [x] **(6.May, 12:00-13:00 (CEST)) Helper training 2:** Richard, Samantha, Naoe, Juho ### During workshop: - **Instructors** sign up on the schedule page. - [x] **Intro (Day 1):** Sabry - [x] **Mini-intro (Day 4):** Johan - [x] **Concluding remarks (Day 6):** Radovan - [x] **Host:** Richard (if we go for 2 zoom room option, Diana will take learner's zoom room host in Week 2) - [x] **Communication with attendees:** Diana and Samantha - [ ] **HackMD:** (prepare hackmd enabling edit by anyone without log-in, keep hackmd organized to make postprocessing easy and postprocess) - [x] Day 1: Radovan - [x] Day 2: Sabry - [x] Day 3: Johan - [x] Day 4: Juho - [X] Day 5: Sabry - [x] Day 6: Diana - **Expert helpers:** - [ ] Day 1: Patric, Stefan(after 9:30 CEST), Marijn, Jarno, Thor, Radovan, Johan, Anni (until 10:30 CEST) - [ ] Day 2: Patric, Stefan(after 10:00 CEST), Marijn, Jarno, Thor, Radovan, Johan (until 12:00), Anni - [ ] Day 3: Patric, Stefan, Marijn, Jarno, Thor, Radovan, Johan, Anni (until 12:00) - [ ] Day 4: Patric, Marijn, Jarno, Radovan, Anni - [ ] Day 5: Patric, Stefan, Marijn, Jarno, Johan (9:00-10:00, 11:00-12:30) - [ ] Day 6: Patric, Stefan(after 10:00 CEST), Marijn, Jarno, Radovan, Johan, Anni - [ ] **Production tech:** Richard - **Exercise leaders** are coordinated separately (via registration form) ### After the workshop: - [ ] **Post HackMD:** (default: HackMD helper of that day) > same as the ones above. This is to be decoupled. - [ ] **Send out survey:** (default: handled as part of another batch process) ### Backup plan - We will inform where is the backup Zoom room. ### Zoom technical demo - 7th May 15:00-16:00 CEST. - Learners room Zoom host: expert helper will be. Diana takes in week 2. ## Lessons learned for next time - OBS helper shouldn't also do intro (still getting stuff set up) - OBS helper: would be nice to have a way to unmute both of us - Coordination plan should be checked - Teaching coordinator should check in for basic practicalities with each instructor - team-teaching if desired - material to cover - breaks - demo screenshare - How to control breakouts yourself - Be clear about video on or off for instructors. If multiple people on then gallery OBS capture doesn't work. - Spotlight video changes every time screenshare changes. - It is defininitely still important to warn before stopping screen sharing (more than before) - Breakout rooms were not a major problem, even though we didn't prepare fully - Make interruption/speaking up more clear (rkdarst did it too much, would be better if someone else could too!) - For some people the screenshare froze after break/ when screenshare switched between instructors, for browser reloading solved it, for client people had to rejoin chat. - Include role mentoring as part of the coordination initial meeting. - More talk about "voice of audience" - **strong** director role - Staging area: as usual, a difficult episode - What parts of the episode is a dependency for other parts of CodeRefinery? - Remove it? - Make it clear it is advanced/optional/you won't get it yet, when it is taught? - Move it to the end? - clear message: Now the workshop day is concluded, stream and recording stopped. So that people that came for workshop content can leave, then have some official start of 'afterparty'. It was not fully clear when the outro was finished. - I think this relates to "strong director role" above. - Make it clear what someone needs to have open: Screenshare, HackMD, your terminal. You get links to the episodes from HackMD. - pre-prepare (together with instructors of following day) after workshop day summary with detailed (lessons to be covered + break/exercise room timing) schedule of next day to be send to everyone - Inform individual Exercise Leaders about how the set group of individual learners is like (f. ex. expecting how many in the room, OS, background) - Inform Exercise Leaders and all the team members who are replacing when a regular Exercise Leader is absent. - Indico: select "none" after selecting some registrants to for example sending emails. (otherwise selection remain) - avoid breaks between exercise explanation and doing exercise - clearer role distribution, spreading the work among many is a great idea but it things should be clearly (or as clearly as possible split) also for roles during workshop, one or few people should have 'power' to decide things and clearly commuicate - Gallery insert view is risky - You can't spotlight someone when only two peoples' videos are on - ## Misc notes :::info ### Rename yourself You rename yourself from the participants list: <img src="https://coderefinery.github.io/manuals/_images/zoom--participants.png" width="48%"> <img src="https://coderefinery.github.io/manuals/_images/zoom--rename.png" width="48%"> ::: :::info ### Breakout rooms You should join your breakout room now. You can find it's number in your email, and hopefully you have named yourself it. With recent Zoom, you can do this by yourself: <img src="https://coderefinery.github.io/manuals/_images/zoom--breakout-room-button.png" width="49%"> <img src="https://coderefinery.github.io/manuals/_images/zoom--breakout-join.png" width="49%"> You can come back from the breakout room as you want: <img src="https://coderefinery.github.io/manuals/_images/zoom--leave.png" width="49%"> <img src="https://coderefinery.github.io/manuals/_images/zoom--leave-breakout-room.png" width="49%"> If you can't (for example, you are using web browser), use the "raise hand" reaction and we will move you. Make sure that your name includes your breakout room number. <img src="https://coderefinery.github.io/manuals/_images/zoom--reactions.png" width="75%"> ::: ## Communication after each day Draft below, sent version here: https://github.com/coderefinery/2021-05-10-workshop/issues/44 ### After day 1 Dear all, Thank you for participating the first day of the CodeRefinery workshop! It was great to see a lot of great questions (that hopefully got satisfactorily answered) and the interaction happening in the breakout rooms. Special thanks to all the exerise leaders! Also thank you for the feedback, we will try to implement it for the upcoming days, let us know how we did in the next feedback round :) Please do not get discouraged if not everything was 100% clear to you. As with everything, learning new things takes time and repetition. You may rewatch parts of the course on twitch (https://www.twitch.tv/videos/1017579131) for the next two weeks. If you for any reason missed the session today; you are more than welcome to join from Day 2! Today we learned from "Motivation" to "Undoing things" in Introduction to version control with Git lesson. Please refer to the lesson material (https://coderefinery.github.io/git-intro/) and the archived HackMD for your review (https://coderefinery.github.io/2021-05-10-workshop/questions/day1/). Tomorrow, we continue with git (starting https://coderefinery.github.io/git-intro/06-branches/), and do branching, merging, and history inspection. You'll start to see the power of a version control system, as we prepare for truly collaborative work on day 3. Planned schedule day 2 (with Q&A buffer at end of each episode): * 08:50 Soft start * 09:00-09:15 Welcome and Summary of day 1 * 09:15-09:55 Branching and merging, one Exercise session at ~09:25 * 09:55-10:05 **Break** * 10:05-10:40 Conflict resolution, one Exercise session at ~10:15 * 10:40-11:05 Sharing repositories online * 11:05-11:15 **Break** * 11:15-12:00 Inspecting history, one Exercise session at ~11.30 * 12:00-12:10 **Break** * 12:10-12:30 Summary, Q&A, next day preparations * 12:30 End Upon request we will leave the breakoutrooms open during breaks for you to chat with your colleagues or further discuss the exercises. However, we strongly advice everyone to also take a **screen break** during that time! We are very sorry for any technical issues that made it hard to follow for some of you (screenshare freeze, breakoutroom trouble, HackMD freeze etc). We will try to minimize these as much as possible from our side. In case you missed parts of the course, please refer to the recordings and use the HackMD to ask for clarifications. We want you to get the most out of this workshop. **No question is too basic/stupid!** For those of you that are overwhelmed with the flood of information and number of tabs/windows: We suggest to follow the instructors screenshare (half screen) and following type along in own terminal. HackMD and lesson material can be in the background, to refer to if there is questions/when exercises are announced. HackMD, lesson material and recordings of all sessions will also be available after the workshop. [[[Maybe we can say this in the morning?]]] Please be aware that we may need to rearrange breakout room teams (due to exercise leader/participant unavailability) to make sure we always have at least one exercise leader in each room and have a minimum of 3 people per room to encourage discussions. Sorry for any inconvenice that may arise from this. [[[Again, maybe mention this tomorrow to keep the email short?]]] See you tomorrow (Zoom and HackMD link stays the same!) Best regards, your CodeRefinery team PS: If you don't want to get these emails anymore, you can unsubscribe from this link: {link} ### After Day 2 (separate emails to zoom/stream with seaprate links) Dear all, Thank you for participating the first two days of the CodeRefinery workshop! We were happy to see and answer a lot of questions in the HackMD and see you discussing in the breakoutrooms! If you for any reason missed the session today; you are more than welcome to join from Day 3! Today we continued with git (starting https://coderefinery.github.io/git-intro/06-branches/), and learned about branching, merging, and history inspection. All Q&A from todays HackMD can be found here: https://coderefinery.github.io/2021-05-10-workshop/questions/day2/. Again, please do not get discouraged if not everything was 100% clear to you. As with everything, learning new things takes time and repetition. You may rewatch the workshop videos on twitch (https://www.twitch.tv/coderefinery) for the next two weeks. And we will use some of the commands again tomorrow, to get used to them. Tomorrow you'll continue to see the power of a version control system, as we will proceed to truly collaborative work (https://coderefinery.github.io/git-collaborative/). For tomorrow, it will be important that everyone has the ssh keys for github set up and working. Please follow the instructions to also test if things are set up correctly: https://coderefinery.github.io/installation/ssh/. Planned schedule day 3: - 08:50 Soft start - 09:00-09:15 Welcome and summary - 09:15-09:45 Concepts around collaboration - 09:45-10:05 Centralized workflow - 10:05-10:15 **Break** - 10:15-10:55 Centralized workflow exercise exercise & Q&A - 10:55-11:15 Distributed version control and forking workflow - 11:15-11:25 **Break** - 11:25-12:10 Practice collaborative forking workflow exercise & Q&A - 12:10-12:25 How to contribute changes to somebody else's project - 12:25-12:30 Summary, Q&A, what's next week - End 12:30 All other than the mentioned exercises here will be optional, if you have time in the breakoutrooms. Thank you all again for the constructive feedback. We apologize for the hassle with turning on and off the zoom videos. Background: In order to ensure that no participant will appear on stream/video, zoom video of participants needed to be disabled in the main room. If participants disabled video by themselves, everything was fine. Only if the host had to disable video for participants, then it was not possible to turn it back on by participants themselves and a host had to come to the breakoutroom and click a button. **Therefore we kindly ask you to always turn your video back off when joining the main room.** HackMD link: https://hackmd.io/@coderefinery/2021-may-workshop Zoom link: https://aalto.zoom.us/j/66137809231?pwd=cURoRkF4UWpjZGpNcXFWNXl6QlM0UT09 Zoom meeting ID/password: 66137809231 / gitgit​ Twitch stream: https://www.twitch.tv/coderefinery See you tomorrow! Best regards, your CodeRefinery team PS: If you don't want to get these emails anymore, you can unsubscribe from this link: {link} ## After Day 3 - only one link to all (Twitch, no detailed info on day 4 yet, will be sent on Monday) Dear {first_name}, We have now gone through the first week of the CodeRefinery workshop. I hope that we could help you get a good introduction to Git and collaborative version control. Thank you for all the questions and the very useful feeback on our lessons. Appologies to the EL for the confusion about the exercises. I hope it did not stress you too much. It was nice to see that many of you answered our icebreaker questions. We have added some additional feedback based on your answers. You may find it together with the Q&As from today here: https://coderefinery.github.io/2021-05-10-workshop/questions/day3/. If you'd like to look through the Q&As from the previous days, please visit the Q&As archive of the workshop at https://coderefinery.github.io/2021-05-10-workshop/questions/. You may re-watch parts of the course on Twitch (https://www.twitch.tv/coderefinery), available for 14 days after the upload. We continue on Tuesday next week with "Reproducible research and FAIR data" and "Social coding and open software". A detailed program will be sent out on Monday. Please remember to have your conda environment `coderefinery` set up. In case you have not done so already you may follow the instructions here: https://coderefinery.github.io/installation/conda-environment/ For the final exercise of the software testing lesson on day 6 (May 20) you will need to set up a testing framework for the language you wish to work in: If you want to use Python, you should already have the pytest package installed if you followed the regular installation instructions (https://coderefinery.github.io/installation/) If you want to use C++, we recommend you install Catch2 If you want to use R, we recommend you install testthat If you want to use Fortran, we recommend you install pFUnit If you want to use Julia, you should already have the Test package as part of the standard library. Instructions for installing these frameworks can be found in the lesson quick reference: https://coderefinery.github.io/testing/quick-reference/ Have a great rest of the week and see you on Tuesday! /Your CodeRefinery team PS: If you don't want to get these emails anymore, you can unsubscribe from this link: {link} Dear {first_name}, We have now gone through the first week of the CodeRefinery workshop. I hope that we could help you get a good introduction to Git and collaborative version control. Thank you for all the questions and the very useful feeback on our lessons. Appologies to the EL for the confusion about the exercises. I hope it did not stress you too much. It was nice to see that many of you answered our icebreaker questions. We have added some additional feedback based on your answers. You may find it together with the Q&As from today here: https://coderefinery.github.io/2021-05-10-workshop/questions/day3/. If you'd like to look through the Q&As from the previous days, please visit the Q&As archive of the workshop at https://coderefinery.github.io/2021-05-10-workshop/questions/. You may re-watch parts of the course on Twitch (https://www.twitch.tv/coderefinery), available for 14 days after the upload. We continue on Tuesday next week with "Reproducible research and FAIR data" and "Social coding and open software". A detailed program will be sent out on Monday. Please remember to have your conda environment `coderefinery` set up. In case you have not done so already you may follow the instructions here: https://coderefinery.github.io/installation/conda-environment/ For the final exercise of the software testing lesson on day 6 (May 20) you will need to set up a testing framework for the language you wish to work in: If you want to use Python, you should already have the pytest package installed if you followed the regular installation instructions (https://coderefinery.github.io/installation/) If you want to use C++, we recommend you install Catch2 If you want to use R, we recommend you install testthat If you want to use Fortran, we recommend you install pFUnit If you want to use Julia, you should already have the Test package as part of the standard library. Instructions for installing these frameworks can be found in the lesson quick reference: https://coderefinery.github.io/testing/quick-reference/ Have a great rest of the week and see you on Tuesday! /Your CodeRefinery team To expert learners: Appologies to the EL for the confusion about the exercises. I hope it did not stress you too much. ## Before Day 4 (Monday) ### separate links to Zoom/stream learners due to separate links Dear {first_name}, Tomorrow, May 18th, we will be resuming our workshop with "Reproducible research and FAIR data" and "Social coding and open software". Planned schedule: - 08:50-09:00 Soft start, icebreaker question - 09:00-09:10 General introduction - 09:10-11:05 Reproducible research and FAIR data (Johan Hellsvik, Thor Wikfeldt) - 09:10-09:20 [Motivation](https://coderefinery.github.io/reproducible-research/01-motivation/) - 09:20-09:30 [Organizing your projects](https://coderefinery.github.io/reproducible-research/02-organizing-projects/) - 09:30-09:55 [Recording dependencies](https://coderefinery.github.io/reproducible-research/03-dependencies/) - 09:55-10:05 **Break** - 10:05-10:15 [Recording environments](https://coderefinery.github.io/reproducible-research/05-environments/) - 10:15-10:40 [Recording computational steps](https://coderefinery.github.io/reproducible-research/04-workflow-management/) - 15 min breakout session on [snakemake](https://coderefinery.github.io/reproducible-research/04-workflow-management/#exercise-using-snakemake) - 10:40-11:05 [Sharing code and data](https://coderefinery.github.io/reproducible-research/06-sharing/) - 15 minute breakout [Zenodo exercise](https://coderefinery.github.io/reproducible-research/06-sharing/#exercise-get-a-doi-by-connecting-your-repository-to-zenodo) - 11:05 - 11:15 **Break** - 11:15 - 12:30 Social coding and open software (Anne Fouilloux) - Social coding - break - ~12.05 [Make Recipe repository FAIR](https://coderefinery.github.io/social-coding/social_coding/) - Licensing - Software citation - 12:25-12:30 Summary, Q&A - End 12:30 There are some small changes to the lesson material. Please reload the webpage of the lesson if you have it up already. Please remember to have your conda environment `coderefinery` set up. In case you have not done so already you may follow the instructions here: https://coderefinery.github.io/installation/conda-environment/ For the Snakemake exercise in the Reproducibility lesson, you may prepare in advance for doing the exercise on your own computer by following the steps on https://coderefinery.github.io/reproducible-research/04-workflow-management/#exercise-preparation For the final exercise of the software testing lesson on day 6 (May 20th) you will need to set up a testing framework for the language you wish to work in: If you want to use Python, you should already have the pytest package installed if you followed the regular installation instructions (https://coderefinery.github.io/installation/) If you want to use C++, we recommend you install Catch2 If you want to use R, we recommend you install testthat If you want to use Fortran, we recommend you install pFUnit If you want to use Julia, you should already have the Test package as part of the standard library. Instructions for installing these frameworks can be found in the lesson quick reference: https://coderefinery.github.io/testing/quick-reference/ HackMD link: https://hackmd.io/@coderefinery/2021-may-workshop Zoom link: https://aalto.zoom.us/j/66137809231?pwd=cURoRkF4UWpjZGpNcXFWNXl6QlM0UT09 Zoom meeting ID/password: 66137809231 / gitgit​ Please remember to turn off your video while in the main room. Twitch stream: https://www.twitch.tv/coderefinery See you tomorrow! /Your CodeRefinery team PS: If you no longer wish to receive information related to this workshop, you can unsubscribe from this link: {link} ## After Day 4 (Repro and Social Coding) Dear {first_name}, [Learners:] Thank you for the great questions and feedback on today's lessons on reproducible research and social coding. You really helped us make the lessons interactive. You may find the archived Q&A here: https://coderefinery.github.io/2021-05-10-workshop/questions/day4/. [EL/Hs:] Thank you for your feedback and constructive issues to today's lessons on reproducible research and social coding. Archived Q&A: https://coderefinery.github.io/2021-05-10-workshop/questions/day4/. For the README documentation exercise tomorrow (~11:00 CEST), you can preselect one of the 3 options from [this exercise](https://coderefinery.github.io/documentation/writing-readme-files/#exercises) for your group. For the complete list of planned exercises please visit the HackMD: https://hackmd.io/@coderefinery/CR_May21_Exercises. [Instructors/Staff] Thank you to today's instructors and co-instructors for two very enjoyable lessons! It was nice to see the dialogue between the two. Great interaction at the HackMD level as well, which was rolling with questions and reflections. And thank you to everyone else for keeping this workshop running smoothly. [All:] Tomorrow we will continue with Jupyter (https://coderefinery.github.io/jupyter/) and documentation (https://coderefinery.github.io/documentation/). We'll be using the Conda environment `coderefinery` again. The installation instructions may be found here: https://coderefinery.github.io/installation/conda-environment/ Planned schedule: **Day 5 (May 19, Wednesday)** - 8:50 - 9:00 Soft start and icebreaker question - 9:00 - 9:05 Intro and overview - 9:05 - 11:00 Jupyter (Radovan Bast, Anne Fouilloux) - Motivation and interface (15 min) - First computational notebook: discussion (5 min) and [breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/first-notebook/#exercise) - Notebooks and version control (demo, 10-15 min) - 11:00 - 11:10 Break - 11:05 - 11:30 More Jupyter - Binder [Breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/sharing/#sharing-dynamic-notebooks-on-binder) - Wrap-up - 10:30 - 10:35 Break/buffer - 10:45 - 11:30 Documentation (Samantha Wittke, Radovan Bast) - Motivation and tools (Samantha, 15 min) - README-documentation (Radovan, 10 min) + [breakout room exercise 15 min](https://coderefinery.github.io/documentation/writing-readme-files/#exercises) (ELs, you can pre-select one of the 3 options for your room) - 11:30 - 11:40 Break - 11:40 - 12:30 More documentation - Sphinx exercise - Type-along: Part 1 (Samantha, 10 min) - [Breakout room exercise: Part 2 (15 min)](https://coderefinery.github.io/documentation/sphinx/#group-exercise-build-sphinx-documentation-using-rst) - Demo: Read The Docs (Radovan, 15 min) - Summary For the final exercise of the software testing lesson on day 6 (May 20th) you will need to set up a testing framework for the language you wish to work in: If you want to use Python, you should already have the pytest package installed if you followed the regular installation instructions (https://coderefinery.github.io/installation/) If you want to use C++, we recommend you install Catch2 If you want to use R, we recommend you install testthat If you want to use Fortran, we recommend you install pFUnit If you want to use Julia, you should already have the Test package as part of the standard library. Instructions for installing these frameworks can be found in the lesson quick reference: https://coderefinery.github.io/testing/quick-reference/ HackMD link: https://hackmd.io/@coderefinery/2021-may-workshop Zoom link: https://aalto.zoom.us/j/66137809231?pwd=cURoRkF4UWpjZGpNcXFWNXl6QlM0UT09 Zoom meeting ID/password: 66137809231 / gitgit​ Please remember to turn off your video while in the main room. Twitch stream: https://www.twitch.tv/coderefinery See you tomorrow! /Your CodeRefinery team PS: If you no longer wish to receive information related to this workshop, you can unsubscribe from this link: {link} ## After Day 5 (Jupyter and Documentation) Dear {first_name}, [Learners:] Thank you again for the great questions and feedback on today's lessons on Jupyter and documentation. You may find the archived Q&A here: https://coderefinery.github.io/2021-05-10-workshop/questions/. [EL/Hs:] Thank you again for the help with the exercises and the suggestions on how to improve our lesson material. As usual, you may find the archived Q&As here: https://coderefinery.github.io/2021-05-10-workshop/questions/. For the complete list of planned exercises please visit the HackMD: https://hackmd.io/@coderefinery/CR_May21_Exercises. [Instructors/Staff] Thank you for another great workshop day. Once again, good flow discussion among today's instructors: Radovan, Anne, and Samantha. [All:] Tomorrow we will resume with software testing (https://coderefinery.github.io/testing/) and modular code development (https://coderefinery.github.io/modular-type-along/). We'll be using the Conda environment `coderefinery` again. The installation instructions may be found here: https://coderefinery.github.io/installation/conda-environment/ For the software testing lesson, we will have extra breakout rooms for Python, C/C++, and Fortran users. You should join those rooms whenever you have language-specific questions. More details will be provided during the lesson tomorrow. Planned schedule: **Day 6 (May 20, Thursday)** * 08:50-09:00 Soft start and icebreaker questions * 09:00-10:45 [Software testing](https://coderefinery.github.io/testing/) (Thor Wikfeldt, Johan Hellsvik) - 9:00-9:05 Short info about today's breakout rooms and possible questions from yesterday - 09:05-09:10 [Motivation](https://coderefinery.github.io/testing/motivation/) - 09:10-09:20 [Concepts](https://coderefinery.github.io/testing/concepts/) - 09:20-09:40 [Testing locally](https://coderefinery.github.io/testing/pytest/) - 15 minute breakout session, normal rooms - 09:40-09:50 Break - 09:50-10:20 [Automated testing](https://coderefinery.github.io/testing/continuous-integration/) - type-along session - 10:20-10:45 [Test design](https://coderefinery.github.io/testing/test-design/) - 25 minute breakout session, normal rooms plus a few language-specific rooms with (language) expert helpers - 10:45-11:00 Break * 11:00 - 12:15 [Modular code development](https://coderefinery.github.io/modular-type-along/) (Anne Fouilloux, Radovan Bast) * all as demo in main room * 12:15 - 12:30 Summary and where to go from here For the final exercise of the software testing lesson you will need to set up a testing framework for the language you wish to work in: If you want to use Python, you should already have the pytest package installed if you followed the regular installation instructions (https://coderefinery.github.io/installation/) If you want to use C++, we recommend you install Catch2 If you want to use R, we recommend you install testthat If you want to use Fortran, we recommend you install pFUnit If you want to use Julia, you should already have the Test package as part of the standard library. Instructions for installing these frameworks can be found in the lesson quick reference: https://coderefinery.github.io/testing/quick-reference/ HackMD link: https://hackmd.io/@coderefinery/2021-may-workshop Zoom link: https://aalto.zoom.us/j/66137809231?pwd=cURoRkF4UWpjZGpNcXFWNXl6QlM0UT09 Zoom meeting ID/password: 66137809231 / gitgit​ Please remember to turn off your video while in the main room. Twitch stream: https://www.twitch.tv/coderefinery See you tomorrow! /Your CodeRefinery team PS: If you no longer wish to receive information related to this workshop, you can unsubscribe from this link: {link} ## After Day 6 ### [to EL] Dear {first_name}, Thank you very much for being an Exercise Leader in this largest Coderefinery workshop ever! <3 I know we have said it before, but: Without you this workshop would not have been possible! Thank you for your time and commitment! From our perspective things worked out pretty well. But we of course did not have the possibility to be present in all rooms at all times. Here we would like to get specific feedback from you: * How did it go in your breakoutroom? * Anything that went particularly well? * Anything that did not work at all? * Any nice discussion topics that came up? * Any exercises that need instruction improvements? * You can answer here or also directly add an issue to the lesson repository on our github account https://github.com/coderefinery * Anything else you would like us to know? You may send an email to support@coderefinery.org or anonymously also use the hackmd from the EL onboarding: https://hackmd.io/@coderefinery/exerciseleader_may21/edit (And please also let us know if we may use your feedback for funding applications etc) If you would like to get involved with lesson development, workshop organization or co-teach a lesson, please join the zulip chat (https://coderefinery.zulipchat.com/) and introduce yourself in the #new members stream. A certificate can be provided for participation upon request to support@coderefiner.org. If you would like to have a special certificate for helping, let us know and I am sure we can find a solution :) Here you can find all the links that were presented during the outro today: https://github.com/coderefinery/workshop-outro We also plan to arrange a community call in the near future where we will talk about the workshop and related topics with a low barrier for everyone interested. If you do not want to get any more emails from us , you can unsubscribe here: {link}. Thanks to everyone again, we had a lot of fun and hope you had too! :) Best regards and hope to see you around, Samantha on behalf of the CodeRefinery Team PS: The Research Software Hour today will focus on the top 10 questions from the workshop HackMD! When: 20:30 CEST via Twitch https://researchsoftwarehour.github.io (link to Twitch in the top right of the page). ### To learners: Dear {first_name}, Thank you for participating in this online workshop! So many good questions and suggestions once again today. A great way to end our workshop. You may find all links presented during the outro today here: https://github.com/coderefinery/workshop-outro. I hope that you learned many helpful tools these two weeks. We sure learned something new as well. It is normal if not everything is clear. You may always refer to our lessons material or the archived Q&A, links available from the main workshop page: https://coderefinery.github.io/2021-05-10-workshop/. You may also re-watch the lessons on Twitch https://www.twitch.tv/coderefinery. They will be made available on YouTube as well after some post-processing. If you require a certificate of participation, please email us at support@coderefinery.org (or just reply to this email). It has been a great experience for us to have you on this mega online workshop. We hope to see you in future workshops as well. Why not join as an exercise leader next time? If you'd like to continue being in touch with us, please consider: - subscribing to our newsletter (further down on our main page: https://coderefinery.org) - joining us on the Zulip chat https://coderefinery.zulipchat.com/ and introducing yourself in the #new members stream - following us on Twitter: https://twitter.com/coderefine Best regards, Diana, on behalf of the CodeRefinery team PS: The Research Software Hour today will focus on the top 10 questions from the workshop HackMD! When: 20:30 CEST via Twitch https://researchsoftwarehour.github.io (link to Twitch in the top right of the page). ### To CR staff: Dear {first_name}, What a great workshop! Thanks again to all instructors and helpers! :CR: Great team effort! We can discuss further impressions from the workshop at the CR staff meeting on Tuesday. Until then, have a nice end of the week, and if in Norway, enjoy the extra holiday! You may find below a copy of the email sent to the learners. /Diana