PyDev of the Week: Ben Nuttall

This week we welcome Ben Nuttall (@ben_nuttall) as our PyDev of the Week. Ben is a Raspberry Pi Community Manager and is the creator of GPIO Zero, which is a simple interface to the GPIO components on the Raspberry Pi. You should also check out his website to see what Ben is up to. Let’s take a few moments to get to know Ben better!

ben-nuttall-firstbuild (copy)

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

As well as programming I like whitewater kayaking, and a mix of other outdoor pursuits. Also I recently got into photography (and have lots to learn).

I studied Mathematics and Computing at university, and then worked in the software industry for a couple of years. Around this time I was getting more involved in my local tech community, attending user groups and conferences. I set up a community event for Raspberry Pi (called Raspberry Jam), and did some events with schools to help teachers them use Raspberry Pi in their classrooms, and to engage kids in digital making.

Through community work like this I ended up getting hired by the Raspberry Pi Foundation to do development and outreach. We formed an Education team and started running teacher training programmes and other workshops. The Foundation’s getting bigger now as we try to reach more people around the world through our education programmes, and make more of an impact. I now work as Raspberry Pi Community Manager, supporting Jams and other community efforts including some great open source projects.

Why did you start using Python?

A friend showed me Python in 2011, he demonstrated some simple examples and I was impressed by the straightforward nature of the syntax. At the time I’d used a lot of PHP, Java and Matlab, so I was used to more verbose syntax. Python just seemed like a brilliant general purpose language. It soon because my language of choice for simple tasks, and through doing those, and working through, I soon picked up a good all-round skill set.

When the Raspberry Pi came along it became much more relevant to me as I learned to do physical computing projects with the Pi’s GPIO pins. I learned a lot by thinking up project ideas for the learning resources we put together, and by building projects from specification for other members of the team.

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

I’ve a decent grasp of PHP, Ruby and JavaScript, Java and C#. I guess Ruby would be my language of choice if Python didn’t exist – it’s just as nice to use in many ways, just a different style. I quite like the look of Julia, but I have limited experience using it.

What projects are you working on now?

At the end of last year I started a new library for controlling GPIO components on Raspberry Pi. The previous de-facto library for doing that was very low-level, just allowing you to turn individual pins high and low, and to read the state of pins, and required a lot of boilerplate code to get started, which made it hard to teach with. I created GPIO Zero, named in reference to PyGame Zero (a zero boilerplate wrapper for PyGame). The project developed really quickly and we released v1.0 within a couple of months. It’s going really well and I’ve had some great feedback. I’ve had a lot of help from Dave Jones, who maintains the picamera library for Raspberry Pi.

We currently have two Raspberry Pis on the International Space Station, running Python programs written by school kids in the UK. It’s part of an outreach programme called Astro Pi, between Raspberry Pi and the UK Space Agency with British ESA Astronaut Tim Peake.

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

I love the power of itertools, there are some very handy functions in there I use regularly. I really like Daniel Pope’s PyGame Zero – it’s achieved a lot by removing boilerplate and making it straightforward to make progress in creating a game. It also inspired me and others to create similar libraries, particularly for use in education.

Where do you see Python going as a programming language?

Python is pretty huge in education. It’s a popular teaching language as it’s easy to read and write, and extends into pretty much everywhere – games, desktop applications, websites, physical computing, robotics, science, maths and more. It’s interesting to think that if every kid has the opportunity to learn Python, this will have a big impact on the adaptation of the language in future.

I wish we had a better editor for beginners. IDLE is not fit for purpose. There’s a great community project called Mu, which has been designed for use in education. It still needs a bit of work (it currently only works with micropython on the micro:bit device) but I’d like to see it continue. There exist similar problems in the classroom, that most developers aren’t aware of, like the difficulty of installing libraries. I recommend library maintainers read the article ‘Scratch is the new PowerPoint’ by UK teacher Laura Dixon.

Is there anything else you’d like to say?

I maintain a library called pyjokes – one line programmer jokes as a service. You can pip install it to access jokes on the command line, or to use the jokes in your own Python project. We also have a Twitter bot you can follow: @pyjokes_bot.

Thanks for doing the interview!