Saturday, March 29, 2014

Cool Technology: IPython Notebooks

I may be very late to the party but I've recently discovered IPython notebooks.  IPython is an extremely useful Python shell environment that has been kicking around for 10+ years. Initially the number of advantages it offered over the built-in python shell was small.  But then again it started out as a couple of hundred line hack.  So back then it seemed like it wasn't worth the trouble to make sure it was install on all the machines you might hack Python on.

Fast forward to 2010 or so, IPython has reached a 1.0 milestone, and has evolved significantly to an extremely powerful platform.  However the aspect that I find the most useful is notebooks that display in a web browser.   It's supposed to be somewhat reminiscent of Mathematica which I've never used.

Notebooks contain blocks of executable Python code and their output.  The Python code can be edited and run/rerun right there from the browser.  But where it really gets interesting is that rich multimedia stuff, especially graphs can be displayed right there, in-line.  It's pretty enabling for scientific computing, enabling very short hacking and visualization cycles almost like a spreadsheet.

I really should write a lot more about this.  It's not just for Python, and it's not just for the web, it seems like it could be a big thing.  It should also make teaching and learning a lot easier.

Check out:
I really like this example, reading a .WAV file and showing side by side plots of amplitude and spectrum:

There are a few things that I think could use improvement.
  1. More Document Structure, Real Head 1, 2, 3 and Table of Contents.   I'm a big fan of Mediawiki's nice native built-in structure.  It really helps organize documents in my opinion.  It's also one of the biggest things lacking from Evernote (IMHO).
  2. Native Tabular output widgets.  There are some extensions but they aren't quite there yet.  This could make an awesome SQL Workbench, but it could really use ways of presenting and working with tables as output cells.

No comments: