The Sage Cell Server is an open-source, scalable, and easy-to-use web interface to Sage, a comprehensive open-source math software system. Additionally, the Sage Cell Server can be used to embed Sage computations into any webpage.
Here are slides to a short introductory talk about the Sage Cell Server given at the Joint AMS/MAA Mathematical conference in San Diego, January 2013.
Include the following HTML at the top of the webpage
(optionally replacing sagecell.sagemath.org
with the name
of your server). The third line makes it so that any element with a
class of sage
will turn into a Sage cell.
<script src="https://sagecell.sagemath.org/static/jquery.min.js"></script> <script src="https://sagecell.sagemath.org/static/embedded_sagecell.js"></script> <script>sagecell.makeSagecell({"inputLocation": ".sage"});</script>
If you are embedding into a webpage with lots of styling (like a blog, or a deck.js presentation), there might be conflicts between the page styling and the styles for the Sage cell. If you notice that the Sage cell is not looking normal, you might also include the following code after the above in order to fix the Sage cell styles.
<link rel="stylesheet" type="text/css" href="https://sagecell.sagemath.org/static/sagecell_embed.css">
<script>
tags so that it is not
treated as HTML.
<div class="sage"> <script type="text/x-sage">1+2</script> </div>
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Sage Cell Server</title> <script src="https://sagecell.sagemath.org/static/jquery.min.js"></script> <script src="https://sagecell.sagemath.org/static/embedded_sagecell.js"></script> <script>$(function () { // Make the div with id 'mycell' a Sage cell sagecell.makeSagecell({inputLocation: '#mycell', template: sagecell.templates.minimal, evalButtonText: 'Activate'}); // Make *any* div with class 'compute' a Sage cell sagecell.makeSagecell({inputLocation: 'div.compute', evalButtonText: 'Evaluate'}); }); </script> </head> <body> <h1>Embedded Sage Cells</h1> <h2>Factorial</h2> Click the “Activate” button below to calculate factorials. <div id="mycell"><script type="text/x-sage"> @interact def _(a=(1, 10)): print factorial(a) </script> </div> <h2>Your own computations</h2> Type your own Sage computation below and click “Evaluate”. <div class="compute"><script type="text/x-sage">plot(sin(x), (x, 0, 2*pi))</script></div> <div class="compute"><script type="text/x-sage"> @interact def f(n=(0,10)): print 2^n </script></div> </body> </html>
In January 2011 at Sage Days 27, William Stein and Jason Grout implemented a proof-of-concept “Single Cell” server designed to be a web interface for a single Sage computation. Ira Hanson soon joined the project and Jason and Ira continued building a prototype. Many helpful design discussions with Robert Bradshaw, Fernando Perez, Min Ragan-Kelly, and Brian Granger at Sage Days 29 pushed the design further. Alex Kramer joined the project in May 2011, and Jason, Ira, and Alex (the “Drake Sage Group”) worked full-time at Drake University (thanks to the UTMOST NSF funding and a Drake internal grant) to design and implement the first version of the Sage Cell Server in the summer of 2011. Ira Hanson worked with Michael Gage, Jason Aubrey, Davide Cervone, and John Travis from WeBWorK at Sage Days 31 to allow Sage cells to be embedded in WeBWorK problems and other external pages. In July 2011, the Sage Cell developers announced the release of an open beta for the Sage Cell Server Version 1 on a public server for testing.
Version 1 of the Sage Cell Server reimplemented much of the IPython 0.12 messaging protocol in a custom layer on top of Sage (since IPython was not yet mature enough to be included in Sage). Jason, Ira, and Alex continued maintaining and improving this codebase throughout the 2011–2012 academic year. The Android and iOS apps, which relied on the Sage Cell Server, were built by Ivan Andrus and Volker Braun. People started incorporating Sage Cells into their curricular materials, and momentum was gathering. Alex and Jason attended Sage Days 35.5 to help in these and other efforts.
By the spring of 2012, the IPython codebase had matured enough to be included in Sage and serve as a base for the Cell Server. Steven Johnson joined Jason, Ira, and Alex to work full-time (under NSF funding) during the summer of 2012 to go back to the drawing board and redesign and reimplement the Sage Cell Server to take advantage of insights gained during the first year. Byron Varberg also joined the Drake Sage Group to implement the Sage Interact website. Sage Cell Server Version 2 went beta in July 2012.
In the summer and fall of 2012, David Smith started transitioning the MAA Calculus book to use Sage interacts for all interactive activities, which was tested at Hood College during the 2012–2013 academic year. Jason, Ira, and Alex continued maintaining and improving the Cell Server codebase during the academic year as well.
This material is based upon work supported by the National Science Foundation under Grant No. DUE-1022574. Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).