Kalman and Bayesian Filters in Python
nbviewer.ipython.org
nbviewer.ipython.org
I struggle a lot with the choice of medium. In many senses Jupyter (IPython Notebook) is fanstastic in terms of workflow. With latex+external program+external data+external output it is hard to keep everything in sync. Here, it all happens in one place. And, of course, it should make it easier for the reader. "What happens if I change this constant?" (A normal question with scientific processing). Trivial to find out in the notebook; much more painful with a paper book.
OTOH, latex is mature technology, and I mean that in in the most positive way possible. I don't have to worry that version 1.7 is coming out tomorrow, and that \int will no longer display an integral sign. I would like to make the book much more interactive - go all 'Bret Victor' on it, but at what cost? I just tried to use Plotly, for example, but they don't support the current version of matplotlib; they are skipping a version for whatever reason. I can't expect readers to play the version war just to read a book. Even with core Python+scipy stack I have doomed myself to endless maintenance as new, breaking changes occur. That is not hypothetical; IPython changed the format of the notebooks, and there went a weekend of work. And, with all of that said, I think most are just reading the PDF version, or using the static nbviewer rendering, not running it locally on their machine. Heck, that is how I read the other IPython books - in nbviewer or PDF form. You know what you can do in PDF that you can't do in Jupyter? Search. I can ctrl+f in a PDF and search an entire book; in Jupyter, which has no concept of a 'book', I have to go from notebook to notebook.
Anyway, I welcome ideas on how to approach this. I come from a world of C++ where code I wrote in 1995 is still running today, and still compiles with the latest compilers. I'm sure I'm not approaching this problem optimally due to lack of experience in web based mediums. But I do fear, not unreasonably, that once I move on the book will become essentially inaccessible in just 10-20 years or so.
This seems to be the Python equivalent: https://github.com/minrk/jskernel
This still doesn't solve the problem that .ipynb format may not be stable, or that various python libs can introduce incompatibilities between versions but at least upgrading would be entirely under your control, and done at your pace.
Perhaps markdown with embedded code sections, or org-mode+org-babel would be a better long-term storage format, but I don't know if there are any tools that can round-trip to IPython notebooks, and you'd loose some of the interactivity.
In your Preface/Motivation section, you currently mention Kalman filters (4 times in the 1st 4 sentences) without explaining what it is and that seems to be the only intro to the topic.
This can be automated. If you'd like, ping me at stonecypher at gmail dot com, and I'll share the system I use, and show you how to work with it.
Or you can just see it here: https://github.com/StoneCypher/flocks.rocks/blob/master/gulp...
But I'm sort of at an inflection point. Is my book about using Python to do Kalman filtering, or is it about Kalman filtering, and it happens to use Python. So far it has largely been the latter, so I could see doing a Javascript version. But I think that puts my needs over the needs of the reader, which is probably wrong.
Despite that, I think EPUB has a much better chance at evolving into something like ipynb than TeX or PDF.
Much easier and more robust than pip:
I spent a bit of time supporting a reader. It is easy enough for me to get the versions, but the typical reader may not be au courant on the latest libraries in Python. For example, we have Python 3.4, and IPython 2.4. IPython 2.4 runs Python 3.4. That's confusing until you realize that the IPython version has nothing to do with the Python version.
I mean, none of this is unsurmountable, but it feels quite wrong to have to provide tech support to somebody that just wants to read a book.
I wonder if this can help: http://nuitka.net/pages/overview.html?
We would be happy to get more feedback on your writing process and your need, feel free to directly contact the team (IPython-dev at scipy.org, or issue on main IPython repo is fine).
As for concept of "book" or collection of notebook, we are working on that (integration with sphinx)
I really appreciate this author (Roger Labbe, yes?) as well as all the other authors of these online interactive ebooks or whatever they're called ("interabooks"?) for taking the time to prepare such comprehensive and informative material, purely to help others. Surely, preparing something like this could not have been easy or quick. The other day there was a fantastic one on digital signal processing, and today this.
Really, a big thanks to all you e-authors out there!
[1]: https://github.com/bobjansen/ipy_pep8
[2]: http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabil...
(see http://nbviewer.ipython.org/github/rlabbe/Kalman-and-Bayesia...)
I got a chuckle out of this. :) PS, I love the presentation thus far.