-
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]
-
Pipelines and Workflow Management in HPC
By Killian MurphyThis week Alastair Droop gave a talk about and demo of pipelines and workflow management in HPC. [Read More] -
You can make an R package too!
By Stuart LacyThis 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 PattinsonIn 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] -
Computing Insight UK & Supercomputing 23 Recap
By Killian MurphyThis week, Steve and Phil gave us their perspectives on the Supercomputing 23 and Computing Insight UK conferences which they recently attended, highlighting points of interest and encouraging us to attend next year. [Read More] -
Introduction to Version Control with Git and GitHub
By Peter HillThis week, we had our annual introduction to version control using Git and GitHub. Version control is one of the foundational tools of software development, whether you’re writing small analysis scripts for your own experiments, or large HPC simulations with lots of collaborators. [Read More] -
The FAIR Principles for Data and Software
By Liam PattinsonThe 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 MurphyAlastair 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 LacyStuart 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] -
MATLAB - How to speed up your code and run jobs on Viking from MATLAB
By Philip HarrisonDo you run MATLAB code on your own computer? Would you like it to run faster and not hog your computer? Would you like to use MATLAB on the university’s Viking computing cluster without having to know how to use Linux? Then this session is for you. [Read More] -
Write faster code
An introduction to profiling, optimisation and parallelisation
By Edward HigginsHave you ever wondered if the programs you write are making the best use of your computing resources? Could your hour-long calculations be run in only a few minutes? [Read More] -
Open Research Skills Framework
By Peter HillWe 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] -
Introduction to Version Control with Git and GitHub
By Killian MurphyKillian introduced version control with Git and GitHub, starting with an overview of version control, working through working alone with git and GitHub and finishing with the basics of collaborating with others. [Read More] -
Thinking in Parallel
By Killian MurphyKillian introduced parallel problem solving, motivating its use and exemplifying it with a couple of common parallel patterns. [Read More] -
Version control
A crash course in git basics
By Peter HillWe start the new year off by revisiting an important skill for developing software: version control. [Read More] -
Files, Filesystems, and File Formats
By Peter HillWhat’s the difference between YAML and JSON, and why should you care? Why do ten thousand 1-byte files take up more disk space than one 10,000-byte file? What is this 💾 and why does it mean save? [Read More] -
From Code To Computer: What Happens When You Hit 'Go'
By Killian MurphyJacob Wilkins gave us a look under the hood of compilers and interpreters, talking us through what is really happening when we run code. The slides can be found here. [Read More] -
Effective Data Visualisation for Research
By Killian MurphyDaniel Ellis gave a talk on designing visualisations, starting with the evolution of humans and working towards considerations to make when trying to convey research stories. [Read More] -
I Just Can't Use My Laptop Anymore
By Killian MurphyKillian 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] -
Building interactive web-apps in R with Shiny
By Stuart LacyStuart gave an introduction to making web-apps in R using Shiny. [Read More] -
A Year As A Software Sustainability Institute Fellow
By Killian MurphyEmma Rand gave us an introduction to the Software Sustainability Institute, described the SSI’s motivations, and described their own experience as an SSI fellow, including reasons why you should consider applying! [Read More] -
Practical software design and style
By Phil HasnipThis 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 SmithThis 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] -
Introduction to GPU programming
By Killian MurphyIn 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] -
Test Driven Development
By Peter Hill, Stephen Biggs-FoxTesting 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] -
Introduction to Version Control
By Peter HillImportantWork_final_v5_changes_v2_really_done (1).txt. Look familiar? You need to change something, but want to keep the old version, just in case… There’s no shame in admitting it, we’ve all done it! But there has to be a better way, right? [Read More] -
Optimisation of a function
By Phil HasnipIt crops up all over the place: you have some mathematical function, and you would like to know for what inputs do you get the “best” output. For example, when designing an aeroplane, you might be able to change the size and shape of the wings, and you’d like to... [Read More] -
More Data Analysis in Python with Pandas
By Peter HillYou’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 HillWhat 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] -
Build Systems and Packaging
By Peter HillHow do you build your code? If your project is a single file, you might just run the compiler directly (or search your terminal history for the last time you ran it). Once the project grows to a handful of files, you’ll want to find a better way of building... [Read More] -
Perl6
By Peter HillIt’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 HillThere 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] -
What's the deal with Python 3?
By Peter HillThis week, we were talking everything Python 3 and answering your burning questions like “why?”, “how?” and “must I?” [Read More] -
Working with others
Version Control Part II
By Peter HillFollowing up on part one of our intro to version control, this week we learnt how to use a popular git web service to work with other people, including pull requests and code review. [Read More] -
Project Structure
By Peter HillStarting 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] -
Introduction to Version Control
By Peter HillImportantWork_final_v5_changes_v2_really_done (1).txt. Look familiar? You need to change something, but want to keep the old version, just in case… There’s no shame in admitting it, we’ve all done it! But there has to be a better way, right? [Read More] -
Writing Good Research Software
By Peter HillWhat is Research Software and why is it important? This week, I gave an overview of best practices you should be following when developing software for use in your research. [Read More] -
Floating Point Numbers
By Peter HillThis week Prof. Matt Probert told us about the joys and perils of floating-point arithmetic and machine precision. Can we really trust anything a computer tells us? [Read More] -
What, more Fast Fourier Transforms?
By Phil HasnipFollowing 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] -
Compression
By Peter HillEver 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 HillObject-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 HillThere 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 HillIf 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] -
Common Lisp - The programmable programing language
By Ben DudsonCommon 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] -
What is a Fast Fourier Transform (FFT)?
By Phil HasnipIt’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] -
Using the terminal effectively
By Peter HillThis 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] -
Using Python for shell scripts
By Peter HillOne 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] -
Meltdown and Spectre
By Edward HigginsAt 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] -
Code Games
Or How I Learned To Stop Worrying And Love Code
By Jacob WilkinsThis week was the end of term, so we did something a little bit different. Jacob gave us a whistlestop tour of code games, including code golf, Project Euler and esolangs, before leading us in a art competition using javascript! [Read More] -
Python packaging
Your code is important too
By Ben DudsonThe 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 HillLast 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] -
Installing Software on Linux
Part One
By Peter HillWhatever 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] -
Working with remote computers
SSH tips and tricks
By Peter HillOften, 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] -
Getting started with version control
git revisited
By Peter HillDoes this seem familiar: “report.doc”, “report_2.doc”, “report_final_2_for_real.doc”? If so, congratulations! You’ve been using version control! But there has to be a better way, right? [Read More] -
Introduction to Jupyter Notebooks
By Steve BiggsThis 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 HasnipHave 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 HasnipCoding 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] -
Managing your software project
By Phil HasnipToday’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 HillIf 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] -
Data Visualisation II
Visualisation Gotchas
By Peter HillVisualising 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 DudsonCould 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] -
GNU Coreutils
The Standard Command Line Toolbox
By Peter HillIf you do anything at all on the command line in either Linux or OS X, at some point or another you’ve probably had to do something tricky and thought, “I wish there was some tool that just did this”, and then discovered to your delight there was a tool... [Read More] -
Searching for Answers in a Text-Based Universe
A Brief Introduction to Regular Expressions
By Research Coding ClubRegular expressions are a powerful way to express patterns in text, and are incredibly useful for hunting through large blocks of text for the proverbial needle, or replacing multiple instances of one pattern with another. This week, Jacob Wilkins led a hands-on session introducing regular expressions (or regex) and how... [Read More] -
Test driven development
By Research Coding ClubUnit 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 ClubBugs 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 HillSomething 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 ClubThis 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] -
Profiling
By Research Coding ClubThis 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 ClubRichard 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 HillWe 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 ClubThis 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 HillIt 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 HillAlong 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] -
Version control
A crash course in git basics
By Peter HillVersion 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]