CodeRefinery, May 25 - June 4, 2020

Online CodeRefinery workshop for everyone

May 25-27 and June 2-4, 9:00-12:00 CEST

We are full, see below


Because of our Nordic funding, priority is for Nordic participants. This is the first Mega-CodeRefinery, so we reserve the right to make changes. Everyone gets added to a waitlist initially, and we approve people as we get space. Check back for updates.

Live streaming

Yes, we are. Streams available at, See right bottom →

Course goals and format

In this course, you will become familiar with tools and best practices for version control in modern research software development. The main focus is on using Git for efficiently writing and maintaining research software. We don’t teach programming, but we teach the tools you need to use programming well.

This is an informal and interactive online event with type-along type of presentations, live coding, and demos. Short tutorials alternate with practical exercises.

We might live stream or record (part of ) the workshop to reach an even wider audience. In this case, privacy is our first concern and only the instructor’s video will be published, and breakout rooms for exercises are completely private. More details will come later.

Software requirements

You need to install some software before CodeRefinery (why we ask you to do this). Please do this - and check it - in advance, otherwise you’ll start off behind.

Note that, e.g., a working Python executable on your laptop is not sufficient - a version greater than 3.4 is strongly recommended and a number of extra packages need to be installed as detailed on the Python installation page. You also need to check your git configuration (video: how to configure Git). If you have an institutional laptop with limited rights, start in advance and/or ask for help to translate these instructions to work on your system.

You should either a) drop by one of our verification sessions in advance, or b) verify with your team’s helper before the workshop.


The schedule includes frequent breaks. All times are in Central European Summer Time. Convert 9:00 CEST to your time zone.

The schedule is subject to change.

Pre-workshop installation help and verification times (see above)

  • Join anytime during this (preferably not everyone at the very start and end)
  • 20.may (W) 14-15 CEST (mistake in email: it is actually Wednesday)
  • 22.may (F) 13-14 CEST

25 May (M)

26 May (T)

27 May (W)

2 June (T)

3 June (W)

4 June (Th)


The workshop will be held online, participant links will be sent to registered participants. Also streamed at []


Free of charge, funded by the Nordic e-Infrastructure Collaboration.


Who the course is for

Are you doing any of these things below:

  • You write scripts to process data.
  • You change scripts written by your colleagues.
  • You write code that is used in research by you or others.

If yes, then this course is for you. This is not designed for “professional code developers” or computer scientists.

If you develop research code and you know all the tools already, join us as a helper! It’s fun, and you always learn something new about a subject by teaching it.


Welcome to the first online mega-CodeRefinery. This is “mega” because in the past we have always been limited by physical space or number of helpers. We are now taking direct action to reach as many people as possible, but this also means we are trying something new. We are introducing the concept of teams to “bring your own breakout rooms” to accept as many people as possible.

How to join

We are normally limited by number of helpers, thus:

  • Anyone may register as a learner, we will try to take as many as we can.
  • Or you can register as a helper. If you are somewhat comfortable with these tools, you can be a helper! (see below)
  • Register as a team, one helper and 4-6 learners.
    • We will accept all complete teams.
    • Everyone on the team must register separately.
    • Decide some team name, and when registering, everone enter this same name so that we can link you together.
    • During the exercise sessions in breakout rooms, the helper has primary responsibility for their group’s hands-on exercises. Still, instructors drop by to check and help as needed, so don’t worry if you don’t know everything.
    • This is a great opportunity to bring your friends and colleagues and prepare for the future together.

If you’ve been to a CodeRefinery before and have used git some after that, you are definitely capable of being a helper. If you routinely use git and know Python somewhat well, you are also very qualified to be a helper.

What we will not teach

This is not a course about a specific programming language or the Linux/Unix terminal shell. We assume that you are familiar with the programming language that you use in your work and research. We try to keep the course as language-independent as possible but we will show some basic code examples in Python.


  • You should be able to navigate the file tree in a terminal session and edit text files in the terminal. This Linux shell crash course (video) contains the essentials.
  • Basics in one or more programming languages.
  • You need to install some software. Please follow links at right.
  • It is useful if you have a basic idea of how Git works. We will start from the basics anyway, but please go through this Git-refresher material for a basic overview and important configuration steps.
  • Make sure that git is configured, and verify the configuration: text instructions, video.


  • Naoe Tatara


  • Radovan Bast
  • Anne Fouilloux
  • Bjørn Lindi
  • Thor Wikfeldt
  • Stefan Negru
  • Richard Darst

