<div dir="ltr"><div><div>IPython community,<br><br></div>Thought you might be interested in seeing how students can use the new Jupyterhub with a new, external kernel. This semester I am using the language "Processing"... originally designed for artists by artists. My colleagues have written a textbook on how to use it for teaching computer science [1]. <br><br></div>Here is a 5 minute video on how it looks to the student:<br><div><div><div><br><a href="https://www.youtube.com/watch?v=V4TzARh-ClY">https://www.youtube.com/watch?v=V4TzARh-ClY</a><br><br></div><div>and here is a live notebook:<br><br><a href="http://jupyter.cs.brynmawr.edu/hub/kohara/public/Untitled.ipynb">http://jupyter.cs.brynmawr.edu/hub/kohara/public/Untitled.ipynb</a><br><br></div><div>(mouse over some of the sketches)<br></div><div><br>If you know Processing, this is different from the regular Processing IDE:<br><br><div>* students log into the Jupyterhub system over the web<br></div><div>* uses the Processing-Javascript system<br></div>* each Jupyter notebook "cell" is a Processing "sketch"<br>* Shift+Tab shows Processing on-line help<br>* Tab will do completion (completes with Processing variables and functions)<br>* Rendered notebooks (eg, without a live computational engine/kernel behind them) will still run<br></div><div>* Slight bit of interpreter feel: can execute draw/setup functions interactively<br></div><div>* uses MetaKernel magics [2]<br></div><div><br>I like the setup for education because:<br><br>* I can control/configure the environment exactly (what buttons are available, etc). I have a few nbextensions in the newly supported system folder, and load them in the notebook.html template.<br>* I can update the system at any time<br><div>* I can track students' time-on-task<br></div>* Students will be able to submit their homework (as notebooks) via a button<br><div>* I can add more stuff as I think of it (like the "Publish" and "Submit Homework" buttons)<br></div><div>* All of the benefits of using a notebook: by students, for students ("runs like code; reads like a journal paper", "literate computing", "reproducible research", etc)<br></div><div><br></div>Things I don't like:<br><br>* Processing -> Javascript error messages are terrible<br><br></div><div>We'll have all of the code easily installable (via pip) as soon as Jupyter is out. Of course, you can also get the code directly [3].<br><br></div><div>It could be that a Processing IPython magic could turn Processing code into a really fancy, low-level, dynamic widget system for Python. Because rendered Processing sketches run in rendered notebooks, it also solves some of those issues. There needs to be a way to get data to Processing. Also, for live kernels, it would be handy to have Processing be able to set Python variables. <br></div><div><br></div><div>-Doug<br></div><div><br>[1] - <a href="http://www.apress.com/9781430244646">http://www.apress.com/9781430244646</a><br>[2] - <a href="https://github.com/Calysto/metakernel">https://github.com/Calysto/metakernel</a><br>[3] - <a href="https://github.com/Calysto/calysto/tree/master/calysto/language/processing">https://github.com/Calysto/calysto/tree/master/calysto/language/processing</a><br></div></div></div></div>