PyDev of the Week: Harry Percival

This week we welcome Harry Percival (@hjwp) as our PyDev of the Week! Harry is the author of Test-Driven Development with Python. You can visit his website to learn more about the book and even read it for free! Harry is also a programmer at PythonAnywhere which allows you to host, run and code Python in the cloud. Let’s take a few moments to learn more about our fellow Pythoneer!


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

Although my childhood started out on a promisingly nerdy path — programming in Basic on French Thomson TO-7s whose keys go “boop” when you press them — things went rather wrong and I ended up as a management consultant, which left me with an enduring fondness for spreadsheets and dislike for expressions like “leverage”, “utilize” (just say use!) and “going forwards”.

I did my CS degree by distance learning while living in Italy — because my wife is an opera singer, and she wanted to learn Italian. We lived by the beach. It was rough. Actually that’s the reason for my second job: I moonlight as captions operator for Give me half a chance and I’ll bend your ear about using reveal.js and websockets to stream opera captions to mobile devices. Also I just had a baby.

Why did you start using Python?

My university course, as well as teaching me to watch out for incompatibility issues between Netscape Navigator and Internet Explorer (oh yes, bang up to date, this was 5 years ago), also gave me a valuable grounding in PHP and Java, so you can imagine I was glad when I got my first contracting gig, and the hosting provider told me they recommended Python and Django. So I taught myself the basics of those one Christmas, and never looked back!

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

As a onetime spreadsheet hacker I’ve done my share of VBA, but I’m also a certified Lotus Notes professional, yes indeed! There’ll always be a place in my heart for LotusScript. You know I actually (in retrospect, exceedingly foolishly) created and released a Lotus Notes email that would automatically forward itself on opening, to people from the user’s address book — prior art to the Melissa virus, if I do say so myself. This was back on an internship at IBM back in 1998, and I am *very* glad I never got in more trouble for that!

From my degree I remember Prolog with fondness and enduring curiosity (did you know there’s still a Prolog community out there? There’s a Prolog web framework!).
More recently I’ve dabbled in Clojure, which feels like it definitely encourages a different way of thinking about coding, I definitely recommend it.

What projects are you working on now?

PythonAnywhere is the main thing, there’s rewriting my wife’s website with Wagtail CMS, and preparing the second edition of my book, with hints of passwordless auth and rest-api-ajax testing stuff. That’s got to be enough, surely!

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

I am reminded of the time I spent days writing a text reflowing function to wrap text at 80 characters, only to discover textwrap.wrap. And that’s despite using textwrap.dedent on an almost daily basis at work. It somehow didn’t occur to me that a module called textwrap might contain, oh, I don’t know, a tool to wrap text. So, always look to the standard library first folks!

Other than that, I’ve got to give a shout out to @tartley’s rerun, for running your unit tests automatically on file change. Could do with an inotify integration, if anyone’s looking for a little project…

Where do you see Python going as a programming language?

It’s been great to see the momentum building to a tipping point for Python 3 over the last few years. It didn’t seem it would ever happen but now it really feels like we’re there.

One ominous thing on the horizon is the whole type hinting thing — I am sometimes scared that it’s going to make the language harder to understand for beginners, but when I take a step back, I think I can trust the Python community to do the right thing here. I imagine conventions and customs will evolve in such a way that type hints will stay fairly well hidden from beginners, and Python’s learning curve will stay smooth.

The other big thing I think will have interesting effects is Python’s increasing adoption as the default teaching language. Look at US and UK efforts to teach coding in high schools and elementary schools! We’re going to move from a world where Python was a bit of a wacky, niche, choice, to it being the standard language that everyone learned at school, and I wonder how that’ll trickle down through the culture of Python…

Is there anything else you’d like to say?

Being British, it’s hard for me to say words like “community” with a straight face, but, honestly, Python really taught me the meaning of the term. If you’re a Python programmer, don’t miss out on the chance to get more involved in the community — find a local meetup, join the mailing lists, and come to the conferences, you’ll love it.

I also have to express my love and admiration for DjangoGirls and all the other diversity efforts, pyladies, transcode, et al. One of the main downsides of the community, as it is, is that it’s so overwhelmingly male. Diversity efforts, they’re great for all the usual reasons about increasing the talent pool and widening our perspective and ability to deal with problems, but, honestly, on a personal level, it’s just so nice to be able to get away from having to be so blokey all the time — we’re all so invested in being smart and being right and it makes us argumentative, and it’s just such a relief to sometimes be away from that and maybe have environments which encourage a different kind of interaction… emoji and all! And anyone that knows me knows I need all the help I can get in toning down my argumentative side 🙂

Thanks for doing the interview!