Urge to buy a Nintendo Switch: 4/10
It’s holding steady at the moment but it’s been rising slowly over the last couple of months. I figure it won’t be too long before it starts rising again. #mbnov
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.
Below are some photos of each of the walk.
Macedon
The first walk was along the borders of the Macedon Regional Park, following a self-plotted course, more-or-less, along the Bendigo railway line. It’s a little difficult at times, maybe bordering on dangerous (and possibly not super legal either), so I’d probably wouldn’t recommend this. But since it follows the rail line pretty much the entire time, it’s a good opportunity to catch up on some train spotting.
I realised today that it’s been 10 years since I first walk this particular trail. I’m wondering if it might be time to retire it. As nice as it is, there are certain aspects of it that are getting a little tiresome. Plus it’s always boggy, even during the height of summer, meaning that you’ll usually get your socks wet and your pants dirty when you walk it. Even so, walking it is always a pleasure.
Trentham
Following a brief lunch in Kynteon, it was time for the second walk: The Domino Trail in Trentham. This is a rail trail that travels through some really nice forest. Last time I did this, more than a year ago, the path was closed as a severe storm brought down a number of trees and I was unable to do the entire path. Fortunately the trees were cleared and the path reopened.
I caught the rain a few times and much of the track was quite boggy given the decent amount of rain we’ve received, but overall, it was a nice day out.
Trying to build an old Android app that has fallen out of date. Doing this always brings up some weird errors.
The version of Gradle being used was woefully out of date, so I starting upgrading it to the latest minor version used by the project (it was 3.1.0 to 3.2.x). This required changes to the distributionUrl
in gradle-wrapper.properties. After making these changes, I was getting 502 errors when Android Studio was trying to get the binaries from jcenter.bintray.com. I feared that the version of Gradle I was hoping to use was so out of date the binaries may no longer be available: it wouldn’t be the first time Java binaries disappeared as various sites changed URLs or shutdown. Fortunately the problem was transitory, and I managed to get a 3.2.x version of Gradle downloaded.
The various squiggly lines in the .gradle files disappeared, but I was still unable to build the app. Attempting to do so brought up the following error:
Unsupported class file major version 55
This was weird. The only version of Java I had installed was Java 11, and I confirmed that Gradle was using the specific install by checking it in Preferences → Build, Execution, Deployment → Build Tools → Gradle. So I couldn’t see why there would be a major version conflict. Was Gradle using a bundled version of Java 8 somewhere to build the app?
What I think resolved this, along with upgrading Gradle, the SDK and the build tools, was explicitly setting the source and target capability of the app to the same version of Java I was using. From within “build.gradle”, I added the following:
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
Might be that the version of Gradle I was using was so old it defaulted to building Java 1.8 byte code if these weren’t specified.
This error disappeared and the app was stating to build. But the next weird thing I was then getting was that the compiler was not seeing any of the Android SDK classes, like android.app.ListActivity
.
What seemed to work here was to upgrade Gradle all the way to the latest version (7.3.3), clearing the cache used by Android Studio, and making sure this line was added to the app module dependencies:
implementation fileTree(dir: 'libs', include: ['*.jar'])
This finally got the build working again, and I was able to run the app on my phone.
I don’t know which of these actions solved the actual problem. It’s working now so I rather not investigate further. The good news is I didn’t need to change anything about the app itself. All the changes were around the manifest and Gradle build files. Those Android devs really do a great job maintaining backwards compatibility.
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.
Second, write naturally. You’re not feeding an algorithm here. There’s nothing like trending topics or recommendations that takes what you write and throws it around the network. Instead, you’ll get something better: real humans reading and replying to your post. So write for humans. If a post needs to be longer than 280 characters, then it can be: no need for threads here. Also, adding hashes in front of words does nothing other than make what you write harder for others to read.
Finally, write for yourself. The cheap endorphin rush you use to get from likes and retweets will never come, so you’ll need another way to get pleasure from writing here. What works for me is to write for myself. If I write something, I do so with the expectation that no-one else will see it. Of course, you’re writing on the open web so others can certainly see it: try not to be too much of a jerk. But even if no-one else does, as long as I get something out of what I write, that’s all I ever need.
Of course, how and why you use Micro.blog is ultimately up to you. After all, you are the one paying $5.00 to use the service (and yes, in this case, you are the customer here, not the product). So make sure you use it in a way that works for you. And it may take a while before you find the utility you’re looking for. I’d advise patience here. You will not find the short-term rush you’ll get from Twitter. Before you is a slower path. But it’s one that can lead you towards a much better and fulfilling experience of writing online.
Happy blogging.
Rail work beginning in earnest. A large work train carrying ballast and track sections has pulled in:

