Rare Saturn-sized rogue planet is first to have its mass measured
Researchers have confirmed the mass of a free-floating planet thanks to a lucky convergence of ground- and space-based telescopes
Chess can be made fairer by rearranging the pieces
Chess960 involves shuffling the pieces at the back of the board, and an analysis suggests doing so can increase the complexity of the game to favour white, black or neither player
Dark Muse News: Saluting Goth Chick and Interviewing Waclaw Traier of War Claw Games
Happy New year! This emerging blog salutes Sue Granquist, who contributed every other Thursday championing Goth Chick News in this very time slot. Sue Granquist contributed 741 articles over 16 years here on Black Gate with a special focus on horror movies and conventions (the longest-running column in Black Gate history).
Haiku gets accelerated NVIDIA graphics driver
The new year isn’t even a day old, and Haiku developer X512 dropped something major in Haiku users’ laps: the first alpha version of an accelerated NVIDIA graphics drivers for Haiku. Supporting at least NVIDIA Turing and Ampere GPUs, it’s very much in alpha state, but does allow for proper GPU acceleration, with the code surely making its way to Haiku builds in the near future.
The 3 things you should do this New Year to foster a positive mindset
Olivia Remes, a mental health researcher at the University of Cambridge, says these are the three things everyone should do this New Year to cultivate a more positive mindset
The Sword & Planet of Dave Van Arnam: Star Barbarian and Lord of Blood
Star Barbarian (Lancer Books, 1969). Cover by Jeff Jones I picked up a couple of books by Dave Van Arnam called Star Barbarian and Lord of Blood that have connections to the Sword & Planet genre. They’re set in a future time after Earth has colonized many planets.
Wearables

Nicolas Solerieu in On wearables:

The marketing is a mishmash of sport, lifestyle, health value propositions fading in a goodness mush, rarely delivering much beyond a wrist-mounted stream of numbers.

Couldn't agree more. After a few years of wearing my sports watch 24/7, I realised that the data and the way it was presented did my head in, and had no positive effect on my health and fitness. For the past couple of years I've worn an analogue watch, only switching to my sports watch to track my actual workouts.

Totals

Screenshot from the workout log, showing differing totals for year and week in the first week of the year.

I am unreasonably proud of getting this right in the workout log before actually getting there and seeing that something was off.

Calendar years and ISO weeks don't really intermingle. Can't wait for the scramble at work on Monday as people start trying to figure out what's what because of this fact.

Laos Motorcycle Adventure out Friday night #adventuremotorcycling
HP-UX hits end-of-life today, and I’m sad
It’s 31 December 2025 today, the last day of the year, but it also happens to mark the end of support for the last and final version of one of my favourite operating systems: HP-UX. Today is the day HPE puts the final nail in the coffin of their long-running UNIX operating system, marking the end of another vestige of the heyday of the commercial UNIX variants, a reign ended by cheap x86 hardware and the increasing popularisation of Linux.
2025: A Year in Disaster
McFaul’s World — 2025 Year in Review
Looking back on a turbulent year.
2025, A Retrospective

Hey all,

I'm not dropping this on the actual newsletter feed because it's a little self-indulgent and I'm not sure 88,000 or so people want an email about it.

If you want to support my work directly, please subscribe to my premium newsletter.
Could 2026 be the year we start using quantum computers for chemistry?
Understanding the chemical properties of a molecule is an inherently quantum problem, making quantum computers a good tool for the job – and we may start seeing this take off in 2026
we lost a lot of money (ep.97)
‘CNI: Classified,’ Vol. 1 & 2
Code Name: Intrepid is an interesting series from Robert J. Mendenhall, available through his own imprint Blue Planet Press. CNI is a special team of military and civilian experts who handle cases that are extraordinary or of an unusual order in the 1930s.
The final push to the top of ARABEL PASS (High altitude POWERLOSS!) |S8, EP107
Three supermassive black holes have been spotted merging into one
Astronomers have found a system of three supermassive black holes, all actively feeding, that appear to be combining into a single system – a rare event that will help elucidate the physics of complex mergers
The duo kite-skiing 4000 kilometres across Antarctica for science
An explorer and a glaciologist are kite-skiing across Antarctica with a ground-penetrating radar to gather data that will help understand the past and future of the ice sheet
Out with the old, in with the new

The last day of the year is coming to a close. As I begin drafting this post, four more hours remain until the year of our lord twenty twenty five is but a memory.

I didn't plan on writing a "year in review" for this year. Don't get me wrong, I love it when those posts pop up in my feed reader and I wish more people would write them. This was just a particularly ordinary year on my end. There isn't all that much to report.

