Blog

AI in Production Conference Summary (2026)

Authors: Russ Hyde & Keith Newman

Jumping Rivers recently hosted the conference "AI In Production 2026" where experts across software engineering and data science discussed how to actually use AI in software products and data projects. The talks also touched on security, regulatory matters, AI usage across different sectors and how AI has impacted the process of software development. Here we summarise the conference talks. "AI In Production 2027" will be held 10-11 June 2027.

Why Learning R is a Good Career Move in 2026

Author: Theo Roe

Over the course of my career as a Data Scientist, I've worked on projects ranging from simple code reviews, to large application builds. For the most part, I have used R to do this. If you're getting into coding or data science, one question you're probably asking yourself is "Which language should I learn?". This blog aims to show you why R might be a good decision.

Reproducible Analytical Pipelines

Author: Russ Hyde

Teams may need a way to reliably generate datasets and data products from newly-collected raw data that is robust to the evolution of both the team and the raw data. This is where 'Reproducible Analytical Pipelines' (RAPs) can help.

Mastering Git Configuration

Author: Colin Gillespie

Explore how to optimise your Git workflow with a well-crafted .gitconfig file. From commit signing and branch management to conditional includes for work-personal separation, learn the settings that transform Git into a seamless development tool.

Elevate Your Skills with JR Training

Author: Amieroh Abrahams

Boost your data expertise with hands-on, expert-led training from Jumping Rivers. Our experienced data scientists deliver practical courses in R, Python, Git, AI, and more, designed to help you apply new skills immediately. With flexible online and in-person options, comprehensive materials, and tailored in-house programmes, Jumping Rivers empowers individuals and teams to thrive in today’s data-driven world.

What's new for Python in 2025?

Author: Russ Hyde

Python 3.14 was released in October. Here we summarise some of the more interesting changes and some trends in Python development and data-science over the past year.

Testing with {testthat}

Author: Aida Gjoka

One of our main projects at Jumping Rivers in the last year has been building the Litmusverse, a platform for validation. An important component when assessing the quality of code within a package is the unit tests. In this blog we discuss the main features of the `{testthat}` package, as a very convenient way for testing R code.

AI In Music Production

Author: Theo Roe

For quite some time, AI had kept it's grubby little hands out of the music production world. Now, a good percentage of the plugins (a plugin is a piece of software you can "plug in" to an audio track to add effects or generate audio) I see are advertised as "using AI". From reverb removers (yes, that's right, you can now remove the reverb from an audio recording), to EQ analysers. Today we'll focus on stem separation.

SIP 2025: R Dev Day

Author: Heather Turner

Do you use R? Would you like to play a part in sustaining it? Find out about the R Dev Day that is returning as a satellite event to Shiny in Production 2025.

R Package Quality: Code Quality

Author: Colin Gillespie

Code quality is what typically comes to mind when talking about "good packages". Does that package pass standard checks? What is the Unit test coverage? How many dependencies does the package have? This post discusses how we use code quality when determining the package litmus score.

Validating Shiny Apps in Regulated Environments

Author: Pedro Silva

In regulated industries, Shiny apps must be reliable, reproducible, and well-documented. Validation builds trust, supports compliance, and prevents costly delays. Learn how to avoid common pitfalls and set up a lightweight, effective validation approach that scales with your needs. Validation isn’t a blocker, it’s a long-term advantage for you and your team.

Why JR’s Training is Different

Author: Amieroh Abrahams

At Jumping Rivers, we believe training should be more than just a tick-box exercise. It should be transformative. Whether you’re learning R, Python, SQL, Git or Posit for the first time or diving into advanced topics like machine learning and Quarto, our courses are built to help you actually use what you learn — not just watch someone code.

Rethinking Image Formats

Authors: Tim Brock & Clarissa Barratt

Adding images to a web page used to be easy. Now with high-resolution screens and an array of modern image formats it can feel like much more work. This post explains why things have become more complex and suggestions solutions for making life a little easier and web pages more performant.

Advanced Testing in Python

Authors: Aida Gjoka & Russ Hyde

Writing tests is one of the best ways to keep your Python code reliable and reproducible. This post builds on our previous blog about Python testing with pytest, and explores some of the more advanced features it offers. We will show how to make your tests more reproducible, easier to manage and demonstrate how writing simple tests can save you time in the long run.

Vetiver: MLOps for Python

Author: Myles Mitchell

Part 4 of our series of blogs on vetiver for MLOps. Having previously explained how to set up an MLOps workflow in R, we now turn to Python. This blog will introduce the vetiver package for Python and outline the key MLOps steps including model versioning, deployment and monitoring.

Music in R

Author: Russ Hyde

Here, we’ll talk about music in R, what packages are available, how to represent musical notation, and what people are actually doing with music data in R.

R Dev Day @ SIP 2024

Author: Heather Turner

This year Shiny in Production hosted an "R Dev Day" split over the two days before the pre-conference workshops. R Dev Days are a new initiative of the R Contribution Working Group, providing an opportunity for R developers to get involved in contributing to the R Project. R Dev Day will be back at SIP 2025, so read on to find out what participants got up to and consider coming along next year!

Vetiver: Monitoring Models in Production

Author: Myles Mitchell

