I had a nice discussion with Tom Ronadeau last weekend when he was in DC for an SDR conference. I mentioned a project some of you may be aware of called the
IPython notebook. If you are familiar with IPython - the enhanced python shell, the IPython HTML Notebook is a locally-hosted web interface to an IPython kernel. That web interface looks and feels a lot like Mathematica. But whereas I never enjoyed Mathematica, I really like the IPython Notebook. It allows you to cellularize your code (Matlab has a similar feature) and so iteratively modify and run code in a non-linear fashion that makes hacking (the constructive kind) and debugging really refreshing. And you have all the introspective sugar and magic (functions) that come with IPython.
This notebook doesn't show off any of the fancier features of the notebook, but it's a dirt-simple GR example and hopefully illustrates the tool.
To install the latest stable release of the IPython Notebook on Ubuntu, pip is your friend:
sudo pip install ipython
or for a slightly more out-of-date version if you are running at least 12.0:
sudo apt-get install ipython-notebook
Open a terminal and start the notebook server by running:
ipython notebook --pylab inline
A new tab should open in your browser and you can import the example notebook. Note that the notebook server currently isn't very filesystem saavy, so it will save all your notebooks in whatever directory you started the notebook server from.
A few more links:
For great (but mostly long) videos about the notebook, search YouTube for "NextDayVideo" and ipython notebook. Anything by
Fernando Perez is perfect. Also
Wes McKinney and his equally awesome
pandas project for Python data analysis.
TL ; DR
The IPython Notebook was developed for scientific computing. It actually has some really cool parallel processing stuff built right into it, like the ability to start and control a local or remote cluster. But it's real value is in the concept of reproducible research. The idea is that with one file or project, any individual should be able to reproduce every graph in a scientific research paper or textbook. Some people are even writing their textbooks in the IPyNB.
There is support for LaTex and symbolic rendering. You can run shell commands pythonically (just like in the IPython shell). You can even run other interpreters like R using magic functions.
I can imagine some neat SDR tutorials laid out in the IPyNB - e.g. building a filter, then plotting the filter. Generating a signal, then plotting it. Generating noise and adding that, then filtering and showing the final result. The end product is easy to distribute as a single file and allows some stress-free non-linear tinkering.
Happy hacking.