My first book, A Programmer’s Introduction to Mathematics (PIM), was, in my view, a success. Self-publishing provided enough royalties to make it financially worthwhile. And I enjoyed writing it. This has made me consider writing more books. Maybe even become a full-time writer.^{1} In exploring this option, I’ve written down a few book ideas, which I’d like to share with you. I’ve already started drafting some of them, albeit erratically.
This book is a converse to my first book, which would aim to teach the principles of software engineering to the average mathematician.
The ideal reader of this book would have no trouble picking up a manual for a programming language like Python. I would expect they have written some basic programs—or even complex programs—related to their mathematical interests. However, they wouldn’t have experience in the craft of writing and maintaining software in a production environment. It would also provide a self-contained introduction to a number of “solved problems” in computer science that would be of interest to mathematicians. One example is relational algebra, which is the rich underpinning of most modern databases. Another example is hashing.
The book would have the same structure as PIM, but with the roles of math and programs switched. The main chapter would introduce a software concept. The application for the chapter would demonstrate it in an interesting mathematical setting. Or at least, a setting that would be useful for a working mathematician. For example, a chapter on parsers might include a program showing how to process LaTeX files. Interludes between “main” chapters would explain cultural motifs, such as the “zen of bash.” I.e., programs that do one thing and do them well, text as a universal data format, pipes, and simple shell scripting to build data pipelines.
I have mild concerns that the audience for this book would be much smaller than the audience for PIM. To me it still seems like a book worth writing.
This book would be a sort of catharsis for my angst about what math is really used in production. It would contain, as faithfully as I can muster, a collection of programs that implement mathematical ideas that are actually used in practical, production settings. The “chapters” would be short, ideally 2-3 pages. There would be no proofs, but rather brief explanations and plenty of references. Ideally, the programs could be copied and pasted into a production software system with only minor modifications.
Obviously this would only be amenable to ideas with compact implementations. I think this is acceptable, and the outcome would be that some big ideas are skipped due to their complexity. What remains would either be math that is more easily graspable by someone without a degree, or things with very short implementations and a feeling of mystery an awe around how a solution could be so compact.
I’m most excited about this book right now. In addition to packing as much “cool” into one book as I possibly can, it would double as an appetite-whetter, which may encourage people to buy my first book. So much so that I’ve already written four chapters.
I’m not so keen on the title, so if you have any suggestions I’m open ears. Maybe “Math in Production.”
For this book, the idea is to develop and showcase the most useful ideas from mathematical computer science research from its first century of existence.
These ideas would be too large to fit in a book like “Practical Math for Programmers”. Think of linear and integer-linear programming, public key encryption, error correcting codes, boosting (particularly, how it arose from computational learning theory), or differential privacy. Maybe I’ll even grow convinced enough to include a SAT solver.
It would heavily focus on the math, but because I can’t help myself, each chapter would end with an implementation. Either demonstrating what a minimal implementation would look like, or demonstrating the application with the math as a black box.
A sequel to PIM would cover topics left out of PIM like probability theory, formal logic, game theory, signal processing, differential equations, functional analysis, etc. I also wonder offhand to what extent I could make each of these topics into a series of “novellas,” maybe 100 pages each. This would be feasible because, unlike PIM, there is no strict linear dependence on the knowledge built up in each chapter.
Thought if you’ve been reading my tweets lately, you would be right to think this desire conflicts with my desire for a role that directly helps fight climate change. ↩