Part 3 in our series of blogs on vetiver for MLOps. Having previously introduced the modelling and deployment steps of the MLOps workflow, we now consider the maintenance of a model in production. The monitoring process involves adding a date column to our data, scoring our model at regular time intervals, and checking for signs of model drift over time as the data evolves.

First Steps in Python Testing

Author: Aida Gjoka

Programming is a craft, and in data science we often spend countless hours coding. Software testing can improve the quality of the code you write as a data scientist. Here, we introduce the pytest framework and show how it can be used to test Python functions.

Vetiver: Model Deployment

Author: Colin Gillespie

Part 2 of our series of blogs on vetiver for MLOps. In this post, we demonstrate how to deploy a machine learning model to production using Docker, Posit Connect, and SageMaker. Docker allows developers to bundle application code with necessary dependencies, simplifying deployment. We outline the process of creating a Dockerfile with the {vetiver} package and running the model locally. Additionally, we show how to publish the model to Posit Connect and SageMaker for broader accessibility.

Vetiver: First steps in MLOps

Author: Colin Gillespie

Part 1 of our series of blogs on vetiver for MLOps. This post introduces MLOps and its integration into the traditional data science workflow, focusing on continuous model deployment and maintenance. It demonstrates automating data importation, creating a model with {tidymodels}, and using {vetiver} to store and deploy the model. The process includes creating an API with {plumber} and deploying it locally. Finally, it verifies the API functionality, setting the stage for future production deployments. description: Part 1 of our series of blogs on vetiver for MLOps. This post introduces MLOps and its integration into the traditional data science workflow, focusing on continuous model deployment and maintenance. It demonstrates automating data importation, creating a model with {tidymodels}, and using {vetiver} to store and deploy the model. The process includes creating an API with {plumber} and deploying it locally. Finally, it verifies the API functionality, setting the stage for future production deployments.

June 2024 Training Update

Author: Clarissa Barratt

Our courses for the second half of 2024 have now been released. We have everything from the very basics of R and Python for data science, to advanced statistical modelling and machine learning. Interested in dashboards and reporting? We have courses on reporting with Quarto, as well as both introductory and advanced Shiny.

What's New in R 4.4.0

Author: Russ Hyde

R 4.4.0 introduces some cool features (one of which is experimental) and makes one of our favourite {rlang} operators available in base R.

Reading large spatial data

Author: Rhian Davies

Reading in large spatial data can sometimes be a pain. Here are some simple things to consider when working in spatial data in R and tips for breaking large data sets into more manageable chunks.

SatRdays London 2024: Speakers

Author: Clarissa Barratt

SatRdays London is fast approaching and we are happy to announce our full lineup of speakers for the event! Read on for more info. If you want to join the fun, head over to the conference website to sign up!

Parquet vs the RDS Format

Author: Colin Gillespie

A benefit of using the {arrow} package with parquet files is it enables you to work with ridiculously large data sets from the comfort of an R session. In this post we explore the timescales associated with different methods of data storage.

Events at Jumping Rivers 2024

Author: Clarissa Barratt

We're a couple of weeks into 2024, and now that we've all settled back in, we thought it was a good time to let you know what events we have coming up for you this year!

Reading and Writing Data with {arrow}

Author: Colin Gillespie

Apache Arrow is a cross-language format for super fast in-memory data. It's designed for efficient analytic operations. In this post, we look at reading and writing data using Arrow and the advantages of the parquet file format.

Effect of Shiny Widgets with Google Lighthouse

Author: Osheen Macoscar

Inspired by Colin Fay's Shiny in Production 2022 talk, "Destroy All Widgets", this blog post series explores how to use Google Lighthouse to measure the performance of your Shiny apps. The last blog in the Lighthouse series uses Google Lighthouse to see the differences each component has on the app times.

Using Google Lighthouse for Web Pages

Author: Osheen MacOscar

Inspired by Colin Fay's Shiny in Production 2022 talk, "Destroy All Widgets", this blog post series explores how to use Google Lighthouse to measure the performance of your Shiny apps. In this first post of the series, we show how to run and read Google Lighthouse reports.

Training Lineup for 2024: January-June

Author: Clarissa Barratt

All of our public training courses for the first half of 2024 are now available to book! Head over to the public courses page on our website to book in and start building your programming skills in the new year! In this blog post, we provide a list of all of our upcoming courses with a description, upcoming dates, course level and a link to the page to find out more!

Getting started with theme()

Author: Jack Kennedy

The `theme()` command from {ggplot2} has a lot of arguments. This can be a bit daunting, even for those who are familiar with {ggplot2}! We will walk you through how to modify some aspects of a {ggplot2} theme and give you the confidence to try making your own theme modifications.

Python Virtual Environments and Barbie

Authors: Georgia Atkinson & Myles Mitchell

Hey Barbie! I mean ... hey Python user! Have you ever wished that customising your Python environment could be as easy as trying different outfits on your Barbie? Well turns out it is! With virtual environments, you can create isolated Python projects with different dependencies and versions. Read our Barbie-themed guide to get started!

SatRdays London 2024

Author: Clarissa Barratt

SatRdays is returning to London in April 2024! We're excited to welcome you to Bush House again next year. Want to get even more involved? Read on to find out how you can submit an abstract for a talk!

Sluggish system or client code?

Author: Shane Halloran

