PyDev of the Week: Mary Chester-Kadwell

This week we welcome Mary Chester-Kadwell (@marycktech) as our PyDev of the Week! Mary is a software engineer at Cambridge University Library. You can see some of what she’s up to over on Github.

I think you’ll find her journey into Python really interesting. So without further ado, let’s find out more about Mary!

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

I’m a software engineer at Cambridge University Library in the UK. At work, I split my time between developing software, advising academics and teaching coding with Python. Some of the software I develop is about providing services to library users, but some of it is designed for research projects. I work a lot with students and staff in arts, humanities, social sciences, libraries and museums. I get to dip my toe in all sorts of interesting areas like machine learning, natural language processing, handwriting recognition, and computer vision.

In terms of formal education, my background is a pretty inter-disciplinary mix (I’ve got a PhD in archaeology) so I’ve come into software by an unusual route, and later in life. I see it all as relevant experience because software is a collaboration between humans and computers. As a result, I’m motivated to help others find their path and develop in their coding journeys. If you’ve not got a traditional computer science or STEM background, half the battle is developing the confidence to try coding and the perseverance to keep on trying.

At home, I might tinker with some code or do a deep dive into some personal interest, like the CPython core. But sitting at computers is fundamentally bad for your health! So I try to make time for active things like exercise. I’m also a vegan, because it’s a simple step any individual can take to reduce their carbon emissions.

Why did you start using Python?

After a few years in the workplace I was looking for a new direction. At first, I wasn’t sure if I could do programming as almost all the people I knew who were programmers were men. I had tried my hand at coding before at various points over the years for small things, but it didn’t seem to go anywhere. Books and documentation were so dry and they assumed too much about what you already knew. Now in 2020 we are swimming in excellent courses and resources — how lucky we are!

This time was in the early days of commercial MOOCs, so I took a class with Coursera to learn Python. To my surprise I loved it and immediately signed up to an Open University course in algorithms, data structures and computability, which also used Python. This turned out to be the vital grounding that I needed and I’ve never looked back.

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

I think of myself as an enthusiastic polyglot. I’ve (almost) never met a language I didn’t like. I have to limit myself learning new ones because they’re a bit like popcorn — yummy and moreish! Recently, I’ve worked a lot in Java and JavaScript, and a little in various others, because my team supports a variety of codebases. The past couple of years, in particular, I’ve enjoyed getting to know Python much more deeply, and it’s currently my favourite.

But languages are like tools, and knowing several means you have a rich toolbox. At the same time (much like natural languages) programming languages express a way of thinking, and I really love thinking in different ways. That’s why when I recently took a few steps to learn Rust, I was delighted with the twisty flips my brain had to do.

What projects are you working on now?

I’m currently working on a program for automatically segmenting photographs of digitised botanical specimens, and creating metadata based on recognising information in the images, like barcodes. It’s the sort of process every museum and library is facing at the moment as they transform their physical objects into data.

There’s already been a lot of good work in this area by institutions such as the Natural History Museum, London, but this program will help Cambridge University Herbarium to unleash the potential of its incredible historical collection. If you want to understand changing climate and biodiversity, this is the sort of place to mine for novel data.

What sort of teaching do you do with Python?

The past few years I’ve been invited to teach text-mining and natural language processing for Cambridge Digital Humanities. Those who attend are often starting out in coding, or text-mining, or both. It’s a chance to reach people who might not otherwise think that coding is for them. Earlier this year I led a course on named entity recognition for one of the Data Schools that we run. It was a diverse group from cultural heritage institutions around the world.

Next year, I’m scheduled to teach a course on good coding practices for digital humanities, which I’m particularly excited about. It’s a topic that’s really not taught in universities, especially in non-STEM subjects. Making research software open, reproducible and sustainable is so important for high-quality research. You can see some of my course materials on GitHub.

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

I love a bit of code archaeology, so I’m going to say the standard library `dis`, which allows you to disassemble Python bytecode. By simply passing in some code to `dis.dis()` you can output a human-readable form of the instructions that run on the Python virtual machine. How amazing that peering at Python internals is just one tiny, easy function away from any Python user!

Thanks for doing the interview, Mary!