But with the four year old in bed and asleep, and the seven year old upstairs playing Minecraft with his mother in an attempt to stay awake until the new year rolls around, I'm suddenly sat in the living room. Alone and with time to spare. So I thought I'd give myself a small challenge. Write and publish a post. Right here, right now, before the year ends. I don't know what it will become. Call it a "word vomit" inspired by Meadow and let's see what comes out.

It was a another year

There was absolutely nothing of particular note to report from my 2025. It was a year without big stories, inspirational turnarounds, remarkable comings of age and uncomfortable upheavals. A good thing, in most respects.

Kids

Both children continued to prosper and grow. At seven and four, we're now reaching that phase of their lives where they might begin to encounter problems outside the little bubble of the world their mother and I can influence. Parental duties so far have been challenging, yes, but rewarding. When their challenges are "small"1 and manageable, you come a long way by just showing up and being there. At the same time, I know that as they continue to expand their contact surface with the world, they will begin to face challenges beyond our immediate control.

I can't help but feel ill equipped to guide them through these situations.

Watching my kids apply themselves to an activity is my favourite thing. Both are active and participate in several activities. The boy plays football and handball, while the girl (despite my continued lobbying that she should start playing football) loves dancing. To see them practice with passion and make headway gives me great joy. I have no aspirations on their behalves, I'm just there for the ups and downs and all that'll teach them.

Loss

After battling cancer for over a year, my grandmother passed this fall. It was sad and I miss her. Given she'd been living with cancer for so long, I thought it would lessen the impact of her parting. It didn't. Her passing was also the oldest kid's first real experience with mortality. He was absolutely devastated at her funeral. It was a hard day.

Savne deg, mor.

Reading

As shown in my reading log for 2025, I read 18 books this year.2 Eight of them I read aloud to one of my children. Of those, the Narnia books (which I had been wanting to read for many years) were my favourites. I wrote a post with my thoughts on the series.

Of the books I read on my own, Jonathan Strange & Mr Norrell was a particular highlight. In a post about the book I shared some of my thoughts and my favourite excerpts.

What I did not write about was the Liveship Traders books. Late last year, I read Ship of Magic before setting aside the trilogy for Wind and Truth (which left me a bit disappointed). I though Ship of Magic was OK, but it really set the scene for the rest of the story. And what a story it was! The Mad Ship was excellent before the trilogy concluded with the even better Ship of Destiny. I think these three books combined is perhaps my favourite work of fantasy writing. If you haven't read them yet, you should! Although they work fine as a stand-alone trilogy, they are part of Robin Hobb's Elderling universe. You'll probably appreciate them even more if you begin with Hobb's Farseer trilogy.

I only managed to finish two non-fiction books this year. Ray Bradbury's Zen in the Art of Writing (thoughts) and Ceasar by Adrian Goldsworthy. I want to double that next year.

Physical activity

Going through my workout log for 2025 I was surprised to find that I had the most active days in a year since I began tracking my workouts in 2017. 312 active days is nine up from the previous high in 2021. My sessions are shorter on average than back then, and total active time of 323 hours is not near the 379 hours of my peak years of 2023 and 2018.

Although it was a good year of physical activity, I am not quite satisfied. I "only" managed 55 hours of strength training. Now in my forties, I think working a wide range of muscles to reduce age-induced decay will only become more important. An hour a week is a little less than where I want to be.

I caught the running bug again earlier this year. It should therefore come as no surprise that running, at 244 hours, made up the bulk of my active time. Going out for a run in quiet surroundings, on trails or a back country road, gives me great joy. I'm also acutely aware of the fact that window of opportunity for bettering my personal bests is closing quickly. Realistically, I have three to five years to do it.

That in mind, I am gearing up for giving improving my personal bests one last go. This year was all about getting back to it. I got back to regular workouts, and increased my volume significantly compared to 2024. However, I'm still around 1500 kilometres behind for the year compared to where I need to be to get close to my PBs. In 2026 I will attempt to get back to that training volume and positioning myself to run a (hopefully) fast marathon in 2027.

Work

In 2024 I transitioned to a new role internally. This year was all about fully settling and coming to grips with the expectations and deliverables of this role. It's taken longer than I'd expected, but after a year and a half, I believe I'm starting to get there. The role is quite different to what I'd expected. And, to be frank, it doesn't exactly play to my strengths. The responsibilities are less direct deliverables, and more mediation, meeting room influencing and stakeholder management than I'm comfortable with

