PyDev of the Week: David Goodger

This week we welcome David Goodger as our PyDev of the Week! David is the original author of reStructuredText and Docutils. He has an old school website where you can get an idea of what he’s been up to. Let’s take some time to get to know our fellow Pythonista!


Can you tell us a little about yourself (hobbies, education, etc):

In the Python world I’m best known as the creator of Docutils and reStructuredText. In addition, I have been active in the PSF, including a stint on the Board of Directors and chairing the PyCon 2008 and 2009 conferences in Chicago. I’m still a PEP (Python Enhancement Proposals) editor and I even once held the commit bit for the Python source tree, although I’ve let that lapse.

A proud Canadian, I grew up in the Montreal area. I graduated from McGill University in Montreal with a BSc in Computer Science. After graduating, I moved to Japan to teach English on the Japan Exchange Teaching (JET) programme. Did that for 2½ years, during which time I met and then married my wife, and I found work in my field in Japan. I worked for 2 years as a systems administrator at the Canadian Embassy in Tokyo (local hire, not in the foreign service or as a diplomat!), then another 2½ years at a small company doing document processing. Back in Canada, we lived in Kitchener, Ontario and in a suburb of Montreal. We’ve been living in Minnesota, USA (in a first-ring suburb north of the Twin Cities) for almost 3 years now, and I’m working as a systems engineer. We have two children (a 19 year old son and a 17 year old daughter) and an adopted Border Collie mix dog.

Hobbies: I love cycling. I rode a week-long, 500 mile bike tour this past summer in Minnesota from the headwaters of the Mississippi to the Iowa border, along the Mississippi River Trail, on my Vision Recumbent bike. I play poker recreationally, about once a week, in home games as part of the Minneapolis Rounders (where I’m known as “Canadian Dave”). I even host a cash game every month. My board game of choice is Go (which is how I first became interested in the Japanese language and culture), although I haven’t played much lately. And I love to read and watch movies in my down time.

Why did you start using Python?

I was working at a small company in Tokyo, developing systems to render documents in East Asian languages (Japanese, Chinese, Korean) and help with with translation. We used SGML, the predecessor of XML. I was working intensively with the Scheme and Perl languages in that job. My single greatest achievement there was a system that parsed 2-D ASCII art syntax diagrams into tree structures, for later translation and rendering using TeX. That project topped out at over 10,000 lines of Perl (before Perl had any object oriented features; I had to use dispatch tables), and although I wrote it using the best structured programming discipline, we’re talking Perl here, and it was an unholy mess. That project and that job nearly turned me off programming for good.

One of the developers I was working with in Tokyo had discovered Python, and it looked interesting, so I made a mental note to follow up in future. I felt burned out when I moved back to Canada with my wife and our newborn son, took a sabbatical, and bought the first edition of Mark Lutz’s “Programming Python” book from O’Reilly and taught myself the language. It was like a breath of fresh air. Without Python, I may have ended up in a different field. I loved how simple, expressive, and maintainable Python is. Learning about Python’s docstrings, I searched for auto-documentation systems and ended up creating reStructuredText and Docutils. The rest is, literally, history. Docutils is a combined 100,000 lines of code & tests & docs (not all written by me!), and I could never have completed such an ambitious project had it not been for Python’s qualities.

What other programming languages do you know and which is your favorite?

To some degree I know or knew Basic, various assembly languages, Fortran, Pascal, C, Lisp (Common & Emacs), Scheme, Perl, AppleScript, JavaScript, various shell languages, and others. I can still hack in several of them, but Python is my language of choice and is definitely my favorite. Nothing else comes close.

Over time I kept graduating towards higher- and higher-level languages, and Python is the epitome. When I discovered Python, I fell in love because it takes so much of the burden off us programmers. It is the most bookkeeping- and housework-free programming language I know, combined with style and beauty. For me, Python is the shortest path from raw idea to working, debugged, and maintainable code. Python really fits my brain.

What projects are you working on now?

I still keep an eye on the Docutils project, but I’m not doing much there now. I see my role there as more of a gatekeeper: I get to say “no”. I keep on intending to go back and fix some old bugs and add some long-desired features, but life keeps getting in the way. I’m unforgivably late in dealing with several issues. One of these days somebody ought to perform a coup d’état.

My fun side project is Polyform Puzzler, which is a solver of puzzles like pentominoes, popular in the recreational mathematics world. Working on that project is like doodling or arts & crafts: just good for the soul. But I have advanced the state of knowledge of a couple of puzzle types, triangular-grid and hexagonal-grid polysticks, which while certainly invented before me hadn’t been explored much. My names for them (“polytrigs” and “polytwigs”) may even stick.

Which Python libraries are your favorite (core or 3rd party)?

I use the standard library a lot. There are so many gems there! I find the collections, itertools, and datetime libraries particularly useful.

There are lots of great third-party libraries out there that make dealing with complex issues easy. For example, the Requests library is a joy to use. Another example: SQLalchemy. A quick web search almost always results in a library that at least helps out.

Where do you see Python going as a programming language?

I haven’t been following Python-Dev lately, but I trust the community (and Guido’s benevolent guiding hand) to develop the language in useful ways. In my opinion, they haven’t steered us wrong yet. I even got used to the “@” decorator syntax and the “yield” for generators thing.

What is your take on the current market for Python programmers?

It seems that Python programmers are in demand (I keep getting lots of recruiting email messages!), and I don’t see that changing.

I suspect that given Python’s qualities, it may be easier to be happy as a Pythonista than it is for programmers using other languages. I know that in my case, other languages just give me stress & frustration. So maybe once we find a good work situation, Pythonistas tend to stay put and not change jobs so much?

Is there anything else you’d like to say?

Keep up the good work! Your wxPython articles (and new book!) and PyDev of the Week articles are fun reading and a great resource.

Thanks for doing the interview!