Back home from Canberra. But only for a few days and then I’m off to the US. Should be good but I’m not looking forward to that 14 hour flight across the Pacific.

I hate days that involve airports or air travel in any capacity. Not so much the actual flying part; that’s all fine. It’s just all the things around timing or rendezvous that give me such anxiety. Very tricky thinking about anything else.

Typing in “graze” into Google Photos returned this photo. Conveniently, this was taken six months ago to the day. #mbnov

Kangaroo grazing a fence

Nee Audax Toolset

I’ve decided to retire the Audax Toolset name, at least for the moment. It was too confusing to explain what it actually was, and with only a single tool implemented, this complexity was unnecessary.

The project is now named after the sole tool that is available: Dynamo-Browse. The site is now at dynamobrowse.app, although the old domain will still work. I haven’t renamed the repository just yet so there will still be references to “audax”, particularly the downloads section. I’m hoping to do this soon.

I think I’m happy with this decision. It really now puts focus on the project, and removes the feeling that another tool had to be built just to satisfy the name.

Oof, scrum ceremonies really take it out of me. 3.5 to 4 hours of meetings, usually hosted by me and with me doing all the talking. Really kills my voice.

Rocking my super cool hat and jacket ensemble this morning. We’re a couple of weeks from the high UVs of summer so I wear the hat whenever I’m outside. But it’s really cold this morning and the wind feels like ice so the jacket had to come out as well. Trendy. πŸ€“ #mbnov

GitHub Actions and the macOS Release

I’m using Goreleaser to build releases of Audax tools, since it works quite well in cross-compiling a Go program to various OS targets in a single run. I use this in a GitHub actions. Whenever I create a tag, the release pipeline will kick-off a run of Goreleaser, which will cross-compile Dynamo-Browse, package it, and publishing it to GitHub itself.

Recently, I found a bug in the MacOS Brew release of Dynamo-Browse. When the user tries to press c to copy the current item, the entire program will crash with a panic. I tracked the cause to the clipboard package that I’m using. Apparently, it requires Cgo to be usable on Darwin, and it will panic if CGO is not enabled1. But the GitHub action I was using was an Ubuntu runner. And since the package required some symbols from Foundation, which was only available on Darwin, I couldn’t just enable CGO.

However, I did learn that GitHub Actions actually supports MacOS runners. I don’t know why I didn’t think they wouldn’t. I guess, much like most of my experience with anything Apple, it would come at some sort of price. So you can imagine my delight in learning about this. And the first thing I did was try to use them in the release pipeline.

I first tried blindly switching from ubuntu-latest to macos. Sadly, it didn’t work as expected. It Turns out that the macos runners do not have Docker installed, which broke a number of the actions I was using. And since the original ubuntu-latest runner worked well for the Linux and Windows releases, I didn’t want to just junk them.

So what I did was split the release pipeline into three separate jobs:

  • The first, running on ubuntu-latest, builds Audax tools and runs the tests to verify that the code is in working order.
  • The second, also running on ubuntu-latest, will invoke the Goreleaser action to build the Windows & Linux targets.
  • At the same time, the third, running on macos, will install Goreleaser via brew and run it to build the MacOS target.

The resulting pipeline looks a little like this:

name: release
on:
  push:
    tags:
      - 'v*'
jobs:
  build:
    runs-on: ubuntu-latest
    services:
      # localstack Docker image
    steps:
      # Checkout, build test
  release-linux:
    needs: build
    runs-on: ubuntu-latest
    steps:
      # Checkout
      - name: Release
        uses: goreleaser/goreleaser-action@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          version: latest
          args: release -f linux.goreleaser.yml --skip-validate --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  release-macos:
    needs: build
    runs-on: macos-12
    steps:
      # Checkout
      - name: Setup Goreleaser
        run: |
          # Can't use goreleaser/goreleaser-action as that requires Docker
          # So need to launch it and run it using the shell.
          brew install goreleaser/tap/goreleaser
          brew install goreleaser
      - name: Release
        if: startsWith(github.ref, 'refs/tags/')
        run: |
          goreleaser release -f macos.goreleaser.yml --skip-validate --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          HOMEBREW_GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}

