Posted: 27 Sep 2016 | 16:47
Developing for the real world
As part of a recent ARCHER eCSE project I developed a new parallelisation strategy for a computational simulation application to enable it to scale efficiently to larger process counts. We managed to significantly reduce the parallel overheads, so the code was accepted into the main repository for users to exploit.
Posted: 21 Jun 2016 | 07:59
Choice, choice, choice
I'm often asked "What programming language should I learn for scientific computing?". Or I get involved in religious-like discussions about the best programming language for a particular task, or of all time (think Python vs Fortran, Go vs C, etc...). What's my answer?
Just recently I realised that, to me, programming languages are like musical instruments.
Posted: 14 Apr 2016 | 21:02
Writing programs assuming that they will be incorrect
I was thinking about development methodologies and software design principles recently and have decided that one of the things I've learned is that it is essential to write programs with the assumption they are going to fail.
I don't think that any of us like to think that the programs we write or maintain will go wrong, or have mistakes/problems in them. However, as I've discussed previously, it is very hard to develop code without making mistakes: coding mistakes, algorithmic errors, mistaken assumptions, etc...
Posted: 7 Apr 2016 | 16:36
I have become a bit of a fan of the distributed revision control provided by git. In my day-to-day work at EPCC, I find myself developing and running code across multiple machines. Trying to keep a code base coherent across all these systems would be a bit of a nightmare were it not for git or any other source control revision system. Arguably, SVN would work as well but I somewhat lost my faith in SVN after trying to commit files over a slow and unstable connection while travelling on a train.
Posted: 15 Jul 2015 | 15:06
Discussions on computing
This one-week academy is designed to give PhD students some of the skills they need to undertake the range of computational simulations and data analysis tasks that their work requires.