Trying out DeepSeek’s chat model. Started with a pretty tame session, but it was something I needed from ChatGTP a week ago. DeepSeek seems to do pretty well here: I like how terse the answers are. I’d be curious to try out the API too.

Hitchhiker. One of two today.

Finding that styling a page with min-height: 100vh
causes the need to scroll when I open the page in Vivaldi Mobile, as vh
does not recognise vertical space taken up by toolbars. What I actually want is 100dvh
(i.e. dynamic view-height) which does. Found this slide helpful (source and via).

This week’s distraction: building a Wordle clone. No particular reason for doing this other than I felt like building one, although I did miss the small time waster of the original Wordle, and watching a game show with my parents that had a similar concept just made those feelings stronger. Main difference between this and Wordle classic: board randomly selects between 4-letter, 5-letter, and 6-letter words; no daily limit or social-media sharing when you guessed the word correctly; and the biggest one: UK English spelling.

Some remarks on how this was built: I used 11ty to build the static site. It originally started as just a HTML page with some JavaScript, but I wanted to leave the option open for bundling and minifying the JS with Stimulus. The dictionary I got from Hunspell, which is apparently the spell checker Apple has based their work on. There is a little bit of Go to filter and sort the dictionary of words. The words are in sorted order for the binary search algorithm to check if a word exists or not. The puzzle order is predetermined and was done by “shuffling” the indices in a separate array. Base styles are, of course, from simple.css.
If you’re interested in checking it out, you can find it here. Just be aware that it may not be as polished as much of the other stuff you find out there. Turns out that I can tolerate a fair few shortcomings in things that I build for my own amusement.
“Get out more” goal for January achieved. ✅
Just a small one this month though, as I was a little unorganised: just work drinks and coffee with a team I don’t usually work with. Baby steps I suppose.
Discovered new street art this morning. Took a photo of my favourites.


Was talking with a coworker at lunch today about his Twich streaming setup, and how he was using Unreal to produce backgrounds that’ll be composited with his webcam feed. He was clearly excited about it all. Streaming’s not my thing, but it was great talking with someone so enthusiastic about doing something like this.
It’s so strange how Hugo doesn’t configure Goldmark with unsafe enabled by default. Having it off makes sense for the Goldmark library, but the whole point of Hugo is to make a website. And websites, generally, contain HTML. You can turn it on, but it’s always a bit of a hassle.
How do I get an email about a support ticket, saying that they’re waiting for me to respond, without providing me a link or instructions I can follow to actually respond? Not even a link to the support page. Hmm.
The conspiratorial side of me is thinking that running shoes are getting more expensive and lasting half as long. The shoes I had have worn out considerably so I bought a new pair, which arrived today. So I’m officially marking the date.


I did not think I would continue to use an evaporative cooler, but given the price I was quoted to replace the unit I got, I figured it’s worth a try. If it doesn’t work out, then I’m happy to have paid the sunk cost. But if it does, then that saves me significant modifications to my home.
My tolerance for seeing anything regarding US politics is pretty low right now. I’m going to be pretty liberal with my mute, block, and hide boost options for the foreseeable future.
Learnt a very import thing about Stimulus outlets this evening: the outlet name must match the controller name of the outlet target. If this is not the case, the outlet will not bind and you’d be beside yourself struggling to find out why the outlet target cannot be found.
The outlet identifier in the host controller must be the same as the target controller’s identifier.
Took me 30 minutes and stepping through with code with the debugger to find this out.
I appreciate programs like Obsidian that automatically saves my work, yet let me press Cmd+S without saying anything. It’s empathetic of those trained to frequently Cmd+S whenever they’re working on something. It may seem like showing a message saying “you don’t need to save” is useful, and it might be first time for new users. But doing it every time they press Cm+S quickly becomes distracting. It takes a long time for this reflex to be unlearned, especially when there are programs which still require explicit saving. So just do nothing and say nothing. Let the user press Cmd+S in peace.
Just heard the name for John's new app. Must say I kinda like it. It grows on you. No spoilers (except in the clip), but I do appreciate that it follows a similar vein to the crazy names I came up with. It just does it so much better.
I’m guessing the product owners of YouTube’s Android app assumes that people will be opening links to videos from social apps, where there’s a link preview. Tapping a link now opens the YouTube video in full screen mode. I rarely have a link preview available to me, so this feature is quite jarring.
Started filling out the UCL website, mainly by documenting the core modules. It might be a little unnecessary to have a full website for this, given that the only person who’ll get any use from it right now will be myself. But who knows how useful it could be in the future? If nothing else, it’s a showcase on what I’ve been working on for this project.
Some photos of birds taken during my walk this morning.


I’m pretty happy with my success at using Obsidian for my work notes, and I think a key to this is adding Obsidian as a launch item, so that it’s open at log in. I’m doing likewise for my non-work vault to see if it helps with my personal notes. “Out of sight, out of mind” is a real phenomenon.
I don’t know what’s worse: overhearing others in cafés talk about local politics, or overhearing others in cafés talk about US politics. Surely there are more interesting topics to talk about than politics.