How to Push to GitHub and GitLab Simultaneously

I’m trying to follow a self-imposed rule of backing up important work to at least three places. Given much of what I do is text-based, online git repositories are an obvious choice. But what if one of them suffers a DOS attack? Or tomfoolery around data protection and tariffs means it becomes unavailable in specific regions? I resolved to push my commits to both GitHub and GitLab. Initially, I tried GitLab’s mirroring to automatically pull all my changes from my GitHub repo. Although this works perfectly with public repos, it was a lot more fiddly with private repos. I definitely didn’t want a manual process or one that involved configuring additional passwords. ...

2 February, 2026 · 3 min · 546 words · Catherine Pope

How to Save Gmail Attachments to a Folder

One of my many new year’s resolutions was to impose order on my Gmail inbox. Despite my best efforts, I have several gigabytes of emails - all of which makes it difficult to back up or migrate them. Many of those email are invoices, receipts, or statements. I need to keep them for my business records, but they’re seriously cluttering up my workspace. Although I could create a mail archive with an email client like Thunderbird, that’s not very accessible. To find a specific invoice, I’d need to reimport those thousands of emails. I suddenly wondered whether there was a way of systematically saving the PDF attachments to a folder. After all, I don’t need the email itself, just the file. Needless to say, there wasn’t an especially straightforward method, or one that didn’t involve paying a third-party and giving them access to my mailbox. Finally, I discovered that I could run a script on my Gmail. ...

28 January, 2026 · 4 min · 808 words · Catherine Pope

How to Back Up and Restore your Zotero Library

Although syncing your Zotero Library ensures you have a cloud-based backup, it’s also a good idea to schedule independent backups. Why am I giving you extra work to do? Well, if you accidentally delete a bunch of items in Zotero just before it syncs, your empty version is copied to the Zotero servers. This is a fairly unlikely scenario, but it’s not one you’d want to encounter. In this post, I’ll explain how to back up your Zotero Library, and then outline some methods for restoring your items in different scenarios. ...

7 January, 2026 · 6 min · 1127 words · Catherine Pope

How to Import Your EndNote Library into Zotero

One of the questions I’m asked most frequently is whether it’s possible for EndNote users to switch easily to Zotero. Yes, it is! Many of the tutorials focus on exporting your library in RIS format. Although straightforward, this method doesn’t retain your PDF attachments, Groups, or formatting. In this tutorial, I’ll walk you through the XML method. XML is a more sophisticated file format that’s readable by many tools. You need to follow the instructions precisely, but you’ll get a much better result. ...

9 December, 2025 · 3 min · 482 words · Catherine Pope

How to Import Your Mendeley Library into Zotero

I often meet researchers who are unhappy with their bibliographic referencing tool, but are put off by the potential faff. They imagine it would be as much fun as changing banks. Well, if you’re thinking of moving from Mendeley to Zotero, I have good news: it’s very easy. There are two main methods. Let’s look at them in turn. Method 1 - Export a RIS file from Mendeley A RIS file is a format that allows citation tools to exchange data. ...

8 December, 2025 · 3 min · 553 words · Catherine Pope

Managing Zotero Attachments with Zotmoov

In my previous post, I explained several options for managing your Zotero storage. If you’re willing to install a plugin, there’s another solution: Zotmoov. If you’ve been using Zotero for a while, you’ve probably heard of Zotfile, a popular plugin that allowed users to automatically organise PDFs and keep them synced through cloud storage. Unfortunately, Zotfile is no longer maintained and doesn’t work with Zotero 7. The good news is that Zotmoov offers some of the same features, while others are now a core part of Zotero 7. ...

20 November, 2025 · 4 min · 794 words · Catherine Pope

How to Create a Linux Virtual Machine on a Mac

As a technical writer, I often work with different operating systems and environments to test applications. It would be a nuisance if I needed a separate machine for every test case. Happily, it’s possible to run multiple operating systems on a single machine. In this tutorial, I’ll explain how to create a Linux virtual machine (VM) on an Apple Silicon Mac using UTM (which stands for Universal Turing Machine). UTM is free, open-source virtualisation software that’s specifically designed for macOS. ...

5 November, 2025 · 6 min · 1090 words · Catherine Pope

How to Create a Book Database with Hugo and YAML - Part 3

Once I got my YAML book list set up, I couldn’t stop thinking of different uses for it. Although I’m mainly using it to generate reading lists for specific workshops, I thought it would be useful to also generate a full reading list or bibliography. In this tutorial, I’ll extend the code from Part 1 and Part 2 to retrieve and display all the books, arranged by subject. To follow along, you’ll need the following files from those earlier tutorials: ...

5 October, 2025 · 3 min · 569 words · Catherine Pope

How to Create a Book Database With Hugo and YAML - Part 2

In my previous tutorial, I showed how to create a simple YAML database in Hugo for reusable book links. Only five minutes passed before I started tinkering and building something fancier. In this tutorial, I’ll explain how to create subject-specific book lists. This approach works well for quickly generating and sharing reading lists. As with the previous tutorial, you can also adapt this code for organising web links, tools, or other resources. ...

30 September, 2025 · 5 min · 948 words · Catherine Pope

How to Create a Book Database with Hugo and YAML - Part 1

While creating resources for some of my workshops, I realised I was recommending the same books repeatedly. This also meant I was typing the same details repeatedly - time I could be spending reading. I then started experimenting with creating a simple database in Hugo. I wanted a solution that would allow me to maintain my book details (title, author, and ISBN) in one place, then pull them into specific pages with a shortcode and link to a bookstore. This way, I’d: ...

29 September, 2025 · 5 min · 979 words · Catherine Pope