Computational Mathematics with Jupyter: Sprint
Posted on 13 February 2017
Computational Mathematics with Jupyter: Sprint
By Raniere Silva, Community Officer, Software Sustainability Institute
On 16-20th January, the International Centre for Mathematical Sciences hosted the Computational Mathematics with Jupyter workshop organised jointly by the OpenDreamKit and CoDiMa projects where GAP, Singular, SageMath, Jupyter users and developers met for experience sharing talks and coding hackathons.
In a previous blog post, we covered the talks during the Computational Mathematics with Jupyter workshop and in this post we will mention some of the achievements of the workshop attendees during the sprint. If you do a search on Wikipedia, "a sprint is a get-together of people involved in a project to further a focused development of the project", but at this sprint attendees worked on more than one project. Some people are sceptical about the value of sprints, but we hope that the Jupyter sprint helped them change their mind.
SageMath
Attendees discussed and worked on different parts of SageMath and related things. Samuel Lelièvre and Pierre-Philippe Dechant made some progress on the Software Carpentry lesson using SageMath, still in draft phase, and a proof of concept of using Jupyter notebook in write format was submitted to Software Carpentry. Justine Falque sent her first contribution to SageMath during the sprint and long-time contributors are looking to receive more in the short future.
The SageMathCloud tutorial for lecturers got an improved look during the sprint thanks to Tania Allard, who worked on moving the Markdown files around to conform with Jekyll requirements.
GAP
GAP was another project with large pool of users and developers who moved some documentation to GAPDoc format and improving the GAP Jupyter kernel powered by a Python bridge that is now available on PyPI (the official repository for Python packages).
Markus Pfeiffer wrote a Jupyter ZeroMQ protocol in pure GAP which in the future should replace the GAP Jupyter kernel powered by a Python bridge, since the pure GAP implementation gets rid of the Python dependency and makes the kernel more robust.
Also, some improvements on GAP package NumericalSgps, a package for numerical semigroups, were made.
SINGULAR
Singular developers worked on making the Python interface to Singular compatible with Python 2—before the sprint it was only compatible with Python 3. Why add support to Python 2 when most projects are dropping support to it? Because SageMath users want to have Singular available from SageMath; however, SageMath is only Python 2 compatible and added support for Python 3 still need more work. Additionally, Sebastian Gutsche worked on the Singular kernel for Jupyter and some demos.
Jupyter Interactions Gallery
Mike Croucher mentioned that many great tools have galleries of examples; for instance, matplotlib, Bokeh, seaborn, D3, and Jupyter Notebooks, but, unfortunately, IPython (Interactive) Widgets doesn’t and, since it deserves one, Mike suggested the attendees to work on a prototype of one. Four attendees joined Mike on his journey and by the end of the week they had built a functional prototype that can be improved in different ways.
Other work
It is worth mentioning that Vincent Delecroix enhanced the Python interface to the number theory library PARI and James Mitchell and Michael Torpey improved Semigroups++, which can be used from GAP.
Conclusion
GAP, Singular, SageMath, and Jupyter got a lot better because of the five half-day sprint from the workshop attendees. GitHub has a contribution visualisation that allows us to see how much some of the attendees contribute with code or documentation to the projects involved compared with other weeks. The workshop is the third column from right to left on the image below.
If you are still sceptical about sprints, try to participate in one and share your thoughts with us...