CodeRefinery Workshops
Thor Wikfeldt, PDC
A key aspect of the CodeRefinery project , which was launched last autumn, is to train Nordic research groups to take full advantage of state-of-the-art tools and practices for modern collaborative scientific software development. The CodeRefinery training takes place in the form of interactive three-day workshops involving demonstrations, live coding exercises and type-along types of presentations.
The very first CodeRefinery workshop was held in Espoo, Finland, on the 14th-16th of December 2016 in the headquarters of the CSC IT Center for Science, and the second workshop was held at the KTH Royal Institute of Technology in Stockholm on the 20th-22nd of February 2017. The most recent workshop was held in Copenhagen on the 9th-11th of May 2017. Most of the participants in the workshops were Ph.D. students or postdoctoral researchers who came from various scientific disciplines, ranging from mathematics and computer science to the physical and biological sciences, engineering and psychology. Their programming background was similarly diverse: some had extensive experience of software development in C, C++ or Fortran, others were Python or R aficionados, and yet others had less prior coding experience. However, they all shared a keen interest in improving their coding practices and learning to use modern software development tools.
This is exactly the aim of the CodeRefinery project: helping researchers to write modular, reusable, maintainable, sustainable, reproducible and robust software, regardless of their academic discipline or preferred programming language. CodeRefinery workshops cover a diverse range of topics including collaborative distributed version control, automated testing, documentation, Jupyter Notebooks, CMake, integrated development environments and how to manage code complexity. Overall, feedback from participants in these first two workshops has been highly positive - the core topics covered by the CodeRefinery workshops are clearly in high demand by researchers who develop scientific software in their daily work but who may not have received any formal training about using modern software development tools.
As a further step towards assisting research groups to migrate from ad hoc in-house software development solutions to state of the art collaborative infrastructures, CodeRefinery has recently deployed a web-based source code repository platform for Nordic research projects which offers free unlimited hosting of private repositories. The platform features components for issue tracking and integrated code review and will, in the near future, be connected to a continuous integration platform to automatically build software and test code changes. To sign up for this service, visit source.coderefinery.org .
The CodeRefinery project will continue to deliver three-day workshops during the coming years: the next is the “midnight sun workshop” in Tromsø on the 19th-21st of June. (For details of the additional workshops in 2017 and 2018, please see the project website .) In tandem with delivering these workshops, the project organizes half-day or one-day events focusing on either training in one particular topic or on general seminars and discussions. An example of the latter is the get-together event that was held in Stockholm on the 19th of May. By bringing together researchers, software developers, CodeRefinery members and SNIC application experts, this meeting was designed to contribute to building a Nordic community of users and developers of research software, as well as providing an environment for those people to communicate and exchange their expertise.
Anyone interested in attending any of the CodeRefinery events can get the latest news on the project’s website, coderefinery.org , or follow @coderefine on Twitter. Furthermore, CodeRefinery recently launched a web forum where researchers from Nordic universities and research centres can ask questions and take part in discussions on software development topics. To join this forum, visit groups.google.com/group/coderefinery .