The Sherlock Holmes of code
2026-01-04 20:36:03
In a quirk of calendular mathematics, this is simultaneously week 1 of 2026 and week 53 of 2025.
I celebrated New Year's Eve with a ceilidh, a beer, and a takeaway with my family.
The ceilidh was amazing; so warm and joyful and wholesome community vibes. I'll be back there!
The new year began with a wan lemony Winter sun trying its damndest to burn through the haze before conceding defeat and giving way to a huge bright moon.
The short days mean my daily perambulations take place mostly in the dark and a full or near-full moon creates a magical atmosphere. I used to listen to music on my walks but now I much prefer the natural sounds around me; birds singing, wind in the trees, rain on the asphalt.
In between festivities, I kept an eye on some machine learning processes that had been set running for a work report. At once amazed by the ability and shocked by the rising costs!
The year is over and I haven't finished The Dark is Rising Sequence. It's still winter though, so it still counts. One book to go!
-7°C even with the sun up. They say snow is coming. I'm keeping my lomography powder dry. Hold until you see the whites of their skies!
You are a museum of everything you have ever loved
@filmsbygabby, TikTok
2026-01-03 17:20:42
On my homepage, I have a carousel of what I call "testimonials" — some nice things lovely people said about me over the years.
For the longest time, I'd pick one from the array to display at build time. As part of my work to reduce build time, I decided to display them all so the homepage wasn't considered "new" for every build.
However, this left the issue that it was always the same testimonials visible. Especially on mobile, where you can only see one, new additions wouldn't be immediately surfaced. Buuut I couldn't shuffle the array at build time or I'd incur the wrath of the Build Time Goblins (or something).
The default experience is acceptable. With a sprinkle of JavaScript, we can make it a little bit better for when JavaScript is available.
const carousel = document.querySelector('.carousel');
const slides = [...carousel.querySelectorAll('article')];
const shuffled = [...slides].sort(() => Math.random() - 0.5);
slides.forEach(slide => carousel.removeChild(slide));
shuffled.forEach(slide => carousel.appendChild(slide));
const carousel = document.querySelector('.carousel');
const slides = [...carousel.querySelectorAll('article')];
Math.random() methodconst shuffled = [...slides].sort(() => Math.random() - 0.5);
slides.forEach(slide => carousel.removeChild(slide));
shuffled.forEach(slide => carousel.appendChild(slide));
The Sherlock Holmes of code
That's a good post.
Was a pleasure to work with, Not sure about his Nic Cage fetish but each to their own.
Really lovely work. Excited to dig into more of your writing.
This is such a cool looking photo!
What a beautiful design, I have been enjoying reading your posts and seeing your photography work!
Couldn’t agree more with your post
Love reading your music posts (and all the others!)
your site reminds me of the way the web used to be.
2026-01-02 17:17:53
Understandably different from both Arch Enemy and The Agonist, the new single from Alicia White-Gluz, "The Room Where She Died" is more hard rock than heavy metal. Nice to hear her clean vocals though — a talent squandered by Arch Enemy! Opening with a moving string piece, I thought for a second she was going to go full Nightwish. I will warn you that a lot of the 8:39 run time is spent on a noodling guitar solo that, imho, could have been shorter.
"She Bangs Like A Fairy On Acid" by Elita is exactly the wtf I needed to start my Friday. Shades of that Gothic Lolita thing from the millennium; all breathy vocals and unsettling melodies.
2026-01-02 14:23:51
Following on shortly after the events of "Greenwitch", the fourth book in Cooper's "Sequence" sees our mate, Will Stanton, ushered off to distant family in Wales to convalesce as was the style at the time. But –horror of horrors!– he has some kind of amnesia and is distressed because he knows he has a task to perform but doesn't actually remember what it is. Until he meets enigmatic albino Bran…
I feel like this is the book that would benefit most from some kind of "reading companion" notes; clearly Cooper has created a rich and interesting world but not all the thinking makes it to the page which can come across as "leap of faith" at times.
This isn't my favourite in the Sequence but it's an enjoyable read. It suffers from the curse of a longer series in that the arc of the book is secondary to the arc of the series.
That said, the story arc is succinct and I enjoyed the friendship between Bran and Will.
2026-01-02 06:24:37
I have been tracking a few easy goals over the year to see how I fare. All in all, I think I've done well. Unsure if I'll do a 2026 version but this has been an interesting experiment.
I have a ton of books I have already bought that I haven't yet read. Even though I only really buy 99p books, it still adds up over the year. Maximum monthly spend of £5.
I have a small handful of film cameras and I don't need more. If I can manage to make it to Christmas without buying more, I might treat myself to a Canon AE-1P Minolta SRT101 Minolta SRT Super/303/202. This sales embargo includes lenses and accessories but not, obviously, film and development.
Film and development to not exceed £27 per month. This should roughly equate to two rolls of cheap film and two developments. Realistically, I should only be using one roll (£13.50) but it's so bloody addictive 🙃 Film costs are averaged over months because I buy 5 rolls at a time and store them in the fridge which means, for example, August is £20 on film but September to December is £0
| Month | 📚 | 📷 | 🖼️ |
|---|---|---|---|
| January | ✅ | ✅ | ✅ |
| February | ✅ | ❌ | ✅ |
| March | ✅ | ✅ | ✅ |
| April | ✅ | ✅ | ✅ |
| May | ✅ | ❌ | ✅ |
| June | ✅ | ✅ | ✅ |
| July | ✅ | ✅ | ✅ |
| August | ✅ | ❌ | ✅ |
| September | ✅ | ✅ | ✅ |
| October | ✅ | ✅ | ✅ |
| November | ✅ | ❌ | ✅ |
| December | ✅ | ✅ | ✅ |
This was much easier than expected! A couple of things helped; my Kobo breaking forcing me to resurrect an old Kindle kept me from buying bargains directly from Ratuken, and making a reading goal list kept me from wandering aimlessly into buying new books because shiny shiny but also decision paralysis. I didn't always stick to the list — some titles were bumped because I didn't have them on me at the time or because I wasn't feeling it, some got dropped entirely. It was never the goal to slavishly adhere to the list but to be guided by it.
I have never been an impulsive buyer so I was quite surprised at failing on this one! Looking at the reasons for failure though and I'm not too disappointed — having to buy my dream camera twice in one year is a sadness few will experience and one I hope to never repeat 😂
February fail - bought a Zenit E on a whim which was a total lack of self-control thing
May fail - bought a case for the Zenit E because I couldn't attach a strap to the body without one
August fail - bought my Minolta SR-T 303b which was basically my dream camera 😊
November fail - bought a Minolta SR-T303 to replace the 303b the dog broke 😭
Another "easy win". Having found Photo Hippo, Burnley, my development costs are well within budget and I rarely make it through more than two rolls in one month.
2026-01-01 19:41:12
Happy New Year!
Here are a few photos from my phone from the last month with neither rhyme nor reason to the theme.




