• Over the weekend, curious to know how well it’ll do, I asked ChatGPT to generate some code in UCL, the toy language I sometimes write about here. I asked it to product a script that would print out the Fibonacci sequence up to a given value. It didn’t do too well, producing a script which looked like a strange hybrid between TCL and shell.

    This was somewhat expected. What wasn’t expected was to see UCL pop up as a topic within Pulse the next day:

    Auto-generated description: A digital interface displays two sections: one describing a Fibonacci demo project and another about assembling a UCL example suite, both accompanied by illustrative images.

    Very amusing.

  • Tried the commute home via the Metro Tunnel and it looks like the gains are negligible.

    The trains were timely: both the one I caught from Anzac, and my connection at Melbourne Central arrived when I reached the platform. But I felt that I got lucky here. And I ended up on the same train out I would’ve caught if I went my usual route.

    Furthermore, I felt I got lucky with road crossings, and if I missed the one at Kings Way, I would’ve missed both trains.

    So no, it’s not viable. Too many lucky arrivals just to get me on time with my usual way home. A decent alternative, but it won’t work for my main commute home.

  • TIL that the time ball, the thing that drops on New Year’s Eve in New York’s Times Square, was actually a proper form of time-keeping used in nautical operations. There’s even a historical time ball tower located in Williamstown, a suburb of Melbourne.

  • Took the Metro Tunnel to work again today, which I wasn’t completely planning for. But what can I say? It’s a nice commute. Brand spanking new infrastructure, along with a nicer walk to the office (apart from crossing Kings Way). Maybe I’ll stick with it for a while.

    Also, I think the novelty of it all is paying a part.

  • Argh! Just when I wanted to measure how long my commute home takes, my line is experiencing major delays. This is not how you do science.

    Oof! Now there’s a train fault on the line branching off of mine, causing further delays. It hasn’t been this bad for a while.

    Okay, so a bad commute home is 1 hour 22 minutes. Good worse case benchmark. But still need to measure a decent commute home this week.

  • One thing you’ll notice when you’re travelling through the Metro Tunnel is that all the exits have numbers. This is a recent change made just before the soft launch, and a few gunzels on YouTube wondered if it would’ve been better to list landmarks or destinations on the signs instead: this exit for the Shrine, that exit for St. Kilda Rd. trams heading to the city, etc.

    As a local, this sounded like a convincing argument. I know what’s in the vicinity and where I want to go, and all I need to know is which exit will get me there the quickest. But while talking with others at work, someone mentioned that the exit numbers are useful for those who are less familiar with the area, and are using navigation software, with listed directions, to get around. That convinced me that keeping the exit numbers is probably better.

  • On Post Timestamps

    Some thoughts of using dual timestamps for blog posts to differentiate between the publication date and the date of the event, considering the implications for chronological feeds and user experience. Continue reading →

  • Arrived at work a few minutes later than usual, so the commute in via the Metro Tunnel is viable (it could be better: Metro needs to run more trains during peak to justify the transfer). But I do like the walk in from Flinders St. so I’m unlikely to change that. It’ll be the commute home that may be more favourable to me.

  • Now that the Big Switch has been switched, it’s time to see how viable it is to integrate the new Metro Tunnel in my commute. Plus I’ve yet to check out Town Hall station.

    Auto-generated description: A directional sign at a train station points towards exits 1-2, exit 6, and platforms, with specific references to Flinders St, Swanston St, Degraves St, and Town Hall Station.Auto-generated description: A modern underground station features orange arching beams, signage, and people waiting or walking within the spacious platform area.

  • The runoff from the drinking fountains around my place collect into small troughs at the ground. It’s typically for dogs, but the gallahs have also been making use of them.

    Auto-generated description: A group of pink and grey birds is gathered around a concrete water basin in a park-like setting.Auto-generated description: A group of pink and gray birds is gathered around a concrete birdbath on a patch of grass.

  • 📘 Devlog

    Micro apps - Some Score Cards

    In the spirit of maintaining a document of what I’ve been working on, and being somewhat inspired by Matt Birchler’s posts about his micro apps, I’d thought I’d document on some of the small apps I’ve worked on recently.

    The fact of the matter is that I’ve been building quite a few of these apps over the course of the summer, primarily in response to a specific need I have at the time. I haven’t written about them before, mainly because there didn’t feel like there was much to say. Some were vibe coded, and saying that I “made” them didn’t feel correct. Others were made by hand, but they were super simple and there was no real challenge in making them at all. In either case, being able to say “I made it” is difficult as the amount of effort spent in making it is quite low, and that doesn’t make for interesting blog posts. Would a post saying that “I went to work today” be worth reading if that’s what I do every weekday?

    Continue reading →

  • Bluey sighting.

    A blue-tongued lizard is crawling on a wooden surface surrounded by fallen leaves and greenery.
  • I think half the value of using coding agents is just having something to rubberduck with. You pose it a problem, it suggests something which doesn’t work, then while you’re trying to come up with a reply with why it’s wrong, you find the solution yourself (this happened to me today).

  • More work on assets for my niece’s game. This time I tried something organic: a tree. Not the most difficult organic thing, I agree. Need to build up to the hard things.

    Auto-generated description: A digital illustration displays the progressive creation of a tree design using vector graphics tools, starting with basic shapes and evolving into a detailed tree with fruits or blossoms.
  • Amazing win by Alcaraz in the mens semifinals of the Australian Open. What a match: 5 sets, 3 tie-breakers, 5 hours and 27 minutes. That was not an easy win.

  • 🛠️ exe.dev: Persistent VMs via SSH

    Managed VMs via SSH. Signed up for this, although I’m not entirely sure what I’m going to use it for.

  • Finished reading: Open by Andre Agassi 📚

    Heard a few people recommend this, for good reason. This was a pretty good read. You don’t need to be a tennis enthusiast to enjoy it.

  • It’s a bit of a shame that I start browsing social media (or posting on Micro.blog) when I start listening to music on the way home. No longer “present” and actually listening to the music. Maybe I need to add a feature to Alto Player that’ll pause the music when I switch apps. 😀

  • TIL you can Option drag things that have a MacOS URL scheme into Obsidian to create a link to them. Managed to do this for both a file and an email.

  • I’m seeing some misunderstandings of how to use test helpers in the projects I’m working in. There are a few instances of helpers being copied and pasted around the repository, despite them doing largely the same thing, such as accessing the message bus. But the whole purpose of these helpers is that they build atop of each other. You build out a message bus test helper for the provider that works with the message bus, and then you use that exact same helper in the tests for the service layer. It’s just like any other form of software engineering: you work with what’s already there.

    This could be seen as a violation of the principal of unit tests being isolated, but I’d argue that that’s more of a principal in how the tests are executed: the outcome of one test doesn’t depend on the outcome of another. But just because it’s a unit test it doesn’t mean that all principals of software engineering should be thrown out the window. Modular design, separation of concerns, encapulations, abstraction, etc. These apply to unit tests just as much as they do to production code.

  • Is there no bigger admission that a unit test is unreliable than attempting to fix it with a sleep? Ugh!

  • I may need to adjust my stance against mocking in unit tests to exclude anything that works with a message bus. There’s just too much asynchronicity going on: timing so tight that the speed of the machine dictates whether a test passes or fails. Probably easier to use mocks in those circumstances.

  • Reason Go should add enums number 5,132: you’re not left up to runtime checks to verify that an enum value is invalid. You can rely on the type system to do that. It’s all well and good to implement marshallers and unmarshallers that verify that the input is a valid enum value, but that doesn’t stop developers from casting any arbitrary string to your enum type. And then what are you expected to do in your String() method (which doesn’t return an error)? Do you panic? Return “invalid?” Return the string enum value as is, even if it is invalid?

    Making it impossible to even produce invalid types is the whole reason why we have a type system. It’s why I prefer Go over an untyped language like Python and JavaScript. So it would be nice if Go supported enums in the type system to get this guarantee.

  • Thinking more about TextEdit, there seems to be a tension between the expectation of the user and platform owner. I can see TextEdit being a great testbed for any new feature the platform owner wants to add: iCloud Sync, AI writing tools, etc. Its simple design makes it a perfect canvas for experimenting with such features. Yet it’s this same simplicity which appeals to users that just want a no-frills text editor. They’re not expecting nor wishing for the bells and whistles like autosaving or text generation. They just need a basic text field with the stock-standard new/open/save interaction that’s been around for a good 35 years now. To me, there’s no need to push TextEdit forward in any capacity. TextEdit is feature complete, and has been since it’s original release.

  • Chalk me up as someone who hates that TextEdit persists Untitled files. I use such windows as in-memory scratchpads that sometimes contain pretty sensitive information I do not want saved. It’s especially problematic when iCloud synchronises them to computers you’re not expecting them to appear on.

  • Was not expecting to spend yesterday morning working on Dequoter, my Boop clone. Opened it up to do some light work and when I looked up, a couple of hours have passed. Added a few more processors to deal with lines, such as splitting and joining on commas. Added a status bar for processes that return information rather than filter text, such as returning a line count.

    Also integrated UCL, because of course I did. Added two commands: a UCL: Evaluate which executes the input as a UCL script and displays the response in the status bar, and a UCL: Replace which replaces the UCL script with it’s output. This makes it possible to generate text from scripts, like a bunch of lines to test out the line count processor:

    map (seq 20) { |n| "Line $n" } | strs:join "\n"
    
    Auto-generated description: A computer window titled Dequoter displays a list numbered from 0 to 19.

    It’ll also make for a useful scratchpad for testing out some UCL commands.

  • I’ve been playing taxi driver for these Honeybrown Beetles a fair bit recently. This is my third pickup in a fortnight.

    A small beetle is crawling on a person's hairy arm.
  • Hot day today. Perfect snake weather.

    A snake is slithering across a leaf-covered path.
  • Have finished a working version of my game for my niece. It’s only the free typing mode for now, which is essentially a basic text editor, with some colour options mapped to keys F1 through to F8. I’ve deployed a browser-based version of it if you’re curious.

    Auto-generated description: A digital screen displays the text HELLO WORLD! in colourful letters against a backdrop of silhouetted trees and buildings under a cloudy sky.
  • Added my 👍 to the other 192 on this Go proposal to add generics to methods. Great idea! I’ve been wishing for this for a while.

  • HV #old Submission

    My submission for Hemispheric View’s request for fun and interesting computer peripherals. Continue reading →

  • One part of me wonders whether this would’ve been caught earlier if I spent some more time analizing the possible approaches for this refactor before starting. Honestly, I don’t think I would. It’s not like I rushed into the schema changes without any thought, I was mainly thinking about existing data and how extendable and understandable it would be to others. It never occurred to me that the the indices would be an issue. In fact, it was only after I modified the unit tests that ran against a mock database that the problem revealed itself. It sucks that I wasted the effort, but I think this is evident that unit tests that use a real database are the way to go. If I had used a mock, it would’ve been found much later.

  • Argh! Was almost at the end of a major refactor when I ran into an issue, involving a database index, which completely invalidated my approach. Just blew up a day’s worth of work. I could potentially remove the database index — I don’t think it’s being used — but it could come in handy later.

  • Went to boardgames tonight. I’ll be honest: I didn’t feel like it. But I’m glad I did. Ending the night feeling quite better.

  • 🔗 TawakiCam Live

    Live penguin camera stream set-up on Antipodes Island (for now). For anyone who likes penguins, which I think is everyone.

    Via: @georgepenney.bsky.social on Bluesky

  • Finding myself drawing a circle with my finger on my laptop’s trackpad whenever I want to lock it. The reason is that I need to bring up the Touch Bar to press the lock key. Maybe one day I’ll learn the shortcut.

  • The view under Kings Way.

    An urban street scene features a tram and bus passing by, tall buildings, pink polka dots on the road, and a bridge overhead.
  • 📘 Devlog

    Game For Niece — More Art and Cropping Ebitengine Images

    Drew some more artwork and started integrating it into the game. Replaced the previous bus image I got from an image search with one I created myself using Affinity Designer:

    Auto-generated description: A cartoon-style bus is depicted in an illustration with the word BUS in green text above it.

    It’s orange, just like the busses round here, although this one has a plainer livery.

    I’ve not integrated the car just yet: I’m hoping to finish off the animations for the bus first. But I’m so glad I embraced Affinity Designer for this. I’m surprise I haven’t considered it sooner. The whole image is designed as a whole, then I export each component — body, door, wheels — as a separate PNG and recompose it in the code, giving me the means of animating each component. I’d imagine this is a pretty typical workflow: and I’m surprise I haven’t considered this sooner too.

    Continue reading →

  • Good writing and interesting blogs will always beat out doom-scrolling. Maybe my solution to less social media is not so much resisting those apps as it is making sure there’s enough of a substitute to tide me over.

  • Enjoyed a late dinner at the Prince Alfred Hotel in Richmond.

    Auto-generated description: A cozy outdoor seating area features wooden tables and stools, surrounded by lush greenery and a No Smoking sign.Auto-generated description: A neon sign reading YOU'RE IN THE RIGHT PLACE is surrounded by lush green plants.