Jamie J Quinn / About

I’ve always loved computer systems. Building PCs, networking them together and setting up servers and chat bots for friends was a key part of being a teenager for me. Of course I was interested in hacking as well; which wee nerd isn’t. Luckily I stopped being interested after gaining some useful skills but before getting into any (serious) trouble. I eventually got into programming through playing with Arduino boards, a great introduction to both basic electronics and low-level embedded programming. I never took electronics very far, going on instead to learn Python and C++, mainly to start making little games. During my high school years I was convinced I would be a game developer; I was good at physics, maths and programming so the more technical areas of games physics and rendering appealed.

At the University of Glasgow I realised I wasn’t particularly interested in the academic side of computer science, so instead I studied for a MSci in Maths and Physics and developed a burning obsession with mathematical modelling, especially computational fluid dynamics. This led me to my PhD in solar physics where I simulated the behaviour of the plasma that makes up the atmosphere of our sun using the upsettingly complicated equations of magnetohydrodynamics. Unfortunately I had the privilege of using Fortran 95 for everything but my analysis code, which was in terribly maintained Python notebooks, yet fortunately a very early research software engineer had made an excellent job of maintaining the simulation packages.

Taking a break from solar physics, I spent a few months at the Irish supercomputing centre, ICHEC, where I developed parallel rendering algorithms, and then another few months at the Beatson Centre for Cancer Research developing mathematical and computational models of cells. I even thought for a while I might become a generative artist, creating audio-visual experiences from algorithms, then NFTs put me (and many others) off the entire idea of generative art. While I loved all these experiences, nothing could shift my deep love of simulating fluid flow.

While I didn’t have a particularly strong interest in solar physics itself, I could see a number of opportunities to develop new, interesting simulation software for the solar community, places where novel numerical methods and exciting new parallel technologies could be leveraged to advance the range of computational problems we could investigate. But no one would pay me for that so I packed up and moved to UCL to become a research software engineer.

Prior to my PhD I had also developed software for a variety of companies, sometimes as a freelancer, sometimes doing a bit of devops, even as a CTO of a startup. I had good experience with standard industry software practices like version control and testing, and I knew a fair number of technologies and languages across a variety of languages paradigms. Ultimately I was a well-trained generalist. This apparently made me well suited for a job as an research software engineer, particularly in a central team providing support across an entire university. After three years at UCL’s Centre for Advanced Research Computing, I’d absorbed project and people management skills from some incredible colleagues, taught on Master’s level courses, developed my own courses, supervised students, became a trustee of the Society of Research Software Engineering, played with untested hardware, and developed software for tsunami modelling, Met Office benchmarking and materials development. All my projects were wonderful learning experiences, and some were even fun. Many were still in Fortran.

All this while I’d continued playing with computational fluid dynamics, developing my own suite of fluids solvers, some for GPUs, some rendering results in real-time, some in the notoriously slow Python. One even rendered results to a telnet server running on a first generation raspberry pi! I’m now working in Imperial College London’s department of Aeronautics as a senior research software engineer looking after three big computational fluid dynamics codes, Incompact3d, Nektar++ and PyFR.

Jobs I was convinced I would have at some point