News for hackers. Stuff that matters.
Re:First impressions of the IPython Notebook by jchendy on Friday September 06, 2013 @12:05PM (#6341102)
What type of work would you do with that? Are there any libraries available for real data analysis with JavaScript?
Re:First impressions of the IPython Notebook by mistercow on Tuesday September 10, 2013 @11:53AM (#6360778)
There are a few rather immature ones, but you can do a lot more with a notebook than just data analysis.

I often need to do calculations involving many parameters, and there are three important considerations I usually have to deal with:

1. I'm probably going to want to tweak the parameters.

2. The calculation is going to be difficult to express as a succinct equation.

3. I may want to look back over the result later.

Using an ordinary calculator is cumbersome because of 1 and 2, and doesn't satisfy 3. AN alternative is to use an ordinary interactive shell to put everything together, which helps with 2, but still makes for a lot of work on 1 and doesn't fix 3.

Writing a whole program to do the calculation is an improvement because it fixes 1 and 2, and it helps with 3 because I can leave myself lots of comments. I've found literate CoffeeScript to be very effective here (you can even turn it into a nice webpage to share your math with others), but there are still some drawbacks. The results are not interleaved with the code, so when I look back over it, it's not easy to check my work and debug. The workflow also leaves a bit to be desired. You can't, for example, quickly play with a small snippet as you're working through your thoughts.

A notebook, on the other hand, elegantly handles all of these considerations. I can use markdown to create a nice article for my future self explaining all of my calculations, have comments, code, and results all next to each other, and tweak parameters on the fly.

Yet I still find myself using literate CoffeeScript instead. And the main reason for that is that whenever I use Python, I constantly wish that I was using CoffeeScript instead.