Keith Bradnam Keith Bradnam

I’ve had the decorators in: new look to website plus accessibility improvements

After many years, I’ve bitten the bullet and made some changes to this website. Some of these are cosmetic and may not be noticed, but there are many underlying changes to the infrastructure including a lot of small, but notable, accessibility improvements.

Regular visitors to this blog — which is probably just me — might notice that things have changed a little bit. I’ve taken some time over the last week to update the look and feel of my site.

Outwardly, it’s not a very bold change. This website still consists of three pages, with the blog page as the main page that includes summaries of each post. I’ve ditched the ‘Read More’ links as each blog post title is also a link.

The most obvious visual change is that I have refreshed the look of the site and doubled down on red as an accent colour.

However, there are many more changes that have happened _behind_ the scenes, including many accessibility improvements.

Squarespace upgrade

The main reason I made any changes to the site is that this website has been running on Squarespace v7.0 for many years. The latest version of Squarespace is v7.1; while this might not sound very different, it’s quite a fundamental change.

Upgrading to 7.1 is a non-reversible action and after I made the change, it immediately changed how my site looked (for the worse). Squarespace 7.1 just does a lot of things differently and some of the things you could do in 7.0 just don’t exist any more.

I have spent many hours just making very small refinements to get the site broadly looking like it used to. Although this was a bit of a time sink, it made sense given that the charity site I manage (careif.org) and the site I built for my artist friend (meganyelets.com) are both running Squarespace, so it makes sense for all of these sites to be running on the same version.

Accessibility updates

One of the things I really wanted to do with this refresh is improve the accessibility of this site. This follows a lot of work I’ve been doing in my main job to help improve the accessibility of the RCPsych website.

This means that this website now includes:

  • Improvements to hover states: you’ll see a yellow background when hovering over a link, the link text will darken and the underline will thicken.

  • Improvements to focus states: keyboard users can tab through elements and see a black box border on links.

  • Use of ‘active’ state: clicking on a link slightly darkens the yellow background colour to reinforce that a link has been clicked.

  • Making use of visited link status: if you click on a link, then your browser will remember this and change the link colour to grey. This is not so much of an accessibility improvement, but could potentially help people with memory problems, providing a clearer indication of what they have previously clicked on.

Incidentally, removing all of the ‘Read More’ links on my blog landing page is another accessibility improvement. Link text should be unique on a page, as someone using a screen-reading device would otherwise struggle to distinguish between different link destinations if they all say the same thing.

These are the sorts of improvements that can take a bit of time to implement, but it’s a one-off investment that provides lasting benefits. You will never know which users of your website have disability requirements, so making it as accessible as possible removes barriers that prevent some users from benefiting from content.

Read More
Keith Bradnam Keith Bradnam

Keep on blogging

A blog post about the many different blogs that I’ve had over the years and about my desire to hopefully blog more going forwards.

I surprised myself last week by writing almost 2,000 words for a new post on my ACGT science blog. This post came very easily to me and I would go so far as to say it was an enjoyable experience, reminiscing about a decision I was involved in over 20 years ago to decide a new set of gene identifiers for a model organism database:

The ACGT blog was something I started back in 2012 when I was an active science researcher at the Genome Center in UC Davis. I had lots of things on my mind from my research and found it a great way to get things off my chest. My first post is still up:

I went on to write another 300 or so posts while I was still an active scientist. Many of the posts that I wrote — particularly my deep dives into how some bioinformatics program worked — have turned out to be ‘evergreen’ content and continue to receive a lot of traffic (over 10,000 visits for the entire website last year!):

Line chart showing yearly visits to my ACGT website since 2014. Data peaks at 80K visits in 2015 and then slowly declines to 10K visits in 2025

Line chart showing yearly visits to my ACGT website since 2014 (data from Squarespace analytics)

My most popular post continues to be a nerdy deep-dive article that I wrote back in 2014 about some particular pieces of bioinformatics software:

Understanding MAPQ scores in SAM files: does 37 = 42?

This post received over 2,500 views last year — over a quarter of all of the website’s traffic! — though I am expecting this sort of traffic to slowly dry up now that AI tools will give people accurate enough answers without the need to read all of the underlying material.

Post-science blogging

After I left science research in November 2015 and moved into science communication (January 2016), I still had some ideas for blog content. Including my recent post outlined at the top of this post, I’ve managed to publish almost 40 ACGT blog posts since then, though very few in recent years (and only three since 2022).

I like the idea that (very) occasionally I have an idea for something that is still relevant (and might even be of interest to people). So I’m happy to continue paying for the ACGT.me domain name and hosting the content for long as there is interest in the content.

