-
Froth and Bubble
Woke up in the early morning with this poem in my head:
In this world of froth and bubble,
Two things stand like stone;
Kindness in other peoples’ trouble,
Courage in your own.I first read this in a young adults novel some good 25 years ago, and over the years it’s come back to me several times. I guess you can say it resonates.
Continue reading → -
Hammers, Nails, and Hugo
Going through my hammer and nail phase with Hugo. Trying it out on my personal knowledge base to see if it could replace the tool I wrote to generate the site from a set of Markdown files.
Hey, if you were to squint, that tool kinda looks like a pale imitation of Hugo. How about that.
Such as it is with things like this. I first tried out Hugo a few years ago and did the bare minimum to get a few sites off the ground. Then I coasted on that knowledge for a while, using Hugo’s basic features, and doing only cursory explorations of the more advance stuff like layouts, short-codes, and taxonomies. When it came to the personal knowledge base, I knew in principal that I could use Hugo, but since I didn’t have a lot of experience in these advanced features, I decided to just hack this tool up.
Continue reading → -
On Posting Here Daily
I sometimes struggle with the idea of trying to post here at least once a day. While perusing my archive I find days where my posts are cringeworthy or just not good, and part of me wonders whether it’s better to wait for a post to meet a certain level of quality before publishing it.
I have also seen this argument from other bloggers as well. They post the rules they have that include things like “it should start a conversation” or it should be “distinctive”. I remember reading tweets from one who shuns the idea of posting on a schedule in favour of only publishing something that’s “good”. From looking at their site, there’s probably only a single new post every two years on average1.
Continue reading → -
2022 Year In Review
I’ll be honest: these year in review posts feel like going to the dentist. I generally hate doing them, but I know that it can be good exercise to reflect on the past year. I think one thing in my favour is that I’ve actually kept my blogging — and to a lesser extent, my journalling — up to date so I’ve actually got something that I can refer back to.
Continue reading → -
2022 Song Of The Year
For the past twelve years or so, I’ve been invited to play the organ at the children’s Christmas Eve mass at a local(ish) primary school. During the collection, while people are getting wallets or purses out, I usually play some soft, nondescript music on a muted organ with only a few soft pipes opened. It doesn’t matter what I play during this time so I usually take this opportunity to play a song that I felt was a favourite of mine throughout the year. I unofficially consider this my song of the year.
Continue reading → -
RSS And Tumblr's Quote-Style Posts
Tumblr needs to improve how they generate RSS items. Quote-style posts — in which the post consists of a quote from someone else, followed by a reply by the blog author — show up in my RSS reader with titles consisting of the “quote part” of the post. If the quote is more than just a handful of words, the title dominates the actual body of the item. An example:
Continue reading → -
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.
Continue reading → -
Day Trip: Macedon And Trentham
I had the pleasure of taking the day off today and going for a few walks around Macedon and Trentham. Being someone that’s really into keeping with a routine, I try to do these walks at least once a year. It’s been somewhat delayed this year, due to work commitments, but with the public holiday tomorrow, I thought I was a perfect time to get outside and do them before summer rolls around.
Continue reading → -
Opinionated Tips for New Micro Bloggers Coming From Twitter
or, How I Use Micro.blog
To all new-comers from Twitter, welcome to Micro.blog!
No doubt you’ve received the welcome message from Jean with links on how Micro.blog is different from Twitter, but you’re probably still wondering how to get the most out of Micro.blog. And while I’m not claiming to have all the answers, I’ve put together a few tips for how I get value from writing here.
First, the thing that took me a while to appreciate is that Micro.blog’s not so much a social media platform, at least not in the traditional sense. I mean, it certainly can be described as one, and if your goal is to connect with others online, it works just as well as any other. But in essence, it’s closer to a blogging platform, albeit one with social aspects tied to it. When you write a post, not only would it appear in the timeline of those that follow you, it will also appear on your own blog. So an option before you is to lean into this. Treat your blog as your own space on the web. Get a domain name and share it with others. Style your blog as much or as little as you want. Take a look at the plugins to see what you can add to your site. You don’t have to do this right away, but it’s well worth considering if you hope to get the most out of writing here.
Continue reading → -
Technical Knowledge Management Update
Finished the first pass of moving all my technical knowledge into static Markdown files. I’ve got all the files now in a Git repository hosted on Github. They’re also published as a website called TecKnow Space (pronounced “techno space”)1.
The way I’ve done this is by writing a tool I which will checkout the source Git repository, iterate over all the source Markdown files, render them as HTML, and push them to another Git repository which is being served using GitHub pages. The tool, which is currently not open-source, was written in Go and uses go-git for the Git client, and BlackFriday as the Markdown renderer.
Continue reading → -
Option Currency Symbol Reference
A reference guide for producing various currency symbols using the Option key. Continue reading →
-
An Alternative To The Reply All Idea For Micro.blog
Just thinking about Micro.blog conversations and the discussion about having a way to reply all. I wonder if a better alternative is to be able to “follow” conversations, with new replies from anyone showing up in the timeline. This can be completely opt-in per conversation — including for posts that are made by you — so that those that want the old way to continue working as is don’t loose anything.
Continue reading → -
The (Annoying) Way To Get the Current MacOS Appearance Scheme From the Command Line
Ok, here’s something bizarre.
I’m trying to get the current MacOS appearance scheme — either light or dark mode — from the terminal. The way to do this is by running this command (source):
defaults read -g AppleInterfaceStyleIf MacOS is in dark mode, this will print
Dark. But if MacOS is in light mode, the command will print… an error:2022-10-04 09:15:18.058 defaults[35844:466643] The domain/default pair of (kCFPreferencesAnyApplication, AppleInterfaceStyle) does not existRunning
Continue reading →defaults read -gconfirms what the error message says: theAppleInterfaceStylekey is not set when MacOS is in light mode. -
Photos of Lake Tuggeranong
This morning I went to Tuggeranong, south of Canberra. After a cafe breakfast I took a walk around the lake. It was a lovely spring morning for it: cloudy, mild but slightly on the cool side. It was also quite a decent walk: probably took an hour and 20 minutes, and I didn’t even cover the entire lake. All in all, a nice way to begin the day.
Continue reading → -
The Australian Republic Question
With the passing of Queen Elisabeth II, the talk of whether Australia should become a republic will probably start making the rounds once more. I don’t consider myself a royalist, and when the last referendum on the issue came around, I voted in favour of becoming a republic. The idea of having the British Royal Family as the head of state of a country halfway around the world seem anachronistic to me, and I was disappointed when the referendum failed.
Continue reading → -
Detecting When GetItem On DynamoDB Returns Nothing
I was trying to remember how best to detect when a GetItem call to DynamoDB returns no values. That is, when there’s no item with that key in the table. This is in a project that is using v2 of the Go AWS SDK.
After poking through some old code that did this, it looks like the way to do so is to check that the returned
Continue reading →Itemfield isnil: -
Some Photos of The Yarra Trail
Went for a very short walk of the Yarra Trail around Heidelberg on Saturday. The evening light was really lovely so I though I’d take some photos.
Continue reading → -
Milestone
For a while, I’ve been trying to maintain a writing streak. I need to write at least one blog post or journal entry a day. Today that streak has been maintained for a full year.
I will admit that the streak was not completely continuous: I had to go back a few times and retroactively add a post. But even so, I’m quite please with reaching this milestone. Onward to the next one.
Continue reading → -
Some Things I Found Out While Browsing a Substack Newsletter in The Wayback Machine
I did a quick search for that blog post in the the Wayback Machine. I couldn’t find the post but the Substack newsletter was there. I guess Substack does allows archiving of newsletters with the “substack.com” domain after all (if it’s something that they can even control).
Anyway, here are a few things I’ve found out while browsing through a Substack newsletter in the Wayback Machine:
- Clicking “Let me read it first” works: it slides away and the most recent posts show up. Guess it’s just a simple HTML overlay blocking the home page.
- Open all links in a new tab. Just clicking them will run some JavaScript which, I guess, tries to load the post directly from Substack, resulting in an error if the newsletter is taken offline. Opening the link in a new tab will get the post directly from the Wayback Machine.
- Clicking the archive tab seems to bring up the blog archive briefly, but then some JavaScript — which I guess is trying to load the archive from Substack? — replaces it with an error (why does everything need to be JavaScript?!) I’m guessing that the actual HTML is still there so it might be possible to get it if you disable JavaScript. I haven’t tried this though, so this is only a hypothesis.
As for the post itself, it turns out that it was in my Feedbin archive all along, so the search in Wayback Machine wasn’t actually necessary. Now the trick is to find a way to prevent Feedbin from purging old posts. 😳
Continue reading → -
Rebinding Keys For Quickly Resolving Conflicts in GoLand
I’m dealing with a lot of conflicts today as I try to clear a backlog of Git rebases in my to-do pile. I’ve been using GoLand to do this, as my current Git “mergetool” is configured to Vimdiff for some reason1 and I’m not really bothered to find some other tool, at least not yet. GoLand does a pretty good job.
Unfortunately, the default key-bindings for resolving conflicts in GoLand is far from good. About the quarter of actions are bound to keys that make sense. Half the actions, like ignoring hunks, are not bound to anything, while the last quarter are bound to keys that result in a suboptimal experience. For example, the key to accept changes for a delta use the arrow keys, whereas the key to go to the next delta is F7. What a strange default. I’d have to constantly move my hand off the arrow keys over to the Fn row if I want to go through and fix each delta. This, plus moving over to the mouse to select an action not bound to a key, makes resolving conflicts really slow.
Continue reading → -
Turning Off Shared Command History in Oh My Zsh
TL,DR: add “unsetopt share_history” to your .zshrc file
I’ve been using Oh My Zsh at work for a few months. As far as terminal config managers go, this one works pretty well. But the default configuration does include something which I found quite annoying.
First, a few words on how I use the terminal. I’m in the terminal constantly in my day to day. At the start of the day, I’m creating terminal tabs and running commands to do things like build the project I’m working on, start a testing session, etc. This all starts very ad-hoc, but over time these tabs take on a particular role. I may run
Continue reading →makeandgitin the left-most tab, run tests in the tab next to that, have logs tailing in the one after that, etc. As I start and stop commands in each tab, they all build up a different history, which is usually visible in the terminal output itself. Eventually it comes to the point where in order to run a particular tool, I simply need to switch to the particular tab and press ↑ one or two times to get to it. -
Kyneton Botanical Gardens
Went to Kyneton with Mum and Dad today. While they went off for a bike ride, I had the opportunity to go for a walk around the botanical gardens. This was my first time there, and although the gardens themselves were not very big, it was still a pleasant experience. Here are some photos I took of that visit.
This was followed by lunch at Little Swallow Cafe. The place was quite busy — I suspect that their reputation is such that it would be busy most of the time — but the food was very nice. We then went for a short walk around Kyneton and then drove to Malmsbury for a coffee and Devonshire tea.
Continue reading → -
DynamoDB JSON Attribute Types Quick Reference
Because apparently it’s too difficult for AWS to provide an easy way to find this information.
Atomic Types
Type JSON Value Binary BString value containing the Base64-encoded binary data. Boolean BOOLEither trueorfalseString SString value Number NString with the numerical value Null NULLShould always be trueCollection Types
Type JSON Value List LA JSON array, with each element being an attribute with a type. Map MA JSON object, with the keys being the map keys, and the values being an attribute with a type. Set Types
Type JSON Value Binary Set BSA JSON array of Base-64-encoded binary data. Number Set NSA JSON array of string with the numerical values. String Set SSA JSON array of strings. Sources:
Continue reading → -
More Complaining About Autocorrect on MacOS
Earlier this morning:
Me: (writing in my journal) Nonna, my 91 year-old grandmother…
Autocorrect: Did you me “Donna”?
Me: No, undo change. (continue writing) good news is that Nonna…
Autocorrect: Did you me “Gonna”?
I can forgive MacOS for considering nonna a spelling error, since it’s not an English word.
But I do see why auto-correct on MacOS can be frustrating. Apart from the two completely random corrections it made for the same word, it also doesn’t seem to get the hint when I undo the change. I would have thought that action is a pretty strong signal from the user to just leave the word alone, at least for the moment.
Continue reading → -
Write It Down
I am feeling some very minor after-effects from the booster I took yesterday (nothing serious, just the expected cold-like symptoms). I was curious as to whether it was anything like I experienced in January, when I got my last booster. I went to my journal to see what I wrote about it. Unfortunately for me, there was nothing there.
To be fair to my past self, there were some other events going on at the same time which I did write about. But I was left pondering this morning about why I didn’t write anything about how I was feeling back then. My guess is that I probably didn’t think it was worth writing about at the time. “Feeling a little off” was probably something that I thought was quite trivial, and wouldn’t be relevant later on.
Continue reading → -
Newsletter Reminder Emails
I subscribe to a newsletter that sends “reminder” emails if I skip an issue. If I don’t open one of the email newsletters I receive, then a few days later, a copy will be sent with a forward of the form “looks like you skipped an issue. Here what you missed.”
These reminder emails are bad, and here’s why:
-
It gives the impression of hustling me. I appreicate the time you take to publish something that I see value in, but sending these reminders feels like your forcing your content onto me. Like I just got to read this content. Really, you must read it! And, oh! You forgot this one day? Well I’ll make sure you don’t forget it (and me) again. Please, back off! I’ve received your content and I’ll get to it when I get to it, if I feel like it, after I’ve read all the other newsletters I received. Please don’t push me to read it on your schedule.
Continue reading →
-
-
The Feature Epic (Featuring the Epic Feature Branch)
Here’s what’s been happening at work with me recently. I write it here as an exercise in how I can learn from this. They say that writing can help in this respect so I’m going to put that logic to the test (in either case, just having this documented somewhere could prove useful).
We’re working on a pretty large change to the billing service powering the SaaS product sold by the company I work at. Along with our team, there are two other teams working on the same service at the same time, making any changes they need to release the product stuff they’re working on. All our teams had our own deadlines — which are pretty pressing — to get stuff delivered either last month or sometime this month.
Continue reading → -
Arriving Late
I’m going to have to tell my boss today that the stuff my squad has been working on is going to arrive late. To much needs to be fixed or reworked, and there is one or two things that have been missed alltogeather.
I think the biggest problem is that the thing we’ve been working on got into testing far too late — only a few days before the deadline — meaning that there was no time left for fixing things. Really, you can draft all the plans and designs you want but you really don’t know how well it will perform until the “working” code has been handed to someone else.
Continue reading → -
Wrong Number
Got called three times this morning by mistake from an old woman in NSW trying to contact her son who had a very similar phone number to mine.
First time I ignored it as I didn’t recognised the number and thought it was spam.
Second time I answered and after trying to understand what she was trying to say, I simply said “I think you got the wrong number, sorry” and hung up.
Continue reading → -
Honour, Democracy, and Galati: A Day in Canberra
Since being in Canberra, I haven’t really done anything “touristy”. Given that today was a public holiday, I figured it was as good a time as ever to do so. So I decided to spend the day visiting a couple of national landmarks, plus something I’ve been planning to do since returning to Canberra.
The War Memorial
The first time I’ve ever been in Canberra was during Christmas holidays in 2007 my family. During that time, Mum and Dad and my two sisters went to the War Memorial and Parliament House, while I stayed in our rented town-house. The reason why I stayed back was a little embarrassing: I claimed that I was tired, but this was during a weird period where I didn’t really want to be seen doing something touristy (I’ve mostly got over this feeling). Not going when I had the chance was something I’ve regretted since that day. Well, today I make amends with at least one of these, with a visit to the War Memorial.
Continue reading → -
Afternoon Walk Around Lake Ginninderra
Went for an walk around Lake Ginninderra this afternoon. Well, not “around” the lake: that walk would have taken a while. But I did walk along the path that would take me around the lake for about 30 minutes, then walked back again. Below are a few photos I took.
Continue reading → -
My Evening
So here’s how I spent my evening:
Watching the WWDC state of the union until the DNS resolver konked out in the WiFi router, causing the Chromecast to get into a state in which it could no longer connect to the network, resulting in about 10 minutes of troubleshooting before deceiding to clean up, not go to the gym, spend another 10 minutes trying to troubleshoot the issue, then stared at my laptop for about half an hour wondering whether to go back to troubleshooting the Chromecast, or doing something else with the hope that it would eventually work itself out.
Continue reading → -
The Powerline Track Walk
Went on a walk of the Powerline Track, which I was personally calling the “powerline walk” (yes, I’m impressed at how close I was). I saw this trail when I was in Canberra earlier this year, and knowing that I would be back, I made a note to actually walk it, which I did today. This track follows the powerlines just south of Aranda Bushland Nature Reserve, then goes under Gungahlin Drive and into the Black Mountain Nature Reserve. The weather was cold but pleasant, at least at the start of the track. It eventually got quite dark and a little wet near the end, but that did result in some nice winter lighting over the landscape.
Continue reading → -
Humour In Conference Videos — Less Is More
It might be just me but I get a little put off with over-the-top attempts at humour in developer conference videos.
I’m four minutes into a conference video which has already included some slap-stick humour (with cheesy CGI), and someone trying to pitch to me on why what they’re talking about is worth listening to. This was done in such a way that it actually distracted me from the content, a.k.a. the reason why I’m watching it.
Continue reading → -
Cloud Formation "ValidationError at typeNameList" Errors
I was editing some Cloud Formation today and when I tried to deploy it, I was getting this lengthy, unhelpful error message:
An error occurred (ValidationError) when calling the CreateChangeSet operation: 1 validation error detected: Value ‘[AWS:SSM::Parameter, AWS::SNS::Topic]’ at ’typeNameList’ failed to satisfy constraint: Member must satisfy constraint: [Member must have length less than or equal to 204, Member must have length greater than or equal to 10, Member must satisfy regular expression pattern: [A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}::[A-Za-z0-9]{2,64}(::MODULE){0,1}]
Continue reading → -
GitLab Search Subscriptions with NetNewsWire
I’m working (with others) on a project that’s using GitLab to host the code, and I’m looking for a better way to be notified of new merge requests that I need to review. I cannot rely on the emails from GitLab as they tend to be sent for every little thing that happens on any of the merge requests I am reviewing. For this reason, any notifications sent by email will probably get missed by me. People do post new merge requests in a shared Slack channel, but a majority of them are for repos that don’t need my review. They’ve also been days where a lot of people are making a lot of changes at the same time, and any new messages for the repos I’m interesting would get pushed away.
Continue reading → -
What Would Get Me Back to Using Twitter Again
Congratulations, Elon Musk, on your purchase of Twitter. I’m sure you’ve got a bunch of ideas of how you want to move the company forward. I was once a user of Twitter myself — albeit not a massive one — and I’m sure you would just love to know what it would take for me to be a user once more. Well, here’s some advice on how you can improve the platform in ways that would make me consider going back.
Continue reading → -
Showing A File At a Specific Git Revision
To display the contents of a file at a given revision in Git, run the following command:
$ git show <revision>:<filename>For example, to view the version of “README.md” on the
devbranch:$ git show dev:README.mdThere is an alternative form of this command that will show the changes applied to that file as part of the commit:
$ git show <revision> -- <filename>This can be used alongside the log command to work out what happened to a file that was deleted.
Continue reading → -
Code Review Software Sucks. Here's How I Would Improve It
This post is about code reviews, and the software that facilitates them.
I’ll be honest: I’m not a huge fan of code reviews, so a lot of what I speak of below can probably be dismissed as that from someone who blames their tools. Be that as it may, I do think there is room for improvements in the tooling used to review code, and this post touches on a few additional features which would help.
Continue reading → -
Broadtail 0.0.7
Released Broadtail 0.0.7 about a week ago. This included some restyling of the job list on the home page, which now includes a progress bar updated using web-sockets (no need for page refreshes anymore).
For the frontend, the Websocket APIs that come from the browser are used. There’s not much to it — it’s managed by a Stimulus controller which sets up the websocket and listen for updates. The updates are then pushed as custom events to the main
Continue reading →window, which the Stimulus controllers used to update the progress bar are listening out for. This allows for a single Stimulus controller to manage the websocket connection and make use of thewindowas a message bus.