• Hitchhiker. One of two today.

    Auto-generated description: A beetle is walking on a person's finger.
  • 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).

    Auto-generated description: Three smartphones display different viewport height measurements labeled as dynamic, largest, and smallest, with Google's branding in the corner.
  • 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.

    Auto-generated description: A word puzzle game interface shows a grid with the words HOUSE, ALTAR, and POINT, with colour-coded tiles indicating correct and incorrect letter guesses.

    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.

    Auto-generated description: Graffiti art on a wooden fence features abstract designs and cartoonish characters. Auto-generated description: Vibrant street art featuring abstract designs and colourful graffiti is displayed on panels attached to a wooden fence.
  • 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.

    Oh, it was the support email. Okay.

  • 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.

    Auto-generated description: A pair of gray Brooks running shoes with yellow accents is displayed in an open shoebox with blue printed graphics and text on the inside lid. Auto-generated description: Two pairs of grey running shoes are placed side by side on a carpeted floor, with one pair appearing more worn than the other.
  • 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.

    Slightly on topic, it’s surprising to see Mastodon not having an option to block all boosts. It can be done for individual posters but I couldn’t find an option to do it instance or fediverse wide.

  • 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.

    From the docs:

    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.

    Auto-generated description: Four galahs are standing on the grass and dirt with some logs and greenery around them. Auto-generated description: Two sulphur-crested cockatoos are perched on a branch in a tree filled with green leaves.
  • 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.

    Okay, now they’re talking about transport infrastructure projects, so maybe that’s not as bad.

  • 🔗 We Don’t Need More Cynics. We Need More Builders.

    Liked this piece by Joan Westenberg. I occasionally see this cynicism myself, which is frustrating as they usually come from builders. Surely they know how hard it is to come up with a solution to a problem, only have it torn down. Granted, there might be some ego involved in these feelings.

    Via Pixel Envy.

  • The whole “squeaky wheel gets the oil” approach to software companies is that it’s easy for those working on a project to get a warped sense on how it’s received. A majory of users may find what you’re building usable, maybe even good, yet all you hear are the problems and shortfalls.

  • I wish I was the type of person that can use physical notebooks. That’s said, I’m going to try Obsidian for my personal notes again. I realised I don’t use the fancy features that Notion offers, and I think I prefer making straight markdown notes most of the time.

  • 🛠️ Lottielabs: Browser-based tool for making key-frame animations.

    Signed up to this after watching Matt Birchler’s video about it. This is a small tool for making key-frame animation (motion graphics) from within the browser. Had an idea for an animated seven-segment display countdown, which I had a go making as a GIF. It was pretty easy to make, and came out pretty well, although not exactly how I imagined it.

    An animated gif of a seven segment digit starting from 0, and counting down all the way to 0
  • My Micro.blog mug by @jimmitchell has arrived. Looks great. As for where it fits in my ever expanding tech-related mug collection, if we were to order by size, it sits nicely in the middle.

    A white mug with the Micro.blog logo — an orange speech bubble design featuring a yellow star — is placed on a kitchen bench.Three mugs with different designs — from left to right, the ATP logo, the Micro.blog logo, and the Stratechery logo — are lined up on a kitchen bench.

  • How is a .lol or .fun domain more expensive than a .com domain? Is there some discount for being serious I’m not aware of? 🤨

  • 🔗 100 quotes that helped me write

    Wish I could remember where I saw this so I can give them a HT. But there are some excellent quote here in this list prepared by Austin Kleon.

  • Started rewatching Andor last night. Wow, it’s such a great series.

  • Saw my headphone doppelgänger on the train this morning. In a world where pretty much everyone else is wearing AirPods, it was unexpected to see another wear black JBL E45BT Bluetooth headphones.

  • I’ve been using UCL a lot recently, which is driving additional development on it. Spent a fair bit of time this evening fixing bugs and adding small features like string interpolation. Fix a number of grammar bugs too, that only popped up when I started writing multi-line scripts with it.

  • It’s said that “short cuts make long delays”. The beauty of software is that you get to experience those delays over and over again. 😏

  • Like the Australian Open. Not because of the tennis, but because for two weeks, the tram I take home is rerouted to go directly to Southern Cross station, saving me from making a large road crossing. A very small improvement to my day.

  • Oof, my Python skills have atrophied quite badly. I’m trying to write a script and I’m forgetting fundamental things like how to interpolate variables within strings, or which standard library packages are used to do what. It’s not like I can’t look this stuff up, but it’s really slowing me down.

  • On Slash Pages Verses Blog Posts

    Interesting discussion on ShopTalk about slash pages and whether blog posts may make more sense for some of them. Chris and Dave makes the point that blog posts have the advantage of syndicating updates, something that static pages lack on most CMSs. It’s a good point, and a tension I feel occasionally. Not so much on this site, but there’ve been several attempts where I tried to make a site for technical knowledge, only to wonder whether a blog or a wiki makes more sense. I’d like the pages to be evergreen yet I also like to syndicate updates when I learn new stuff.

    Continue reading →

  • One crummy thing about the move to SPAs is that website’s no longer expose query URLs. I wanted to add a Raycast quick link to search for a 2-letter country code, but ISO’s search uses AJAX or something, and there’s no way to run a search directly from a URL. Or at least I didn’t see one.

  • Oh dear. I’m eying a domain that’s priced at $370.00 /year. Not sure the revenue from my idea — currently estimated to be $0.00 /year — will cover that cost. I think there’s a business word for such discrepancies. 😬

  • I only just discovered that you can use your finger to annotate screenshots in iPadOS. Go to the options menu and turn on “Draw with Finger”. I actually had no idea it was possible to make annotations without using a pencil. Why this is off by default when there’s no pencil nearby is beyond me.

    Auto-generated description: A digital interface displays drawing options, including Draw with Finger toggled on, along with color selection buttons.
  • I kinda feel for UI designers. If you were asked to come up with a menu icon for showing reading mode, font size settings, and accessing the page menu with other miscellanea, which gliph would you use? I’d say that the one chosen for Safari is a little confusing, but I really cannot blame them.

    A digital interface displays an excerpt of text with an option to show it in reader mode.
  • Project Update: DSL Formats For Interactive Fiction

    Still bouncing around things to work on at the moment. Most of the little features have been addressed, and I have little need to add anything pressing for the things I’ve been working on recently. As for the large features, well apathy’s taking care of those. But there is one project that is tugging at my attention. And it’s a bit of a strange one, as part of me just wants to kill it. Yet it seems to be resisting.

    Continue reading →

  • Trying out the use of XML over a home made domain-specific language and… I must concede, it might be a better fit. As clunky as the DOM is, XML can be made to be good, as long as you use it in moderation.

  • Finally putting some money into a decent chair for my desk at home. The one I have is showing its age, not to mention loosing its comfort. Who would’ve though a sub $100 desk chair from Officeworks would be lacking in quality? 😛