Friday, July 19, 2013

The IPython Notebook Revolution

Among the many great talks coming to PyOhio at the end of this month:
The IPython Notebook Revolution Catherine Devlin If you think of IPython as simply an enhanced version of the live Python prompt, you are in need of re-education. No matter what you do with Python, applying the IPython Notebook imaginatively will revolutionize the way you do it.

I'd like to focus on aspects of IPython outside the traditional number-crunching, plot-making realm, simply because those have been covered so well already - videos by the actual IPython team already have. I'd like to fill up a talk with edgy, imaginative, experimental uses of IPython that aren't well-known yet, or that suggest new ways IPython (and especially the Notebook) may be used in the future. I have a bunch of ideas along those lines...

... but I'd like your input! I don't want to miss anything awesome just because I wasn't aware, and there's a lot being done in the IPython world - more than I've been able to keep track of. Erik Welch has already thoughtfully given me a bunch of links and suggestions from SciPy. Let's crowdsource my talk even further!

Some of the goodies I already plan to include:

  • notebook-based presentations
  • ipython_blocks: probably my Holy Grail of imaginative uses)
  • d3js in IPython: (OK, this still fits the data graphing theme, but it's also ultra-snazzy)
  • ipython_sql: (everybody's got to toot her own horn sometimes)
  • ipfl (web-style forms in a Notebook - very preliminary but an interesting idea)
  • xkcd and hand-drawn mode
  • Wakari

How would you shake up people's notions of "what IPython is for"?

6 comments:

Eric Wilson said...

Can't make it to PyOhio this year, but I'm excited about IPython.

I think that the combination of IPython notebooks & Github for construction of interactive books that are updated with each push is really cool. http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers

Min RK said...

I have done some notebooks emphasizing the interactivity of the notebook.

1. I made an on-screen keyboard with javascript, that plays music via a USB-connected physics experiment device called Phoenix. There is a video of the notebook in action. The notebook is in my phoenix repo. This notebook demonstrates Javascript calling Python, and Python calling Javascript all together.

2. in the same repo, I have a notebook automating data collection for measuring gravity by dropping a marble down an inclined plane with an electromagnet and photo gate.

Min RK said...

I have done some notebooks emphasizing the interactivity of the notebook.

1. I made an on-screen keyboard with javascript, that plays music via a USB-connected physics experiment device called Phoenix. There is a video of the notebook in action. The notebook is in my phoenix repo. This notebook demonstrates Javascript calling Python, and Python calling Javascript all together.

2. in the same repo, I have a notebook automating data collection for measuring gravity by dropping a marble down an inclined plane with an electromagnet and photo gate.

Marius Gedminas said...

Ohh, I so want to see a demo of d3js in IPython Notebook!

Shame I'm on the other side of the Atlantic.

Nick Coghlan said...

Not sure if you can make it exciting for a presentation, but I thought it was pretty neat when it came to bug hunting in a distributed system: correlating faults across a database dump and log files from multiple servers.

I had a couple of cells at the top of the notebook to slurp up the contents of the log files from disk and to pull the interesting data out of the DB, and then cells further down the page where I was messing about with the data trying to figure out what was going wrong.

Realised I needed something else out of the DB or logs? Tweak those cells and run the whole page again.

Just wanted to display the data differently? I could tweak the display cells, without having to reparse the log files (which was the slow bit - reading from the production dump I had loaded into a local instance of the DB was still pretty fast)

freegnu said...

Take a look at angularjs.org for javascript forms. AngularJS does the DOM updates for you by allowing directives in the HTML to handle 2 way cascading updates of the DOM as a function of the templating. The name for this behavior is Functional Reactive Programming.