A gallery of interesting IPython Notebooks
github.com
github.com
I love iPython notebook, any data scientist, CS teacher or python developer should learn how to use them.
It seemed sort of cool, but I am not quite sure where to place it. The guy doing the talk didn't sound very experienced, and I think the majority of his plus points for using it I get from an IDE. I would do the same thing using a full blown web app, but that would take a lot longer.
Curious how others view it.
I did this by editing a python script in vim that did everything, and just %load it in ipython every time I changed it (only a few keystrokes - not instant but ok), but ipython's magic is putting all the matplotlib charts in a nice html package (you can also mix markdown/text/html), that I can then run nbconvert to html & print to pdf (with only a few hacks / frustration).
I suppose it's really an IDE, but I certainly don't use it as one. It really lends itself to being a solid, robust, napkin programming interface. Alternately: it's the turn-based tactics to LightTable's realtime strategy.
It is a mixed bag, largely because it is still in development. It is wonderful for authoring content - I can freely mix latex, code, output all together - you don't have to wonder how I generated that plot, the code and data is right there. OTOH, no section numbers, not quite WYSISYG, no way to hide code if you only want the output, and other minor things make me wonder if I should just use the tried and true latex workflow.
If I am just programming I prefer an IDE like spyder (I do mostly math-y type stuff).
A big annoyance is it's interaction with git. If you regenerate the output, git interprets that as a big file change, and the repository gets polluted with nonsense commits. There are workarounds, but none are perfect.
In general it is really great where you want to mix text, images, html, and python. So, great for presentations {audience: 'what if you change X==3', you: 'here you go'}, for paper writing, maybe less than great for full on book authorship or general programming.
But these are nitpicks. I love IPython Notebook. Even if I end up in the traditional Latex workflow at the end, it is so easy to keep code, text, and output all synced up with the notebook compared to the alternatives.
You can also run more than Python in it. IJulia supports running Julia in the notebook, for example.
This is probably one of the workarounds you're thinking of, but I clear the output and use a precommit hook to make sure I haven't missed any cells. It's a bit annoying, but it works. I'm waiting for the day VCS integration is built-in. For now, I enjoy having my notes and code together and versioned.
It would be nice to open a port on IPython and send code from the IDE to it for execution and visualization.
Sure, it isn't too different to using an IDE, but the UI owes more to mathematical environments such as Maple and Mathematica.
It is also has a built-in presentation display - can be very handy for sharing your analysis/code with other folks.
IPython is definitely not an IDE for me - I usually prototype my code as a gist, then either import or copy depending on what type of code I am writing. Working purely in IPython tends to lead me toward spaghetti code, but being more disciplined would probably make it work well.
I eventually downgraded to 1.2 because it was hampering my productivity. You'd be surprised how annoying removing the 'add cell above' button is, or not switching focus when a new cell is inserted. I don't care about showing my notebooks to the world. I want a convenient way to test out scripts, time functions and play with data visualisation.
Most annoying is the frankly poor change documentation and trying to figure out what's been deprecated or what happened to shortcuts. Many of the changes are subtle and you're simply expected to know where to look.
/Rant
As an aside, everything in IPython 2 is available from the keyboard and all shortcuts can be viewed by pressing the Help menu or 'h'. 'Add cell above' is now just 'a' (and below is 'b') when in command-mode. I expect that learning to use the new modal interface can be a bit of a hassle, but for me it turned out to ultimately be really awesome.
I suppose my biggest gripe is that I had to search for what changed (rather than simply what's new), given how much is different from a UI perspective it would have saved me a lot of time to skim a document.
It's probably awesome who want that kind of functionality, and it makes the IPython platform so much more powerful for content delivery, but I wish it had a simple "Code and execute" mode. I always wondered why people complained about extra keystrokes in applications and now I know why :P
esc to go to command mode zero-zero to bring up the kernel restart prompt return/enter to confirm
I definitely still get thrown by the command vs editing mode (mostly manifesting in new cells above or below the one I'm working on). But, I'm willing to accept the temporary handicap since everything has a shortcut now.
That's not to mention the other big convenience win of 2.0: directory navigation. You used to have to boot up a new server for each directory of notebooks you wanted to use. I have hundreds of notebooks...things were getting out of hand. Now you can run a single server, easily navigate your notebook directories from the browser, and write simple links between your notebooks.
I love this project.