This week we have Steve Holden (@holdenweb) joining us as our PyDev of the Week. He has been a Python advocate for a long time and is a former chairman of the Python Software Foundation. Let’s see what he has to say. You can read Steve’s blogs here and here. Steve is also the author/teacher of O’Reilly’s Intermediate Python: Practical Techniques for Deeper Skill Development where you can actually get a 50% discount on any O’Reilly eBook or video by using the following code: AUTHD (good until the end of 2014).
Can you tell us a little about yourself (hobbies, education, etc):
Although I’ve lived in the States for 20 years I grew up in England. When I was a small kid, I used to play near the railway tracks. People used to dump all kinds of stuff, which I would take home and pull to bits. I’d go to “jumble sales” and buy old clocks and stuff like that, take them to bits and try to put them back together again. Usually I’d fail (have you ever tried to re-fit the main spring of a mechanical clock without the necessary tools?) but each time I tried I’d learn more about how things worked. Looking back, being unafraid of failure was an amazing way to learn. Nowadays, of course, it’s much harder to do that kind of thing – parents are terrified of letting their children interact with the real world.
My career isn’t exactly typical. I left school at 15 (back in the days when you could in the UK) and started work as a trainee production engineer in a TV factory, and got to learn how TVs were made by a process called “sitting with Nellie” – literally, sitting next to the people who were doing the job, watching how they did it, and failing (then eventually succeeding) in doing it myself.
There were some interesting moments – I got a splash of ferric chloride in my eye when I was refilling the printed-circuit board etching machine, and cut my finger opening a drum of sodium cyanide to replenish the vats used to electroplate steel TV chassis with zinc. But I learned a lot about what it takes to build electronic equipment, and also that most people involved in building televisions weren’t there because building televisions was their life’s passion.
In fact, production engineering wasn’t my choice, but my employers. I was actually much more interested in electronic design, but it turned out that those trainee jobs were reserved for the sons of people who already worked in the company. A practical lesson on the way the world worked. I got a further lesson when I told the plating shop manager to fuck off. When I was carpeted by my boss’s boss and told him that the plating shop manager had told me the same thing I was informed that was the way the world worked. So I grew up pretty quickly.
My growth was further accelerated by becoming a father at the age of nineteen. My son’s mother’s parents weren’t prepared to even allow me to associate with her unless we were married (times were different in 1970), so I got married because I wanted to be a good husband and a father to my son.
By then I had joined the computing profession. My experience at the factory had led me to become disillusioned with electronics, so I applied for a job with Bradford University’s Computing Laboratory. Although they’d been advertising for a keypunch operator the director, Jimmy Ord-Smith, told me that he felt I was in danger of going off the rails, and that I should spend six months learning to operate and program computers. The revelation to me was that numbers could be used to represent anything. Although I didn’t realize it at the time, this was my introduction to information theory.
It was also my entry to the computing profession. In those days you could change jobs every six months, doubling your salary each time. I did that a number of times, but money has never been my principal motivator. Ever since, I’ve felt amazingly lucky to have been able (unlike the people who built the TVs) to earn a living doing something I’m passionately fond of.
In 1972 I realized that without a degree my career choices were going to be limited. I didn’t even have the minimum qualifications to enter university, so I studied mathematics in the evenings and the following year managed to scrape through the entrance exams and was admitted to the Honors program in Computational Science. Three years later I graduated with first-class honors, and found that none of the commercial employers I applied to were prepared to offer me anything extra for the programming experience I had accumulated before going to university. Another practical lesson in the way the world worked.
Why did you start using Python?
In 1974 I’d read the early papers about the SmallTalk language coming out of Alan Kay’s research group at Xerox PARC and become enchanted with the idea of object-oriented programming. In 1980 I became a lecturer in Computer Science at Manchester University, and supervised a research student implementing Smalltalk in the UK for the very first time. This convinced me that Smalltalk didn’t “fit my brain,” and so I pretty much gave up on object-oriented programming for quite a while.
Fast-forward to 1995. I’d moved to the States as VP of operations for a small web company running about 300 domains on co-located servers (not a good choice for me – I am temperamentally unsuited to that kind of work). While browsing a bookstore I came across Learning Python by David Ascher and Mark Lutz, and realized I’d found a language that seemed to me to be a natural way of expressing object-oriented algorithms, and after a month decided that I would spend the next twenty years becoming a significant player in the Python ecosystem and promoting Python as the best route towards productive programming.
What other programming languages do you know and which is your favorite?
Oh, wow. I started programming in Algol 60, then transitioned to PLAN, the assembly language of the ICT 1900 series (the first computer I ever got to use). Next came PL/1, then FORTRAN II, IBM 1130 assembly language, then IBM series 360 assemble language. When I started university the teaching language was Algol 60, then came KAL4, the assembly language of a stack-based computer called the KDF9. I also learned Algol 68 (a very advanced language for its time), Logo as part of my artificial intelligence studies, SNOBOL4 (a pattern-matching language), LISP and a variety of others.
Since then I’ve picked up languages as I’ve needed to, and the last time I counted I’d used over 40 (most of which are now forgotten) but Python remains my favorite.
What projects are you working on now?
At present I’m working with Anna Ravenscroft and Alex Martelli to produce the third edition of “A Nutshell Guide to Python,” and with Jessica McKellar on an “Advanced Python” video series, both for O’Reilly.
I’m also working on a one-day “Enhance Your Python Skills” class that I plan to pilot in the UK in early December.
Since reading Wes McKinney’s book on Python for Data Analysis I’ve become very interested in data science, and I’m working hard to learn Pandas with a view to creating teaching materials for people whose primary skills aren’t in programming at all – I think that’s a huge potential market for Python that so far has only just begun to be tapped.
Which Python libraries are your favorite (core or 3rd party)?
Although I haven’t yet used it as much as I’d like I really like Kenneth Reitz’s requests library. Kenneth seems to have an inherent understanding of how to produce usable APIs, and requests makes it a whole load easier to write web client software.
Pandas is brilliant, as I mentioned above. I’m also a big fan of psycopg2, though it’s time that the DB API got a serious update that didn’t take us into the realms of ORMs.
I am also a big fan of the IPython Notebook, which has probably done more than any other utility to demonstrate the value to Python to non-programmers involved in serious computer-based research efforts. While most people use the Notebook as an application it is based on some great libraries that could see wider use.
Is there anything else you’d like to say?
It seems to me that I’ve probably said far too much already, but I would like to encourage everyone who’s involved with Python to step back from computing from time to time and look at the real problems that are facing the whole human race.
Anyone who reads my tweet stream (@holdenweb) or my Facebook page (holdenweb again) will already know that I am deeply convinced that political and human problems cannot be solved by purely technological means. Programmers are a privileged group, generally far better rewarded than most, and I feel we should use our intelligence and communication skills to solve the real problems facing the world today. That’s why I’ve spent so much time promoting and supporting open source.
It seems obscene to me that there should be such huge concentrations of wealth in a world where people in some places still have to walk miles every day to secure an inadequate supply of poor-quality drinking water. Ultimately this comes down to questions of human values, and I believe the privileged should understand that they have a responsibility to help extend that privilege to others rather than castigating them for being insufficiently motivated and hard-working.
Warren Buffet and Bill Gates are setting a good example, but the kind of actions they are taking need to extend to a much wider cross-section of the population. By considering only our own needs, and taking more than our fair share of the world’s resources, we will condemn everyone (even the richest one percent) to terminal decline.