Over several weeks, we worked to deploy a data science platform for our client. It is a one-stop platform for data analysis and visualisation. This platform consists of interconnected applications, which are the motor which enables the productivity of the data scientists sitting at the wheel.

Shiny in Production: Sponsors

Author: Clarissa Barratt

There's only two weeks left to go until Shiny in Production 2023! The events team are hard at work getting things ready for the day, and we wanted to take this opportunity to say a huge thank you to our event sponsors!

Reproducible reports with Jupyter

Authors: Parisa Gregg & Myles Mitchell

Jupyter notebooks are a popular tool for data scientists using Python. They allow us to mix together plain text (formatted as Markdown) with Python code. In this post, we will show you how to produce reproducible PDF and HTML reports from a Jupyter notebook using Quarto.

posit::conf(2023)

Author: Clarissa Barratt

Our bags are packed, flights are booked, and we're ready to head stateside for posit::conf(2023). We're excited to be sponsoring the event this year, as well as presenting a few talks ourselves.

RSS International Conference 2023

Authors: Clarissa Barratt & Rhian Davies

The Royal Statistical Society International conference is next week and Jumping Rivers are exhibiting at the conference, as well as delivering workshops and talks. The draft program can now be viewed online, so we wanted to let you know where you can find us at the event and some of the other sessions we are looking forward to.

Our ISO 27001 Certification

Author: Liam Kalita

Today, we're taking a moment to chat about our recent achievement – becoming ISO certified. Read on to find out more about what ISO 27001 is, why and how we pursued this particular certification and what that means for us, and our clients, going forward.

SatRdays London 2023 - Recordings

Author: Clarissa Barratt

The recordings from this year's SatRdays London conference are here! Over the next couple of weeks, we will be releasing the recordings of some of the excellent talks from the conference!

July Training Update

Author: Myles Mitchell

Embark on your programming odyssey with our extensive range of courses! Never written a line of code in your life? No stress - we offer a mix of introductory courses for beginners as well as more advanced courses for those looking to expand their knowledge further.

Fullscreen Ahead for Shiny Applications

Author: Tim Brock

Browsers have been implementing variations on a JavaScript fullscreen API for over a decade. Unfortunately, for much of that time the APIs varied across browsers. This made actually using it in production somewhat cumbersome. In this blog, we show you how to put parts of your Shiny application into fullscreen with only a few lines of JavaScript.

June Training Update

Author: Clarissa Barratt

This summer, we have public courses to take you all the way from the very basics of R, through to using R for statistical modelling, with some data wrangling and intermediate programming in between. Wherever you are on your R journey, take a look at our upcoming courses to see if we can help you on your way.

Sponsorship: Conference and useR Groups

Author: Clarissa Barratt

Just like the world of data science, our ethos is transparency and giving back to the community. We are offering automatic sponsorship for R conferences. All the organisers have to do is complete a quick questionnaire and the money is sent on it’s way.

Why should I use R: Part 3

Author: Amieroh Abrahams

If you've been using Excel for a while, then you've likely entered your comfort zone and remained there. Let's help you make the wise switch to R. In this blog, we will explore the various ways to handle dates in Excel and R.

Diffify - the anniversary update!

Author: Myles Mitchell

It's been just over a year since we introduced the world to diffify, our app for comparing package releases. To celebrate reaching this milestone, we're pleased to announce that an "anniversary update" has just gone live! Read on to learn about the latest changes and some exciting plans in the works…

What's New in R 4.3.0

Author: Russ Hyde

R v4.3.0 is released on April 21st, 2023, and continuing a recent theme, R is getting stricter with your code. If you don't know your `&` from your `&&` you may be in for a bumpy ride. Here, we discuss the changes to the logical comparison operators and a few other new features.

Why should I use R: Part 2

Author: Amieroh Abrahams

If you've been using Excel to create plots from your data for a while, you may have got to a point where you want more customisation options, or reproducibility. In this post, we discuss the differences between creating plots in Excel and using ggplot2 in R!

Optimising tooltip design with modern CSS

Author: Tim Brock

Tooltips in interactive graphics provide a means of giving the user precise details about particular features of the underlying dataset. Using some simple CSS, this post explores how tweaking the design of tooltips can improve the user's experience.

SatRdays London 2023: Sponsors

Author: Clarissa Barratt

On 22nd April 2023 we will be hosting SatRdays London, an inclusive, low cost event, which gives R users an opportunity to network and learn from other experts across sectors. In a recent blog post, we introduced all of the speakers for the event! This week, it's the sponsors turn.

Alt Text in R

Author: Nicola Rennie

Alt text is text that describes the appearance and purpose of an image. This blog post will show you how to include alt text in your web applications and documents when you've built them in R.

Customising {shinydashboard}

Author: Mandy Norrbo

Sometimes you want to go beyond the default {shinydashboard} theme. This blog will take you through 3 options—built-in colours, the {fresh} package, and CSS.

SatRdays London 2023: Speakers

Author: Clarissa Barratt

SatRdays London is fast approaching, and we are happy to announce our full lineup of speakers for the event! Read on for more info. If you want to join the fun, head over to the conference website to sign up!

Content Security Policy - Why You Need It

Author: Theo Roe

Content Security Policy (CSP) is a framework of modern (ish) browsers used to give applications an extra layer of security - safeguarding against attacks such as cross-site scripting. In this blog, we aim to introduce the concept of Content Security Policy and teach some of the technical aspects.

