Wednesday, November 14, 2007

SAGE Days 6

From November 9 till November 15 I attended SAGE Days 6 in Bristol, UK. It was a conference and a coding sprint for the SAGE project, which wants to build something comparable to Mathematica, Maple, Matlab and Magma built only from open source components without reinventing the wheel. Sage also provides excellent novel implementations for many mathematical algorithms (not found in Mathematica/Maple etc.).

I was invited to give a talk about SymPy, which is a Python library for symbolic mathematics, that we are doing.

Here are my notes from each day:

Saturday: one, two
Sunday: one, two
Monday, Tuesday, Wednesday: one


Very positive. I started SymPy two years ago, because I wanted to play with symbolic mathematics in Python, see for example my presentation I gave at this conference for details. SAGE at that time was just able to do some mathematics things, but it was very weak in calculus, which is the SymPy's main domain. This has changed last half a year, when SAGE people managed to wrap Maxima in Python (which I thought to be completely impossible), so I started to follow SAGE development more closely. After the SD6, I must say I became very excited about the project.

One problem with mailinglists, IRC and other online interaction is that it's very difficult for me to get an impression about the people and the project. Being able to meet the developers and discuss with them face to face gives me the impression very quickly and very accurately.

By far the biggest guarantee, why it is worthy for me to contribute to SAGE, is the project leader, William Stein. He is very rational and pragmatic (I like these two properties) and after many discussions with him, I came to realize that he has basically identical views on the important things as I do and were I on his place, I would do the same decisions as he did and does. That's very nice, because I can concentrate my energy on things that I like to improve and don't have to worry about other things, because I know he will do it right.

The other SAGE developers are experts and with similar attitude as William has. It's enthusiastic to be among people who make things happen. For example one of the authors of Cython, Robert, implemented during SD6 a very nice HTML output, that shows Cython code, with colors according to how many Python API calls are called on that particular line, and by clicking that line it shows the corresponding C code.

SAGE project has a high aim and it stricly goes for it, without looking too much to the right or left, and that's how it should be. And it does produce a lot of very useful and high quality stuff along the way, for example Cython (probably the best wrapper for C/C++ things now, only pypy could possibly beat it, but that's still more a research project) or the SAGE notebook, which looks like a Mathematica notebook, but better and in a browser (together with a revision history, sharing, SSL encryption, etc.).

The only little problem is that currently SAGE developers are all mathematicians and as is well-known, mathematicians looks at mathematic from a very different prospective than physicists. :) And so I need calculus, advanced calculus and only when this is working, and working well, I can build on it some more advanced features. SAGE currently goes a little the other way - it has a lot of advanced features, from number theory, modular forms, elliptic curves, etc., but the basic calculus still needs a lot of improvements. SAGE wraps Maxima, because Maxima is quite fast, very well tested, so it works well. It's difficult to extend and written in LISP and that's very bad. That's where SymPy could help - it's in Python, very easy to extend, but currently slower than Maxima (rewriting parts of SymPy using Cython, or even C directly, will make it faster, hopefully as fast as Maxima or faster).

It's not yet in Debian, but SAGE people are working on it. It's not an easy task unfortunately.


SAGE is a very promising young project and I think it will succeed to provide an open source alternative to Maple, Matlab, Mathematica and Magma.


Aaron Meurer said...

Ondrej, do you know what happened to the video of your presentation from this conference? There is a "link" to it at, but it is dead (the whole server doesn't seem to exist).

Ondřej Čertík said...

Unfortunately, that server is down. I don't think that I have this video somewhere else. So I guess we should remove it from that list.

These days, it is possible to upload things to vimeo, or

Aaron Meurer said...

I found this old thread on the IPython list that claims that was an alias for, where that video is supposedly hosted at. Do you know anything about that.

Also, whoever made this page claims that he has (or at least had) the videos.

The reason I am looking for it by the way is that that presentation has an overview of the Gruntz algorithm, and I was hoping that the video of the presentation would clarify what is in the slides.

And as long as the video files aren't too big, we could probably upload them to the GitHub wiki (according to, there is a soft limit of 0.3 GB for hosting space, but according to this page, it's only a soft limit, and as long as the repo isn't really huge, they won't do anything. Just an idea anyway.

Ondřej Čertík said...

It was my old server, I'll try to investigate, if I still have an access to it.

I can explain anything on the sympy list if you are interested. Maybe, if you are *really* interested, I can post a video explaining how the limits work.

Aaron Meurer said...

Actually, Chris is the one who is trying to learn how the algorithm works (he has been trying to fix some bugs in the series/limits code). I am interested to learn it too at some point, though I will probably just read the PhD thesis.