I’m pretty impressed by how full-feature GDScript is as a programming language. For example, I was wondering if GDScript supported lambdas, and sure enough, they do, along with full closures. These are pretty sophisticated language features.
You Probably Do Want To Know What You Had for Lunch That Other Day
There’s no getting around the fact that some posts you make are banal. You obviously thought your lunch was posting about at the time was worthy of sharing: after all, you took the effort to share it. Then a week goes buy and you wonder why you posted that. “Nobody cares about this,” you say to yourself. “This isn’t giving value to anyone.”
But I’d argue, as Doc did in Back to the Future, that you’re just not thinking forth-dimensionally enough. Sure it may seem pretty banal to you now, but what about 5 years in the future? How about 10? You could be persuing your old posts when you come across the one about your lunch, and be reminded of the food, the atmosphere, the weather, the joys of youth. It could be quite the bittersweet feeling.
Or you could feel nothing. And that’s fine too. The point is that you don’t know how banal a particular post is the moment you make it.
Worse still, you don’t know how banal anything will be 5 years from now, (as in right now, the moment you’re reading this sentence). The banality of anything is dynamic: it changes as a funcion of time. It could be completely irrelevant next week, then the best thing that’s happened to you a week later.
This is why I don’t understand the whole “post essays on my blogs and the smaller things on Twitter/Bluesky/Mastodon/whatever” dichotomy some writers have out there. Is what you write on those other sites less worthy than what you write on the site you own? Best be absolutely sure about that when you post it then, as you may come to regret making a point about posting banal tweets 17 years ago, only for that moratorium about banal tweets to be lost when you decided to move away from that micro-blogging site.
But whatever, you do you. I know for myself that I rather keep those supposedly banal thoughts on this site. And yeah, that’ll mean a lot of pretty pointless, uninteresting things get published here: welcome to life.
But with the pressure of time, they could turn into nice, shiny diamonds of days past. Or boring, dirty lumps of coal. Who knows? Only time will answer that.
Stripe support is a lot like democracy: it was better in the past, and on the whole it’s the worst one out there, aside from all the other payment gateways.
I see why OpenAI is interested in buying Chrome if Google’s forced to divest it. I’d imagine it’s the same reason why Google built Chrome in the first place.
Perplexity buying TikTok? That I don’t understand. Smells a little like empire building.
For anyone else who needs to know this: the MacOS keyboard shortcut to go to the matching bracket in Goland is Ctrl+M. For those who know Vim, this is equivalent to %.
A nice quality of life improvement I’d like to see in Goland’s merge conflict window is the full commit message of the rebased commit I’m trying to resolve conflicts for. It’d help for knowing which strategy I should use for picking hunks, whether to pull it from main or the feature branch.
YouTube’s watch later list should be reverse-chronological based on the time you added the video, with recent videos showing up near the top. Having to scroll through the entire list to get to recent additions is time consuming. I guess YouTube assumed people would removed videos from that list once they’ve watched it. I know for myself I like to keep them in there, usually because the videos I bookmarked are worth watching again later.
Podcasters, I’m begging you: if you mention an article in your show, no matter how trivial it may be, put a link to it in the show notes. Take a page from your YouTube making cousins, who fill their video descriptions with links, even to things that seem inconsequential to the topic of the video.
Gallery: Morning In Sherbrooke
A visit to Sherbrooke in the Dandenong Ranges on Easter Monday included a walk along the falls track, a sighting of a Superb Lyrebird, and a brief exploration of Alfred Nicholas Memorial Garden.
Hanging with Rico. He’s got a habit of overpreening, which is why he looks a little shabby.

On the subject of names of social media sites:

Does anything good come from revenue shares from social media sites, like Facebook or Instagram? I’m not a user of either platform but I get the sense that those programs are more likely to promote plagurism and AI slop.
The only one I see having any success is YouTube. Granted there’s plagurism and AI slop there too, but others seem to have an easier time making original content and making a living from revenue shares doing so. I subscribe to several channels that get a large proportion of their income this way.
I’ve not heard of any original content creators on Facebook or Instagram doing likewise, at least via recommendations from those outside the network. And less said about Twitter’s (I’m not calling it that letter) efforts here, the better.
Made some more progress on that Godot game. I haven’t gotten any further with the first level of world 2, so I’ve been spending much of my time making mechanics. One of them was the slow moving “level 2” mechanic that I stole wholesale from Super Mario World. That mechanic, despite it being frustrating to speed-runners, was always slightly interesting to me. To have areas of a level become accessible or hazardous just due to a layer of it oscillate up and down, it promised to make for some interesting timing challenges. At least in theory.
I decided to put that theory to the test, and start work on one the later levels. And despite being a little skeptical about whether the mechanic could carry through a level on it’s own, I came up with one that I’m reasonably happy with. The mechanic is introduce slowly, and in a rather non-threatening way, proving the player the means to get to higher ground. This leads into the second half, which will be a long underground section which will ramp up the difficulty by introducing the risk of getting crushed or missing platforms.
To compliment this is a new enemy that rushes the player. The player cannot do anything to defeat this enemy: combat is not really a thing in this game. All they could do is evade it before the enemy gives up. I am reusing the same “green slime” sprite for this but I’m hoping that the differing animations provide some hints of how this enemy’s behaviour differs from that of the simpler one.
Finally, it was time to consider checkpoints. While the first few levels were too short to justify adding them in, this one is just that bit too long without one. And given the difficulty ramp-up in the second half, having the player go through the slower first half every time they died would probably lead to frustration. So checkpoints are now a thing. They’re not free — costing 5 coins to activate — and they are sometimes mandatory, blocking the player from progressing until they pay the toll. But I think their presence helps with eliminating the areas of the level that would just be boring to play through again and again.
So yeah, I’m quite happy with this level. And I’m also happy in realising that I’m not bound to building this game in the same progression that the player will experience it. It’s better sometimes to just work on the areas that you’re ready to. I mean, it’s sounds obvious to say that now. Not sure why it took me this long to actually do so.
Some more #big-spending going on around here with the arrival of my brand new TV… remote control. 🤑

Yeah, I finally got a replacement remote control for my TV. And honestly, doing so was a long time in coming. The old one (right) has been failing over the last few years: with certain buttons, particularly Power and Enter, requiring significantly more force that others before responding. About a month or so ago, the Power button stopped functioning completely, and the only way I could turn the TV on was to use the Netflix button (making that button useful for the first time in years) and quickly switching to AV 2. That, plus the volume, were the only buttons working by the end.
Ooh, how interesting: Vivaldi is offering blog hosting. I hear blogging is all the rage now, so I gave it a bit of a test. And it’s nothing Earth shattering: it’s basically Wordpress. But it’s interesting seeing Vivaldi do this.
Here’s a life hack: if you’re listening to a podcast, but not paying attention, and wishing you were listening to something else, stop listening to the podcast and listen to the other thing.
Amazing, I know. Subscribe to my newsletter for more amazing life hacks. 😜
Got a bit bored today. Fortunately Acorn comes with an eye-dropper and Galvji, the closest to SF Pro I had available to me.

It kind of blew my mind that this currency exchange rate “API” is nothing more than just some static files on a CDN, along with a cronjob that updates them daily. I guess it’s technically still an API. If the interface is stable, then there’s no reason why it needs to be backed by a database.
It’s amazing, when you consider the vast computing resources that AWS has, that it still takes tens of minutes to deploy several lambdas at once.
Fixed spelling of canceled
My last commit message. With the linter requiring US spelling for all code artefacts, I never had more of an urge to put scare-quotes in a commit message as I do right now.