Should I learn Stan?

Author: Jack Kennedy

You've heard about Stan and want to learn a little more. Or maybe you're about to step into the Bayesian paradigm and don't know where to start. In this post, we'll take a look what you can do with Stan and draw comparisons to JAGS.

February Training Update

Author: Clarissa Barratt

We have a great list of online public training courses coming up over the next two months! Read on for a taste of what's in store, or head over to our training page for full details and to book!

Quarto for the Python user

Authors: Parisa Gregg & Myles Mitchell

As data scientists we often need to communicate conclusions drawn from data. Additionally, as more data is collected, our reports invariably need updating. In this blog post we will look at how Quarto allows us to weave together text and Python code to generate automated reports.

Events at Jumping Rivers

Author: Clarissa Barratt

At Jumping Rivers we're all about getting involved in the R community! As such, we host multiple events throughout the year. Read on for information about what we have planned so far for 2023!

UI-driven testing for Shiny: Part 3

Author: Russ Hyde

It pays to extract out some helper functions and / or classes from your test cases. By doing so, your tests will look simpler, the behaviour that you are testing will be more explicit, and you'll have less code to maintain.

UI-driven testing for Shiny: Part 1

Author: Russ Hyde

Automated testing is an essential part of any production-quality software project. Much of the focus in the R world is on testing the individual components of a project, but for those working with {shiny} there are great tools that can test your application as if a user was interacting with it. In this blog series, we focus on {shinytest2}.

December Training Update

Author: Clarissa Barratt

If you're thinking of picking up a new skill in the new year, take a look at our upcoming public training courses! We have plenty of introductory courses coming up, both online and in-person, so you can hit the ground running after the holidays!

Burnout in Data Professionals

Author: Astrid Radermacher

Data science and data engineering are incredibly cognitively demanding professions. As data professionals, we are required to leverage both our analytical/engineering skills and our interpersonal skills to be effective contributors within our organisations. In this blog, we discuss why this combination could reasonably count as an occupational hazard.

Learning Excel as an R user

Author: Rachel Binks

Recently I came across a situation where I had to use Microsoft Excel for a project. In this blog post I discuss some of the things I found surprisingly difficult when learning Excel as an R user.

Diffify - Python release

Author: Myles Mitchell

We are excited to finally release Python content on Diffify! You can now perform version comparisons for 1600 popular PyPI packages. Read on to learn about the new content, and our plans to expand this as we look to the future.

Customising figures in Matplotlib

Author: Parisa Gregg

When creating graphs for a report or publication we usually want to ensure they follow a certain style. In this blog post we will look at formatting and colourmap customisation in the popular Matplotlib library.

Shiny for Python dashboard using Twitter data

The arrival of Shiny for Python was announced at the RStudio Conference a few weeks ago. In this tutorial I will take you through how I created a simple Shiny for Python dashboard, with no experience using the framework in R.

Top 5 Shiny UI Packages

Author: Mandy Norrbo

There are an increasing number of open-source "add-on" packages that extend both the front end and the back end functionality of Shiny. This blog will highlight 5 UI add-on packages that can massively improve your user experience and also just add a bit of flair to your app.

Automating Dockerfile creation for Shiny apps

Authors: Jamie Owen & Colin Gillespie

Deploying shiny applications can be frustrating, making sure your production environment matches your local environment where you can see your application running. In this blog post we explore how we might start writing code to automate the process of creating Dockerfiles for producing images that make our local, running, shiny application able to be deployed in a container.

Refactoring Russian Doll Code

Author: Rhian Davies

Have you ever inherited a pile of messy code? Or perhaps you wrote some code a long time ago and it needs some TLC? Here are our tips for refactoring messy code.

API as a package: Testing

Author: Jamie Owen

Unit testing is an integral part of creating robust applications and codebases. Continuing the API as a package series we explore how you might set up unit tests with {testthat} for your API service.

API as a package: Logging

Author: Jamie Owen

Logging is crucial to understanding what's going on with an application as it runs. There are some good solutions to logging of R shiny applications but less so for plumber applications. Continuing the API as a package series we examine how you might add some automatic logging to your API service written in R using plumber and the logger package.

The Benefits of Learning Data Skills

Author: Clarissa Barratt

It will come as no great surprise that here at Jumping Rivers, we are huge advocates for learning data skills. There are many benefits to learning at least some basic data skills, even if you don't work explicitly with data.

API as a package: Structure

Author: Jamie Owen

Inspired by opinionated packages on {shiny} app development such as {golem} and {leprechaun}, Jumping Rivers adopted a similar pattern for producing a {plumber} API as a package for one of our client projects. This is one of a series of blog posts discussing the general structure of said package.

Python API deployment with RStudio Connect: Flask

Author: Parisa Gregg

RStudio Connect (soon to be Posit Connect) is a platform that provides the ability to deploy and share R applications and reports. However, it is not just for R developers (hence the name change). RStudio Connect also supports many Python applications, including Flask. In this blog we will look at how to deploy a Flask app to RStudio Connect.

Hello Shiny Python

Author: Jamie Owen

RStudio conf 2022 had some exciting reveals. Certainly one of the most interesting releases was that of shiny, the excellent web application development framework known in the R community, getting a Python release. Here we will take a first look at creating a simple application.