There's a lot to learn and plenty of room to grow in a situation like this. The upside is that the team around me is great. My colleagues keep inspiring me to do my best and evolve my skills to better handle the role. That said, I find it hard to see myself in this role for the long term. If an opportunity that better matches my skill set presents itself, I will consider it. That might happen in 2026, or beyond.

The end

The new year is still two hours away. But I'm ready to go to bed. What next year brings will have to wait until tomorrow.

Happy new year!


  1. As a parent, and a human being in general, I think it's important to remember that what might seem small to you can be mountainous and incomprehensible to a child. Or any other person, for that matter. 

  2. I've also spent more than half the year working my way through Letters from a Stoic. I still have a few letters left. Because I count all books as read in the year that I finish them, it'll show up as read in 2026. 

Star that seemed to vanish more than 130 years ago is found again
In 1892, astronomer Edward Emerson Barnard thought he saw a bright star near Venus, but then it vanished. We may now know why
Controversial satellites launching in 2026 will reflect light to Earth
Reflect Orbital plans to launch thousands of reflective mirrors to produce "sunlight on demand", but researchers are sceptical about whether the reflected light will be enough to generate electricity
The weight-loss drugs on trial in 2026 may trump Ozempic and Zepbound
Drugs like Ozempic, Wegovy and Zepbound have transformed how we treat obesity, but more effective treatments could be down the road
Russia-US nuclear pact set to end in 2026 and we won't see another
After the New START treaty expires in February, there will be no cap on the number of US and Russian nuclear weapons - but some are sceptical about whether the deal actually made the world safer
Russia-US nuclear pact is about to end and we won't see another
After the New START treaty expires in February, there will be no cap on the number of US and Russian nuclear weapons - but some are sceptical about whether the deal actually made the world safer
BepiColombo mission will start to unpick Mercury's secrets in 2026
The BepiColombo mission has been on its way to Mercury since 2018 and will finally start orbiting the planet and taking X-ray images in the second half of 2026
World's first subsea desalination facility will start running in 2026
Flocean, a Norwegian company, is set to open the world’s first commercial-scale subsea desalination plant, an approach that could cut the cost and energy used to make seawater drinkable
The cost of weight-loss drugs should fall in 2026
The price of weight-loss drugs like Wegovy put them out of reach for most people with obesity, but new arrivals and expiring patents should change that this year
US to fire up small reactors in 2026 as part of 'nuclear renaissance'
Eleven companies are working towards an ambitious goal as part of the US Department of Energy's plan to fast-track the development of advanced nuclear reactor technologies
2026 Mars mission will set out to solve the mystery of its moons
The Japan Aerospace Exploration Agency will be launching the Martian Moons eXploration mission next year, which should finally tell us how Mars acquired the moons Phobos and Deimos
Could James and the Giant Peach inspire the future of food?
In the latest in our imagined history of inventions yet to come, Future Chronicles columnist Rowan Hooper reveals how by the 2030s, botanists had worked out how to grow hybridised superplants to help feed the world
The best new popular science books of 2026
Clear out your shelves for a bumper new crop of books by authors including Naomi Klein, Rebecca Solnit and Xand Van Tulleken, says culture editor Alison Flood
The best new science fiction books of 2026
On the horizon for this year are Ann Leckie's latest, Neil Jordan's debut and more from Adrian Tchaikovsky. Exciting times, says our sci-fi columnist Emily H. Wilson
Why I'm going to reap the mental health benefits of stargazing in 2026
Navigating the night sky can have a positive effect on our well-being. This will be the year I learn the constellations, resolves Michael Brooks
See how fire has changed the world's largest wetland, the Pantanal
Stunning and shocking images from upcoming exhibition Water Pantanal Fire show how this tropical wetland has been hit by wildfires
Why stroking seedlings can help them grow big and strong
The science behind why stroking your seedlings actually works. If you’re worried about your seedlings getting long and leggy, try a bit of home thigmomorphogenesis, advises James Wong
2026 is set to be an even bigger year for weight-loss drugs
GLP-1 agonists have already had an outsized influence on society, and with pill versions and more advanced formulations on the horizon, that looks set to continue
Physicists stirred up controversy with scientific cooking tips in 2025
Cacio e pepe pasta and boiled eggs were the subjects of meticulous studies aiming to help cooks achieve perfection, but the reimagined recipes weren't always well-received
The emotion you never knew you had, and how to feel more of it
The warm and fuzzy emotion of kama muta underlies vital feel-good experiences like social connection and feeling part of something bigger. But are you getting enough of it?
The century-long hunt for the gigantic meteorite that vanished
A soldier returned from the Sahara desert in 1916 with a wild story about a meteorite that dwarfed all others. Over 100 years of hunting yielded nothing – but now twin brothers think they have solved the puzzle
The cassette tape made a comeback in 2025 thanks to a DNA upgrade
With a storage capacity of 36 petabytes, a DNA-based cassette tape can hold every song every recorded, and it could be on the market within five years
EU carbon border tax will force others to cut emissions from 2026
In 2026, the European Union will start charging a carbon-emissions-based tax on imported goods such as steel, cement and fertilisers – and countries including the UK are likely to follow
loss32: let’s build a Win32/Linux
I’d just like to interject for a moment. What you’re refering to as Linux, is in fact, Win32/Linux, or as I’ve recently taken to calling it, loss32 Win32 plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning system made useful by WINE, the ReactOS userland, and other vital system components comprising a full OS as defined by Microsoft.
Windows 2 for the Apricot PC/Xi
Nina Kalinina has been on an absolute roll lately, diving deep into VisiOn, uncovering Bellcore MGR, installing Linux on a PC-98 machine, and much more. This time, she’s ported Windows 2 to run on a machine it was never supposed to run on.
Quatro-Decadal Review: Asimov’s Science Fiction, November 1999, edited by Gardner Dozois and Shelia Williams
Column: Reflections, Autographs, by Robert Silverberg Silverberg spent the summer of ’99 signing copies of Dying Inside. 7,000 autographs — a novella in and of itself. He muses on autographs and people who collect them.
What an unprocessed photo looks like
I knew digital cameras and phones had to do a lot of processing and other types of magic to output anything human eyes can work with, but I had no idea just how much. This is wild.
We'll learn about LSD's potential for treating anxiety in 2026
Two later-stage trials investigating LSD for treating anxiety are due to conclude in 2026, which could lead to the drug being approved for the common mental health condition
A controversial experiment threatened to kill the multiverse in 2025
A photon was apparently detected in two places at once in a twist on the classic double-slit experiment, but many physicists didn't accept the results
Benefits of mRNA cancer vaccines could exceed $75 billion in US alone
An analysis of ongoing trials suggests that mRNA cancer vaccines have the potential to deliver health benefits worth $75 billion each year in the US alone
Mathematicians unified key laws of physics in 2025
It took 125 years, but in 2025 a team of mathematicians discovered the solution to a long-puzzling problem about the equations that govern the behaviour of particles in a fluid
The Enshittifinancial Crisis

