2014 was a crazy year, mostly because I took on two very large projects either of which would have made for a pretty crazy year.
1. The Book
I am writing a book. (Yes, another one.) Actually, the first draft is done, and I am right now revising it based on the final set of technical reviews. This one has a real publisher and everything, which means (I hope) that for a change I won't have to sell it out of the trunk of my car in the parking lots at gun shows.
The book will (likely) be called Data Science from Scratch: First Principles with Python, which is a pretty good description of what the book is about. It covers everything from statistics to probability to linear algebra to regression to machine learning, all from first principles. That means no numpy, no scipy, no scikit-learn, no nothing. Every time we need an algorithm, we implement the algorithm.
As a recovering mathematician1, I have a natural inclination toward "from scratch" approaches2, which was only complicated by the fact that I didn't actually know how to do most of the things in the book "from scratch", which meant that I had to learn them well enough not only to use them but to teach them.
There is an old joke (or possibly I made it up and it’s a new joke, I'm not sure):
"How I hate writing!"
"I thought you were a writer."
"Indeed, I think you have to be a writer to hate writing as much as I do."
I am here to tell you that this joke is completely true. (I'm also here to tell you that as soon as this book is done I'll probably start on the next one.)
As the book gets closer to publication I will have plenty more to say about it. To that end I've "rebooted" my website / blog and hope to use it more frequently going forward.
In early 2014 I got a call from a Google recruiter who wanted to know whether I'd like to interview for an engineering job at Google. Despite the fact that I was in no shape to pass a Google interview, I eventually agreed and spent two months worth of free time practicing whiteboard coding and teaching myself computer science. (Two months worth of free time that I should really have spent working on my book, or possibly paying attention to my family.)
Interestingly, writing a [good technical] book requires you to put a lot of thought into how to most clearly communicate ideas through code, which also makes for a valuable technical interview skill, and I think I probably interviewed much better on account of the writing I'd done at that point.
I probably have a lot more to say about the interview process at some point in the future, but the moral of the story is that I got the job and started at Google in late August, at which point I had to frantically learn both C++3 and the Google way of writing software, all the while struggling to finish the book.
My hope is that 2015 will be slightly less crazy, but probably it won't be.
1. You never actually recover from mathematics.
2. I once took a math course where on the first day the professor stated how pleased he was that we'd proven a certain theorem the previous semester, since that meant we would be able to [in a "moral" sense] use it in his class.
3. My resume did have C++ listed on it, but under the "programming languages that I have heard of" section.