Have we got NEWS.md for you

Authors: Myles Mitchell & Parisa Gregg

Roll up, roll up! Most R packages contain a NEWS file which documents the changes between each release. However, there is no definitive convention for how to format this file. In this post we will share some top tips for writing NEWS files, so that by the end you will be able to tell “good” NEWS from “fake” NEWS!

Diffify - 3 months on

Authors: Myles Mitchell & Clarissa Barratt

What a few months it's been for Diffify, our new app for comparing package releases! We’ve been delighted with the enthusiastic response and quick adoption by the R community. Read on to learn about just some of many updates we’ve made to the app since launch day, and how we are actively addressing your feedback as we look to the future.

Recreating the Shiny App tutorial: Part 3

Author: Liam Kalita

RStudio Connect supports a spectrum of data products, static or dynamic, developed in R and Python: Dashboards, applications, APIs, reports, and much more - we can also host ReactJS applications! This series will focus on recreating a Shiny App tutorial using ReactJS. In part 3 will demonstrate how to host an application on RStudio Connect.

Recreating the Shiny App tutorial: Part 2

Author: Liam Kalita

RStudio Connect supports a spectrum of data products, static or dynamic, developed in R and Python: Dashboards, applications, APIs, reports, and much more - we can also host ReactJS applications! This series will focus on recreating a Shiny App tutorial using ReactJS. In part 2, we will walk through an example.

Recreating the Shiny App tutorial: Part 1

Author: Liam Kalita

RStudio Connect supports a spectrum of data products, static or dynamic, developed in R and Python: Dashboards, applications, APIs, reports, and much more - we can also host ReactJS applications! This series will focus on recreating a Shiny App tutorial using ReactJS. In part 1, we introduce the required concepts and technologies.

Developing React Apps in RStudio Workbench

Author: Sebastian Mellor

RStudio Workbench provides a development environment for R, Python, and many other languages. When developing a performant web application you may progress from Shiny towards tools like Plumber. As a Shiny developer, one popular front-end library you might already be familiar with is React.

NEDS Meetup

Author: Clarissa Barratt

If you're based in the North East of England and you're looking for a place to discuss all things data science with like-minded people, then you might want to check out the North East Data Scientist (NEDS) Meetups!

Custom colour palettes

Author: Nicola Rennie

Choosing which colours to use in a plot is an important design decision. This blog post will show you how to make a custom colour palette that is compatible with {ggplot2}.

WHO/Europe: Offload Shiny's Workload

Author: Russ Hyde

The great strength of Shiny is that it simplifies the production of data-focused web applications, making it relatively easy to present data to users / clients in an interactive way. However, data can be big and data-processing can be complex, time-consuming and memory-hungry. In this post we demonstrate how we tackled this issue in a recent project.

Shiny in Production Update

Author: Clarissa Barratt

The organisation for Shiny in Production is well under way - our list of speakers is now up on the conference website, and registration is open, with Early Bird tickets available until July 31st! Read on for more details.

New training courses

Author: Clarissa Barratt

The trainers here at Jumping Rivers have been busy developing a host of new courses for your programming pleasure! We have recently developed several new courses, which are now available to view on our course list.

Stylising your Python code

Authors: Parisa Gregg & Myles Mitchell

Have you ever wished your code could be as stylish as you? Linting is a process which helps ensure the format and style of your code adheres to best coding practices. Read on to learn about linters and auto-formatters, and start adding some PEP to your Python!

Accessibility in R applications: {shiny}

Author: Jamie Owen

Web content accessibility is an important topic to consider when building web based applications. {shiny} is an excellent tool that allows data practitioners a relatively simple, quick approach to providing an intuitive user interface to their R code via a web application. Here we explore accessibility in the context of a {shiny} application.

New Features in R 4.2.0

Author: Colin Gillespie

R version 4.2.0 is about to be released. This release includes an update to the native pipe, changes to logical operators and improvements to the help page. In this blog post, we take a look at (some of) these new features. Highlighting (in our opinion) the most exciting changes.

Forgotten features of R 4.0.0

Author: Colin Gillespie

R 4.0 was released almost two years ago. However, the majority of R users didn't immediately adopt the new version due to obvious constraints when updating software. The consequence is that many of the new and useful features are forgotten about. This post highlights the features as we've moved to R 4.0.

Thinking about maps and ice cream

Author: Nicola Rennie

Creating 30 maps for the 30 Day Map Challenge in November 2021 was indeed a challenge, but over the course of the month I developed a process for approaching the problem. This blog post will focus on the thought process behind creating maps rather than the technical aspects of writing the code.

Job vacancies at Jumping Rivers!

Author: Nicola Rennie

In line with the continuous growth at Jumping Rivers, we are looking to expand our team of dedicated professionals working in our teams. If you are enthusiastic and keen to develop your skills in cutting edge data science disciplines or infrastructure please read on!

2020 Training Review

Author: Osheen Macoscar

Our annual training review is back! Like many other training providers, we had to pivot to online learning in 2020, which brought with it challenges but also new opportunities. The review will show you what the year looked like for our trainers and training course attendees, including which trainer taught the most courses!

Git: Moving from Master to Main

Author: Colin Gillespie

In 2020, GitHub took the correct decision to change the default branch from master to main. For single, independent repositories, this is relatively straightforward. But moving groups or organisations is more complex and requires planning.

