I’m in the process of tentatively switching from “classic” vim to NeoVim (specifically, LazyVim), and it took me ages to get Tim Pope’s Projectionist plugin working.
In case this helps anyone else (and Google successfully indexes it), the trick seems to have been to set event to BufEnter, to force it to check whether to load itself whenever you open a file (there may be a better way, but this one seems to work). This is what I ended up with in lua/plugins/projectionist.lua (I’m setting it up for Elixir, so you’ll probably want a different language-specific plugin, or to add your own config (see below).
I think, based on this Stack Overflow answer, that the syntax for adding your own heuristics is as below (see the plugin docs for more details). In this case mix.exs is the path it checks for the existence of to decide whether these mappings apply to the current project.
Remember how last week I was feeling smug about the fact that I’d filled the brown bins up at the weekend, rather than at the last minute on Tuesday night or Wednesday morning as usual? Of course what I hadn’t done was check the Christmas schedule, so I failed to put them out before they came to collect them on Tuesday morning.
I got an email from the blood people saying they had some last-minute appointments available, so I went and gave my 66th (nearly an) armful on Tuesday. It was surprisingly busy for the time of year, but once I got into the chair the blood flowed out nice and quickly.
On Christmas Eve, as usual, I did the annual Stutton and Holbrook Fun Run (this year renamed to the “Stutton and Holbrook at RHS Fun Race”), in aid of Suffolk Mind. It was ridiculously windy, which made it quite cold, and because the wind was in the opposite direction to usual it meant a headwind on the normally fast downhill bit of the lap. I was another half minute slower than last year, but I’ll blame it on a lack of blood!
Obviously Christmas Day kicked off with parkrun, on a gloriously sunny (if a bit chilly and still windy) day. I switched plans at the last minute to head to Kesgrave, as that’s where most of my friends who were running had decided to be, but as I was running habitually late that meant a mildly frenzied ride into the wind to get there (and it’s about three miles, as opposed to half that to my normal venue). Fortunately they started about ten minutes late.
I spent the rest of the morning chopping bits out of a worn-out felt Santa suit and pinning them together to make a small hat that I could attempt to put on a cat for a Christmas photo. Badger was the most stoical about ignoring it.
Christmas Badger
I made myself the usual excessively large Christmas dinner. Despite this obviously only happening once a year I seem to have internalised it to the point that I can have all the components ready at the right time without having to faff around with all the lists and timers that I used to rely on.
Big dinner on a big plate (before I drowned it in gravy)
I even forced down a slice of my Christmas pudding afterwards – it hadn’t turned out at all badly, even if I say so myself.
Pudding
Saturday started with yet another parkrun – the last one of the year, so now I’ve successfully ticked off all 54 in 2025. The post-run Spoons visit was back on the agenda, and me having come out without money, cards or phone was not considered an obstacle to joining in. While everyone else was eating their breakfasts, Dave (who is a bad influence) bought us each two pints. This meant that having only had one beer on each of Christmas and Boxing Days, I’d managed to double that before lunchtime on Saturday.
I thought I’d have a play with NeoVim/LazyVim. It’s clearly shinier and no doubt more powerful than my usual lightly-configured Vim8, and most things worked as expected out of the box, but there are a couple of plugins I haven’t managed to get set up right yet, and I think I’m going to have to relearn some muscle memory to get back to the same level of effectiveness.
I belatedly discovered the excellent Inside, and played through it in a couple of days. I’m sure I’ve searched for “games like Limbo” plenty of times in the past, so I’m not sure how I missed it. I’ve also dipped into Silt and Superliminal, but I’m not 100% sold on either yet.
In what seems like a bizarre coincidence but is probably just an example of the frequency illusion/Baader-Meinhof phenomenon, I watched an episode of Columbo where he was running around looking for a “Shriner” for some reason (something to do with a ring), and I was wondering what on earth one of them was – I was sure I’d never even heard the word before. Then I immediately watched Die Hard 2 (I’d seen the first one on Christmas Eve), only for the airport cop guy to shout that “everybody from the Shriners convention to the goddamn boy scouts” was passing through the airport.
Another long run on Sunday, on the same trail route out to Witnesham that we’d done in October. Last time we’d encountered a length of pipe in a field and idly wondered whether either of us would fit inside, and this time we felt that we couldn’t pass by without finding out. The answer was “not really”.
This is a weird one, but I seem to have found a miracle cure for the knee pain (IT band, I assume) that’s been plaguing me since One Lap to Ultra back in October. The pain had been coming and going, but it definitely still wasn’t right, despite getting some amount of rest while I was ill. I could hardly walk after the Turkey Trot the other week, and after last Sunday’s run it was pretty sore. Anyway, on Monday I spent about 40 minutes riding relatively hard on my new indoor bike trainer, and since then I haven’t felt even a tiny twinge of discomfort, despite running 9, 8 and 18 miles respectively on Tuesday, Thursday and Saturday. The fan I was using to try to keep myself cool with did self-destruct while I was riding though, which made me briefly panic and hit the brakes, which obviously wouldn’t have done anything even if the big bang and bits of flying plastic had been anything to do with the bike.
Thursday was the annual Christmas pub run with the TTT crowd. This year we ran into town, then used a wheel of fortune type app to randomly select five pubs to run to (out of a choice of seven, although one of them turned out to have closed down) and which order to run to them.
In the Dove (pub 2)
I finished work for two weeks on Friday, which will be nice, assuming I manage not to get ill this time.
On Sunday I actually remembered to chop up another load of the cut-down laurel from months ago and put it in the brown bins ready for them to be collected on Wednesday. Certainly more pleasant than doing it in the dark on Tuesday night or having to get up early to do it on Wednesday morning (although of course this week I’ve got all day Monday and Tuesday to do it). The laurel’s pretty much gone now, but there’s still a big pile of branches from the apple tree, and quite a jungle of brambles to clear. And I still haven’t started putting the greenhouse up in the space I cleared (the bit I dug out to lay the slabs in is now full of weeds).
I braved the supermarket on Sunday for Christmas food (but mainly because I needed normal food too). Despite leaving it until just before they closed it was still pretty rammed, but at least it was Waitrose so everyone was polite. That gives me a few days to figure out what I’ve forgotten. I’ve marzippanned the cakes too, and realised that one advantage of making marzipan instead of buying it is that it uses egg yolks, which handily leaves whites for the icing.
Some poor quality control from the Britannia app’s Revealed puzzle on Saturday. I guessed correctly with no hints, but the letter count didn’t fit so I assumed I must have got it wrong ?
I finally managed to come up with a working solution to day three part two of Advent of Code, then got through four, five and six without too much trouble. On the second half of day seven, it was easy enough to get something that worked with the small example from the instructions, but when I fed it the real input it just sat there. I left it running, because it was time to head out to …
… the monthly random ex-colleague meet-up at the Fat Cat. Just me, Tony and Mel this time, with at least two people opting to be at Portman Road watching the football instead.
When I got home the Advent of Code thing was still silently churning away, and when it still hadn’t produced an answer by the morning I put it out of its misery. No idea how far through it had got, but I was surprised it hadn’t run out of memory. I started from scratch at lunchtime, replacing the recursive tree-walking nightmare with something that just worked through the list once with a fancy accumulator, in a tail-call-optimisable way. It promptly spat out the correct result in 0.02 seconds, which just goes to show that while premature optimisation may indeed be the root of all evil, when you need to consider performance sometimes you really need to consider performance.
On Friday we had the Felixstowe Road Runners Christmas run/quiz/pub crawl. We had more than the allowed number of people for a team, so decided to avoid the risk of disqualification by not actually getting any points – basically failing to visit any of the pubs on the list, or to answer any questions or do any bonus activities. We ran out to Walton to check out the newly-reopened Half Moon, ended up staying there for three pints, but missed hearing the folk band who were setting up as we left. Then we headed to the other side of town to the Dooley for one more. At that point Jason got a message saying we were late back (which we somehow always manage to be), and that the 9pm time on the instructions was wrong and should have been 8.15. This led to a pacier than expected couple of miles back to Broadway House for our bangers and mash.
Designated driver (for the six Ipswich-based folks) Neil was detouring through Chantry to drop Ryan off on his side of town, at which point Ryan insisted that we all had to stop at his local, the Kingfisher, where he’d buy us all a final round.
Bunch of misfits at the first pub …… and the second
On Saturday I did a bit of routine maintenance on my “normal” bike, including replacing the chunky rubber with 28mm road tyres (I’m sure I ordered 32mm, but that’s the risk of buying stuff off AliExpress I guess), which allowed me to put the mudguards that I took off in 2021 back on. I’m looking forward to arriving at work with a dry bum next time it rains.
Now it seems I’ve finally recovered from my cold, and my dodgy knee (IT band?) isn’t too bad, I did my first long slow Sunday run for a while (only 17 weeks to the marathon!). I met Holly in Christchurch Park and we did a 10-ish mile loop out through Tuddenham, Culpho and Playford, making it about 13.5 altogether. The weather was sunny and milder than expected, but there were quite a few cars on the roads, which mostly don’t have pavements. Our fault for being too lazy to get out earlier I guess. I’d been organised and made a ball of pizza dough beforehand, so that had risen ready for lunch when I got back (after turning it into an actual pizza, obviously).
I don’t want to speak too soon, but I think I might finally be coming out the other side of this never-ending cold.
Advent of Code started this week. There are only going to be 12 challenges this year, but after finishing the first two on the days they came out I stalled slightly on day three part two. It’s now the 7th, which doesn’t bode well.
Much consternation at work over the latest npm supply chain attack, but I’m not aware of any actual infections yet. I did discover in the process that npm install by default ignores versions in your package-lock.json for transitive dependencies, and just installs the latest acceptable version. To get what in a sane world would be the default behaviour you have to run npm ci.
In a bizarre “are we sure this isn’t a simulation” coincidence, I was walking back to my desk with a complicated train of thought including pondering different people’s preferences relating to hugging/being hugged. Back at my computer, I found a newly-arrived Now I Know newsletter describing Mensa’s red/green/yellow badge dot system for addressing exactly this issue at conferences.
Alice, who organised things this year, had provided some extra bits on the table along with the crackers, and I got a two-and-a-half-inch Christmas tree to assemble out of 147 miniature Lego-like bricks. I put it together on Friday evening – it was very fiddly and took a surprisingly long time. I even had to supplement my reading glasses with a loupe to be able to see the lines between pieces on the equally tiny instructions.
That was fiddly
Sunday saw the return of the Beccles Turkey Trot. Despite the name, this is a proper 10 mile road race, which last took place in 2019. We’d all kind of assumed that it wasn’t coming back, but we were wrong! For the first time in about a month, I had a half-decent run, finishing quicker than six years ago, and about eight minutes faster than my dreadful showing at the Hadleigh 10 a couple of weeks ago. Nothing much has changed about the event, and as is traditional they still handed out Christmas puddings at the finish. Although that does mean that, along with the one I made a couple of days before learning that the race had returned, I now have about eight servings of the stuff to get through.