Soundtrack: Lynyrd Skynyrd — Free Bird

This piece is over 19,000 words, and took me a great deal of writing and research.

There is a state of relaxation that few of us spend much time in, but which comes with profound well-being benefits. With healthier ageing, reduced risk of disease and feeling more energised all on offer, here's how to get there
At PulpFest 2025, we got the third volume of Donald Keyhoe’s Devildog Squadron series, The Mystery Meteor, from Age of Aces Books, after skipping a year. This was his second series, started in 1931, the same month as Philip Strange.
Some of the world's most advanced robots showed off their skills at tech shows and sporting events, doing everything from cooking shrimp to running half marathons
But Not By Means of a U.S. Military Invasion
The Linac Coherent Light Source in California has been firing record-breaking X-ray pulses for years, but now it’s due for a shutdown and an upgrade. When it is turned back on, it will be even more powerful
The Majorana 1 quantum computer was hailed as a significant breakthrough by Microsoft, but critics say the company has yet to prove it actually works despite a year of debate
Throughout 2025, I shared with you what I was Reading, Watching, and Listening To (audiobook-wise), I also covered a little bit of videogaming in a couple columns. But I figured I’d talk about some of the games I played this year, in one post.
It has been claimed that because most of our DNA is active, it must be important, but now human-plant hybrid cells have been used to show this activity is mostly random noise
Three start-ups are aiming to create gene-edited babies. Columnist Michael Le Page has no doubt that editing our offspring will one day become routine, but not like this

Ruslan Osipov in Home is where my stuff is:

Some of these versions of myself are still relevant. Some aren’t. The hard part isn’t identifying which is which - it’s accepting that letting go of the object means letting go of that version of me. Admitting that I’m not that person anymore. Or that I never became the person I bought that thing for.

I never became the guitarist I thought that fancy guitar would make me. But I'll never, ever let it go.

There’s been endless talk online about just how bad Apple’s graphical user interface design has become over the years, culminating in the introduction of Liquid Glass across all of the company’s operating systems this year.
We’re all familiar with things like marquee and blink, relics of HTML of the past, but there are far more weird and obscure HTML tags you may not be aware of. Luckily, Declan Chidlow at HTMLHell details a few of them so we can all scratch shake our heads in disbelief.
I’ll get back to regular posts next week but one of my readers asked if I had any shelfies to show of my collection. I took a few and will post them but these only represent a portion of all my books.

