

A gallery of interesting IPython Notebooks - sctb
https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks/

======
mwcremer
In case you, like me, did not know what an IPython Notebook is:
[http://ipython.org/notebook.html](http://ipython.org/notebook.html)

~~~
hnriot
In that case, why would you care for a gallery of notebooks?

I love iPython notebook, any data scientist, CS teacher or python developer
should learn how to use them.

------
collyw
I saw a talk about IPython notebook the other day. How do you guys view it? As
an IDE with an output format? Or a web browser with interactive interpreter?

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.

~~~
RogerL
I'm using it to write a book right now.

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.

~~~
alecdbrooks
>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.

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.

~~~
RogerL
I should have said "a tiny annoyance", not "a big annoyance". The fix is, of
course, to clear output.

------
joshvm
Rather disappointed with IPython 2.0. They appear to have taken steps back in
usability in the push to make notebooks wizzy and interactive.

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

~~~
PieSquared
Just as a counter point, I was a huge fan of the changes in version two.
"Wizzy and interactive" can be incredibly important for a wide range of
applications. Half the reason interpreters are wonderful is that they
drastically reduce the "idea to running" time, and having interactive widgets
can do even more for that. (Not to mention things like animations and UIs,
which are just useful sometimes.) Similarly, notebooks are a _great_ way for
me to publish content, and a very large portion of the things I write are
written as IPython notebooks.

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.

~~~
joshvm
I think it's mostly getting used to the fact there's an edit mode and a browse
mode. To me it seems that if you create a cell, 99% of the time you want to
jump into it and start typing code - not adding another cell or selecting
whether it's in Markdown/Python/Raw format or whatever.

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

------
manos_p
Great collection, I especially like the machine learning/data science
notebooks.