Learn D3 in RStudio with Scooby-Doo

Author: Mandy Norrbo

Learning D3.js can be pretty overwhelming as an R user. Luckily, the {r2d2} package lets you keep your data cleaning steps in R and easily incorporate any visualisation in R Markdown reports and R Shiny dashboards. This tutorial-style blog will take you through creating your first D3 visualisation with a bit of Scooby-Doo along the way.

Webinars: R in Production

Author: Colin Gillespie

Bridging the gap between data science and IT teams is much easier than you might expect! This two-part webinar will discuss why open source languages are suitable for enterprise data science, and how data scientists can work with the IT team to get their organisational buy-in.

Delete repositories with {gh}

Author: Mandy Norrbo

Forking repositories is a great way to learn from and contribute to others' code. However, you may quickly end up with a cluttered user space, with old forks lingering around. Manually removing repositories is slow and tedious. Read more to find out how you can use the {gh} package to speed up the process.

Job vacancies at Jumping Rivers!

Author: John McIntyre

In line with the continuous growth at Jumping Rivers, we are looking to expand our team of dedicated professionals working in our teams. If you are enthusiatic and keen to develop your skills in cutting edge data science discliplines or infrastructure please read on!

New Features in R 4.1.0

Author: Russ Hyde

A new R release (v 4.1.0) is due for release on 18th May 2021. This version brings in a few exciting features, such as anonymous functions and the native pipe. Here, we summarise these and other notable changes.

Moving to Hugo

Author: Colin Gillespie

Moving your website to Hugo brings a lot of benefits, but there are also challenges. In this post, we'll discuss our top tips for making that move to Hugo as smooth as possible.

Job: Shiny Developer

We are expanding the Jumping Rivers team. If you know {shiny} then this could be the perfect role for you!

External Graphics with knitr

Author: Colin Gillespie

Adding images with {knitr} is straightforward; we simply use include_graphics(). However, it is easy to add an image that is too large, or has the wrong dimensions. This post tells you what to watch out for, and how to optimise your images for the web.

Writing a Personal R Package

"If you've been using R for a while, you've likely accumulated a hodgepodge of useful code along the way. While you might be tempted to keep the code in a set of disparate file, this quickly becomes unmaintainable. Instead, you should consider placing the code in a personal R package."

Jumping Rivers and WhyR partnership

We love supporting the community around the open source tools that we use on a daily basis. In the past, Jumping Rivers has helped useR user groups and SatRdays events to happen by enabling frictionless sponsorship for European groups. We believe that it is our duty to help grow the community that helps us.

Free Workshops

For the last few years we’ve offered automatic sponsorship for meet-ups and satRday events. However for obvious COVID related reasons, most (all?) meet-ups have meeting getting together virtually, so the need for extra Pizza money has diminished. As with most organisations, we’ve had to adapted to the new online-first environment.

Detecting Security Vulnerabilities in R Packages

Author: Colin Gillespie

One of our main roles at Jumping Rivers is to set-up and provide ongoing maintenance to R, Python and RStudio infrastructure. This typically involves ensuring software is up-to-date and making sure everything is running smoothly. The {oysteR} package is an R interface to the OSS Index that allows users to scan their installed R packages.

Job Opportunities: Data Scientist and Engineer

Jumping Rivers is a data science consultancy company focused on R and Python. We work across industries and throughout the world. We offer a mixture of training, modelling, and infrastructure support. Jumping Rivers is an RStudio Full Service Certified Partner.

Speeding up your Continuous Integration Builds

Author: Colin Gillespie

Continuous integration is an amazing tool when developing R packages. We push a change to the server, and a process is spawned that checks we haven’t done something silly. It protects us from ourselves! However this process can become slow, as typically the CI process starts with a blank virtual machine (VM).

Recreating a Shiny App with Flask

So RStudio Connect has embraced Python and now runs Flask applications! At Jumping Rivers we make a lot of use of R, shiny, and Python for creating visual tools for our clients. Shiny has a lot of nice features, in particular it is very fast for prototyping web applications.

Saving R Graphics across OSs

Author: Colin Gillespie

R is known for it’s amazing graphics. Not only {ggplot2}, but also {plotly}, and the other dozens of packages at the graphics task view. There seems to be a graph for every scenario. However once you’ve created your figure, how do you export it? This post compares standard methods for exporting R plots as PNGs/PDFs across different OSs.

Faster R package installation

Every few weeks or so, a tweet pops up asking about how to speed up package installation in R. Depending on the luck of twitter, the author may get a few suggestions. The bigger picture is that package installation time is starting to become more of an issue for a number of reasons.

#SatRdayNCL is back - don't miss out

We are very pleased to announce, as you might already be aware, that SatRday is coming back to Newcastle upon Tyne on 4th April 2020. SatRdays are one-day, non-profit, community organised R conferences held across the world. The event will be held at The Catalyst - right next to St James’ Park.

Customising your Rprofile

Author: Colin Gillespie

Every time R starts, it runs through a couple of R scripts. One of these scripts is the .Rprofile. This allows users to customise their particular set-up. However, some care has to be taken, as if this script is broken, this can cause R to break. If this happens, just delete the script!

Key R Operators