When I last made some updates to the workout log and wrote about it, I said:

The only thing remaining to make it a proper replacement is some more data on the activity level. Heart rate details (cookie diagram for zones or just a line chart), elevation numbers and line chart plus, possibly, a map of some sort. For the last one, I'm not sure, because I'm loath to introduce third party content on the site. And building a map engine isn't exactly on my list of things I want to tackle.

But I'll keep thinking about that. Either way, I think I want to make some changes to how I'm handling workout data upstream before I tackle any of those. To make the solution a bit more robust.

Lo and behold, in ToDo-WindrunnerSSG.md, my to do list for my static site generator, were the following entries:

  • ( ) Workout log improvements:
  • ( ) Add splits bar chart (ala Strava where bar width = duration, bar height = pace)
  • ( ) Heart rate graph
  • ( ) Elevation profile
  • ( ) GPS coordinates route to SVG
  • ( ) Refactor title and notes to support unified workout data storage

The workout log has been the defining project of 2025 for me. With the end of the year in sight, I was motivated to take a stab at solving these last remaining features. And now I have. The most recent update in the version log for my static site generator:1

0.2.5

22.12.2025

  • Updated workoutlog_processing to include more data per activity. This includes splits, route, heart rate plot and elevation plot illustrations. Code was also refactored to adjust for upstream changes in workout data storage. The script is now pulling data from individual text files per activity. Minor changes to generate_feeds.py and windrunner.py to account for logic changes.
  • No remaining items in ToDo-WindrunnerSGG.md. Is this thing feature complete?

True to form, I'll spend this post going through my thought process when attempting to solve each of these. The post will be long, boring and only suitable the particularly peculiar persons who wants to know how I've "vibe coded"2 my way to a fully functional Strava replacement as a component of my own static site generator.

Reworking the data architecture

If you read my initial post about the workout log you probably remember (lol) that my data flow was as follows:

  • Connect my Garmin watch to my laptop.
  • Script extracts new workout files to my laptop.
  • Another script parses the workout file(s) and writes the details of the workout to a CSV file.
  • I add a workout title and notes to the new workout by modifying the CSV file.
  • My site generator creates the workout log based on the data in this CSV file.

This worked OK. But it had two glaring issues:

  1. Manually editing CSV files is cumbersome.
  2. Workout titles and notes, as well as manually recorded workouts, only exists in the CSV file.

I routinely messed up the CSV file and caused errors by being sloppy with commas and escaping. Adding even more data for visualisations would require changing the setup. The second point was also nagging me. My workout data was not unified in one place. The .fit activity files were stored in one place, while my notes on the workouts existed only in the CSV file. Manually added workouts existed only as a row in the CSV file.

As directly enriching the activity files is not possible, my idea was to create companion files for each activity file. These files would be identically named text files (only with a differing extension, .md in this case) and they would contain key details of the workout as well as my notes on each workout.

This solved both issues. Editing a single text file with dedicated lines to the title and notes is easier than fiddling with a CSV file. Likewise, it centralises all of my workout data in a single location: The directory where my activity files are stored. Each workout is now merely a text file with a few data points, and — if I happened to be wearing a device to capture more detailed data during the workout — there will be an identically named .fit alongside it containing all additional data like a GPS track, heart rate stream and more.

Next, I had to figure out how to approach generating the workout log based on this new data structure. My initial idea was to keep the CSV as the source for generating the workout log. Intuitively, this seems significantly more efficient than accessing thousands of individual files each time I generate the site. Some testing confirmed that to be true. Generating the workout log based on data in a single CSV file was around an order of magnitude faster than fetching the same data from 3000+ individual text files.

While that may seem like a lot, in practice we're talking about going from 100-200 milliseconds to 1-2 seconds. It was a cost I was willing to swallow. Because introducing a middle layer meant increasing the complexity of the setup significantly. This because there is more often than not a time delay from when the workout file is created and I get around to adding a title and notes. So when do I generate the CSV file to ensure that it is current? My site is rarely generated more than a couple of times per day, either way. The solution can only be "every time a workout file is updated" for there to be any significant resource savings.

Not worth the added complexity.

That said, xan and his followers need not worry. There is still a CSV file. I recently created a workouts feed for anyone who wants to keep up with my workouts.3 Like Strava, only built on an open protocol! To avoid having to access thousands of files twice every time I generate my site, the script creates a CSV index while accessing the files on the first go. This index is then used when generating the workouts feed later in the build process.

  • (X) Refactor title and notes to support unified workout data storage

