"The ultimate test of whether I understand something is if I can explain it to a computer. I can say something to you and you’ll nod your head, but I’m not sure that I explained it well. But the computer doesn’t nod its head. It repeats back exactly what I tell it. In most of life, you can bluff, but not with computers." (Donald Knuth, from this Quantamagazine post.)

I learned Python in 2004 and never stopped using it to get my own intuitions on mathematical and theoretical computer science problems. I am a user and a developer of SageMath since 2008. SageMath is an open-source software for mathematics started by William Stein in 2006. I wrote dozens of posts about SageMath on my blog (some in French, some in English).

Sage Development

I am one of the main developer of the sage/combinat/words library and few other modules including RecursivelyEnumeratedSet, DisjointSet, E1Star, dlx_solver, TilingSolver and QuantuminoSolver. My contributions also concern visualisation, graphics and other things.

On the Sage Trac, one can see the Sage tickets I worked on

My Optional Sage package: slabbe

Part of my own research code is available since August 2014 as an optional Sage package called slabbe. I try to release one new version every year. It is available in the Python Package Index. The source code is available on github. I wrote some blog posts about it in the categorie slabbe-spkg with examples and pictures.


sage -pip install slabbe


sage: from slabbe import *

Why: I explained in a blog post why I created this package. The short answer is that it allows me to easily use and share my research code. I always keep it documented and aim at keeping 100% doctest coverage with all test passing so that I trust experimental results I get from it. Including a new module into Sage is hard and in many cases, the module stays on trac forever without getting a positive review. My package allows to develop new modules with the long-term goal of getting into Sage and the short and mid-term goal of being easily usable and modified (allowing backward incompatible changes). If you want any of the module in the package to get into Sage and you are willing to review it, tell me.

What: It contains modules on digital geometry, combinatorics and combinatorics on words and more. Version 0.2, available since November 2015, provides modules on multidimensional continued fraction algorithms, matrix cocycles, languages, tikzpictures for which many examples of usage can be found in these cheat sheets.

Old versions are available below with pdf documentation.

spkg Documentation Release date Dependencies Release notes
slabbe-0.1.spkg slabbe-0.1.pdf August 27, 2014 sage-6.3 blog post
slabbe-0.1.1.spkg   June 3, 2015 sage-6.7 fixing gcd import
slabbe-0.2.spkg slabbe-0.2.pdf Nov 25, 2015 sage-6.8 blog post
slabbe-0.3b1   June 12, 2016 sage-7.2  
slabbe-0.3b2   Dec 11, 2016 sage-7.4  
slabbe-0.4 slabbe-0.4.pdf Jan 20, 2018 sage-8.1  
slabbe-0.5 slabbe-0.5.pdf April 10, 2019 sage-8.7  

Organisation de conférences et activités

I participated in the organisation of international workshops on Sage and weekly meetings.

Sage Talks

Note that *.sws and *.txt files listed below can be uploaded directly from the Sage Notebook.