Dr James Ashford

Posts

You’re Not Distro Hopping, You’re Probably Just Desktop Environment Hopping

Often within the Linux community, you hear how common it is for people to hop from one Linux distro (distribution) to another — myself included. I…

Changes to my ThinkPad Setup: October 2025

It’s been a while since I have written a post on my ThinkPad collections. In fact, it’s been a while since I have written anything on this…

My Latest ThinkPad Setup: New Laptop and Distro

It’s official. I’ve now become a new, fully-fledged member of the ThinkPad cult community. What have I done? I’ve only gone at…

More Than Just a Title: Rethinking the Value of a PhD

I remember a couple of years ago now I was waiting in the GP surgery to collect my prescription and when the receptionist called my name over, I…

For the Love of JavaScript! — Notes from a Python/Go Dev Going Back to the Browser

In a recent blog post, I talked about a little web app I built which process data in real-time from the Bluesky firehose using JavaScript’s…

Fun with Bluesky and Websockets

Do you remember the good old days when we used to have complete free-for-all access to the Twitter API? Oh, those were the days. I remember making so…

Honest Review of ThinkPad X240

I’m a huge Apple fanboy. There is very little you can do to persuade me to use another device for my daily and work driver. I love how all my…

Solving Word Ladders With Graph Theory

If you read the newspapers like me (yes, people still do that), you may have come across a “word ladder” in the puzzle section. It’s…

Announcing My First Open Source Project: Graphkit

Before the Christmas break, I was working on my own little side project for working with graphs as part of a wider exercise to learn the Go…

Mastering the Bluesky Firehose with Python: A Simple Tutorial

Bluesky is awesome for many reasons, however one feature which not many may know about is the ability to collect data using the publicly available API…

Experimenting with Thermal Printing: My Setup, Mishaps, and Tips

A few weeks ago, I shared some of the fun I had setting up and experimenting with my new thermal printer. Since then, a few people have shown interest…

Raspberry Pi + Receipt Printer = Hours of Fun

About a week or so ago now, I came across a compelling post from Hacker News about a guy who has configured a dot matrix printer to deliver his daily…

Finding Peaks in a Dataset and Why It Is Not Straightforward

In my job as a data analyst, I come across many different types of problems to solve. Some are relatively easy to solve, others not so much. That was…

Notes on Crawling Instances on the Known Fediverse

One of my favourite features of Fediverse is how different instances (whether it be Mastodon, Lemmy or Pixelfed) cooperate with each other over using…

Visualising Paper Co-Author Collaboration Networks

As part of my job as an academic, a large part of what I do involves producing new knowledge by publishing research papers with other fellow…

Analysing the 2023 FIFA Women's World Cup with Graph Theory

It’s fair to say that I don’t follow many sports. I’m more of a casual observer myself and would much rather watch something like…

How to Stream from the Mastodon API via HTTP in Python

As I’ve mentioned in many of my blog posts before this one, Mastodon has a publicly available API which can be used to scrape statuses, collect…

Your Social Network Is Bigger Than You Think!

Your social network is bigger than you think!

I remember what got me really interested in social network analysis as a field of academic study was…

How to Build a Self-Organising Map (SOM) in Python Step-by-Step

In a separate blog post, I covered the basis for understanding how self-organising maps (SOM) work. This included what a SOM is, why SOM's are useful…

How Self-Organising Maps Work: Explained with Graphics

Artificial Neural Networks (simply known as neural networks) come in all different shapes and sizes and can be designed to solve different types of…

Analysing Posts About the #Coronation on Mastodon

There is no doubt that the recent coronation of King Charles III was a massive event in the UK. Whether you're in favour of the monarchy or not, there…

How to Build Tag Clouds From Mastodon Hashtags

Hashtags are an important part of microblogging and are used to reach a wider audience of interested people. Much like Twitter, hashtags are also…

The Relationship Between Coding and My Mental Health

If there is one thing you'll probably know about me, it is that I love writing code. I do it for my job and I do it for leisure. It’s fair to…

Linux Software I Use for Data Science Via the Terminal

In the previous post, I talked about some of the software I use every day for performing data science related tasks. In my case, the vast majority of…

Top 5 Software I Use For Data Science Projects Everyday

Like most data scientists and researchers, I spend most of my day in front of a computer. Most of the time, I’m either writing, reading or…

How to Create Simple Dynamic Graphs in Gephi

In a previous post, I walked through the basics on how to import a network into Gephi using a spreadsheet. As shown, this is an easy way to import…

Finding New Followers on Mastodon Using Python and Network Science

I'm still relatively new to Mastodon and, so far, I love it. Ever since Twitter started going down hill (for reasons which I won't cover yet again) I…

How to Import a Network From a Spreadsheet Using Gephi

Gephi, is an amazing piece of software for building and visualising different types of network. It is considered the go-to software for network…

Analysing #ClimateChange and Related Hashtags on Mastodon

While Mastodon is still a relatively new platform (especially compared to other platform like Twitter) it is filled with a thriving community of…

Modelling Discussion Threads From Mastodon Timelines Using Python and Networkx

On Mastodon, users have the ability to reply to another user's post by leaving comments as a response. This feature is designed to encourage users to…

Building User-Hashtag Co-occurrence Network from Timelines on Mastodon

Hashtags are an incredibly useful feature for annotating posts and have an active role on microblogging platforms such as Twitter and Mastodon. They…

How to Scrape Mastodon Timelines Using Python and Pandas

Over the past few months, Mastodon, the Federated microblogging alternative to Twitter, has gained a lot of attraction in light of the events going on…

Interacting With REST APIs in Python With 5 Lines of Code

An essential skill for any web scraper or data scientist is to know how to collect information from a publicly available REST API. In short, a REST…

Loading Data into Pandas: 5 Tips and Tricks You May or May Not Know

If you've ever worked with Pandas in Python before, you'll know that there are a bunch of different ways in which you can import tabulated data.…

Will They Reply? Analysing the Reply Networks of 32 Programming Language Subreddits

Have you ever used Reddit for learning a programming language? There are many subreddit detected to specific programming languages. They are great…

Creating Reply Networks from Reddit Comment Threads

In the previous blog post , we learned how to use PRAW to scrape and process data from Reddit. We finished off by looking at how to collect top-level…

How to Collect Data From Reddit - Introducing PRAW

If you're a nerd like me, you'll probably be very familiar with Reddit . Reddit describes itself as "the front page of the internet" which is…

Fun with Forwarding and SSH Tunnelling

Linux (and all UNIX-based systems for that matter) is a pretty well thought out operating system with tones of useful features. I use either macOS or…