Route visualisation

Routes have been on my mind since I first began working on the workout log. The context provided by a visual illustration of where you've run (or biked, skied, skated or anything else) simply cannot be replaced.

But there were some immediate stumbling blocks. Maps, for one. I do not want to introduce third party components on my site, even if there are great options out there. Self-hosting tiles seemed like too much hassle. Plus, there's this privacy thing. While I've been privileged to never really have to worry too much about that since, well, forever, openly sharing my exact geo-location every single day seems a step too far.

Because of this, I left routes alone. When I, thanks to Josh Comeau's excellent friendly introduction to SVG began to wrap my head around SVGs, the solution seemed obvious: Generate an SVG showing the path. This way I can provide some context of what the run was like by showing the route without revealing everything. And I must say, I'm really happy with the result.

Everyone who's run the Berlin Marathon will immediately recognise the route and probably get an emotional response when seeing it in the activity from when I ran it back in 2019:

Screenshot of an activity from my workout log showing the route from the 2019 Berlin Marathon

Similarly, here's a point to point example when I ran Ecotrail Oslo the same year:

Screenshot of an activity from my workout log showing the route from the 2019 Ecotrail Oslo 50k

I think it provides a lot of context for the activity. Even if it doesn't reveal the exact location, it conveys something about what the run was like that is difficult to get across with words alone. Especially paired with the next point.

  • (X) GPS coordinates route to SVG

Elevation profile

You can describe an activity with numbers such as metres climbed and descended. But, like with routes, an illustration can give an intuitive understanding of what the activity was like that is difficult to replicate with words. To add a simple chart to show the elevation profile of my activities, therefore, seemed obvious.

After sorting out the route illustration, I decided to use the same approach for the elevation profile: A simple SVG. It is responsive and works fine. Let's look at what this looks like for the same activities mentioned above. First, the Berlin Marathon:

Berlin Marathon elevation profile

One flaw in this implementation is that the elevation changes are all relative. Meaning that the elevation profile for the pancake flat Berlin Marathon (total metres climbed is 74 metres) looks quite hilly. On the other hand, the Ecotrail Oslo 50k looks like a straight drop by comparison:

Ecotrail Oslo 50k elevation profile

Even if Ecotrail has a significant net drop, the total metres climbed is 896 metres and more than ten times as much as Berlin. You wouldn't know just looking at these two charts.

My first iteration was just the lines chart. To add a little more context to the chart, I decided to add labels for the highest and lowest points. Although this doesn't quite solve the relativity issue, it helps mitigate it. And I prefer it to a "fixed height" approach, because the most important point is to get a feel for the relative changes within a particular activity rather than comparing activities.

  • (X) Elevation profile

Heart rate chart

For the heart rate chart, I reused the exact same approach as for the elevation profile. And it works well. Just have a look at the chart from this 8 x 1000m workout from earlier this year:

Chart illustrating how the heart rate changes throughout a 8 x 1000m workout

Although not a tool for detailed analysis of a workout, the chart illustrates how the heart rate fluctuates throughout the workout. It goes up throughout the reps, dipping sharply during the standing rests. With the label for the highest value, we can see that it peaks during the last rep at 177 beats per minute.

  • (X) Heart rate graph

Splits bar chart

The last thing I wanted to implement was a bar chart illustrating the pace and duration of the workout splits. Splits, or laps, are segments of a workout. For a regular jog, I use auto split per kilometre. If I'm doing a structured workout, I will manually split at the beginning and end of each repetition.

Looking at these splits is my preferred method of quickly assessing a workout afterwards. For many years, I paid for a Strava premium subscription because I liked their bar charts better than anything else I had found. Suffice it to say, I wanted to get these right.

Conceptually, the bar chart is quite simple:

  • Each bar represent one split/lap.
  • The height of the bar represents the pace for that split. The taller the bar, the faster the split.
  • Split duration is represented by the width of the bar. A wider bar means a longer lasting split.

My first implementation used a relative approach. The fastest split was set at the max height, the slowest at the minimum height, and everything else was given height relative to these two outer points. It worked… OK.

The first thing that bothered me was that for a workout where everything was fairly evenly paced, it would look like pace varied significantly. I could live with that. But, as soon as I looked at a structured workout, I knew I had to improve the approach. Just look at this:

Bar chart with completely relative sizes showing the laps of an 8 x 1000m running workout

