Up to my armpits in code!
Edinburgh University (2001-2005, 2012-present); Selkirk High School (1995-2001); Knowepark Primary School (1988-1995)
Currently studying part-time for a PhD in Condensed Matter Physics; BSc (Hons) 1st class Computer Science & Physics; CSYS Mathematics; Advanced Higher Computing Studies & Physics; 6 Highers
Applications Consultant, EPCC (2008-2012); Software Engineer, IBM UK (2005-2008)
Project Manager – managing software development and collaborative research projects involving High Performance Computing
I’m a project manager at EPCC, The Edinburgh Parallel Computing Centre – which means I write code than runs on Supercomputers, used for anything from simulating how atoms and molecules interact, how your genome is put together, to how the universe came to be the way it is today!
Supercomputers are the most powerful computing machines in the world. We host and manage ARCHER, the UK’s national supercomputer (currently 25th in the world), which has over 118,000 computer cores, just like the dual or quad-cores in modern PCs, laptops and phones, except that they are all connected together so they can solve really big, complex problems very quickly. The programming tools, computer hardware and algorithms (that’s a fancy word for a precise description of the tasks a computer will perform) we use all fall under the umbrella of High Performance Computing. But Parallel computing is not just for scientists and engineers. Even modern graphics processors (GPUs) have 100s or more computing cores in them, so parallel programming is going to be more and more important in future.
Most of my work is in collaboration with other researchers in different fields who need to use HPC. For example, Computational Biochemists and Materials Scientists want to understand how the stuff that is all around us works at an atomistic level so they can design new drugs, new materials for energy storage (batteries to you and me), better solar panels, and more… I also work with Engineers who use techniques like Fluid Dynamics to help design more efficient industrial processes, and Finite Element Analysis to understand how our bones grow and develop with age. So there’s never a dull moment!
I also work on a big volunteer computing project called PrimeGrid, which enables anyone with computer to sign up and contribute to solving some hard Mathematical problems. We also search for some very large Prime numbers – with millions of digits. It’s great fun, so if you want to find out more go to http://www.primegrid.com and join the 10,000s of people across the world who citizen cyber-scientists!
Another thing I like to do is going out and talking about HPC (and science in general) to anyone who will listen! You can often find me visiting local schools and science festivals, showing off some of the great science we can do with Supercomputers.
My Typical Day:
Writing code, analysing performance, playing with parallel supercomputers and working with other scientists.
There’s three parts of software development that I usually get involved in:
Design – this involves spending time with other scientists, to understand what it is they are trying to do, and come up with a plan for how they can use HPC to help them get their research done.
Implementation and testing – writing parallel programs can be hard, and it takes a long time to write the code, and to prove that you’ve got it right. As much as possible I try to get involved with the coding, but more often I’m managing other software developers, reviewing and testing their code.
Performance analysis – to get parallel programs running on 100,000s of cores is not easy, so I spend quite a lot of time trying to understand what the problems are with existing pieces of code that stop them from scaling up to run on massively parallel machines. Finding and fixing performance ‘bottlenecks’ is a bit like being a code detective. First you need to measure performance and see if you can narrow down where the problem is, then use software tools to home in on the problematic code, and finally use some problem solving or intuition to come up with a solution that works better!
I split my time about 50% between project management – which involves meetings, progress reports, reviewing code and documents – and 50% development and research – writing scientific code, running calculations, and working together with other scientists.
Two days per week I work from home. On the days I’m in the office I typically arrive about 8am and leave shortly after 4pm in time to miss the rush-hour traffic and get home in time for dinner with the family. I like to go running at lunchtime – usually a 2 or 4 mile circuit around the University campus.
What I'd do with the prize money:
Setting up a ‘Build-a-computer Scrapheap Challenge’ toolkit for schools to take home and try!
How would you describe yourself in 3 words?
Coder, Father, Scot (not always in that order!)
Were you ever in trouble at school?
I was once given a detention at age 5 for telling my classmates that Santa Claus didn’t exist (sorry if I’ve just spoiled that for you!)
Who is your favourite singer or band?
Bon Jovi – can’t beat some good 80s rock.
What's your favourite food?
Pork pies and Irn-Bru
If you had 3 wishes for yourself what would they be? - be honest!
Lose a few stones (or 15 kg if you prefer metric), take flying lessons, and move to live somewhere in the remote countryside.
Tell us a joke.
There are 10 kinds of people in the world, those who understand binary and those who don’t.