I’m starting to suspect that Slack might not be the productivity magic-bullet it’s touted to be. That is, unless your job is getting distracted every 30 minutes. In that case, Slack works great!

Ivy and Archie show their affection by preening elements of my face; usually the eyelashes, ears, and nose. And while I appreciate the sentiment, their beaks act like a pair of tweezers and it’s a little painful.

Ivy the cockatiel preening the hairs of my nose

Most of what’s going on with Audax and Dynamo-Browse is “closing the gap” between the possible queries and scans that can be performed over a DynamoDB table, and how they’re represented in Dynamo-Browse query expression language. Most of the constructs of DynamoDB’s conditions expression language can now be represented. The last thing to add is the size() function, and that is proving to be a huge pain.

The reason is that the IR representation is using the expression builder package to actually put the expression together. These builders uses Go’s type system to enforce which constructs work with each other one. But this clashes with how I built the IR representation types, which are essentially structs implement a common interface. Without having an overarching type to represent an expression builder, I’m left with either using a very broad type like any, or completely ditching this package and doing something else to build the expression.

It feels pretty annoying reaching the brick wall just when I was finishing this off. But I guess them’s the breaks.

One other thing I’m still considering is spinning out Dynamo-Browse into a separate project. It currently sits under the “Audax” umbrella, with the intention of releasing other tools as part of the tool set. These tools actually exist1 but I haven’t been working on them and they’re not in a fit enough state to release them. So the whole Audax concept is confusing and difficult to explain with only one tool available at the moment.

I suppose if I wanted to work on the other tools, this will work out in the end. But I’m not sure that I do, at least not now. And even if I do, I’m now beginning to wonder if building them as TUI tools would be the best way to go.

So maybe the best course of action is to make Dynamo-Browse a project in it’s own right. I think it’s something I can resurrect later should I get to releasing a second tool.

Edit at 9:48: I managed to get support for the size function working. I did it by adding a new interface type with a function that returns a expression.OperandBuilder. The existing IR types representing names and values were modified to inherit this interface, which gave me a common type I could use for the equality and comparison expression builder functions.

This meant that the IR nodes that required a name and literal value operand — which are the only constructs allowed for key expressions — had to be split out into separate types from the “generic” ones that only worked on any OperandBuilder node. But this was not as large a change as I was expecting, and actually made the code a little neater.


  1. Dynamo-Browse was actually the second TUI tool I made as part of what was called “awstools”. The first was actually an SQS browser. ↩︎

I usually make small adjustments to photos before I post them here, like small crops to emphasise the subject. I’ve tried cropping them as squares, but it feels like one adjustment too far. I may go back to keeping the original aspect ratio. #mbnov

I had my suspicions that today’s Microblogvember post would be difficult to write. Well, my suspicions turned out to be correct. #mbnov

The National Carillon, on the banks of Lake Burley Griffin. Music was being played on it this morning, although I didn’t recognise the tune. It wasn’t Tubular Bells, though.

The National Carillon

Ugh, I just completely screwed up the test deployment of something just now. Missed a service that needed to be in place before rolling out a config change. The config change updates a DynamoDB table, and the stream of updates from that would be picked up by this service and pushed onto an SQS queue. Because the service wasn’t there, these events were completely missed.

I don’t think there’s any way to replay the original events from DynamoDB, so I tried cleaning this up by rolling back the config change. I ended up making the whole situation worse, and it was pointless in the end as it would have completely invalidated the test anyway. Now I have to go to the tester and ask him to reset.

Oof, is it clock-off time yet?

I prefer to have my phone in my pocket with the display facing my leg. But with the Pixel 6 Pro I had to switch it around because the display was always getting phantom taps. This would pause music and podcast playback, and it actually called 000 once. Not ideal. 😕 #mbnov

It feels a lot like I’m rubbernecking but I just cannot look away from the slow moving trainwreck which is the Twitter takeover. Laying off people who know how things work; all the imposter Twitter Blue accounts with the blue checkmarks. Really something to behold.

Google Photos came up with this amusing suggestion today.

Suggestion to rotate photos of birds

Just to be clear: it was the birds that were rotated, not the camera. 😀

A few months ago I decided to try a different approach with working on personal projects. Instead of having many projects running in parallel — where I duck in and work on each at a time — I decided to cut back and focus on only one. I thought I’d struggle with this: that I would get bored with it and would want to move to something different. But I think I ended up getting more satisfaction out of seeing something finished and usable, something that I can actually share with others. It’s a little embarrassing sharing something that is half-baked.

So I think I’ll stick to this mode of working. The question now is when to put the current project aside and try something different. I figured I’d work on something new while I was in Canberra, but I found this harder to do than I thought. The current project has just got a lot more inertia at the moment.

Maybe I’ll try again in the summer.

State election coming up in a couple of weeks. My parents, who have recently signed up as paid members of the Labor party, has put up a yard sign for the Labor candidate, who is the current minster for their district. Best of luck to her re-election. #mbnov

One thing is certain: humans are fallible. They forget, or do not follow through sometimes. So if you find yourself at a crossing with someone else, don’t feel bad about pushing the button yourself. #mbnov

Pedestrian crossing button

Half-implemented micro-services are the worst. It can really slow down your development velocity to the point where you feel like you’re walking through syrup. You’ve got several teams making changes to systems they’re responsible for. In theory these services are independent of each other, and the work is organised in such a way that they do not require any work on behalf of those using them. But unless you go all Amazon, and enforce impenetrable boundaries between the various systems, this never works out in practice.

Eventually you find yourself needing to do some manual thing just to get your development environment stable again so you can get your stuff done. An hour or two goes by and when it comes time to start work on the thing you actually wanted to do, you’ve forgotten what it was or got distracted by Slack or something.

Then you complain about it on your blog. 😛

The consensus seems to be that it’s preening time. #mbnov

Two cockatiels preening on a leg

For today’s Microblogvember post, I would like to make a shout-out to the blog of Jodie Cook. I find pretty much every one of her posts’ insightful in some way, even if the subject matter does not directly apply to me. Worth a follow. #mbnov

Since finding out that echo was today’s Microblogvember word, Pink Floyd Echoes has been playing in my head all afternoon. It’s one of my favourite tracks from them. #mbnov

Oof, I would have though that after writing here for a couple of years, I’d find the Microblogvember challange easier. I guess experience is no excemption here. #mbnov

Hackathon today. Taking a little break and looking at admiration on how much we managed to achieve in a few hours, especially considering that I’m working remotely from the other two team members. #mbnov

On my way to the airport to catch a flight, while wondering that if I just went for a Nav rating when I had my recreational pilot license, and kept the hours up, I wouldn’t be too worried about keeping to a strict schedule. #mbnov