Other blogs

In the past I once had an Apple iWeb blog which relived memories of my time at secondary school (age 10-13). Sadly, that was all lost at some point (I’m generally better about saving blog posts these days).

When I lived in Davis, CA I ended up writing some blog posts for the local newspaper (the Davis Enterprise). These seem to still be up, but are now paywalled. One of my favourite posts there was a reflection on the life of my grandad, written shortly after he died.

I still have my Molluskan Zodiac blog (the only blog devoted to molluskan-themed horoscopes that are generated by a Perl script) which is still updated weekly. I’ve also tried a Medium blog about social media analytics (which is still online, but defunct), a tumblr blog that described the 5-star rated songs in my music library, and many more (including a short-lived technology blog which is still technically online but somewhat hidden).

There are other blogs too that I won’t even mention. So I’ve blogged a lot in the past, have been through a relatively quiet period, but hope to gain a bit more enthusiasm going forwards. And this brings me to…

This blog

Away from the active, but infrequently updated, ACGT blog, I obviously have this blog that you (dear reader) are reading now. I started this around the same time as my ACGT blog, but since 2022 I’ve only managed seven posts here. So not exactly proflific, but at least that’s more than twice as many posts as on the ACGT blog. However, I’m trying to be better about coming up with ideas for this blog.

Given that my main job involves digital communications, and that I am a volunteer at a charity where I manage their website and social media, it makes sense that this is a topic I should feel able to write about.

I did make my post earlier this year on dark social web traffic and I will try to think of more things like this where maybe I have something useful to say.

I think I also need to be less precious about waiting for a really good idea before writing something. If I want to get back into blogging (which I do), then it is probably more important for me to write things which might be rough thoughts, not yet fully formed.

Additionally, I also think, that I shouldn’t be precious in wanting to only write about digital communications. So maybe this blog will need to ‘find its way’ a bit for me to better identify what it is that I enjoy writing about.

If you’ve got this far, then thank you and if you are also a fellow blogger, then it goes without saying that you should please keep on blogging.

Read More
Keith Bradnam Keith Bradnam

Rekindling the joy of building a website

A short tale of how I unexpectedly ended up creating a website for an artist friend.

Abstract painting of a seascape. The square canvas has a bottom half of vibrant, swirling blue colours that could be interpreted as resembling a stormy sea. The darker blues contain smaller highlights of purple and light blue.

Art by Megan Yelets

Last Thursday I was waiting to see my 8-year old’s school play and was chatting to a parent friend who was standing in the line next to us.

She is a great artist who is currently showing her work at an exhibition in London, but she revealed that she didn’t have a website or own her own .com domain.

A couple of hours after the play ended I bought her domain name for her. I also offered - if she wanted - to build her a website for free.

I have quite a bit of experience using Squarespace to build websites (including this site) and I felt like this might be the sort of thing where a built-in template would probably meet most of her requirements without much need for tweaking.

We met the next day to discuss what options were available and less than a week later her website — meganyelets.com — is now live (built to her specifications)!

Building a site for an artist

This is a very different type of project compared to anything else I have done in my years of managing and building websites. After we had reviewed some other artist’s websites, Megan had requested that she wanted a big cover image on the home page that would lead into a gallery of some of her images.

It quickly became apparent to me that we needed the whole focus to be on the art itself. Consequently this led me to keep everything else relatively plain and unobtrusive.

I probably had the first draft of the site all complete with a couple of hours. I then spent many more hours doing lots of fine tweaking.

Frustratingly, I discovered that although Squarespace lets you add custom code and CSS while you are building the site (i.e. while you are effectively on a free plan) but as soon as the site goes live, your custom code will be removed if you are on their base level plan.

I only realised this after the site went live and so I then had to find a workaround as I didn’t think it was worth a £60 per year upgrade to the plan just to get this one extra feature.

Next steps

Megan is very happy with the results and I hope that she now has a platform to help showcase her lovely art to a wider audience.

As for me, there is still some work to be done and I hope to set her up with a newsletter service so she can more easily share updates with people interested in her work.

Read More
Keith Bradnam Keith Bradnam

Why ‘dark social’ and AI traffic makes it harder than ever to make sense of website analytics

An increasing challenge for those of us working in the world of website analytics is the impact on traffic from Artificial Intelligence (AI) tools such as ChatGPT and Gemini. The traffic – or as I will come on to discuss, the lack of traffic – from such platforms is a relatively new phenomenon. However, it adds to other relatively recent challenges such as a rise in what is known as ‘direct’ traffic as well as the mysterious sounding source of traffic known as ‘dark social’.

