Software and research: the Institute's Blog

Latest version published on 28 November, 2017.

ReproducibilityBy Geraint Ian Palmer, Cardiff University.

A first version of this post was originally published on Geraint's blog.

There is a reproducibility crisis in science.

In computational science this is completely avoidable: if we can tell a computer what to do, we can tell it to do it again - and we can tell other people how to tell their computer to do it again.

In the domain of discrete event simulation, however, the software and methodologies that are traditionally used can make it difficult to reproduce the simulation results. In a recent preprint I have submitted with Dr. Vincent Knight, Prof. Paul Harper and Asyl Hawa, we compare simulation approaches in terms of reproducibility and best practice, and introduce Ciw, a Python library for discrete event simulations of queueing networks that is designed to facilitate…

Continue Reading

Latest version published on 27 November, 2017.

Python web frameworksBy Mike Jackson, Software Architect.

As part of my open call consultancy for LUX-ZEPLIN (LZ), I was asked to review web frameworks for Python, in particular those that could be used with MongoDB, the database management system used by LZ. In this blog post, I survey four frameworks for implementing web applications: Django, TurboGears, Flask and Pyramid.

These four web frameworks were selected from the many available because they each meet LZ’s requirements that they can be deployed under the popular Apache web server, that they support authentication and authorisation, and that they support directly, or via third-party libraries, the use of MongoDB for holding application-specific data. Additionally, the four web frameworks are popular, with a large user communities and each have permissive open source licences. This latter selection criteria follows our guide on Choosing the right open source software for your project which summarises factors to be considered when choosing open source software for use on projects.

The key details of each web framework are as follows:…

Continue Reading

Latest version published on 24 November, 2017.

CardiffBy Raniere Silva, Community Officer, Software Sustainability Institute.

The Collaborations Workshop (CW) is the Institute’s premier event series. It brings together key members of the research software community including researchers, developers, managers, legal staff, administrators, publishers, funders and more who work together to explore best practices and the future of research software. The Collaborations Workshop 2018 (CW18—#CollabW18) will take place in the City of Cardiff at The School of Mathematics, Cardiff University on 26th–28th March 2018.

Register on the CW18 Eventbrite page

CW18 will focus on culture change, productivity and sustainability. Advocates of better research software or open science often cite productivity and sustainability as some of the reasons for changing research practices. But…

Continue Reading

Latest version published on 8 December, 2017.

Python codeBy Mike Jackson, Software Architect

As part of my open call consultancy for LUX-ZEPLIN (LZ), I was asked about the feasibility of developing a web service that accepted Python code from users and executed their code server-side within a Linux environment. In this blog post I give a brief overview of a number of approaches that could be taken to implement such a service, focusing on those that protect the web service, and its underlying server, from code that is, whether by accident or design, malicious.

First things first, developing a web service that accepts Python code from users and runs this server-side is, in itself, it is not technically challenging. Any developer could knock up a proof-of-concept quite rapidly. The challenges are how to ensure that the web service is able to successfully run a user’s code, and how to protect the web service from the user’s code.

The first challenge, how to ensure that the server is able to successfully run a user’s code, can be restated as how to ensure that users only submit code that can successfully run on the server. At its simplest, this can be handled by publishing information about the environment within which the server will run the user’s code (e.g. operating system version, Python interpreter and…

Continue Reading

Latest version published on 22 November, 2017.

fellows selection dayBy Raniere Silva, Community Officer, Software Sustainability Institute.

On 8th November we held the selection day for the shortlisted candidates to the Fellowship programme 2018. We ran the selection day online for the first time, and it went well for the 23 candidates who attended the event. The day was filled with interesting discussions and we hope to share some of these soon in the form of speed blogs.


In previous years each candidate has presented an introduction to their professional persona, what they do and what they would do as a Fellow. This year we shared each candidate's application video in advance with the other attendees of the selection day. In the first session of the day we invited candidates to bring a conversation subject to the group. In this one hour "ice breaking" discussion, candidates talked about training and inclusivity.

Discussion session

As in previous years, discussion sessions during the selection day gave us an insight into the group and interaction skills of candidates. Each candidate participated in two groups, ideally on different subjects with different reviewers observing. Each discussion group chose a chair to keep discussions on track, a scribe to write things down and a…

Continue Reading