Ozymandias

Joel Gustafson

GitHub

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 in the browser that tries its best to be friendly and usable.

Overview

Ozymandias is more similar to LightTable or the Hydrogen plugin for Atom than traditional editors. Expressions are evaluated with Ctrl-Enter (or 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.

Installation

Things you need:

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.

The mit-scheme npm package 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 http://localhost:3000. Amazing.

Notes

Configuration

Ozymandias uses dotenv for a few configuration options:

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.

Authentication

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.

Credits

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.