Author Archive

Run the Pubs (20th Anniversary Edition)

Tuesday, December 23rd, 2025

It’s 20 years since the first Run the Pubs took place. Looking at the photo from that first run, I could have worn the same outfit if I’d realised it was a significant anniversary, as both the shorts and top are still in my running wardrobe. Congratulations to Andy H for being the only other one of those original five runners to make it out again (though as a teenager, Martin was on drinks duty for that first run).

It was a pretty murky start as we set off from Nomansland, but thankfully, the forecast rain never arrived. There was plenty of opportunity for getting wet and muddy from underfoot, though. While visiting only two pubs, we managed nearly 20km this year and, most importantly, didn’t get lost! Thanks to Andy A for all of the cat herding!

Advent of Code 2025

Sunday, December 14th, 2025

I completed Advent of Code again this year, using Kotlin once more. I’d failed to read the full details on the first day and had to have it pointed out to me that there would only be 12 days this year. There was a massive sigh of relief, not least from the rest of my family!

The first eight days all went very smoothly. I was able to get both parts completed in half an hour or less before starting work in the morning. There was even time to tidy up the code a bit so I could push it to GitHub on the same day.

Everything fell apart a bit for Part 2 on Day 9. I was overly concerned about the scenario where the rectangular areas ran along the edges of the larger shape. In the end, it was sufficient to check whether any edge of the shape intersected the rectangle.

Day 10 was the first and only day that I had to pull in another dependency. I used Microsoft Z3 to determine the required button presses given the constraints in Part 2. I wish I could say I hadn’t wasted a lot of time trying alternative solutions first.

On Day 11, I cracked and resorted to using Copilot to help create the solution for Part 2. I had worked out that the minimum state I needed to track was the number of paths containing either of the special devices. It was Copilot’s idea to use a bitmask to store that information efficiently. It also provided the algorithm for the device topology sort, so they didn’t need to be revisited during the search.

Copilot aided again in the solution for Part 2 on the final day, providing most of what you see in canFit. When looking at the solution thread before writing this, I was somewhat dismayed to discover that it wasn’t necessary to attempt to place the presents at all – just checking whether there was enough space under the tree would have sufficed. My solution runs in around 45 seconds, but I’m now left wondering whether the heuristic used to select the type of present would hold up under a more complex topology.

All in all, I enjoyed this year’s challenges, but I am glad to be able to resume my morning walks before work for the remainder of December!

Blood, blood, glorious blood

Sunday, November 16th, 2025

I had thought the occasion had gone unmarked, but this week an envelope dropped through the letterbox containing a certificate, pin badge, and shiny new gold card, to mark my 50th blood donation. Part of me wonders why it has taken over 30 years to reach my 50th donation, but there have been plenty of gaps where foreign travel, competition, illness, or in one case, a scale and polish, have intervened.

Will I get to 100? Maybe. You can now donate every 12 weeks, and with the Southampton donation centre having relocated to Chandler’s Ford, I don’t even have to wait for a local donation session. (I checked: you can’t donate on Christmas Day, but you can on Boxing Day!) With over twenty years of donation still left in me, that target should be doable.

Eastleigh Remembrance Day Parade

Sunday, November 9th, 2025

Duncan was once again playing with the 14th Spitfires Scout and Guide Band as part of today’s Remembrance Day parade in Eastleigh. It did rain at one point, but luckily for the musicians, they were in the bandstand at the time! I was following along, taking more pictures than were really need (now on Flickr). No video this year, I’m afraid, but they were sounding good.

Orienteering with the Martians

Saturday, November 8th, 2025

Duncan and I went to the SN Saturday Series event at Horsell Common today where, as has now become the norm, he beat me. This was followed by some junior training which mostly involved me soaking up uncharacteristic November sunshine.

I had to have the significance of the sandpit adjacent to the start pointed out to me. Despite having reread it in the past year, I’d failed to remember that Horsell Common is the setting for the start of H G Wells’ War of the Worlds. The sandpit is the landing site for the first Martian…

XML Google Maps to OSM Plugin Migration

Sunday, November 2nd, 2025

The recent spat between Garmin and Strava reminded me that there was a time when I used to post GPX files on this blog for orienteering events and my more interesting runs. I then used the XML Google Maps plugin to render those GPX files. That plugin failed to survive a PHP upgrade many years ago, and the maps were gone. I sensed another opportunity for Copilot…

(more…)

MapRun Score Optimal Route Planning

Sunday, October 5th, 2025

I decided to test out Copilot on another MapRun-related challenge: planning the optimal route for a score event. Our Summer League events are, more often than not, planned using OpenOrienteeringMap. This uses OpenStreetMap data for the base map. The format is usually a 45-minute urban score event, using MapRun’s ScoreNxx scoring system. The aim was to take the KML file that describes an event, and determine the best route to take to maximise the score. As a constraint, I would specify the maximum distance that the route should cover (i.e., how fast the competitor was expected to run).

(more…)

Summer Orienteering in Slovenia and Italy

Saturday, August 16th, 2025

We decided to spurn the Scottish 6-Days for our orienteering holiday this year, and instead went south to the OOcup. The event moves around, but this year was taking place on the Slovenia/Italy border. We flew Easyjet to Venice and then hired a car to drive the 200km to Kranjska Gora where we had rented an apartment. (I now know much more about cross-border hire charges than I ever wanted to. For the record, Enterprise was around £25 for the week.)

(more…)