They had to close the road and pedestrian level crossing. I thought it was because they were doing work on them, but it’s probably because they’re blocked by this train:

Setting up a GitLab instance in Linode. Got to this point in the instructions:

Oh, the command to get the password is missing. Well, I guess I’ll need to find it myself. 😏
EDIT: Turns out I didn’t need to. I just reset the root password to something else.
If I’ve asked you to review a pull request I’ve raised, please be clear in your comments. Don’t just point out things that I got wrong, take the time to guide me to a way to make it right. Clear Is Kind.
I’ll try to do likewise on the pull requests I’ve been asked to review.
Places hiring for senior software developers shouldn’t bother offering perks like free food or table tennis. I’d be happy with a promise of no more than 20% of the week in meetings and being on an interview panel no more than once a month.
I’ve stopped using the Substack app for reading newsletters. Not because I didn’t like the app. It’s sort of been an unconscious drift away from it. I guess my default reading and discovery patterns only require NetNewsWire and a plain old web-browser.
Finishing off the last part of my tech knowledge setup which is to regenerate the web version when I make a change to the source markdown. I’m using GitHub Actions to do this. Basically, when a change is pushed to the Git repository, an action is fired which will checkout the current site, run the tool to render the new site from the source markdown, commits any changes to the web git repo, and pushes it back to GitHub to be hosted by GitHub pages.
Learnt some potentially useful techniques of GitHub actions along the way. For example, checking out a different than the one of the action. To do this, you’ll need to create a Personal Access Token, pass it in as a secret, and use it with the checkout action.
There is some fine tweaking left to do — pushing changes to the source file which will not result in changes in the generated web version will cause the action to fail — but I think that’s a good stopping point for tonight.
Seeing a lot of retweets from @marco with screenshots of gambling apps ads on people’s iOS product page. Ugh! What a terrible user experience. It’s bad enough seeing these ads on TV. Did Apple foresee this happening when they rolled this ad placement out?
More track works going on, this time involving this pile of ballast in some way.

I can tell myself that I shouldn’t look at another CMS, but I know that I’d just wouldn’t listen. So to save us all time, this is what will happen. I get until the end of Friday to give it a try. If I like it, I move over. Otherwise, I won’t spend any more time on this.
My health insurer had a “cyber attack” recently in which some pretty sensitive data was stolen. They’re sending email updates every few days about it. It’s looking pretty serious: things taken like personal identifying information (PII), Medicare number, information about claims, etc. were taken. Fortunately, it doesn’t look to include payment information, so no need to deal with that.
At this stage, I think I might be one of the lucky ones, relatively speaking. Yeah, seeing PII being taken is annoying. And apart from routine dental work, I haven’t made any medical claims which could potentially be used against me. So for me at least, this is not as bad as it could have been.
But I can see this being a pretty serious breach of trust for some.
Endless driving game in the browser. Pretty frickin’ well done. There’s also a Medium post on how it was put together.
(via. Ars Technica)
Just thinking about all the documents I need to write for work. Half the time they’re fill-in-the-form type documents with an informal workflow tack onto it. Fill in the tables or pre-made gaps in this wiki page, mark it as draft (usually by typing “Draft” somewhere), post a link to it on Slack so that others can review it, wait for feedback or approvals to trickle in in the form of Slack messages or inline comments. It’s all so… manual. 😫
I know that software houses have tried to build meta-tools to make these sort of template-plus-workflows documents easily convertible to apps. I think Microsoft was the latest one to do this. I wonder why they never caught on. 🤔
In a spot of bother this morning. We’ve got sprint planning coming up this afternoon and I have virtually no tickets organised. There might be something in the tech debt backlog I can pull out, but probably not enough for the full two weeks. 😥
Never thought I’d say this, but I’m actually looking forward to the hackathon work is putting togeather. Spent the morning writing notes and coming up with ideas for the pitch I’ve signed up for.
I guess it shows that I’m excited about it, probably for the first time ever (I’m generally pretty blasé about hackathons). Truth is I’ve been thinking about the problem the pitch is trying to solve for a while and it feels good that the opportunity to work on it has come up.
We’ll see how the teams are organised, but hopefully it’ll be accepted.
Audax Toolset Version 0.1.0
Audax Toolset version 0.1.0 is finally released and is available on GitHub. This version contains updates to Dynamo-Browse, which is still the only tool in the toolset so far.
Here are some of the headline features.
Adjusting The Displayed Columns