Operators you should make more use of in R. Only recently have I discovered the true power of some the operators in R. Here are some tips on some underused operators in R: The %In% Operator. This funny looking operator is very handy. It’s short for testing if several values appear in an object.

Training courses in San Francisco

Jumping Rivers are coming to San Francisco in January 2020! We’ll be running a number of R training courses with Paradigm Data. You can find the booking links and more details over at our courses page. Don’t be afraid to get in contact if you have any questions!

Counting Arguments in the Tidyverse

Before we start anything, I’d like to mention that most of the hard work came from nsaunders and his great blog post Idle thoughts lead to R internals: how to count function arguments. Let’s get started. The aim of this blog is to capture the number of arguments present in each function with packages of the {tidyverse}.

Sponsorship: SatRdays and useR Groups

SatRdays are great. Low cost R events, held around the world. What’s not to love! For the last year, we have been offering automatic sponsorship for all SatRday events. All the organisers have to do is complete a quick questionnaire and the money is sent on it’s way. So far we have sponsored seven events!

Catch us at these conferences!

At Jumping Rivers we’re always to want to branch into the data science community, and so this year we’re going to quite a few conferences in the autumn. You can catch us at: GSS (Government Statistical Service) Conference - Edinburgh.

We're RStudio Trainers!

Big news. RStudio recently started certifying trainers in three areas: the tidyverse, Shiny and teaching. To be certified to teach a topic you have to pass the exam for that topic and the teaching exam. Even bigger news. Four of your lovely Jumping Rivers trainers are now certified to teach at least one topic!

Upcoming R courses

You’ll be pleased to know that Jumping rivers are running R training courses up and down the UK, in London, Newcastle, Belfast and Edinburgh. I’ve put together a quick summary of the courses available through til the end of the year. They are sorted by place then date.

Thoughts on SatRday Newcastle

Earlier this month I attended the inaugural SatRday Newcastle. This was my first time attending a SatRday event, and I had a really enjoyable day. The event was sponsored by Newcastle University, Sage, RStudio and Jumping Rivers. There were over 100 attendees from across the U.K.

R Packages: Are we too trusting?

Author: Colin Gillespie

One of the great things about R, is the myriad of packages. Packages are typically installed via CRAN, Bioconductor and GitHub. But how often do we think about what we are installing? Do we pay attention or just install when something looks neat? Do we think about security or just take it that everything is secure?

{benchmarkme}: new version

Author: Colin Gillespie

When discussing how to speed up slow R code, my first question is what is your computer spec? It’s always surprised me that people are wondering why analysing big data is slow, yet they are using a five-year-old cheap laptop. Spending a few thousand pounds would often make their problems disappear.

We're Hiring: Data Scientist

Jumping Rivers is a data science company based in Newcastle. We are not sector based and our clients range through all industries. We are looking for individuals who enjoy a challenge. Main Duties Technical Duties: Provide technical training, Development of bespoke statistical algorithms, Building web applications using R and Shiny, Data analysis using R and/or Python.

R Conference Costs v2.0

Last year we gave you a price break down of some of the most popular R conferences around the globe for 2017. We’re going to do it again for 2018. Remember, you can get up-to-date information on upcoming conferences via our GitHub page. It’s important to note that these costs are the prices of an industry ticket for the conference only.

satRdays Newcastle 2019 Conference is Here!

We are pleased to announce the very first Satrday event in Newcastle upon Tyne (and England). satRdays Newcastle is a one-day, low-cost, community organised R conference in the heart of Newcastle City Centre. Where? The event will be held at Newcastle University.

Hacking Bioconductor

Author: Colin Gillespie

Domain squatting or URL hijacking is a straightforward attack that requires little skill. An attacker registers a domain that is similar to the target domain and hopes that a user accidentally visits the site. For example, if the domain is example.com, then a typo-squatter would register similar domains such as

What R version do you really need for a package?

Author: Colin Gillespie

At Jumping Rivers we run a lot of R courses. Some of our most popular courses revolve around the tidyverse, in particular, our Introduction to the tidyverse and our more advanced mastering course. We even trained over 200 data scientists NHS - see our case study for more details.

Voice Control your Shiny Apps

Author: Jamie Owen

I love R and I love Shiny. One of the things I really like about shiny is the ease with which you can incorporate other Javascript based tools and libraries. By my own admission, my JavaScript skills are definitely lacking but there are so many cool libraries out there which can really make visualisation and interaction with displayed content come alive.

R from the turn of the century

Author: Colin Gillespie

Last week I spent some time reminiscing about my PhD and looking through some old R code. This trip down memory lane led to some of my old R scripts that amazingly still run. My R scripts were fairly simple and just created a few graphs.

Podcast recommendations

Anyone who has a long commute or who has to travel with work knows the importance of podcasts. Podcasts allow you turn otherwise useless time, into something both productive and interesting. In this blog post, we’ll describe some of our favourite podcasts.

Styling {ggplot2} Graphics

Author: Colin Gillespie

In our previous post, we demonstrated that contrary to popular opinion, it is possible to generate attractive looking plots using just base graphics. Although we did confess, that it did take a lot of time and effort. In this post, we repeat the same exercise.

Why R 2018 Winners

So it’s here… After lots of entries (147 to be precise), we can finally announce the winner of the WhyR 2018 Competition! But first, we have to tell you quickly about how we picked the winner. How we did it. So it really wasn’t that hard. We held the questionnaire on typeform.

