Archive

  • Research Coding Course 2025/26

    Archived material

    By Research Coding Club
    Over the years we have developed extensive training materials and delivered hands-on tutorials and seminars to hundreds of researchers on everything from testing your code to how CPUs work. This year, we’re building on the University of Sheffield’s excellent FAIR²4RS course to deliver a training programme that will teach you... [Read More]
  • You can make an R package too!

    By Stuart Lacy
    This week Emma Rand gave a talk and live demo on making packages in R. The talk covers motivation for why you might want to make a package in the first place and the live demo went through all the steps of creating a basic package and getting it up... [Read More]
  • Speeding up Python

    By Liam Pattinson
    In this talk, Liam Pattinson discussed why Python runs so slowly compared to other languages, how to identify performance bottlenecks, and how to optimise our Python code. The talk covered the use of profilers, how to get the most out of pure Python, how NumPy works, and how to write... [Read More]
  • The FAIR Principles for Data and Software

    By Liam Pattinson
    The FAIR principles are a set of guidelines for optimising the reuse of research data and software. Adopting them in our research can improve the visibility, efficiency, and impact of our work, in addition to aiding reproducibility and promoting open science practices. [Read More]
  • Rust for Reproducible Research

    By Killian Murphy
    Alastair made the case for Rust as a language choice for reproducible computational research, contrasting it with popular languages and exemplifying some of the language features that can help researchers to write safe, robust, reusable code. [Read More]
  • Speeding up R for Data Analysis

    By Stuart Lacy
    Stuart discussed a variety of methods to speed up your data analysis in R, covering a wide range of topics including: vectorisation, linking datasets, data.table, larger than memory datasets, duckdb, and Rcpp. [Read More]
    Tags:
  • Open Research Skills Framework

    By Peter Hill
    We all stand on the shoulders of giants, building on others’ research, and open source software such as NumPy, data.table, or LAPACK. How can we effectively give back, and ensure that other researchers can continue to build on our work? [Read More]
  • I Just Can't Use My Laptop Anymore

    By Killian Murphy
    Killian ran through some reasons why you might not be able to do your research computing on your laptop anymore, and introduced a range of computational resources offered to researchers by the University of York to help alleviate this problem. [Read More]
  • Practical software design and style

    By Phil Hasnip
    This Coding Club talk focused on the practical decisions facing you when you’re starting a new piece of software. What are the important design decisions and what are the implications? Can you realistically write software which will be sustainable for many years? Lessons were drawn from examples in Unix, the... [Read More]
  • Sample blog post to learn markdown tips

    There's lots to learn!

    By Bill Smith
    This is a demo post to show you how to write blog posts with markdown. I strongly encourage you to take 5 minutes to learn how to write in markdown - it’ll teach you how to transform regular text into bold/italics/tables/etc.I also encourage you to look at the code that... [Read More]
    Tags:
  • Introduction to GPU programming

    By Killian Murphy
    In recent years, GPUs have become an important tool in research computing. GPUs are also complex beasts to tame, and care is required when using them in order to ensure that you don’t end up with another bottleneck in your worfklow. [Read More]
    Tags:
  • Test Driven Development

    By Peter Hill, Stephen Biggs-Fox
    Testing your code is an essential part of good practice in software development, but you sometimes hear that it takes too long to write them therefore they’re not worth the cost. Today, we talked about how in reality, writing tests can actually speed up the time to results, and how... [Read More]
  • More Data Analysis in Python with Pandas

    By Peter Hill
    You’ve taken some data off an experiment, gathered it in the field, or dumped it from a bunch of simulations and you’ve found some amazing result! How do you quickly show off that result in a beautiful graph? You could use a spreadsheet, but maybe you want to make it... [Read More]
  • Data Analysis in Python with Pandas

    By Peter Hill
    What do you do with the data you’ve collected from your experiment or simulation? It’s pretty rare that the data gets published without some kind of analysis being done first. Pandas is a Python package designed to make this analysis easier, faster and more robust. It harnesses both Numpy and... [Read More]
  • Perl6

    By Peter Hill
    It’s important to have a broad variety of tools in your belt, and a new programming language is a great addition. This week, Ed took us through the basics of Perl 6, a high-level, general purpose language. Perl has a rich history, its flexibility and expressiveness making it a favourite... [Read More]
  • Getting ORGanised

    By Peter Hill
    There are a thousand apps for organising your life, calendars, todo lists, note trackers, but the big kahuna, the true Swiss army knife is org-mode. Out of the box, org-mode understands LaTeX and code snippets, todo lists and bookmarks, projects and agendas. Best of all, it comes with a powerful... [Read More]
  • Project Structure

    By Peter Hill
    Starting a new project? Preparing your software for release? Inherited spaghetti code and want to give it a clean up? Among the many other things to think about will be how to best structure your project. This week at Coding Club, we discussed everything project structure – from directory layout... [Read More]
  • What, more Fast Fourier Transforms?

    By Phil Hasnip
    Following on from the previous talk on FFTs, Phil looked at when they go wrong and why. He then moved onto more advanced FFT methods, including 3D FFTs and non-uniform FFTs, as well as more example applications. [Read More]
    Tags:
  • Compression

    By Peter Hill
    Ever wondered how zip files and tarballs manage to squeeze files into such a small number of bits? You’re in luck! This week, Ed managed to condense everything you need to know about compression into an hour. [Read More]
  • Hands on Object-Oriented Programming

    By Peter Hill
    Object-Oriented Programming (OOP) is one of the major paradigms in programming. Last week, I gave an intro talk on the main principles of OOP, contrasting it to other programming paradigms like imperative and functional programming. We also looked at some examples of using OOP in Python, Fortran and C++. This... [Read More]
  • Object-Oriented Programming

    By Peter Hill
    There are many different programming paradigms, and one of the most popular is object-oriented programming (OOP or just OO). OO has many advantages, one of which is that it can map concepts quite nicely onto how we naturally think of things. This week I gave an introduction to programming with... [Read More]
  • Modern C++

    By Peter Hill
    If you’ve moved to C++ from C or Fortran, you might not be aware of many of the nifty features in recent versions of C++. This week, Richard gave us a tour through modern C++, including features of the standard library that will make your life easier! [Read More]
    Tags:
  • Common Lisp - The programmable programing language

    By Ben Dudson
    Common Lisp is “the programmable programming language”, and is one of the most popular variants of the Lisp family of languages. Lisp languages are some of the oldest programming languages still used seriously today. What’s great about them is the simple syntax combined with powerful features like macros that allow... [Read More]
    Tags:
  • What is a Fast Fourier Transform (FFT)?

    By Phil Hasnip
    It’s difficult to move in science or image analysis without tripping over a Fourier transform or two, whether it’s getting a frequency spectrum, performing a convolution or just creating a JPEG image. If you’ve done any computational science, you’ve almost certainly used a “fast Fourier transform” (FFT) to actually do... [Read More]
    Tags:
  • Using the terminal effectively

    By Peter Hill
    This week, Peter through some tips and tricks for upping your terminal game. Find out how to quickly search through your command history, make a fancy, colourful prompt, and some magic shortcut keys you definitely didn’t know about! [Read More]
    Tags:
  • Using Python for shell scripts

    By Peter Hill
    One of the virtues of a programmer is laziness – if you find yourself doing something more than twice, you should automate it. If the thing you want to automate is some commands in your terminal, you’re probably tempted to reach for the most immediate tool at hand, a shell... [Read More]
    Tags:
  • Meltdown and Spectre

    By Edward Higgins
    At the start of 2018, a set of three serious bugs in CPU hardware were revealed to be affecting the vast majority of processors manufactured since the mid-90s. This week, Ed explained how these bugs work, explaining some advanced features of CPUs along the way. [Read More]
    Tags:
  • Python packaging

    Your code is important too

    By Ben Dudson
    The code we write is often a means to an end: our main outputs are papers, PhD theses, talks and grants. But a lot of work goes into writing the code, and often this work is lost when someone leaves, and repeated by the next person. The code is also... [Read More]
  • Installing Software on Linux

    Part Two

    By Peter Hill
    Last week, we started looking at installing software for ourselves. We pick it up again this week, taking it a bit further, looking at common ways things can go south, and some general tips and methods for solving these problems. [Read More]
    Tags:
  • Installing Software on Linux

    Part One

    By Peter Hill
    Whatever you’re doing in your research, it won’t be long before you find yourself needing some piece of software that you don’t currently have. Installing software can sometimes seem a little like black magic, with cryptic commands that need to be run and arcane rituals that have to be performed... [Read More]
    Tags:
  • Working with remote computers

    SSH tips and tricks

    By Peter Hill
    Often, we need to use computers other than the one currently sat on our desk, for instance in order to do some really heavy calculations. To access remote machines, the tool of choice is ssh. This week we take a dive into exploring how ssh works, and some tips and... [Read More]
    Tags:
  • Introduction to Jupyter Notebooks

    By Steve Biggs
    This week, Steve led a hands-on demo introducing Jupyter Notebooks. Notebooks are a great way to keep electronic lab books, for exploring data, or for sharing analysis methods with your collaborators. Steve took us through getting Jupyter Notebooks on our machines, demonstrating their use, and some useful extensions he’s found... [Read More]
  • Mixing languages

    By Phil Hasnip
    Have you ever wanted to use a Python GUI with your C functions? What about combining Python’s string handling with bespoke Fortran code? If so, then this Coding Club was for you! Ben Dudson and Jacob Wilkins gave us a hands-on practical session which took us through all the steps... [Read More]
  • Practical software design and style

    By Phil Hasnip
    Coding Club this week was all about practical considerations when you’re starting a new piece of software. Where should you start? How much effort should you put in? What things do you need to think about when you’re writing it? Lessons were drawn from examples in Unix, the ASCI re-write... [Read More]
    Tags:
  • Managing your software project

    By Phil Hasnip
    Today’s Coding Club was presented by Killian Murphy, who talked us through software project management, from capturing the needs of the project, through the design process, to implementing and, ultimately, maintaining the software. Along the way he covered many useful tools to help ease you through the process, including Treesheets,... [Read More]
  • Introduction to Makefiles

    By Peter Hill
    If you’ve ever attempted to compile some software from source, it’s likely you’ve come across Makefiles. It’s also likely you’ve heard them described as “black magic”. This week, I hope to demystify them, at least a little bit, and explain how some of the magic works. [Read More]
    Tags:
  • Data Visualisation II

    Visualisation Gotchas

    By Peter Hill
    Visualising data can be tricky: the human visual perception system is full of hacks built on top of poorly-designed hardware. Take, for instance, the colour of the sky. The air scatters sunlight through a process known as Rayleigh scattering, and the degree of scattering is inversely proportional to the fourth... [Read More]
  • Data Management

    By Ben Dudson
    Could you find a document you wrote in 2007? Could you explain how you got the figures or results in that document, and repeat it if needed? [Read More]
    Tags:
  • Test driven development

    By Research Coding Club
    Unit tests and test driven development (TDD) are powerful software development techniques that will improve your code’s reliability, design and your own personal stress level. This week Steve Biggs led a hands-on session where he took us through writing and running unit tests in Python using TDD.
  • Debugging

    By Research Coding Club
    Bugs in code are a fact of life, and being able to quickly debug a failing program is a vital skill for any software developer. This week, Matt Probert led another hands-on session on debugging using the standard Linux debugger, gdb. [Read More]
  • How to do everything in Emacs

    By Peter Hill
    Something a bit different this week. Working with various different codes in various different languages, along with writing presentations, talks and papers, I spend most of my day writing text, just with different syntaxes. As such, I like to be able to do it all in the same program –... [Read More]
  • Python for scientific calculations

    By Research Coding Club
    This week Ben Dudson gave us a crash course in how to use Python efficiently for scientific calculations, showing us various ways to get decent speeds out of pure Python code. [Read More]
    Tags:
  • Profiling

    By Research Coding Club
    This week, David Dickinson gave the first of our hands-on sessions, teaching us about how to profile software. Profiling is an essential tool in any software developer’s toolbox, allowing us to find bottlenecks in the code and target our optimisation efforts. [Read More]
  • Optimisation

    By Research Coding Club
    Richard Evans gave an introduction to optimising your code, showing us some tips and tricks to help the compiler generate optimal code, and ultimately give us our simulation results faster.
  • Compilers

    By Peter Hill
    We often treat compilers as a bit of a black-box, without really understanding what it is they are doing. Today, I will take a brief tour through the different parts of a compiler to hopefully demystify them somewhat. [Read More]
  • What is a CPU?

    By Research Coding Club
    This week, Phil Hasnip gave us a guided tour of a modern CPU, explaining how the different pieces, from ALU to pipelines work together to crunch numbers and show us pictures of cats, instantly.
  • Documentation

    Helping future you

    By Peter Hill
    It happens to the best of us – you come across some incomprehensible code and wonder “who on earth wrote this?” only to discover it was you, a mere six months ago. Writing documentation is one of those tasks that often feels like a bit of a chore, but is... [Read More]
  • Tests and testing

    Testing scientific codes - the basics

    By Peter Hill
    Along with version control, tests are essential to good practice for developing software. Having tests makes it easier to reason about changes, and ensure trust in the outputs of your code. And if you can’t trust your code, you can’t trust the papers written using the results… [Read More]
    Tags:
  • Version control

    A crash course in git basics

    By Peter Hill
    Version control is one of the essential tools for anyone developing software of any kind, and will save you from a lot of sweat, blood, and tears when your hard drive fails or you spill tea all over your laptop. This presentation will give you an overview of why you... [Read More]