I’ve only used this to make a small maintenance release that fixes the clipboard panic problem, and so far it seems to work quite well.

After doing this, I also learnt that there’s actually a Goreleaser Docker image which could theoretically be used to cross-compile with CGO. I haven’t tried it, and honestly it sounds like too much trouble than it’s worth. Rather keep things simple.


  1. This is where I complain that the function that is panicing actually returns an error type. Instead of panacing and bringing down the whole program, why not just return an error? ↩︎

Enjoyed another trip to Tuggeranong this morning. Went to the same cafe, ordered the same breakfast. I think I even sat in the same seat. It’s almost like a repeat of last time. #mbnov

Photo of Two Before Ten cafe

πŸŽ™ The Talk Show: Grand Scale Foot-Shooting

A fascinating episode of the Talk Show. Couldn’t put it down, metaphorically speaking.

The view from Mt. Ainslie.

Summit of Mt. Ainslie looking to Lake Burley Griffin and Parliament House

@odd shared a link to O Rly and given the recent tech news I couldn’t help myself. Enjoy.

β€œHardcore Twitter” O Rly book cover

I got nosteligic for O’Reilly Books Online a few minutes ago. No novels there, just tech books. But wow, was it a great service. Large range of titles, decent prices, usually a sale going on, and no DRM. Shame that they shut it down. #mbnov

Free idea for anyone interested in building an Obsidian plugin: a calendar picker which will open up an arbitrary daily note, either in the past or future. Would be useful for making notes on upcoming events.(There may already be a plugin for this, I haven’t actually looked).

EDIT: Thanks to @jayeless for sharing this Calendar plugin which does exactly what I was hoping for.

What the fridge happened to Tumblr?! It took me 15 minutes to find the RSS feed of a blog there.

To save everyone the pain from trying to find the answer by browsing crappy websites full of ads, the RSS feed of a Tumblr blog is:

https://<user>.tumblr.com/rss

This also works with profiles in the form tumblr.com/<user>.

Nearing the end of the week and I’m starting to tire. Can’t retire just yet though: got to look at a clean-up task caused by a release I was part of. 🀦 #mbnov

Half Measures

I’m coming to realise that one of my shortcomings is not completely following through on a task. I’ve got a habit of only doing enough to get it done quickly, knowing that the work has cracks in it and just hoping that things won’t fall through them. There are a few reasons for this and there the one’s that you expect: laziness, boredom, pressure to get something finished, wanting to move onto something else, etc.

As you can expect, I get burned by this. And over the last several months it got to the point where it was starting to becoming a noticeable problem. So, I adopted the following rule: “no more half measures”1. If I’ve got a task to do, the I do the whole task.

I broke that rule a few days ago. With the pressure to get something out the door, I finished the work knowing that there existed a case where it wouldn’t work properly. I was hoping to address this over the next week or so, and was not expecting (or hoping, to be more accurate) that this shortcoming will show up.

Well, today it did. Fortunately it was just in testing but sure enough the shortcut came back to bite me, and now I’ll need to fix it.

I guess it’s a good opportunity to reset and take this rule seriously once again.


  1. HT to Hank in Breaking Bad. ↩︎

You know, the whole point of having standup-free Thursdays is that we would have the morning to get work done. It wasn’t intended to have a blank calendar for others to start filling in with meetings. 😫

A couple of hours away from where I am right now is a town called Bowral, with a pronunciation reasonably close to barrel. We stayed there one easter a few years ago. The house we stayed in was shocking, but the town itself was absolutely lovely. #mbnov

A defining feature of the cafe culture in Melbourne that I absolutely love is that most cafes are independently owned and I think preferred. Well known coffee franchises have not taken a large enough hold to push them out of the market. #mbnov

πŸ“Ί Victorian Drivers View

Now, I know what you’re thinking: watching cab-rides on YouTube is great, but there aren’t any of the Melbourne and Victorian rail network. Well friends, if you’re tired of the Shinkansen and TGV, this is for you. πŸ˜€

Via Waking up in Geelong