Competition: WhyR 2018

It’s competition time! We’re sponsoring Why R? 2018 Conference. The conference runs from the 2-5th of July in Wroclaw, Poland and us nice folks here at Jumping Rivers are giving away a free ticket to the conference!

The Water Hub Hackathon; We won!

Well well well, we’ve only gone and won The Water Hub hackathon! Well, joint winners but the main word is WINNER. First of all we want to say thank you to all the guys at the Water Hub and the Sunderland Software Centre for organising and inviting.

Regular Expressions Every R programmer Should Know

Author: Theo Roe

Regular expressions. How they can be cruel! Well we're here to make them a tad easier. To do so we're going to make use of the {stringr} package. We're going to use the str_detect() and str_subset() functions. In particular the latter. str_detect() is used to detect whether a string contains a certain pattern.

ReCoding the Wall: Mixing art and code

Author: Sebastian Mellor

At Jumping Rivers we often collaborate with the local community. This includes attending regional events such as those run by Creative FUSE, a partnership between the North East’s five universities. I recently attended an event at the National Glass Centre called ReCoding the Wall.

Which world leaders are twitter bots?

Author: Theo Roe

Given that I do quite like twitter, I thought it would be a good idea to right about R’s interface to the twitter API; {rtweet}. As usual, we can grab the package in the usual way. We’re also going to need the {tidyverse} for the analysis, {rvest} for some initial webscraping of twitter names, {lubridate} for some date manipulation and {stringr} for some minor text mining.

Edinbr: Text Mining with R

During a very quick tour of Edinburgh (and in particular some distilleries), Dave Robinson (Tidytext fame), was able to drop by the Edinburgh R meet-up group to give a very neat talk on tidy text. The first part of the talk set the scene: What does does text mean? Why make text tidy? What sort of problems can you solve?

Free ticket to eRum

So… big news. Jumping Rivers is sponsoring eRum 2018 and in light of this news we are giving away a free place at the conference! (Not to mention our very own lead consultant, Colin Gillespie, is one of the invited speakers.) The Main Competition: Here at Jumping Rivers, we maintain the site meetingsR.

Our Logo In R

Author: Colin Gillespie

Hi all, so given our logo here at Jumping Rivers is a set of lines designed to look like a Gaussian Process, we thought it would be a neat idea to recreate this image in R. To do so we’re going to need a couple packages. We do the usual install.packages() dance (remember this step can be performed in parallel).

Styling Base R Graphics

Author: Colin Gillespie

Base R graphics get a bad press (although to be fair, they could have chosen their default values better). In general, they are viewed as a throw back to the dawn of the R era. I think that most people would agree that, in general, there are better graphics techniques in R (e.g. {ggplot2}).

StanCon 2018 Highlights

This year we had the privilege of sponsoring StanCon. Unfortunately, we weren’t able to actually attend the conference. Rather than let our ticket go to waste, we ran a small competition, which Ignacio Martinez won with his very cool (but in alpha stage) R package.

SatRday in South Africa

Jumping Rivers is proud to be sponsoring the upcoming SatRday conference in Cape Town, South Africa on 17th March 2018. What is SatRday? SatRdays are a collection of free/cheap accessible R conferences organised by members of the R community at various locations across the globe.

The Trouble with Tibbles

Author: Theo Roe

Let’s get something straight, there isn’t really any trouble with tibbles. I’m hoping you’ve noticed this is a play on 1967 Star Trek episode, “The Trouble with Tribbles”. I’ve recently got myself a job as a Data Scientist, here, at Jumping Rivers. Having never come across tibbles until this point, I now find myself using them in nearly every R script I compose.

Conference Cost

In last weeks post we tantalised you with upcoming R & data science conferences, but from a cost point of view, not all R conferences are the same. Using the R conference site, it’s fairly easy to compare the cost of previous R conferences.

Upcoming R conferences (2018)

It’s that time of year when we need to start thinking about what R Conferences we would like to (and can!) attend. To help plan your (ahem) work trips, we thought it would be useful to list the upcoming main attractions. We maintain a list of upcoming rstats conferences.

Hosting RStudio Server on Azure

Author: Colin Gillespie

Can’t be bothered reading, tell me now. Host RStudio server on an azure instance. Configure the instance to access RStudio with a nice url. Getting started: Azure is cloud computing framework provided by Microsoft, the same idea as AWS by Amazon.

Competition: StanCon 2018 ticket

Today we are happy to announce our Stan contest. Something we feel very strongly at Jumping Rivers is giving back to the community. We have benefited immensely from hard work by numerous people, so when possible, we try to give something back.

Official StanCon Sponsor

Stan is freedom-respecting, open-source software for facilitating statistical inference at the frontiers of applied statistics. Or to put it another way, it makes Bayesian inference fast and (a bit) easier.

Timing

Author: Theo Roe

As time goes on, your R scripts are probably getting longer and more complicated, right? Timing parts of your script could save you precious time when re-running code over and over again. Today I’m going to go through the 4 main functions for doing so.

Speeding up package installation

Author: Colin Gillespie

Can’t Be Bothered Reading, Tell Me Now. A simple one line tweak can significantly speed up package installation and updates. The Wonder Of CRAN: One of the best features of R is CRAN. When a package is submitted to CRAN, not only is it checked under three versions of R