-
Devlog: UCL — More About The Set Operator
I made a decision around the set operator in UCL this morning. When I added the set operator, I made it such that when setting variables, you had to include the leading dollar sign: $a = 123 The reason for this was that the set operator was also to be used for setting pseudo-variables, which had a different prefix character. @ans = "this" I needed the user to include the @ prefix to distinguish the two, and since one variable type required a prefix, it made sense to require it for the other. Continue reading →
-
Some Morning AI Thoughts
Some contrasting views on the role of AI in creation, highlighting the importance of human creativity and quality over speed and cost-cutting in technological advancements. Continue reading →
-
That Which Didn't Make the Cut: a Hugo CMS
You’ve probably noticed1 that I’ve stopped posting links to Open Bookmarks, and have started posting them here again. The main reason for this is that I’ve abandoned work on the CMS I was working on that powered that bookmarking site. Yes, yes, I know: another one. Open Bookmarks was basically a static Hugo site, hosted on Netlify. But being someone that wanted to make it easy for me to post new links without having to do a Git checkout, or fiddle around YAML front-matter, I thought of building a simple web-service for this. Continue reading →
-
Encapsulation In Software Development Is Underrated
Encapsulation is something object-oriented programming got right. Continue reading →
-
Rubberducking: Of Brass and Browsers
🦆: Did you hear about The Browser Company? L: Oh yeah, I heard the CEO wrote a letter about Arc. 🦆: Yeah, did you ever use Arc? L: Nah. Probably won’t now that it seems like they’ve stopped work on it. Heard it was pretty nice thought. 🦆: Yeah, I heard Scott Forstall had an early look at it. L: Oh yeah, and how he compared it to a saxophone and recommended making it more like a piano. Continue reading →
-
Devlog: Dynamo-Browse Now Scanning For UCL Extensions
Significant milestone in integrating UCL with Dynamo-Browse, as UCL extensions are now being loaded on launch. Continue reading →
-
Devlog: UCL — Assignment
Some thoughts of changing how assignments work in UCL to support subscripts and pseudo-variables. Continue reading →
-
Serious Maintainers
I just learnt that Hugo has changed their layout directory structure (via) and has done so without bumping the major version. I was a little peeved by this: this is a breaking change1 and they’re not indicating the “semantic versioning” way by going from 1.x.x to 2.0.0. Surely they know that people are using Hugo, and that an ecosystem of sorts has sprung up around it. But then a thought occurred: what if they don’t know? Continue reading →
-
Devlog: Blogging Tools — Finished Podcast Clips
Well, it’s done. I’ve finally finished adding the podcast clip to Blogging Tools. And I won’t lie to you, it took longer than expected, even after enabling some of the AI features my IDE came with. Along with the complexity that came from implementing this feature, that touched on most of the key subsystems of Blogging Tools, the biggest complexity came from designing how the clip creation flow should work. Blogging Tools is at a disadvantage over clipping features in podcast players in that it: Continue reading →
-
Rubberducking: More On Mocking
Mocking in unit tests can be problematic due to the growing complexity of service methods with multiple dependencies, leading to increased maintenance challenges. But the root cause may not be the mocks themselves. Continue reading →
-
Devlog: Blogging Tools — Ideas For Stills For A Podcast Clips Feature
I recently discovered that Pocketcasts for Android have changed their clip feature. It still exists, but instead of producing a video which you could share on the socials, it produces a link to play the clip from the Pocketcasts web player. Understandable to some degree: it always took a little bit of time to make these videos. But hardly a suitable solution for sharing clips of private podcasts: one could just listen to the entire episode from the site. Continue reading →
-
The Alluring Trap Of Tying Your Fortunes To AI
It’s when the tools stop working the way you expect that you realise the full cost of what you bought into. Continue reading →
-
Devlog: Dialogues
A post describing a playful dialogue styling feature, inspired by rubber-duck debugging, and discusses the process and potential uses for it. Continue reading →
-
On AI, Process, and Output
Manuel Moreale’s latest post about AI was thought-provoking: One thing I’m finding interesting is that I see people falling into two main camps for the most part. On one side are those who value output and outcome, and how to get there doesn’t seem to matter a lot to them. And on the other are the people who value the process over the result, those who care more about how you get to something and what you learn along the way. Continue reading →
-
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. Continue reading →
-
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. Continue reading →
-
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. Continue reading →
-
New Desk Chair Day
About the new desk chair I bought that arrived today. Continue reading →
-
Airing Of Draft Posts
A collection draft ideas and reflections, amassed over the last year, highlighting a mix of topics ranging from technology insights to personal musings. Continue reading →
-
On Go And Using Comments For Annotations
Some thoughts of whether Go should have a dedicated syntax for annotations that comments are currently being used for. Continue reading →
-
Don't Be Afraid Of Types
Types in coding projects are good. Don’t be afraid to create them when you need to. Continue reading →
-
Replacing A Side Mirror Of A Toyota Echo
Replacing a broken car mirror myself. Continue reading →
-
Adventures In Godot: Respawning A Falling Platform
My taste of going through a Godot tutorial last week has got me wanting more, so I’ve set about building a game with it. Thanks to my limited art skills, I’m using the same asset pack that was used in the video, although I am planning to add a bit of my own here and there. But it’s the new mechanics I enjoy working on, such as adding falling platforms. If you’ve played any platformer, you know what these look like: platforms that are suspended in air, until the player lands on them, at which point gravity takes a hold and they start falling, usually into a pit killing the player in the process: Continue reading →
-
Running PeerTube In Coolify
A guide for setting up a basic PeerTube instance on Coolify using a docker-compose file. Continue reading →
-
Attending the DDD Melbourne 2025 Conference
Yesterday, I attended the DDD Melbourne 2025 conference. This was in service of my yearly goal to get out more, to be around people more often than I have been. So the whole reason I attended was to meet new people. That didn’t happen: I said hi to a few people I once worked with, and spoke to a few sponsors, but that was it. So although I marked it off my goal list, it wasn’t a huge success. Continue reading →