An increasing challenge for those of us working in the world of website analytics is the impact on traffic from Artificial Intelligence (AI) tools such as ChatGPT and Gemini. The traffic – or as I will come on to discuss, the lack of traffic – from such platforms is a relatively new phenomenon. However, it adds to other relatively recent challenges such as a rise in what is known as ‘direct’ traffic as well as the mysterious sounding source of traffic known as ‘dark social’.

Putting things in buckets

Let me back up a bit. Website analytics platforms routinely try to categorise traffic to web pages into different ‘buckets’ based on what they know about how someone arrived on a website.

Analytics platforms can tell you that a page view on your website originated from someone who arrived using a search engine, or from a public post on LinkedIn, or that your site was linked to from another website such as Wikipedia.

These different buckets all have special names, but the one that is occupying more of my time lately is the bucket called ‘direct’ traffic.

Historically, this captured traffic from people who went ‘directly’ to your website by typing an address in your browser or by clicking on a browser bookmark. But these days, the ‘direct’ bucket of traffic captures a lot more than that.

A better choice of name would be ‘untraceable’. If Google Analytics (and other website analytics platforms) can’t detect how the visitor came to your website, that traffic gets put in the ‘direct’ bucket.

This means that direct traffic can also includes things such as clicking on links in emails, or links in most messaging apps. Other sources of direct traffic include links on platforms like Apple News or links inside private Facebook groups.

The dark side clouds everything

‘Dark social’ is the broad (and nebulous) term that has emerged to describe a subset of this untraceable direct traffic. It was coined by Alexis Madrigal in 2012 in his blog post Dark social: we have the whole history of the web wrong.

It is typically used to describe traffic that might come from some social media platforms and messaging apps. WhatsApp is very likely a big source of ‘dark social’ traffic for many websites.

Because direct traffic is – by its very nature – untraceable, you can’t really ever know where it came from. Some tell tale signs of dark social traffic is that the traffic is to a specific page that might have been shared by someone, e.g. a news story or blog post.

It is also probably is more likely to have come from a mobile device as most social media is still consumed on phones. If you didn’t know, analytics platforms can track a lot of data about the technology used to visit a web page (desktop PC vs mobile phone, Mac vs Windows, Firefox vs Chrome etc.)

There are other signals that can be also used to potentially identify subsets of direct traffic but ultimately this is all just educated guessing and you can never know for sure.

Rise of the machines

AI is rapidly changing the landscape of how website traffic is captured. First and foremost, if you run an information-heavy website with lots of resources, then AI tools might be leading to a big decline in your traffic.

This is simply because many more people are getting their answers from an AI chatbot and no longer need to click through to a website to find out more. This is assuming that chatbots provide a link to your site which may not always be the case…and even if they do, that link might be very easy to miss.

A lot of AI tools leave a digital fingerprint that enables web analytics platforms to put them in the ‘referral’ bucket of traffic. I.e. where traffic to your site was a referral from another website or tool.

A recent update to the website analytics platform that I routinely use (Matomo Analytics) has started capturing this known AI traffic in a new ‘AI Assistants’ bucket which lets me see traffic from popular tools such as ChatGPT, Copilot, Perplexity etc.

This is a screengrab of  Matomo Analytics’ ‘AI Assistant’ data. This is displayed a simple table with various AI tools in the first column (ChatGPT, Copilot, Gemini are the first three) and then associated columns of data such as ‘Visits’

AI Assistants traffic as it appears in Matomo Analytics

This traffic is growing rapidly but doesn’t neatly explain all AI-related traffic. If you use Google’s new AI mode in their search interface and then click through to a website, this is still captured in website analytics platforms as search engine traffic. But if you use a tool like Siri or Alexa to open a webpage, this might show up as direct traffic.

A tangled mess

All of this means that it is getting harder than ever to disentangle the various strands of traffic that bring people to your website. Dark social contributes an unknowable, and possibly increasing, subset of direct traffic and I imagine that the growth of WhatsApp is a big part of this.

AI tools - which are causing a reduction in traffic to many websites - might record what traffic they do generate in several different ways.

I’m finding that I’m increasingly using terms like ‘presumed WhatsApp’ traffic in some of my regular analytics reporting as the real answer about where our website traffic is coming from is increasingly ‘I don’t know’.

Regular recording of data is helpful as you can then start spotting trends that might reveal which areas of your website are seeing differences in traffic.

