2014: My Year In Review
I'm inspired by Katie Cunningham's blog post "looking back and looking forward" to review my year and the prospects for 2015.
Most of the code I wrote this year was open source Python for MongoDB: Bernie Hackett and I shipped PyMongo 2.7, and we began an overhaul of PyMongo to correct its regrettable designs, which we'll release in a couple months as PyMongo 3.0.
I made two versions of Motor, my non-blocking MongoDB driver for Tornado. Motor 0.2 was a near-rewrite of the driver, while Motor 0.3 was a more routine set of improvements.
I spent a large part of the year specifying logic in YAML and English instead of Python: I wrote the Server Discovery And Monitoring Spec to standardize how all MongoDB drivers talk to clusters of database servers.
For the first time, I added a feature to the Python standard library: I wrote a set of queue classes for asyncio, which shipped with Python 3.4 in March.
I spoke at some neat conferences: PyCon, OSCON, MongoDB World. I lost my nervousness and had fun, even on the big PyCon stage. The foremost conference in my affections this year, as always, was Open Source Bridge. It's put on by the Stumptown Syndicate, whose mission is to "create resilient, radically inclusive tech and maker communities that empower positive change." The generosity of that statement is really put into practice at the conference.
To my surprise, I had a good time mentoring three young coders. In the year previous, I'd done all I could to shirk my responsibilities as a mentor, and the result was predictable: I failed at mentorship and everyone was mad at me. This year I turned it around. I guided a pair of interns as they contributed to the high-performance Monary driver. They weren't just successful at improving Monary—they got a talk into a local Python conference, and decided to work at MongoDB full time when they graduate. When my interns went back to school I was assigned a talented new hire to continue the project. She was just as productive as my interns had been, and presented her work to a data science conference.
I had not expected to feel so fulfilled by these junior coders' achievements. I've had to update how I see myself: what I care about, what my purpose is. For years I've resisted roles that take time from my own coding, but now I've tasted the fruit of leadership. I'm going to speak about this at PyTennessee in February and write about it soon.
My Zen practice is developing similarly: my teacher Enkyo Roshi asked me to be the Village Zendo's shuso, the "practice leader", this winter. So far, my duties have been mainly logistical, and not too strenuous. But over the next three months I'll help set the agenda for our temple, and in March I'll give my first dharma talk. The group will test me in dharma combat. If I pass, I'll be a senior student in our sangha and a regular speaker on Zen. The same way that my role as an individual coder is ending at work, my self-focused practice is over, replaced by practicing for the sake of my community.
With all this excitement, I had to put some pursuits on hold. I took just a handful of good photos this year, and read hardly any good books. My one trip abroad was so abbreviated that I flew all the way to Taipei and only spent one day sightseeing.
Writing and Speaking
What's 2015 about? I'm already committed to a frightening volume of writing and speaking: I'm giving two talks at PyCon and I hope to speak at MongoDB World and Open Source Bridge again. I also have the intimidating assignment of a chapter in the Architecture of Open Source Applications series. Fortunately, I have a very smart coauthor.
I'll keep writing open source Python at MongoDB. We're going to release an overhauled PyMongo and say goodbye to five years of accumulated cruft. The current PyMongo is a very high-quality codebase, but the anguish of maintaining that level of quality despite all its baggage is not something I'll miss. Motor, meanwhile, will gain superpowers: it won't just support Tornado, but also asyncio, and perhaps even Twisted. If I achieve this Python async trifecta, expect me to brag about it at length.
I want to make a big contribution to a non-MongoDB Python package this year. Much like I added queues to asyncio in 2014, I'm going to add locks and queues to Tornado. The synchronization primitives currently living in my Toro package will become part of Tornado.
Despite all these Python commitments, 2015 will be the year I become bilingual. The plan is, I'm going to become sufficiently expert in C that I can join MongoDB's C Driver team, perhaps even lead it. Like my other plans, this one is intimidating. I'll need a great mentor, and I'm lucky to have one: our current C driver developer Jason Carey has agreed to show me the ropes. Wish me luck.
I have a great Zen mentor too: Enkyo Roshi has for some reason decided that I should become a senior Zen student this year, and I have to trust she knows what she's doing. If all goes well, I'll start giving dharma talks at the Village Zendo and at Sing Sing this year. I have a lot of opinions about Zen, but that won't amount to much when it comes time to speak. So please, wish me luck with this, too.