• I’ve been using MonoLisa for about a month and a half now. It’s been so nice to use I’ve went ahead and bought a license. I recommend trying it, if you need to deal with a monospace font in any capacity.

  • Also, few things in life are so urgent that it couldn’t sit for a little while. A problem that’s been brewing for a number of years can wait a few more frickin’ hours.

  • Learnt an expensive lesson today: the price of a job should be based on how much those who are willing to do it would take. It should not be based how much you’d ask for if the job was offered to you. Ah well.

  • I knew there would come a moment when having the time to hand-write code will become more of a luxury rather than just “how things are done”. I wasn’t expecting that moment to arrive this week.

  • I remember a time when I use to get a thrill playing around with word processors: adding headers with my name and the date, or crafting up VBA scripts for running macros. Now, I just want to get in, do what I need to do, and get out as quickly as possible.

  • I should add a general disclaimer about everything that’s posted here: “this is probably just a me problem.”

  • I’ve grown a real scarcity mindset with my RSS feeds, keeping posts things later rather than reading about them now. The sad fact is that I just don’t see many people write posts frequently enough. Or, to be fair, posts that I would be interested in reading at the time. There’s the odd essay or polished piece or two, which is nice. But it makes for focused reading which I need to be in the right mind for.

    Not sure how I could fix this. Either I need to subscribe to more feeds, or start subscribing to Mastodon/Bluesky feeds via RSS. But it would be nice to see is more people writing on their own blog about the day to day, rather than saving those posts for social media.

  • Code generation tools — the conventional ones, not AI agents — can be huge PR size amplifiers. I updated the version of gRPC tools, and every single generated file changed. Made up a good 80% of the review diff. At least take the version number out of the generated file. Who’s going to need that?

  • Had to do some changes to NATS streams and consumers today, and learnt a few things from doing so.

    First, it is possible to change the subject filters of a NATS consumer while it’s being used. That is, a client could be using it to pull messages, and it doesn’t need to reconnect or anything to get the effect of the consumer change. It will continue to receive messages, so long as they match the new subject filter.

    Second, if you’re using the NATS CLI to change the filter, in order to specify multiple subject filters, include multiple --filter switches:

    $ dc-nats consumer edit \
            --filter='topic.one' \
            --filter='topic.two' \
            --filter='topic.reset.>' my-stream my-consumer
    

    Specifying a single --filter value with subjects separated by commas will not work. I’m not entirely sure what will happen but I suspect that it will create a subject filter that includes the commas in some way.

  • The most common integer type in Go is int, and 90% of the time, it should be the one to use. There are some QoL issues with using uint: values show up as hex in the debugger, linter complains about overflows. A 64 bit unsigned int is overkill for a retry count that’s likely to be less than 10.

  • We all had a laugh when we learnt that Accenture employees use AI agents to convert PDFs to Markdown. But just now, I had to get a Slack AI agent to convert a Canvas to Markdown, so I can pass it to another agent. It’s clear we need Markdown export support across the board now. The agents demand it.

  • On Doomerism

    Some thoughts about Terrence Edan’s post against doomerism. Continue reading →

  • Was on a walk when I got stopped by this magpie, who flew in front of me and looked up expectedly. I’m guessing it mistook me for someone else.

    A black and white bird is standing on grass near a dirt path.
  • TIL about Game DevOps: the idea of merging features to main without checking that it will break anything, cutting release branches, stabilising those, and merging the fixes back to main, which will most likely be unstable again by the next batch of merged features. The idea is that there are so many people working on the codebase that there’s no way to rely on CI/CD to ensure that main will be stable after merges. There’s just not enough hours in the day for CI/CD to run. So you don’t promise stability there. You spend your effort stabilising the release branches.

    This is a complete reversal of the principals I learnt in my career, which is that main must always be production ready. Usually to allow for a release to be cut at any time (like, for example, patching an issue in prod), but also because no-one likes to checkout a broken branch. I should probably ask my colleagues that had experience in the game industry about this, and see how well it worked for them.

    Follow up

    Talked to my contact about this. He says that this is indeed a thing, and that main would usually be unstable because CI/CD runs would take too long. The reason, which I didn’t consider, is that the entire team is working towards a single artefact and it’s difficult splitting it out into separate repositories with their own CI/CD. But he did make the sense that it hated this form of working. It got so bad that one of the senior devs would need to spend every morning just stabilising main.

  • ChatGPT Briefings Via RSS

    Using Hugo and ChatGPT Work/Codex to produce scheduled briefings that are available in an RSS reader. Continue reading →

  • Native Apps Are Not The Problem

    On long review times, review governance, and side-loading. Continue reading →

  • I’m always in doubt that any directions I give to strangers actually help them (see this post). Today, I got positive confirmation that it did. Hashtag little victories.

  • Really enjoyed Simon Willison’s interview on Write That Blog!. Willison’s weblog has been a recent favourite of mine, and his approach to writing about technical topics is one I try to emulate. His post about what to blog about is one I usually turn to when I’m in a bit of a posting drought.

  • It’s my conjecture that companies that claim to be in the business of “revolutionising (placeholder)” are choosing hardware designs based on whether there exists an emoji that can represent their product. Apple/Google have gone with phone emoji (📱). Which, fair enough, they got in early. Amazon has gone with cylinder and sphere, which can sort of be represented as a coloured circle in a pinch (🔵). Now OpenAI is staking their claim on the doughnut (🍩).

    So here’s my claim. I reserve… um… the petrol pump design (⛽️). It will be a device consisting of a cylinder atop something canonical that will taper in to a base. I don’t know what it will do, if anything, yet it will naturally be white, or black (whatever’s in vogue), made of matt plastic, and be something everyone will buy. It will revolutionise… um… putting things on side tables. Yes, that’s it. For too long side tables have too few pointless things on them. This will solve that problem once and for all.

    Investors, you know where to find me. 😜

  • Dealing with numbered lists in any web-based WYSIWYG editor is always a pain. I don’t envy the developer tasked in building out that feature. At least the wiki I’m using allows you to start lists at arbitrary numbers, rather than forcing you to start at ordinal 1. Little victories I guess.

  • No, what BMW should’ve done is kept their seven-segmented displays. Then, on ignition, start cycling this on the dashboard clock. That would get me to tip my hat at the attempt. 😼

    A seven-segmented display showing the message 'SEE SPd mAn In thrs now' in a loop
  • I’ve recently been aware of the use of “plonk” in Usenet culture to mean adding something to a kill/block list (h/t Reconcilable Differences). I may need to issue a “plonk” to BMW after they put an ad on the dashboard of their cars. They can’t be trusted with LCD screens.

  • SSH Cheatsheet

    Various techniques for working with SSH. Continue reading →

  • The more I use websites that support keyboard shortcuts, the more I wish that more websites support keyboard shortcuts.

  • It’s amusing to see what are obvious model training runs show up in the analytics. Huge, daily spikes spidering broadly through the archive (no individual page gets any more than a few visitors), all originating from one of a handful of countries.

    Auto-generated description: The bar chart with a trend line shows data values peaking significantly on the 28th of July and the 5th of August, with low activity on other dates.

    The latest spike is from Singapore, which got me thinking. I was unable to access my Coolify instance last night. I try to open the login page and all I’d see was a blank browser window. I opened the developer tools and checked the network tabs: all the connections were hanging, waiting for a response. I did manage to SSH into the VPS, which was also quite slow but usable. Checked CPU, memory, and available storage: all fine. So by all accounts, Coolify should be working.

    Then it occurred to me: that VPS is running in Singapore. Could it be that these model training runs are saturating the available bandwidth? Access to my Coolify instance was always a bit of a crapshoot. Sometimes it would be fine, other times it would be completely unaccessible. It was only when I saw the correlation between the two phenomena that I began to suspect: maybe my blame of Coolify’s performance has been misplaced.

    No matter. I’m back on using Dokku, and this new VPS is in Adelaide anyway, so hopefully this shouldn’t be too much of a problem now.

  • I’m not sure if I’m the only one that experiences this but SSH on MacOS seems to have awful keep-alive out of the box. Connections constantly hang when I look away for more than a few minutes. So I can recommend this change in your SSH config:

    # /etc/ssh/ssh_config
    Host *
        ServerAliveInterval 30
    
  • Decided to consolidate all my little web-apps on a new VPS (‘cause I know of the best ways to spend an evening 😉). Got a new VPS from BinaryLane which should take on the workloads of 4 existing ones. Had a bit of trouble with SSH. Turned out to be DNS, in that I was entering the wrong DNS address. 🤦

  • Watching a screencast of myself going through a bunch of admin consoles to setup an integration (I need to write it up as a procedure, and I knew if I didn’t record it, I would forget what I did). It doesn’t make for great viewing, but hearing my off-hand comments about the crappy UX is amusing.

  • Trains out. Now taking backup route out of city. Trying a new one: 86 tram to La Trobe Uni for a connecting bus. Tram is chockers.

  • Just learnt that Steve Yegge has changed blogging platforms again. He’s now writing on his own site. Sadly no RSS, but I also learnt that XCancel allows subscription via RSS to someone’s Twitter feed (HT @sod). So, doing the best I can under these less than ideal circumstances.

    Follow up

    Apparently that’s not enough. Inkwell is being blocked by XCancel, so this won’t work. Ah well.

  • Had an urge to work on Cyber Burger this past week. Added an interactive tutorial, plus a harder “B mode” with a few new elements. Just managed to get under the maximum size of the cartridge, although it was touch-and-go for a bit, and I did have to pull out the onboard help.

    Auto-generated description: Instructions for playing the game Cyber Burger are displayed, explaining how to move the basket left and right using the arrow keys.
  • Was the MacBook Neo ever offered in Macha Green, or did I just imagine/wish it was?

  • Enjoyed Adam Wunn’s post about FileMaker, via ATP. I’ve never used FileMaker, but as an avid reader of the technology section of the Green Guide back in the day, I always saw ads for it and wondered what it was. I guess one could, if they were be uncharitable, describe it as something akin to Microsoft Access. Anyone remember Access? Does Access remember Access? 😉

  • I must say that I happy to be so lucky my taste in music is such that the pieces I listen to could never be mistaken for AI slop. It helps that most of the pieces I usually listen to predate the frickin’ Internet.

    For context, the headline that prompted this post was “Is this Billboard Hot 100 Hit AI Slop: We can’t be 100% sure, but probably.”

  • 🛠️ Obsidian Headless

    See what happens when you fall down rabbit holes? You learn about things you’ve been wishing for a while. It’s beta at the moment but I tried it out on a headless Linux server and it seemed to work (at least in one direction). This opens up the possibility of using Obsidian for things. At the very least it gives me a better way for backing my vaults.

  • 2026 census done. ✅

    Just in time for NPM to finish installing a few billion packages. 😜

  • 🔗 Kev Quirk: Linkception

    So many links in one post. I ended up going down all kinds of rabbit holes off the back of this single post.

    Followed Kev down that rabbit hole and I agree. It was quite the journey.

    The backbone of the internet is the hyperlink, so go forth and link out to your fellow bloggers with reckless abandon. It’s what makes the web, the web. 🕸️

    Paying it forward in kind. Thanks, Kev, for the links.

  • 🔗 Unsung: Paste And Match Style is not the answer

    The problem is that PAMS is drunk with power and flattens everything on its way: [bold, italics, etc.] None of these are “style.” This is actual information that should not be removed. If you wire PAMS as your main ⌘V shortcut, or even if you use it occasionally, you might remove valuable data from text you’re moving around, without even noticing.

    I can sympathise that styles might be valuable information to some, but there must remain a way to remove this, leaving only the text. Too many apps implement styles badly, and most of the time, I find it much easier to copy as text and apply the styles again, despite how long it takes. That’s if I want to maintain the styling at all (most of the time I do not).

    Simply appealing to apps to improve Paste won’t give us that. Remove PAMS if you must, but for the love of God, make sure there’s something like a “Paste Without Styles” which allows me to paste text as plain text. And make it easier to set this as the default systemwide: why are we still rebinding system shortcuts to get this feature?

    (I did not expect to feel so strongly about this, but I just more fired up about this opinion as I wrote this. Paste as it’s implemented now just frustrates me sometimes).

  • I’m liking Zed but there were some features that Goland really excels at. Their handling of Git, for example. Rebasing, resolving conflicts, and doing branch comparisons on a single file were easier to do in Goland compared to Zed. Debugging is another one. Might keep that Goland license around.

    That said, running a script to regenerate mocks in Terminal and seeing the file status in Zed’s Git Changes panel update in in real time is pretty cool.

  • Coding agents love to write code. Sometimes the act of operating these things involves telling them not to. Worse is sometimes better. Not always: I wouldn’t put that opinion in their system prompt. But sometimes.