I’d also recommend using Google’s search console tool if you are concerned about AI tools displacing and replacing traditional search engine traffic. I’ve already noticed that the biggest drops in search engine traffic are to those sections of the website which are ‘informationally rich’. I.e. the content that is more likely to have been regurgitated as part of an AI tool’s answer to someone’s question.

Good luck with your website analytics detective work…it’s a jungle out there.

Read More
Keith Bradnam Keith Bradnam

How to walk 70 miles a month without leaving your office

How I ended up walking 70 miles a month…all while working at my desk. This post looks at the twin joys of walking pads and excessive data logging.

In October 2024, I took advantage of an Amazon Prime deal to buy myself a ‘walking pad’. For the uninitiated, walking pads are treadmills designed for home use. While some models are suitable for running on, most are aimed at sustaining moderate to brisk walking speeds. Though, as with so many gadgets these days, there is a lot of choice out there (Amazon currently has 414 search results for the term ‘walking pad’).

In 2024, these devices had become quite popular, and there were a lot of low-priced options on Amazon. I already had a cheap standing desk solution (a unit that you place on top of your existing desk to raise the monitor and keyboard), so I felt it was time to take the plunge to see if I could walk while I worked.

I opted for a folding walking pad model as I envisaged moving it aside when not in use, lowering the desk and using my chair. This is what I chose, the WalkingPad Z1 (sometimes marketed under the ‘Kingsmith’ brand in other markets).

Computer-generated image of a woman in sports clothing walking on the black walking pad. An inset image shows the walking pad partly folded. There is no background detail and everything else is white.

WalkingPad Z1 image from WalkingPad website.

First steps

In my first few months with it, I experimented with lots of different walking speeds to work out how fast I could comfortably walk while still working. I didn’t want to use the walking pad while in meetings, but I needed to be able to walk at speeds that allowed for fine mouse control.

The remote that comes with the desk allows you to make changes to the speed in 0.5 kilometres per hour (km/h) increments. If you pair it with the (somewhat flakey) app, you can increase the precision to 0.1 km/h increments.

I found that 2.0, 2.5,  and 3.0 Kmph speeds were perfectly fine for all of the type of work I do. Moving beyond 3.5 km/h means that it can get trickier when I’m trying to do anything requiring careful mouse control. I have tried working while walking as fast as 5 km/h, but that’s not easy (and also becomes much more tiring).

In those first few months, I found myself walking for up to 30 minutes, 2-3 times a day and then switching to my chair (or just standing).

Data, data, data

After two and a half months, I ended 2024 having walked 335,484 steps (130 miles). I know this not because of the stats from the walking pad itself (or from its app) but from the careful (some would say excessive) data logging that I did from every session.

I’ve long been using the excellent Pedometer++ app on my iPhone and Apple Watch to track my step usage and I have (for many years) aimed at getting at least 10,000 steps a day.

So before every session on the walking pad, I would log the following:

  • date

  • time

  • starting step count

  • starting mile count

  • walking speed

And then at the end of every walk, I’d log the duration and final step/mile counts.

Being somewhat obsessed with logging data in spreadsheets, I quickly started tracking more and more statistics relating to my walks. This included, but was not limited to: steps per hour, average walking speed (using mean, median, and mode), average time spent walking above and below the mean, and total miles walked. My main spreadsheet for this ended up with 27 columns of data.

Line chart showing how my average daily walking speed has changed over time (since November 2024). Chart has three series plotted that track the average speed as measured by the mean, median and mode. Modal and median end the year at 3.5 km/h

Line chart showing how my average walking speed changed over time

And I would walk…

By the start of 2025, I was getting into the swing of it and found myself walking for longer periods (anything up to an hour) and standing more when I wasn’t walking. In previous years, I had found that my office got a bit chilly in winter, but I found that walking a lot just made that problem go away.

I set myself the goal of walking 500 miles and I reached this goal on 16 May 2025.

By this point, I had tried walking at every 0.1 km/h increment from 2.0 to 5.0 km/h. Partly because it is just easier to use the remote rather than the app, I mostly walked at 3.5 km/h or 3.0 km/h if I was tired or needed more mouse control.

1,000 miles

On December 30 2025, I reached 1,000 miles. Most of these miles corresponded to steps taken while actively working, but increasingly, I would just spend more of my spare time catching up on things like household finances, all while walking.

I removed the chair from my office a long time ago now and I only ever work standing up or walking. The longest walk I have done to date is 83 minutes, which gave me 8,243 steps!

