On Thu, 25 May 2006 12:06:41 -0700, David Joyner <wdjoyner at gmail.com> wrote:
> Earlier this month I informed the mailing list that I was working on anew web frontend to Maxima. I
> set up my new server yesterday, and it's now up and running.
Cool. I like these things.
> You can try it out at http://math.msarnoff.org. Right now, it onlysupports one command per session
> ("notebook"-style interaction is not functional yet). It makesheavy use of JavaScript and "AJAX,"
> and so far has only been tested in Mozilla and Safari.
Very neat; it works well on the tests I tried.
How do you get the latex output to work correctly?
> Due to the lack of "safety" features in Maxima, all unsafefunctions are filtered out before the
> input is sent to Maxima, and the server will terminate theMaxima process after 5 seconds if it does
> not return.
In case you're curious the SAGE group is also working on three-web
interfaces for SAGE. Since Maxima is part of SAGE, this is also
relevant to Maxima.
1. A very simple forms-based cgi-bin script web interface:
http://modular.math.washington.edu/calc/
You can execute one line of maxima code in this (in addition
to code for many other systems, of course) by typing e.g., this:
maxima.eval('integrate(tan(x),x)')
This is run by starting a SAGE process in a chroot jail,
so I don't worry about striping unsafe commands.
2. The SAJAX terminal:
http://modular.math.washington.edu:8389/
This is rumored to be slow, but it provides a complete
command line interface to SAGE (hence maxima, etc.)
which is exactly like ssh'ing to a machine that has
SAGE and running it. For example, if you connect to
the above web page (with firefox or internet explorer),
and type
!maxima
at the prompt, you'll get a full maxima session.
3. The SAGE notebook interface. This isn't available
as a SAGE webpage yet, though it will be soon.
(The link will be in the top left corner of
http://modular.math.washington.edu/sage/.)
The interface does come with the latest version of
SAGE. If you install sage-1.3.2.1, and type
server_http1('default')
it'll popup a firefox window that gives you a nice
notebook interface to SAGE via your web browser
on localhost. And you can input maxima commands,
e.g.,
maxima.eval('integrate(tan(x),x)')
It is a work in progress, and there's much left to
do (I've appended the todo list at the bottom of this
email). Given the architecture we're using, it
will be relatively easy to make it work with other
systems included with SAGE, e.g., Maxima, GAP, etc.,
where you simply put the notebook in a mode where all
input is evaluated by the corresponding system.
You can also open up a notebook and make it web
accessible, e.g., by typing
server_http1(name="default", address=<address to listen on>, port=<a number>)
but there are security issues right now. In the future
you'll run the web server from sage as a normal user,
and run the separate client program (e.g., sage with
maxima, etc.) inside a chroot jail.
> I can't vouch for its speed (the server is nearly seven years old)
> or its practicality, but I thought I'd share. I'll be working on it
> over the summer, so if you're going to link to it on the Maxima website,
> make sure to state that it's "under development."
Cool. Since the SAGE web interfaces attempt to accomplish similar
goals (and even directly supports Maxima), and you've clearly learned
a lot about what goes into make such interfaces, I hope you might also
at least consider looking at what we're doing, and maybe helping
us to solve some of our problems, giving us feedback, possibly helping
out, etc.
--
William Stein
Associate Professor of Mathematics
University of Washington
TODO list for SAGE web notebook interface:
[] input one form shouldn't delete data from any other forms;
e.g., you could be editing one form and submit another!
[] The whole interface needs to be slimmed down so bunches of single
line input (and output) will work.
[] Ability to switch from one log (=workbook) to another via
the web interface.
[] Add plain text annotation that is not evaluated
between blocks (maybe in html?)
E.g., just make ctrl-enter on a block by HTML-it.
[] Ability to interrupt running calculations directly
from the web interface (no console access)
[] Nice animation while a computation is proceeding.
[] Some way to show output as it is computed.
[] Option to delete blocks
[] Make block expand if enter a lot of text into it.
[] Evaluate the entire worksheet
[] Theme-able / skin-able
[] Downloading and access to exact log of IO to client SAGE process
[] Save session objects as to log objects so don't have to re-eval?
[] The entire page is resent/updated every time you hit shift-enter;
using 'AJAX' this flicker/lag could be completely eliminated.
[] When pressing shift-enter a line feed is inserted temporarily
into the inbox, which is unnerving.
[] Add authentication
[] Embed the log object in the html file, so server session
can be restared directly using the html file! E.g., embed
pickled Log object in a comment at end of the .html file.
[] Ability to upload and download source files (to be run)
via web interface; maybe ability to edit them too, via some
'rich' code editing javascript 'widget'.
[] rewrite tables using CSS
[] load and attaching scripts.
[] a way to interactively watch the output of a running computation
(in verbose mode).
[] undo -- have infinite undo and redo of the SAGE *log*, i.e.,
text I/O (and possibly graphics). does not save *state* of
the "sage kernel".
[] switch into mode where the whole input box is parsed by
another system, e.g., Maxima.