Expert helpers

  • Enrico Glerean
  • Jarno Rantaharju
  • Juho Lehtonen
  • Sabry Razick


(Tips for helpers). 25 helpers are making this CodeRefinery possible. If you are a helper and would like to be listed here, let us know.

  • Daniel Holmberg
  • Ebrahim Afyounian
  • Erika Yashiro
  • Francesco Tabaro
  • Joakim Löfgren
  • Kerstin Lenk
  • Lauri Neuvonen
  • Luis Amezcua
  • Mikael Djurfeldt
  • Mikko Heikkilä
  • Pengfei Xu
  • Preethy Nair
  • Raphaela Heil
  • Rohit Goswami
  • Samantha Wittke
  • Sebastian Schmidt
  • Tomi Häkkinen
  • Tuomas Rossi
  • Ygor Morais Jaques


  • Why should I come as a team? If you will work together later, learning the tools at the same time is a great way to do it.

  • Am I good enough to be a helper? If you are asking this question, probably you are. You should have some familiarity with git, provide some initial advice on obvious error messages, and be able to call us for advanced help when it’s needed.

  • How does the waitlist work? Anyone can register, but you go to the waitlist until we can be sure we have enough helpers. We’ll continually approve people as we get space. We know this may be more unpredictable for you, but the way to make sure you get in is join a team with a helper (or find us more helpers in general).

  • If the workshop is streamed/published, will I be visible? Privacy and internal safety is our first concern. Only instructors video will be published. If you use voice to questions in the main room, that might be published. The most common way to ask questions is written, and anyone can feel comfortable using this. Breakout rooms, where all of the hands-on work and most discussion happens, is always private and unrecorded.

  • I can’t register/didn’t make it past the waiting list, and I would like to follow the streams myself. We don’t yet know if we will do this or what the format will be. Please check back for further information. Note, we highly recommend registering as a team if possible, you will get much more out of the workshop if you are a part of it.

  • Is there any way I can follow along? We’ll try to live stream it, see below. The experience won’t be the same, but we do what we can.

  • If it’s online, why did you close? CodeRefinery workshops are interactive, with lots of interaction between instructors, helpers, and learners. We can scale one-to-many easily, but we reached the limits of an interactive format.

  • When are registrations approved? We will look through number of attendees and number of helpers, and accept who we can and direct the rest to the live stream.

  • How can I be notified of updates? Currently, we don’t have any way. Follow @coderefine on Twitter.

  • We still need helpers, they may still register here.

Streaming info

We will live stream the course so that others, who did not have time to register, will be able to follow along. However, this is best-effort and we will stop streaming if it seem unworkable.

Check back for more information, (over the weekend) including set-up instructions. We will stream at

Advice on following the stream:

  • Take this seriously. Don’t do multiple meetings, reserve the entire timeslots on your calendar, attend every session, do the preparation.

  • Do the installation and configuration in advance, and double check it. In real workshops, problems here slow us down a lot, and if you don’t prepare, you will immediately fall behind. We might have a pre-workshop stream to go over installation.

  • Form a team anyway. You learn more from your colleagues than you do from us, so take advantage. Get one “helper” for your team, start your own video call, watch the stream together, and during the exercise times, work together. We will be clear about our timing, so that you can coordinate your team. (Of course, you can always follow individually)

  • You can interact on the livestream chat, but we don’t promise to be able to watch it.

  • Announcements and updates go to this Github issue. You can subscribe to it for notifications, but there is no other way to sign up for info - also keep checking this webpage for details. Follow @coderefine on Twitter for news, too.

  • We don’t know what lessons we will stream yet. We hope to all, but will see about practicalities.

  • We stream on Twitch, and there should be someone interacting with the Twitch chat to provide some support.

  • Come to an in-person workshop sometime. The stream probably can’t replace the experience and individual help you get in person. Sign up on the notify me list to hear about what comes next.

Questions, answers, and feedback

Here we can share during/after the workshop (anonymized) questions, answer, and feedback from the collaborative notes.


CodeRefinery is a project within the Nordic e-Infrastructure Collaboration (NeIC). NeIC is an organisational unit under NordForsk.

Follow us

CodeRefinery GitHub account CodeRefinery Twitter account