16 March 2021

Accessing Python package index JSON APIs with requests

PyPI, the Python package index, provides a JSON API for information about its packages. This is essentially a machine-readable source of the same kind of data you can access while browsing the website. For example, as a human, I can head to the numpy project page in my browser, click around and see which versions […]

9 March 2021

The IPython shell and Jupyter notebooks

The Jupyter project started out as IPython and the IPython Notebook. It was originally a Python-specific interactive shell and notebook environment which later branched out to become language-agnostic, supporting Julia, Python and R – and potentially anything else. IPython is a Python shell – similar to what you get when you type python or python3 […]

2 February 2021


For some time, Python has had support for managing virtual environments. Python 3.3 even added the built-in module venv for creating environments without third-party libraries. There are a number of different tools Python programmers use to manage their environments and the one I use is called virtualenvwrapper. Virtual environments are a way of separating your […]

1 December 2020

Advent of Code

The best tool is one that helps you learn! I’ve enjoyed participating in Advent of Code for the last few years. It’s a series of daily Christmas-themed coding challenges throughout December, and it’s great fun. I post my solutions in Jupyter notebooks on GitHub:

30 June 2020


Ever wanted to know how many visitors you’ve had to your website? Or wanted to know which pages, articles or downloads are the most popular? If you’re self-hosting your blog or website, whether you use Apache, nginx or even IIS (yes, really), lars is here to help. Lars is a web server log toolkit for […]

Tags: dave jones
9 June 2020


structa is a hidden gem. It’s one of many great utilities created by Dave Jones. It’s a command line tool for analysing JSON files. Sometimes you need to inspect the structure of a large nested JSON file, and it’s too unwieldy to work out what kind of data it contains. structa is perfect for showing […]

2 June 2020

Build an Anvil web app and deploy it to a Raspberry Pi

Last time, I did a video tutorial introducing Anvil, a web-based tool for building web apps. Today I have a new video in which I build a new app in Anvil, and then deploy it to be hosted on a Raspberry Pi, to make use of some Raspberry Pi specific features. This app features a […]

19 May 2020

Build a custom Google Map web app with Anvil

Anvil is a web-based tool for building full-stack web apps with nothing but Python. It’s great for building demos, prototypes, web forms, CRUD apps and all sorts of interactive applications. The Anvil app builder is probably the most enjoyable developer experience I’ve ever had. Its autocomplete is incredible – you can, for the most part, […]

3 March 2020


One of my essential tools for working with code and data files is meld. It’s a graphical diff tool, so if you’ve ever used diff and struggled to make sense of the output, meld is here to help. This is a brilliant description from the project’s website: Meld is a visual diff and merge tool […]

2 July 2019

Mythic Beasts Pi Cloud

Mythic Beasts is an awesome hosting company based in Cambridge. They host the Raspberry Pi website, including the Raspbian archive and download images, and like to make sure we eat our own dog food by hosting the website on new Raspberry Pi hardware for product launches. Mythic built a Raspberry Pi server rack in their […]

18 June 2019


Last week I covered terminal multiplexer byobu, and this week’s tool is quite similar. Terminator is a single-window split-screen terminal multiplexer that allows you to send identical keystrokes to all terminals at once. This means you can SSH into any number of machines, and run the same commands simultaneously, and see them all at the […]

11 June 2019


Byobu is a text-based window manager and terminal multiplexer. If you’ve ever used screen, it’s similar but more modern and more intuitive. If you SSH’d into a Pi or server, ran sudo apt update && sudo apt upgrade for example, and lost your internet connection while it was running, your command would be lost to […]

4 June 2019

Command line speedtest tools

Today I’m sharing three tools for checking your internet and LAN speed: speedtest, fast and iperf. speedtest speedtest is an old favourite. It’s implemented in Python, packaged in apt and also available with pip. You can use it as a command line tool, or within a Python script. Install it with: sudo apt install speedtest-cli […]

21 May 2019


The deadsnakes PPA lets you install multiple Python versions on your Ubuntu system, so instead of only having just the Python 2.x and Python 3.x that comes with your distribution (18.04 comes with Python 3.6, and 2.7 is available), you can install older or newer versions, from 2.3 (!) to 3.8! The way PPAs (Personal […]

Tags: python, ubuntu
7 May 2019


Have you ever used pastebin websites like to share snippets of code, data or text? Did you know you can publish a file from your computer or a Raspberry Pi to a pastebin site with a single command? Install pastebinit: sudo apt install pastebinit Mac users can install with brew. Usage: pastebinit <filename> pastebinit […]

30 April 2019

ssh tricks and tips

I use SSH constantly. Every day I find myself logged in to multiple servers and Pis (both in the same room as me and over the internet). I have many devices I need access to, and different requirements for gaining access, so as well as using various SSH/SCP command options I have to maintain a […]

23 April 2019


I’m not sure whether logzero took its name to fit in with the series of “zero boilerplate” libraries like pygame-zero, GPIO Zero and guizero, but it’s certainly in that category. It’s a Python library that makes logging straightforward. It makes logging as easy as a print statement, which is a big win for education, as […]

Tags: logging, python
16 April 2019


I was recently introduced to ranger by Dave Jones. It’s an incredibly handy terminal based file navigator that’s written in Python and is available in Debian, Raspbian and Ubuntu. Ranger allows you to navigate your filesystem using the arrow keys on your keyboard: up/down to select files in the current directory (middle pane); left/right to […]

12 April 2019

Tooling Tuesday

I’ve decided to take a leaf out of Les‘s book and post about a new tool every Tuesday! From now on I’ll be sharing short weekly posts introducing a tool I’ve enjoyed using – mostly software stuff usually related to open source, Python, Linux, Raspberry Pi and so on. I’ve set up a new blog […]

Tags: tooling