Chart showing cumulative miles walked on the walking pad. X-axis shows date (starting at 25 October 2024) and y-axis shows total miles walked. Graph shows a fairly linear progress from zero miles to 1,000 miles walked by the end of 2025.

My progress towards 1,000 miles

2025 - a record year

One of the things I like about using Pedometer++ as my step-counting-app-of-choice is that it provides lots of stats, tracking eight different metrics for each week, month and year.

My previous record year - in terms of average steps per day - was 2016, where I averaged 12,731 steps per day. I was just about able to beat this in 2025 and ended up with an average of 12,769 steps per day.

2016 was also a record for me for total steps walked (4,659,843). I had initially assumed that if I beat my record for average steps per day, then it would also have to be a record for total steps…except I had forgotten that 2016 was a leap year with an extra day.

I only realised this with two days left of the year. This meant that I would need to average 21,000 steps on each of those last two days to beat my previous record. I was just able to do this (thanks to help from the walking pad) and ended up with 4,660,702 steps for the year.

All of this means that I have averaged about 70 miles a month on the walking pad!

The future

I think I’ve reached the point where I no longer need to log every session on the walking pad. I’m writing these words as I walk without having entered any details of my starting steps or time of day, which feels quite freeing.

Going forwards, I will aim to keep walking-while-working as much as is practical.

If I’m really feeling brave, I might try to make 2026 break all previous step records (as measured by the Pedometer++ app). My previous record for ‘total distance’ is from 2016 and stands at 2,173 miles. To beat this, I will need to walk a lot more on the walking pad (about 24 extra miles every month). But maybe this is the impetus I need to start running again; it’s been several years since I regularly ran 5 km races (mostly through Parkrun) and doing this in 2016 is what helped contribute to those extra miles.

Read More
Keith Bradnam Keith Bradnam

My yearly theme for 2024

It’s time to reveal my yearly theme for 2024 that’s inspired by the Cortex podcast. I’ll also reflect a little bit on my failures with last year’s theme.

For a number of years I have been setting yearly themes, an idea that has been made popular by the Cortex podcast. Listen to this episode from 2019 for a detailed overview but in a nutshell, yearly themes are a broader, and more nuanced, alternative to setting resolutions.

The idea is to pick some overarching theme that ties together various hopes, dreams and ambitions. Themes can sometimes all be built upon a single word. Another key aspect of setting a yearly theme is to regularly check in and assess your progress.

I have been setting a yearly theme for the last few years. The title of these themes have been:

  • 2019 - Rebuilding

  • 2020 - Focus

  • 2021 - Survive (this was the pandemic remember!)

  • 2022 - <no theme set>

  • 2023 - Healthy mind, healthy body

For each of these themes I create a note file which details what general and specific activities I want to achieve as part of that theme. This can include negative activities of course, e.g. don’t binge watch TV.

2024’s theme

Before I reveal my theme for 2024, I need to point out that I really failed on the second part of last year’s theme. The ‘healthy mind’ part was good - e.g. I read more books than I have in a long time, I made more effort to listen to music and play the piano - but I failed miserably at the second part.

My weight in 2023 reached an all-time high and this was driven by a very unhealthy diet that was dominated by an addiction to chocolate. I would buy chocolate every day, often multiple bars. So this has led me to this year’s theme:

  • 2024 - Healthy body, healthy mind

I’m keeping ‘healthy mind’ as part of the theme as there are things that I want to build on that I started doing last year (e.g. listen to entire albums of music to help break my obsession with podcasts).

But the overriding part of my theme is ‘healthy body’ - something which probably more closely resembles traditional new year resolutions. The specific things I am committing to under this bit of the theme are as follows:

  • Exercise 3 times a week

  • Be able to run a 5K park run by the end of the year

  • Eat fruit every day

  • Eat less junk food

  • Don’t buy chocolate bars

  • Make healthier buying choices for the family

I’m hoping that all of these will naturally lead to a reversal of last year’s ever increasing weight, but I’m not listing ‘lose weight’ as part of theme as I want to focus on the underlying things that will help achieve that.

I’m writing this blog post partly to hold myself to account. I know I won’t be perfect (I have not eaten fruit every day!) but I’m using apps such as Streaks on my iPhone to help me stay accountable for some of these activities. At the time of writing I can proudly say that I have not bought any chocolate bars in 2024! I still consume chocolate when the opportunity arises but my overall consumption has dropped massively.

If I’m really feeling brave I will reveal more about my progress in future blog posts…perhaps with more of a focus on my obsessive habit of logging data in spreadsheets (I have over 3,500 measurements of my weight going back to 2009).

Read More