What's interesting here is the variance between the tall bars, which represents the 1000 metre repetitions. Because the rest intervals (walking rest) are so slow by comparison, there is absolutely no granularity between the reps. I am instead wasting space illustrating the meaningless differences between the walking rests. This won't do!

I need a way to scale these bars that will preserve the granularity at the faster end at the expense of the slower end. Bonus points if it solves the issue of exaggerated differences during a run with fairly even splits. To someone smarter than me (low bar!) the solution is likely obvious. My first thought, however, was introducing some kind of fixed pace range. Where 3:00 min/km or faster is set to max height and 7:00 min/km or slower is set to minimum height.

This would work… OK. For running. But if I go for a bike ride, it wouldn't because the paces won't fit that range. A more flexible approach would be better. After consulting with my friendly neighbourhood Claude, the light bulb went on. I can maintain a "relative" approach by anchoring the scale to the fastest lap split pace and capping the slow end based on some factor. In other words, anything X percent slower than the fastest split gets drawn as the lowest bar. For everything in between, I use the available canvas.

In theory, this should solve both issues — as long as I can find the correct multiplier.

After trying various multipliers on for size, I settled on 2. That is, anything that's half the pace of the fastest split gets suppressed at the lowest height. It is a fair compromise between detail at the pointy end, and lack of detail at the slow side. Going back to the same workout we saw above, here's what it looks like with the new approach:

Bar chart with slow split cap showing the laps of an 8 x 1000m running workout

There's clear separation between the repetitions, while maintaining a visual distinction between the warm up and cool down splits. A more aggressive cap, like 1.5, resulted in even more granularity between the fast repetitions, but at the cost of any distinction between the warm up and cool down splits. This compromise works.

Looking at a recent run, it also solves the problem of fairly even splits coming across as wildly different:

Bar chart showing splits of an even pace treadmill run

Paces here range from 5:50 min/km to 5:36 min/km. With the old approach, the bars would've given the (completely erroneous) impression of a aggressive progression run.

I can now confidently proclaim that this bar chart illustration of workout splits is equal to that which I used to Strava for the privilege of using. It is also fully responsive and works on mobile.

  • (X) Add splits bar chart (ala Strava where bar width = duration, bar height = pace)

Is this thing complete?

As I wrote in the changelog, there are now exactly zero remaining items on my to do list. Not just for the workout log, but for the entire static site generator that powers this website. A year after finishing the first iteration, I have implemented everything that I had the idea of doing "sometime" when I first began working on this thing. That probably warrants a post of its own. As does the question of whether or not it is complete.

What I can declare with absolute certainty, however, is that the workout log is finished. It does exactly what I want it to do. Nothing more, nothing less. I have no desire for new features or additional elements. If I have to stick to one way of tracking and analysing my workouts for the rest of my life, I am perfectly content with this being it.

That's a nice feeling. And a good note on which to end a year.


  1. Yes, like a proper wannabe developer sans actual developer skills, of course I keep a changelog for this thing. And the version numbering is, naturally, completely made up. Whenever I make a change I just ask myself "what do I want to call this version?" before landing on a number. It's pretty cool. 

  2. Back when I began using LLMs to put together a static site generator that matched my mental model of how these things should work, the term "vibe coding" didn't exist. But now it does, and I suppose it fits what I'm doing here. 

  3. Not so much because I think that anyone would want to subscribe to my workouts in their feed reader, but, rather, because I have a dream of lots and lots of people tracking their workouts in a way that lets me follow their workouts in my feed reader. Because I get a lot of motivation from seeing other people getting out there and doing the work, and I really miss that aspect of Strava. Be the change you want to see and all that. 

I was buying a couple of albums to add to my growing collection of legally acquired music. After completing the purchase over at Qobuz, they hit me with this warning:

Screenshot of a warning from Qobuz after buying a digital album from them. Full text below.

Certain works may be withdrawn from the service for legal reasons, such as a revocation of rights. The titles purchased will then no longer be available for re-download. Download your purchases quickly.

Don't mind if I do!

Appreciated this frank message. It perfectly captures exactly why someone would consider building a music collection in 2025, instead of trying to hide the reality and instead push you towards platform dependency.

PS: I bought two albums. Young, Loud and Snotty and We Have Come for Your Children, both by the late 70s by American punk rockers Dead Boys.

Recommended listening!

