Been enjoying some remixes that Anders Enger Jensen have released recently: Dopamine, and I Believe. Very different styles but great listening if you like electronic music.

Been listening to Elton John for the first time in a while. What’s remarkable is how many of his songs just end after the last chorus. No coda or outro; just in and out, wasting no time. Quite a contrast to what I usually listen to.

Even without considering AI, it’s amusing to consider how complicated modern software systems are that the developers themselves don’t know everything about them. A true beast of their own creation, where they’re left with suggestions on how it’ll behave if some particular thing were to happen.

Made a fool of myself after congratulating someone on a significant life event, to which they politely reminded me that not only did I already congratulate them a couple of weeks ago, but I got certain key details about this event quite wrong. And you know what: the world didn’t end. Other than feeling a little silly, I left the encounter just fine (it helps that they were super nice about this faux pas). So I’m noting this to myself for next time I’m in a situation where I’m too shy to say anything to anyone.

While we’re talking about schema changes and generated code, here’s some more advice: don’t add any generated code into shared libraries. These libraries will change less frequently than the schema the code is generated from, and when you include such libraries in services that also generate code from these schemas, you’ll get namespace conflicts.

The generated code should only exist in the service that contains the build targets to generate them. That’ll mean duplicated code across the code base, but that’s not a big deal. After all, it’s not like you’re hand-rolling this code.

Merge Schema Changes Only When The Implementation Is Ready

Integrating schema changes and implementation together before merging prevents project conflicts and errors for team members.

“Get out more” goal for April failed. ❌

Oh! April just when by too quickly, and much of it was filled with family events that it left me socially tired. Fortunately it’s looking like May will be quieter so will try to get back on this horse.

I seemed to have developed some sort of condition where I hear American podcasters say Instagram, and it sounds like they’re saying “Insta-Graham.”

Near the start of the pandemic, I dropped my cutting board onto the tiled floor and it developed a split along the surface. This evening, five years later, that split finally separated apart. Not a bad run actually. And the board itself is still usable, it’s just a little smaller.

Auto-generated description: Two rectangular wooden boards are placed side by side on a green surface.

Since moving from Vim to VSCode back when I was learning Go, I lost my muscle memory for all those Vim keyboard commands I was using. Which is a shame, as I still use Vim to write Git commit messages. I probably don’t need to relearn them all again, but a useful subset would be nice.

🔨 XCancel

If you want to view a Twitter/X post or user without an account, this tool has proved to be quite useful. I’ve used it a few times and works flawlessly.

Via: @amerpie@social.lol on Mastodon

Oh wonderful. Now there’s an online sports betting/gambling site that shares the same first name as me. 🤮

Auto-generated description: A card with a lion logo and the word LEON is lying on a textured asphalt surface.

And no, you don’t get a link to it.

🔨 Kanbanish

Looks like a nice, polished, online Kanban board. Will file it away when I need something like this in the future.

Via: Mike Crittenden (the developer)

Oof! The cocktail of feelings one has when taking public transport: empathy for those stranded due to a major line disruption, mixed with relief that it’s not affecting your line.

A style of video I enjoy watching are vlogs by those that post other videos on YouTube. Because they put all their effort in their main topical videos, they can just be casual in these vlogs, with no pressure to be performative. It’s refreshing to watch.

I wonder if one of the desirable features of a foldable phone is its thickness when it’s folded up. Easier to find in a bag, easier to handle when using it in its closed form. I’m not sure it’s for me, but I can see it being a pro for others.

Gang-gang sighting in the park.

A colorful bird with a striking red crest is perched among the branches of a tree with green leaves and small red fruits.

Devlog: Godot Game Update

A brief status update on that Godot game. I think we’re pretty close to a finished 4-1 level. The underground section has been built, and the level has been decorated. I’ve also added a couple of secrets, which needed a few new mechanics — like doorways, which are used to transport the player around the level — plus some refinement to existing ones. I am a little concerned about the amount of waiting involved near the end of the first half, where the player will need to make their way across a large gap by jumping on the slow cycling “layer 2” tile layer. I’ll see what feedback I get from play-testers about this.

Auto-generated description: A pixelated, side-scrolling platformer video game scene features a knight character on a cliff with blocks, coins, and a treasure chest in view.

I’ve also filled in the backdrop of all the levels to date. The grey default background colour has been replaced with a sky made of colour bands that came with the asset set I’m using. It’s basic, maybe too basic, but as long as it doesn’t clash with the interactive elements, and in the interest of “merely shipping something,” I think it’ll do for now.

Finally, I made some changes from feedback I got from play-testers. Movement can now be made using WASD, along with the inverted-T arrow keys. I’ve also bound jump to the Enter key for those that want to use WASD. I made some changes in how secrets are telegraphed with the goal of making them more consistent. This is always a bit of a balancing act, as I don’t want to make them too obvious: they’re secrets after all. I added a tiny bit of “slip” to the player’s movement, so they don’t stop dead whenever the key is released. I didn’t want to go too far here: adding too much inertia introduced the risk of the player just falling off a platform after landing from a jump, which I don’t think is a great experience. And I fixed a window resizing bug (Godot enables window resizing by default, for anyone else who needs to know this).

I think the next thing to do is to organise another version for play-testers, just to gauge what they think of level 4-1. Then it’s either on to level 4-2, or even introduce a new level between 1-1 and 1-2 to reduce the ramp up in difficulty between the two levels. Fortunately I’ve got some ideas on what I want to do for both of theses, so they’ll be easy starters. I’ve still got nothing for level 2-1, but I have a few ideas on what I want to do for 2-2, so maybe I’ll start that too.

If paying attention to birds is a sign of getting old, then I’ve been old all my life. 🪶

I’ve been finding great success in drafing up a post in my head about some missing feature, checking to make sure that feature is actually absent, finding out it actually exist, using it, and posting nothing. Call it motivated, not-looking-like-a-fool-on-the-internet approach to feature discovery.