PyDev of the Week: Nicholas Tollervey

This week we welcome Nicholas Tollervey (@ntoll) as our PyDev of the Week. He is the author of the Python in Education booklet and the co-author of Learning jQuery Deferreds: Taming Callback Hell with Deferreds and Promises. He was one of the co-founders of the London Python Code Dojo. You should check out his website to see what he’s up to. Let’s spend some time learning more about our fellow Pythonista!

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

I’m a UK based freelance programmer.

I first learned to program as a kid using a BBC micro. Like many UK programmers of a certain age I go all misty-eyed when remembering the sense of excitement, adventure and possibilities that such a machine generated.

As a teenager I had music lessons and ended up getting my undergraduate degree from the Royal College of Music in London. It was a lot of fun: among other things, my composition tutor used to teach Andrew Lloyd Webber and my keyboard harmony teacher was the Queen’s personal organist (he was director of the Chapel Royal). I played professionally for a while before embarking on a career teaching music. I also went on to read for degrees in philosophy and then computing ~ my twenties were all about
teaching and learning cool stuff!

When I started a family I decided I also needed a career change and remembered back to the fun I’d had on the BBC micro so reverted back to programming. Now I spend a lot of my free time making music.

Why did you start using Python?

I was a senior .NET developer in an investment bank in London – I worked with the quants on a suite of in-house SCM related development tools. They wanted to be able to script some of my software so I looked into IronPython as a potential solution. As well as being impressed by Python-the-language, these investigations led me to the remarkably friendly UK Python community and I realised I was among friends. I took some months off to learn Python and re-started my programming career as a junior Python developer and have never looked back! That was six or seven years ago.

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

Due to the large amount of web-related programming I’ve done, JavaScript is my second language after Python. Obviously I know C# and VB (although they’re very rusty) and I’ve used Ruby, Java and Erlang at various points in my career. I tend to dip my toes into other languages because it’s interesting to get another perspective, although I always love returning to Python: it’s like putting on a favourite pair of comfortable slippers. 😉

Lisp is a beautiful language. I once wrote a version of the Lisp programming language (for fun) although that’ll never see the light of day. It proved to me how difficult it is to design a programming language and made me realise what an amazing job Guido and the core developers do with Python.

What projects are you working on now?

I proposed, coordinated and contributed to the PSF’s involvement with the new BBC micro:bit project. A micro:bit is a small programmable device aimed at 11 year-olds. A million of them have been given out to all the UK’s 11 and 12 year olds. The intention is to recreate the glory-days of the BBC micro (see above) and inspire a new generation of digital makers. My current focus is on making the fruits of these efforts sustainable.

Thanks to the amazing work of Damien George, the device runs MicroPython, it’s an open source project so anyone can contribute code.

I’ve also written many tools related to the project: Mu (a code editor for kids that’s written in Python), a child-friendly web-based Python editor for the website and various Python related utilities that make it easy to interact with the device. I’ve also been learning some C and C++ as I’ve made minor contributions to the MicroPython code that runs on the micro:bit. It’s fascinating and fun to be a complete beginner again.

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

I love working with asyncio. I’ve written a distributed hash table with it (as a fun educational exercise). I also firmly believe that Python 3 is what everyone should be using for new projects. 😉

I also love simplicity and, happily, there are many examples of simple libraries in the Python ecosystem.

I’m especially impressed with the PyGameZero, GPIOZero and NetworkZero libraries (with more “WhateverZero” libraries coming soon). The idea is to write a simple API above an existing-yet-powerful library to make it more accessible to beginner programmers. Once beginner programmers have the basic concepts worked out they can begin the process of pulling back the curtain and exploring the underlying library. Dan Pope (PyGameZero), Ben Nuttall (GPIOZero) and Tim Golden (NetworkZero) should be showered with praise for their extraordinary efforts (all three of them spent significant amounts of time collaborating with teachers to work out how best to design their library to appeal to new programmers).

Where do you see Python going as a programming language?

  • MicroPython is hugely important. It’s how Python becomes a part of the nascent Internet of Things. Damien George (the creator of MicroPython) has single-handedly delivered something amazing. Again, another target for a shower of praise.
  • Education, in all its forms, should be a primary focus of our community. It’s through teaching and learning that we get to interact with out future colleagues. Obviously, we want them to know Python and, more importantly, be exposed to the values espoused by the Python community. 😉

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

There’s a huge demand for Python developers here in the UK across all sectors. This situation doesn’t look like it’ll change for the foreseeable future (see my comment above about education).

Is there anything else you’d like to say?

The best of Python is in its community: I’d like to publicly say “thank you” to the many people who have helped me as I continue to learn and use this remarkable language.

Thanks for doing the interview!