Day 13: community
#mbmay

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}]
It was only showing up when I was tried adding a new SSM parameter resource to the template, so I first thought it was some weird problem with the parameter name or value. But after changing both to something that would work, I was still seeing this.
Turns out the problem was that I was missing a colon in the resource type. Instead of using AWS::SSM::Parameter
, I was using AWS:SSM::Parameter
(note the single colon just after “AWS”). Just looking at the error message again, I notice that this was actually being hinted to me, both in the regular expression and the “Value” list.
I know making good error messages take effort, and for most developers this tend to be an afterthought. I’m just as guilty of this as anyone else. But if I could make just one suggestion on how this message could be improved, it would be to get rid of the list in “Value” and replace it with the resource type that was actually failing validation. It would still be a relatively unhelpful error message but at least it will indicate what part of the template was actually falling over.
In any case, if anyone else is seeing an error message like this when you’re trying to roll out Cloud Formation changes, check for missing colons in your resource types.
🔗 A New Hope for Object Storage: R2 enters open beta
I’ve been looking forward to giving R2 a try for a while.
Is it really necessary for Amazon to prefix AWS services with “Amazon” or “AWS”? It’s not SQS, it’s Amazon SQS. It seems a little redundant to me. Maybe they’re leaving the door open for third party vendors to offer their services in AWS as well. 🤷
Day 12: tranquility
Part of a walk I occasionally do, near Macedon. There’s nothing special about this particular spot, but I always feel at my calmest here. #mbmay

It’s developer conference video watching time again! 🙌 The Google I/O videos are starting to come out, so I’ll be switching my TV viewing to these for a few weeks. Once I’ve gone through those, it will be time for the WWDC videos.
Failing to keep things simple in the software designs I’m responsible for seems to be a problem I keep running into. I’m always coming up with designs that are more complicated than they need to be, and once they come up for review, they always seem to be rejected for something much simpler that can get the immediate job done in a shorter amount of time.
Not that I’m offended by that: I don’t want my team building something more complicated than it needs to be. I’m just curious as to why I keep doing this. My current theory is either that I’m prioritising future extendability over immediate needs — which sort of goes against the idea of “you ain’t gonna need it” — or that I’m bored and it’s just an attempt to put together a design that seems interesting. I suspect that it’s a little of both.
Day 11: maroon
#mbmay

Feed Rules In Broadtail
Generally, when there’s a video that I’m interesting in watching, I take a look at Broadtail to see if it’s available. When it is, I go ahead and download it.
However, some videos take a long time to download — we’re talking 10 hours or so — and they’re usually published when I’m not looking, like during the night when I’m asleep (thank’s time-zones). So I’d thought it would be nice for Broadtail to kick off the download for me when the video shows up in the feed.
So I’ve added Feed Rules to do this.
Feed rules are very simple automations that happen when new items are found in during the RSS feed poll. When the video shows up in the feed, and matches the rule condition, Broadtail will perform the rule action for that video.
Feed Rules are added as a new sub-section in “Settings”, which itself is a new top-level section of the app (the “General” sub-section is empty at this stage).

Feed Rules consist of a name, whether the rule is active, a set of conditions, and a set of action. A feed item will need to match all the conditions of the rule in order for the actions to be performed.

The conditions of a feed rule touch upon the following properties of a feed item:
- The feed in which it appears in. This can be set to “any” to apply the rule to all feed items.
- Whether the title matches a given string. The match rules are similar to the searches in the feed item list views, which are appearance of each of the space separated tokens somewhere in the title (in any case) with phrases appearing as quoted strings.
- Whether the description matches a given string.
If a feed item matches all the conditions, Broadtail can perform the following actions for the feed item:
- Start a download of the video
- Mark the feed item as a favourite
There might be more conditions or actions added in the future. So far this seems to be the bare minimum to make the feature usable.
This week’s earworm: TUNIC (Original Game Soundtrack) by Lifeformed × Janice Kwan.
Favourite track: To Far Shores. 🎵
Day 9: bloom
A bunch of bloomin’ wattles. #mbmay

I use to enjoy reading tech blogs, like the ones from Slack and Shopify, that talk about some new framework or how they solved a certain problem. But now, when I look at them, I just feel exhausted.
Day 8: union
Had some trouble with this one today, so I thought I’d hit it up in the textbooks. #mbmay

Managed to setup Wireguard VPN on my home network this morning so I can remote in when on the road. Very simple setup at the moment: only a single host is accessible and no DNS or internet routing. But quite pleased with it, given my lack of experience in network administration.
Day 7: park
The park in Benalla, taken last month during our drive to Canberra. #mbmay

Imagine that there’s an open source project that has some modest traction but only one maintainer, and that maintainer wants to make a small change to fix something. Would it be okay for that maintainer to make that change directly on main
?
Not entirely a hypothetical question. 🤔
Day 6: silhouette
Photo taken by my boss in 2014 while we were in the Cook Islands for work. #mbmay

Day 5: Earth
One of the first photos from Himawari-8, a JMA weather satellite that went online while I was working at the Bureau of Meteorology. The images it produced pushed our visualisation tools to the limit, but boy, they were absolutely stunning. #mbmay

(source)
The Podcast Favourites App
In today’s issue of “useless apps that nobody but me would want to use”, I’ve managed to get a version of the Podcast Favourites app built and deployed. I’ve been using it for the last few weeks and it works quite well.
Here are some screenshots of it, starting with the main screen you see when you log in:

As you can probably guess, I listen to a lot of ATP. 😁
Selecting one of the feeds will bring up the favourites of that feed.

Each favourite has the name of the episode, the start time (which is hidden in the listing but editable when clicking the pencil icon) and a brief description that is usually used to explain what the clip is about. The name and artwork are retrieved from the podcast RSS feed, and the description can be whatever you want.
Clicking the play button will bring up the in-browser player.

There’s no scrubber, but you can go back and forwards 30 seconds by clicking the relevant button, or by pressing <
and >
on the keyboard. Pressing space will toggle play and pause. Most of this I took straight out of Alto Catalogue, but moved it to the bottom of the page much like the Pocketcast web-player.
So far I’m reasonably pleased with it. Honestly, it’s probably not something that pushed me from a development sense. More like something that I’d like to use myself. And it’s far from perfect: there are a few weird navigation links at the moment, and some ugly UI. But it does the job I need it to do.
I probably won’t spend any more time on it. If I do, it would be to get the mobile version of the web-app styled correctly.