Scheme is a beautiful language, but for those afraid of Emacs it can be difficult to use. This project is a modern MIT Scheme environment for the browser that tries its best to be friendly and usable.
Ozymandias is more similar to LightTable or the Hydrogen plugin for Atom than traditional editors.
Expressions are evaluated with
Cmd-Enter), and results are inlined below each expression.
When appropriate, you can tab between Scheme object, pretty-printed, or Tex representations of values.
... you can plot functions and their derivatives...
... or find the Lagrangian of a harmonic oscillator...
... and there's even a primitive debugger!
The help panel summarizes the available keyboard shortcuts and commands - if you're already used to Emacs or Sublime, most of the existing commands should work here as well. Safari won't let clients override some shortcuts (like
Cmd-O for opening files), so either use Chrome/FF or just click on the entry in the help panel.
Things you need to run your own server:
It probably works with earlier versions, other *nixes, and maybe even macOS, but it's never been tried. If you try to run it on Windows, Gerry Sussman will hunt you down and throw chalk at you.
mit-scheme npm package (on GitHub and npm) is a sister project; it wraps a native MIT Scheme instance in a NodeJS Duplex Stream that is easier to interface with. Since it needs to write config files to
/etc/schroot, you'll need to install it globally and with permissions.
Things you do:
sudo apt-get install schroot sudo npm install -g mit-scheme --unsafe-perm git clone https://github.com/joeltg/ozymandias.git cd ozymandias npm link mit-scheme npm install npm run build npm start > server listening on port 3000
... and it's live on
Ozymandias uses dotenv for a few configuration options:
PORT(default 3000): TCP port that the server listens on
SCMUTILS(default true): run Scheme with the scmutils library
Permissions & Security
Each Scheme subprocess is sandboxed in a chroot jail, but it's not that secure and you should expect Scheme to be able to execute arbitrary code on your computer. Don't run this publicly on a machine you really care about.
Ozymandias is designed to support user accounts, but I'm scared to document them because I don't know what I'm doing. You can peek in
server/authentication/ if you're really curious.
None of this would be possible without the incredible work of many free and open-source projects, and none of them get enough thanks:
And obligatory thanks to Professor Sussman for his indispensable insight and guidance.