-
Over the weekend, I wanted to revisit a Substack post I read several months ago. Unfortunately, the newsletter was shutdown and the post is no longer available. With a bit of luck it will be available in the Wayback Machine. I’m hoping that works for Substack domain.
-
Can’t believe it took me this long to get a headset. Knowing that a mic is only a couple of centimetres from my lips makes a huge difference in how I speak. Saved me from killing my voice today after 4.5 hours of online meetings.
-
Follow-up on my phone issue. I think the problem relates to 5G connections. The drop-outs seem to have stopped after I’ve switched 5G off. Still not sure if the problem is the phone or the SIM, but I’m not sure if I’ll pursue it further. 4G seems to be fast enough for now.
-
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 → -
Those “Accept Yours” & “Accept Theirs” buttons in GoLand’s conflicts dialog are a bit of a tease. Might be that I’m missing something (which is possible) but I though a file appearing here means that I manually need to review it. Would anyone blindly accept changes like this?
-
Oof, spent all morning updating and rebasing out-of-date pull requests. Only got through half of them so far. This project is pretty fast pace at the moment, so conflicts are expected. But many of these are PRs I been neglecting until now, so it’s still mostly my own doing. 😮💨
-
Here’s today’s instalment of Why Didn’t I Think of This Sooner™.
I’ve got into the habit of squashing commits before I push them as part of a pull request. In order to run the command I use to do this —
git rebase -i HEAD~n— I need to know the number of commits I want to squash (this will be the value of n).Fortunately, I’ve got into the habit of prefixing each commit message with the Jira task number. For example, I may write a commit message with the first line being
ABC-123: fixed a bug in the thing, followed by a more detailed list of changes. I do for every commit, even for those “checkpoint commits” I make before changing branches.So all I need to do to get the number of commits I need to squash is to simply count up all the commits that start with the Jira task number. For all this time, the way I do this is to run
git logto open up the history in Vim, and manually count the number of commit messages that began with the particular Jira task number.Today, I remembered that I could use a shell pipeline to do the same thing:
git log | grep ABC-123 | wc -lwhich would save me stack-loads of time and potential mistakes.
Wish I thought of this sooner. 🤦
-
I’m moving the posts I had on my wiki to this blog and I’m shutting the wiki down.
I never really used the wiki a lot — in fact, the last two posts were the only pages that were on there (the rest were all links). This was partly because I never got around to setting up backups (this was a pretty big reason why I didn’t put anything I wanted to keep there), but also because I found other places to document things. Anything related to software development I found myself just posting it here. Things that related to projects that I wanted to keep private, I wrote in Day One. So nothing really went into the wiki at all.
I did use the wiki a lot to keep bookmarks to guides and resources I occasionally need to lookup. I think, going forward, I’ll just keep these links as a page on this site. I’m in Micro.blog almost every day so I imagine the amount of extra effort needed to keep this page up-to-date will be low. One less site to visit and maintain. 🙂
-
🔗 A delightful reference for HTML Symbols, Entities and ASCII Character Codes
A great reference site I stumbled along when I was trying to find the perfect arrow to include in a webpage. Nice, clean, and quite comprehensive. No awful ads either, which is a breath of fresh air.
-
Dynamo-Browse: Using The Back-Stack To Go Forward
More work on Audax toolset. Reengineered the entire back-stack in dynamo-browse to support going forward as well as backwards, much like going forward in a web-browser. Previously, when going back, the current “view snapshot” was being popped off the stack and lost forever (a “view snapshot” is information about the currently viewed table, including the current query and filter if any are set). But I’d need to maintain these view snapshot if I wanted to add going forward as well.
Continue reading → -
Second breakfast time.
-
Breakfast time.
-
One thing I miss about working in Java is that the JVM comes out of the box with an interactive debugger. With just a few switches, you can enable a remote debugging session without having to do anything special with your build.
As far as I can tell, such a thing is not possible in Go, at least by default. This means that if you need to debug something running in something like Kubernetes, you either need to bundle something like
delvein your container — which might not be possible if you don’t control the entire build pipeline — or you’re out of luck and need to resort to print-level debugging. -
I wonder if people who say they hate bagpipes are actually saying they don’t like the music traditionally played with bagpipes. I’m not one that likes that sort of music either. But Mike Oldfield is a favourite artist of mine, and he’s not afraid of using a fair bit of bagpipe.
-
Went to the Union Club Hotel, in Collingwood, with a few friends for dinner tonight. Apparently quite popular with footy fans, which I did not know: there was a group that was quite roudy when I arrived. Fortunately things settled down when we ate dinner, which was pretty good.
-
Off to breakfast this morning.
Met some locals on the way.
-
Day One needs a “this time one day ago” section, where you look at the entries from yesterday, realised you’ve made all these spelling and grammatical errors, and you go ahead and fix them. I sure know I can make use of such a feature.
-
Adding Copy-To-Clipboard And Layout Changes In Dynamo-Browse
Spent some more time on dynamo-browse this morning, just a little bit.
Got one new feature built and merged to main, which is the ability to copy the displayed item to the pasteboard by pressing c. This is directly inspired by a feature in K9S, which allows you to copy the logs of a running pod to the pasteboard (I use this feature all the time). The package I’m using to access the pasteboard is github.com/golang-design/clipboard, which seems to offer a nice cross-platform approach to doing this.
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. -
The last hold-out.
-
Discovered something cool on the ATP website. If you play old shows while logged in as a member, you actually get those from the members feed instead of the public one. Not sure if I’m the last person to find this out, but chalk me up as someone delighted by this little feature.
-
I started seeing job ads for “Blockchain Engineer” on LinkedIn recently. I have no interest in such roles. But I was curious, so I clicked into one to see what it actually entails. Now, LinkedIn is emailing me similar web3 roles, thinking that I’m interested.
Serves me right. 🤦
-
Dad and I have been watching YouTube cab-rides of the NYC subway system recently. Part of the fun is trying to understand the various track configurations and how the system operates. The size of the network never ceases to amaze.
-
I had the opportunity to meet up with someone I use to work with at the Bureau of Meterology this morning.
I left the Bureau about five years ago, and although I didn’t work with this person on a daily basis, our two teams were reasonably close. One advantage of working in the team that manages the message switching service (MSS) is that you tend to have dealings with many other teams that need to shuffle data around. This person belong to one such team. He dealt with with software related to severe weather, and the alerts produced by them had to be ferried around by out team.
We talked a little about the Bureau. There have been people that have retired or moved on but the team I use to work with is still largely intact. We talked a little about the project that was meant to have replaced the home grown MSS that our team was responsible for. The goal was to replace it with a commercial, off the shelf package sold by a firm that specialises in software for met services. This was meant to have happened roughly a year or two after I left, way back in 2017. But it turns out that this MSS system will not go quietly. Given how tailored it is to the general operations of the Bureau, replacing it proved way too difficult, and it seemed like those that were trying to do so have given up in defeat, at least for the moment. And I get it, nothing lasts for ever, and eventually this MSS system will have to be replaced by something. But even so, it’s good to hear that it’s still around.
And yes, I asked about the admin tool I built. It’s still being used, and indications seem to be that people still like using it.
I was pleased to hear that. Talking about it this morning bought me back to that particular project. I had fond memories working on it. It was fun, and I was proud of what I was able to build. And yet, despite how difficult it was to step away from it, I can’t help think that doing so was the right decision. Staying on that project would not have help me grow professionally. I’ve learnt so much since then, and feel like a much better developer, thanks to moving on and trying different things. Well, it’s good to have the memories.
-
Adding A Back-Stack To Dynamo-Browse
Spent some more time working on dynamo-browse, this time adding a back-stack. This can be used to go back to the previously viewed table, query or filter by pressing the Backspace key, kind of like how a browser back button works.
This is the first feature that makes use of a workspace, which is a concept that I’ve been thinking about since the start of the project. A workspace is basically a file storing various bits of state that could be recalled in future launches of the tool. A workspace is always created, even if one is not explicitly specified by the user. The workspace filename be set by using the
Continue reading →-wswitch on launch, or if one is not specified, then a new workspace filename within the temp directory is generated. The workspace file itself is a Bolt database, which is a very simple, embeddable key/value store that uses B-Trees and memory-mapped data access. I’m actually using StormDB to access this file, since it provides a nice interface for storing and querying Go structs without having to worry about marshalling or unmarshalling. -
Facinating website for the casual Melbourne train buff. A lot of great photos of rail infrastructure, plus what appears to be routine “photos from 10 years ago” posts, which brings me back. Link via my dad.
-
The electrification of large vehicles is continuing. For the first time, I just saw and not heard an EV bus. Must say that seeing a bus accelerate out of a roundabout without hearing a loud diesel engine was a unique experience.
-
It’s funny seeing marking images of devices intended for “work”. There’s always one shot featuring either a graph or a spreadsheet.
-
Just had an hour long Slack call with someone who was drafting a huge list of tasks in a single Slack message. Thank goodness Slack didn’t fall over, or we would have lost an hour of work. Talk about living on the edge.
-
MacOS’s virtualisation framework looks interesting and I’d like to get my hands on it. Problem is that I have an Intel mac and it only works on Apple silicon. Now I’m wondering if I’m interested enough to actually open my wallet for it.
-
More On Scripting In Dynamo-Browse
Making some more progress on the adding scripting of dynamo-browse. It helps being motivated to be able to write some scripts for myself, just to be able to make my own working life easier. So far the following things can be done within user scripts:
- Define new commands
- Display messages to, and get input from, the user
- Read the attributes of, and set the attributes of, the currently selected row (only string attributes at this stage)
- Run queries and get result sets, which can optionally be displayed to the user
Here’s a modified example of a script I’ve been working on that does most of what is listed above:
Continue reading → -
Currently enjoying the sound of an eastern rosella singing it’s heart out, helping to make a long tiring week just that little bit easier to deal with.
-
It wasn’t that long ago where a Google search would return useful results that were not found by either Ecosia or DuckDuckGo. That’s really not happening as often nowadays. In fact, if Ecosia/DDG cannot find anything, there’s very little reason to bother trying Google at all.
-
Trying to find which countries require 3D Secure for online payments is annoying. Each website only list two or three countries as examples: “3DS is required in some countries like X and Y…”, and do not link to any sources. I need to do like a set union to get the full list.
-
For the past several weeks, these two have been foraging in front of my place. They’re quite skittish, and will fly off when anyone approaches (it’s difficult to get a picture of them). But after a while, they’ll always return to the same spot.
-
Evening walk, with the wattles in full bloom.



-
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 → -
Kyneton Railway Station.
-
Work was the reason I was unable to go for an afternoon walk last two Fridays. The wet weather was not going to be the reason why I was unable go for one today.
-
This week’s earworm: The Songs Of Distant Earth by Mike Oldfield 🎵
Not necessarily a new one in my rotation, but I’ve been listening to it non-stop all week.