For many years this website ran on Django. It worked well, and at the time it made sense. I wanted to learn Django, run the application myself, and generally understand every part of the stack.
Last year I moved the site to Hugo, hosted on GitHub Pages, with GitHub Actions handling the build and deployment. I had been wishing to move to a static site for ages, and Copilot made that much easier.
Read AI as MaintainerQ2 2026 was a better recovery quarter than Q1: stress dropped, body battery improved, steps came back up, active calories increased, and VO2 max started to recover.
It was not a clean win. Sleep stayed just under target, May had a noticeable dip, and weekly intensity was still well below the 800-minute goal. But after the injury-disrupted Q1, this looks like movement in the right direction rather than another quarter of drift.
Read 2026 Q2 Health ReviewQ1 2026 was a rebuilding quarter from a training and recovery perspective. The data shows reduced training load, lower daily steps, higher stress, and lower body battery relative to late 2025.
As usual, there are four areas that I wanted to focus on:
Improve fitness by training more. My goal is to maintain 800 intensity minutes on average per week. Sleep better by improving my sleep hygiene and experimenting with meal timing. Reduce stress by examining meal composition and avoiding anything that might impact my sleep. Improve biomarkers by looking at my nutrition, as well as the above items. Overall most metrics moved in the wrong direction this quarter, as we can see with the following key metrics.
Read 2026 Q1 Health Review2025 wrapped up with another hard quarter, unfortunately. Coming off some travel in September there were some events at work in October and November that were especially challenging, and in late November I got a little sick. Even worse is in early December I managed to break my ankle at the local Parkrun. This was well timed for a long road trip towards the end of December, which suited me well given my condition, but did mean exercise slowed down.
Read 2025 Q4 Health ReviewAn overall successful quarter, with most metrics moving in the right direction, despite being challenging for external reasons (work and travel).
As usual, there are four areas that I wanted to focus on:
Improve fitness by training more. My goal is to maintain 800 intensity minutes on average per week. Sleep better by improving my sleep hygiene and experimenting with meal timing. Reduce stress by examining meal composition and avoiding anything that might impact my sleep Improve biomarkers by looking at my nutrition, as well as the above items. Overall most metrics are improving, as we can see with the following key metrics.
Read 2025 Q3 Health ReviewLots of fibre.
125g steel cut oats 1 tbsp sunflower seeds 1 tbsp goji berries 1 tbsp raisins 1/2 tsp turmeric, ground 1/2 tsp cinnamon, ground 1/4 tsp ginger, ground 1 dash of lite salt Put in a jar Add water about 50% above the oats Let soak overnight Eat Number Change Date v2 Adjusted to 1 tbsp each to ease making 30-Sept-2025 v1 Initial recipe 30-Jan-2025
Read Overnight OatsMy primary goal here is to boost lycopene. Courtesy of Serious Eats.
1/2 cup extra virgin olive oil, divided 2 cloves garlic, grated on a microplane grater 1 small onion, finely sliced (about 1 cup) 1 teaspoon dried oregano 1/2 teaspoon red pepper flakes 2 slices white bread, crusts removed, torn into rough 1/2inch pieces 2 800ml cans whole peeled tomatoes packed in juice Kosher salt and freshly ground black pepper Heat 2 tablespoons olive oil in a large saucepan over mediumhigh heat until shimmering. Add garlic, onions, oregano, and red pepper flakes. Cook, stirring frequently until onions are softened but not browned, about 4 minutes. Add bread and tomatoes. Roughly mash tomatoes with a whisk or a potato …
Read Tomato SoupI typically don’t do many races, but I signed up for the Coastal Classic: my first race in a year. There were some things that worked well, and others that could have been improved. This isn’t meant to be a recount of the event, but instead notes for next time.
It was a new course this year, so roughly the same distance, but more elevation: around 31km, with 1000m of elevation gain. I’ve done this route quite a few times, so I was pretty familiar with the entire course. Great atmosphere and a feeling of community.
Read Coastal Class 2025 RetrospectiveThe primary goal here is to increase my lycopene consumption, as I was noticing this is one of the antioxidants that Cronometer reported as me needing to focus on.
Olive oil (a lot) 4 cans chickpeas, drained & rinsed 2 large onions, finely chopped 6 cloves garlic, minced 140g tomato paste (concentrated lycopene hit) 2 cans (400g) crushed tomatoes 2–4 tbsp extra virgin olive oil (for absorption) 1 bay leaf 2 tsp cumin seeds 2 tsp ground coriander 2 tsp turmeric 2 tsp garam masala ½ tsp ginger powder 1 tsp chili powder (optional, adjust to spice tolerance) 1/2 tsp black pepper (enhances absorption of antioxidants) 1 tsp lite salt Fresh coriander (cilantro), chopped (folate boost) Take out immersion blender so …
Read Chana MasalaAnother way for me to get lycopene.
1 ½ tablespoons olive oil 1 large onion, diced 4 garlic cloves, minced 1 teaspoon dried oregano 1 teaspoon dried thyme (or use more oregano) 1 ½ teaspoons kosher salt, plus more to taste Freshly ground black pepper to taste 140g can of tomato paste 500 mL vegetable broth 760g red lentils, soaked (use boxed lentils) 32g walnuts, crushed finely 800g can of whole peeled tomatoes, blended 1 tablespoon high quality balsamic vinegar (see note 5) Whole-wheat pasta or other whole grain base Add olive oil then onion. Cook 10min, deglaze periodically Add the garlic, thyme, oregano, 1 1/2 tsp kosher salt, and pepper to taste. Stir frequently and cook for 60-90 seconds. Stir in the …
Read Lentil Bolognese