Think X, Y and Z: What's in the pipeline?
Greetings from PyCon 2014 in Montreal! I did a book signing yesterday at the O'Reilly Media booth. I had the pleasure of working side by side with David Beazley, who was signing copies of The Python Cookbook, now updated for Python 3 and, I assume, including all of the perverse things Prof. Beazley does with Python generators.
Normally O'Reilly provides 25 copies of the book for signing, but due to a mix up, they brought extra copies of all of my books, so I ended up signing about 50 books. That was fun, but tiring.
Several people asked me what I am working on now, so I thought I would answer here:
1) This semester I am revising Think Stats and using it to teach Data Science at Olin College. Think Stats was the first book in the Think X series to get published. There are still many parts I am proud of, but a few parts that make me cringe. So I am fixing some errors and adding new sections on multiple linear regression, logistic regression, and survival analysis. The revised edition should be done in June 2014. I will post my draft, real soon, at thinkstats2.com.
2) I am also teaching Software Systems this semester, a class that covers system-level programming in C along with topics in operating systems, networks, databases, and embedded systems. We are using Head First C to learn the language, and I am writing Think OS to present the OS topics. The current (very rough) draft is at think-os.com. I am planning to incorporate some material from The Little Book of Semaphores. Then I will finish it up this summer.
3) Next semester I am teaching two half-semester classes: Bayesian statistics during the first half, based on Think Bayes; and digital signal processing during the second half. I am taking a computational approach to DSP (surprise!), with emphasis on applications like sound and image processing. The goal is for students to understand spectral analysis using FFT and to wrap their heads around time-domain and frequency-domain representations of time series data. Working with sound takes advantage of human hearing, which is a pretty good spectral analysis system. Applications will include pitch tracking as in Rock Band, and maybe we will reimplement Auto-Tune.
I have drafted a few chapters and posted them at think-dsp.com. I'll be working on it over the summer, then the students will work with it in the fall. If it all goes well, I'll revise it in January 2015, or maybe that summer.
One open question is what environment I will develop the book in. My usual work environment is LaTeX for the book, with Makefiles that generate PDF, HTML, and DocBook. I write code in emacs and run it on the Linux command line. So, that's a pretty old school toolkit.
For a long time I've been thinking about switching to IPython, which would allow me to combine text and code examples, and give users the ability to run the code while reading.
But two things have kept me from making the leap:
a) I like editing scripts, and I hate notebooks. I find the interface awkward, and I don't want to keep track of which cells have to execute when I make a change.
b) I have been paralyzed by the number of options for distributing the results. For each of my books I have a Python module that contains my library code, so I need to distribute the module along with the notebook. Notebook viewers like nbviewer would not work for me (I think). At the other extreme, I could package my development in a Virtual Machine and let readers run my VM. But that seems like overkill, and many of my readers and not comfortable with virtual machines.
But I just listened to Fernando Perez's keynote at PyCon, where he talked about his work on IPython. I grabbed him after the talk and he was very helpful; in particular, he suggested the option of using Wakari Cloud. Continuum Analytics, which runs Wakari, is a PyCon sponsor, so I will try to talk to them later today (and find out whether I am misunderstanding what they do).
4) The other class I am teaching in the fall is Modeling and Simulation, which I helped develop, along with my colleagues John Geddes and Mark Somerville, about six years ago. For the last few years we've been using my book, Physical Modeling in MATLAB.
The book presents the computational part of the class, but doesn't include all of the other material, especially the modeling part of Modeling and Simulation! Prof. Somerville has drafted additional chapters to present that material, and Prof. Geddes and I have talked about expanding some of the math topics.
This summer the three of us are hoping to draft a major revision of the book. We'll try it out in the fall, and then finish it off in January.
The current version of the book uses MATLAB, but the features we use are also available in Python with SciPy. So at some point we might switch the class and the book over to Python.
-----
That's what's in the pipeline! I'm not sure I will actually be able to finish four books in the next year, so this schedule might be "aspirational" (that's Olin-speak for things that might not be completely realistic).
Let me know what you think. Which ones should I work on first?