If you’re building a package manager and git-as-index seems appealing, look at Cargo, Homebrew, CocoaPods, vcpkg, Go. They all had to build workarounds as they grew, causing pain for users and maintainers.
Today, nearly fifty years after its release, Star Wars still feels fresh, exciting and entirely organic. It is a naturally progressing story. Everything in it matters, and every moment leads inexorably and inevitably to the next moment, as it should — building to a tremendous climax and satisfying denouement.
Christmas is already behind us, but since this is an announcement from 11 December – that I missed – I’m calling this a very interesting and surprising Christmas present. The team and I are beyond excited to share what we’ve been cooking up over the last little while: a full desktop environment running on QNX 8.0, with support for self-hosted compilation! This environment both makes it easier for newly-minted QNX developers to get started with building for QNX, but it also vastly simplifies the process of porting Linux applications and libraries to QNX 8.0.

Photo alt text

Cast iron waffle maker. Fry waffles straight on the fire. 10/10 will do again!

One apropos: Not ideal with impatient kids running around anticipating a big stack of waffles asap. This is slow food and you’ll be enjoying every heart.

Somewhere at the edge of mathematics lurks a number so large that it breaks the very foundations of our understanding - and in 2025 we came a step closer to finding it
A village buried by a landslide, the world’s largest tidal bore and the aftermath of ferocious storms and wildfires appear in our pick of images from environment stories this year
This volumes  was originally scheduled for September 1991, but the series was cancelled before it would see print. Both stories were eventually published by Tor in different formats. Had this volume been printed, it would have been the first volume in the series to include two original stories.
Tantalising signs of past microbial life showed up on Mars this year, but to truly know whether they contain the answer to the biggest question in the universe, we will need to bring samples back to Earth
Welcome to the second annual celebration of all that is best and worst in our political culture.
Welcome to the second annual celebration of all that is best and worst in our political culture.
At the Q2B Silicon Valley conference, scientific and business leaders of the quantum computing industry hailed "spectacular" progress being made towards practical devices – but said that challenges remain
This has been a rough year for Black Gate. On January 16 we lost Howard Andrew Jones, who created this site virtually single-handedly. Black Gate had existed as a print magazine since November 2000, and I’d launched the website a few months earlier, but it was a pretty flimsy affair.

Backing up Spotify - Anna’s Blog:

Anna’s Archive normally focuses on text (e.g. books and papers). We explained in “The critical window of shadow libraries” that we do this because text has the highest information density. But our mission (preserving humanity’s knowledge and culture) doesn’t distinguish among media types. Sometimes an opportunity comes along outside of text. This is such a case.

This is a magnificent effort by the people at Anna's Archive. 86 million music files archived, with metadata for 256 million tracks.

As I've begun constructing my own music library recently, it feels like the people at Anna's and I are kindred spirits of a sort. My library is currently at 50 artists, 69 albums and 708 songs. Good to know that I'm not running out of options for stuff to add any time soon.

Via.

Some years ago, I had a frustrating and largely fruitless encounter with the politics of policing. As a member of an oversight commission, I was particularly interested in the regulation of urban surveillance.

The detection of mercurial particles of light emanating from mice led to a flurry of interest in biophotons, a mysterious phenomenon that could have applications in agriculture
We’ve got more X11-related news this day, the day of Xmas. Phoenix is a new X server, written from scratch in Zig (not a fork of Xorg server). This X server is designed to be a modern alternative to the Xorg server.
Palaeontologists reported some remarkable dinosaur fossils this year, including a Velociraptor relative, a dome-headed pachycephalosaur and one of the most heavily armoured creatures that ever lived
A microscope that cost less than £50 and took under 3 hours to build using a common 3D printer could be transformative for students and researchers with limited funding
A microscope that cost less than £50 and took under 3 hours to build using a common 3D printer could be transformative for students and researchers with limited funding
Wayback, the tool that will allow you to run a legacy X11 desktop environment on top of Wayland, released a new version just before the Christmas. Wayback 0.3 overhauls its custom command line option parser to allow for more X.org options to be supported, and its manual pages have been cleaned up.
Can you use a cheap FPGA board as a base for a new computer inspired by the original IBM PC? Well, yes, of course, so that’s what Yuri Zaporozhets has set out to do just that. Based on the GateMateA1-EVB, the project’s got some of the basics worked out already – video output, keyboard support, etc.
A new theory of "dark photons" attempted to explain a centuries-old experiment in a new way this year, in an effort to change our understanding of the nature of light
Captain Hawklin is a New Pulp hero written by Charles F. Millhouse. He is a former World War I fighter pilot, later becoming an adventurer and inventor, and is rich from those inventions. He is based in Crown City, a large fictional city located on the west coast of the United States.
One of the more popular time-wasting activities these days is the “desert island” game, where people compile lists of books, albums, and movies that they could in no instance dispense with, works that they would take with them if they had to be exiled for life on a desert island.
More...