Consider a table full of items that look like the following:
pk S 00cae3cc-a9c0-4679-9e3a-032f75c2b506
sk S 00cae3cc-a9c0-4679-9e3a-032f75c2b506
address S 3473 Ville stad, Jersey , Mississippi 41540
city S Columbus
colors M (2 items)
door S MintCream
front S Tan
name S Creola Konopelski
officeOpened BOOL False
phone N 9974834360
ratings L (3 items)
0 N 4
1 N 3
2 N 4
web S http://www.investorgranular.net/proactive/integrate/open-source
Let’s say you’re interested in seeing the city, the door colour and the website in the main table which, by default, would look something like this:

There are a few reasons why the table is laid out this way. The partition and sort key are always the first two columns, followed by any declared fields that may be used for indices. This is followed by all the other top-level fields sorted in alphabetical order. Nested fields are not included as columns, and maps and list fields are summarised with the number of items they hold, e.g. (2 items)
. This makes it impossible to only view the columns you’re interested in.
Version 0.1.0 now allows you to adjust the columns of the table. This is done using the Fields Popup, which can be opened by pressing f.

While this popup is visible you can show columns, hide them, or move them left or right. You can also add new columns by entering a Query Expression, which can be used to reveal the value of nested fields within the main table. It’s now possible to change the columns of the table to be exactly what you’re interested in:

Read-only Mode And Result Limits
Version 0.1.0 also contains some niceties for reducing the impact of working on production tables. Dynamo-Browse can now be started in read-only mode using the -ro
flag, which will disable all write operations — a useful feature if you’re paranoid about accidentally modifying data on production databases.
Another new flag is -default-limit
which will change the default number of items returned from scans and queries from 1000 to whatever you want. This is useful to cut down on the number of read capacity units Dynamo-Browse will use on the initial scans of production tables.
These settings are also changeable from while Dynamo-Browse using the new set command:

Progress Indicators And Cancelation
Dynamo-Browse now indicates running operations, like scans or queries, with a spinner. This improves the user experience of prior versions of Dynamo-Browse, which gave no feedback of running operations whatsoever and would simply “pop-up” the result of such operations in a rather jarring way.
With this spinner visible in the status bar, it is also now possible to cancel an operation by pressing Ctrl-C. You have the option to view any partial results that were already retrieved at the time.
Other Changes
Here are some of the other bug-fix and improvements that are also included in this release:
- Audax toolset is now distributed via Homebrew. Check out the Downloads page for instructions.
- A new mark command to mark all, unmark all, or toggle marked rows. The
unmark
command is now an alias tomark none
. - Query expressions involving the partition and sort key of the main table are now executed as a DynamoDB queries, instead of scans.
- The query expression language now supports conjunction, disjunction, and dot references.
- Fixed a bug which was not properly detecting whether MacOS was in light mode. This was making some highlighted colours hard to see while in dark mode.
- Fixed the table-selection filter, which was never properly working since the initial release.
- Fixed the back-stack service to prevent duplicate views from being pushed.
- Fixed some conditions which were causing seg. faults.
Full details of the changes can be found on GitHub. Details about the various features can also be found in the user manual.
Finally, although it does not touch on any of the features described above, I recorded a introduction video on the basics of using Dynamo-Browse to view items of a DynamoDB table:
No promises, but I may record further videos touching on other aspects of the tool in the future. If that happens, I’ll make sure to mention them here.1
-
Or you can like, comment or subscribe on YouTube if that’s your thing 😛. ↩︎
Follow-up to yesterday’s post: Adam Fusco and I had a bit of a test of this over at social.lol. Turns out when you send a private message, the reply defaults to being private as well. This also applies to replies of replies. Private messages can’t be boosted either. Good to know.