Contributor story: Jon Peirce
What’s your current position?
I’m a Professor at University of Nottingham, UK.
I also founded Open Science Tools Ltd, a company (social enterprise) that supports the development of PsychoPy and Pavlovia.
What contributions do you tend to make to the PsychoPy ecosystem?
Well, I began it. 😊
The early stimulus code came from an idea I had around 2002 of using OpenGL (which can draw stimuli fast and precisely) in combination with Python (which is easier to use than compiled languages like C++). I later designed the mechanics and format of the Builder interface and wrote the first version of that. All aspects of the project have been improved a lot since, with the inputs of many other people.
Increasingly my role is more around guiding the project, managing the team and working out the directions and priorities. Most of the code, including the documentation, is now written by others.
Did you have any formal training in computer science?
No, not at all.
I began coding as a kid, writing programs in BASIC on the family ZX Spectrum and later a Commodore Amiga. I always enjoyed maths (one of the programs I wrote on the Amiga was to calculate the prime numbers) but never had formal computer training. Oh, technically, I suppose I did attend a Computing Fundamentals course as a psychology undergraduate, but it was VERY basic stuff - how to use a mouse, and a printer, and create documents in Word! I skipped most of the classes.
I started programming more as a PhD and postdoc in visual neuroscience. Mostly I was using Matlab and Psychophysics Toolbox. You learn to code most quickly when you have a thing you need to get done (like analysing data or presenting a stimulus) and that, for me, was the most fun way to learn.
What’s your favourite thing about PsychoPy?
Early on, I was really happy that I could write code that would generate stimuli on the fly. That meant that I didn’t have to pre-compute movies of stimuli, or use sneaky tricks like “lookup table animation” (now long since forgotten). I could just write a few lines of code to create a drifting Gabor, or a random dot kinematogram, or whatever. That was pretty exciting. And the code looked more sensible than the equivalent calls in Matlab so I was really pleased with how intuitive it was.
Later I guess I was the Builder interface. It was written for teaching but being able to combine simple Components in arbitray ways has, for me, been incredibly flexible and now I feel there are very few studies it can’t accommodate (albeit with a bit of code here and there). So I guess I’m most proud of that.
I’m also really happy about the community. I feel like we have a particularly friendly and helpful community of users and developers. I think that’s really important.
What’s your least favourite thing about PsychoPy?
It kills me, at times, packaging PsychoPy into a bundle on each platform so that users can install it on different computers. I obviously want to help people make this work as widely as possible but that’s a part of development work that’s slow and painful.
What do you do when you’re not working on PsychoPy?
Nowadays, it’s about the family - I have 2 children and they’re still young enough they want to spend time with their dad! In previous stages of my life I’ve been more into sports (notably badminton and Shotokan Karate, in both of which I was mediocre) and the outdoors (hiking, climbing, wild camping). I also tried to learn the guitar. In that, I’m probably worse than mediocre - I still enjoy that but it’s best if nobody is forced to listen to me!
What’s your superpower?
I really don’t feel like I have a superpower but I guess I’m good at identifying what things that are important without being sidetracked. I hope I’m also pretty good at explaining things to people, which is why I like teaching.
What’s your kryptonite?
Ha ha, it used to be beer, but less so since I’ve had children. They really limited my ability to drink! Probably a good thing. ;-)
More seriously though, I guess at times I’ve wasted energy on trying to achieve things that can’t be achieved. Like, trying to persuade someone of something that I believe in but they don’t. I’m not sure that’s a good use of my mental cycles but, when I find someone with vastly different opinions to me, I sometimes find it hard to let go. Living in times where people have vastly different opinions strongly held by both sides (like whether the UK should be in the EU, or whether Trump should be in jail) makes that… interesting.
I do miss the beer.