2025 The RSS feed for 2025.

  • 🔗 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. 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. 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? 😛

  • Interesting odometer reading this evening.

    A car dashboard displays a digital speedometer reading 0 km/h, an odometer at 181818, and a fuel gauge indicating moderate amount of fuel.
  • Gallery of Fake Logo For Test Organisations

    A collection of humorous fake logos for test organizations is created for work-related purposes, primarily showcasing film and media production studios. Continue reading →

  • Had another look at how I could export an Obsidian kanban board as an actual kanban board today. I thought I’d through ChatGTP at the problem, and see whether it could produce a Go program that took the markdown representation of a kanban board and reproduce it as a HTML file.

    Here was the prompt I used:

    Please write a Go program which will take a Markdown version of an Obsidian kanban note, parse it, and convert it into a HTML page.The markdown representation of a kanban note is as follows:

    • A H2 header represents a column, with the H2 text value representing the column name.
    • Between each successive H2 header are the cards for that column. Each one begins as a TODO item. The card contents is indented and can be any arbitrary Markdown.

    The generated HTML must have the following traits:

    • Each column must be wrapped within a div.
    • Each card within that column must be wrapped with a separate div.
    • The body of each card must be rendered from Markdown as HTML.

    The tool must take the Markdown as standard in, and write the HTML to standard out.

    ChatGPT came up with something, and after checking it for obvious errors, I prepared a test board and gave it a run. Here’s the test board I used:

    Auto-generated description: A digital kanban board is displayed with columns labeled To Do, Blocked, In Progress, and Finished, containing task cards with various statuses and notes.

    Here’s how it was rendered in HTML:

    Auto-generated description: A project management board displays four categories: To Do, Blocked, In Progress, and Finished, with tasks listed under each.

    A good first attempt, and I was impressed at how it actually styled the page to actually display the columns as columns1. I was not expecting that. There were a few things that were missing, such as rendering card bodies. In fact, a keen observer may note that some of the TODOs that appear in the In Progress column actually come from the card body itself.

    I requested these changes from ChatGPT and it had another go. And this is where it ran into trouble:

    Auto-generated description: A digital Kanban board displays various columns labeled To Do, Blocked, In Progress, and Finished, with tasks listed under each.

    One issue was that the generated code decided to scan the input line-by-line, and maintain state as to whether it’s parsing a column heading, card title, or a card body. But it was not properly resetting this state when encountering the next column header (note how “#blocked Will not do” appears below the In Progress heading when it should be in the card above it). This also explains why the columns no longer showed up — there were divs that weren’t being closed.

    So it was time for me to take over. I fixed a few bugs and added handling of the card body indentation. The end results looks like this:

    Auto-generated description: A kanban board showcases tasks in columns labeled To Do, Blocked, In Progress, and Finished, with notes detailing various activities.

    Good enough for what I need.

    All in all, it was an interesting experiment getting ChatGPT to start this off, and I’m impressed on how much it managed to do from the jump. But I’d be hesitant to say that what it produced is high quality, maintainable code. It was a little difficult to change, and it’s certainly wouldn’t be the way I’d choose to do it. If this was anything more than something for my own use, I probably would’ve junked it and started from scratch2. But hey, it works. And for what I need, it’s better than not existing at all.

    If anyone’s interested in seeing the code, you can check it out here.


    1. I didn’t change anything from the program apart from modifying the regex selecting task TODOs to support completed task. ↩︎

    2. That said, if I were to actually make a project out of this, I’d already got a name for it: Kanbana Boy. 🏝️ ↩︎

  • Saw hot air balloons out flying this morning. Usually I see them in autumn, yet we’re not even half way through summer. Probably the earliest in the calendar year I’ve seem them operate. That said, it’s pretty good conditions for them this morning, if not a little warm.

  • I started using the Obsidian Kanban plugin to organise work for my team. Working quite well for my needs. Only problem is, I can’t export it as a Kanban board to an interested team member. It seems like only exporting the raw Markdown is supported. I need to have a think about what I can do here.

  • Keyboard Maestro is coming into its own as a way for scheduling recurring tasks. I’ve just set one up for a daily report I need to run. It’s little more than a shell script so I probably could’ve used crontab to do it, but is so much easier configuring and testing it in Keyboard Maestro.

    Auto-generated description: A scheduled report configuration window is shown, with options for date and time selection, and a shell script execution setup displayed.
  • Spotlight has stopped indexing my apps again. Not sure what broke between now and the last time I tried to fix it, but I think it’s time to move to something else. So I’m giving Raycast a try. And yeah, so far so good. At least it lets me launch apps.

  • Ugh, you know you’re getting old when you start seeing remakes of things you were too old for the first time around. 😏

  • On the train home, and all the phone screens from the seated passengers act like tiny mirrors, reflecting the sun to where I stand. Have to face backwards to keep from getting blinded. Even doing that doesn’t completely stop the flashes of light. 🙈

  • 🧑‍💻 New post on TIL Computer: A Way To Resolve Redelivered Messages Stuck In A NATS Jetstream