• What ever happen to Power Nap on MacOS? Is that still a thing? I’ve been asked when I’d like to install updates for about a week now. Yet despite choosing “later tonight” every time, nothing’s been happening. I could choose to install them now, but I thought deferring them to a time when I’m not using my computer was the point of this feature.

  • Argh! Someone has discovered my secret of where the best place to stand on an A-class tram is (it’s at the back, beside the back door).

  • It’s easy to get a irrational sense of how scalable a particular database technology can be. Take my experience with PostgreSQL. I use it all the time, but I have it in my head that it shouldn’t be used for “large” amounts of data. I get a little nervous when a table goes beyond 100,000 rows, for example.

    But just today, I discovered a table that had 47 million rows of time-series data, and PostgreSQL seems to handle this table just fine. There are a few caviets: it’s a database with significant resources backing it, it only sees a few commits per second, and the queries that are not optimised for that table’s indices can take a few seconds. But PostgreSQL seems far from being under load. CPU usage is low (around 3%), and the disk queue depth is zero.

    I guess my point is that PostgreSQL continues to be awesome and I really shouldn’t underestimate how well it can handle we we throw at it.

  • Ah! I think I know why I keep asking for a bagel with lettuce, tomato, and cheese instead of ham, tomato, and cheese. It’s because I always said “lettuce, tomato, and cheese” when ordering sandwiches back when I was working in the CBD. Wow, talk about old habits dying hard.

  • 🔨 GSAP

    Another JavaScript animation library. Has some interesting features that might be pertinent for a project I’ve been toying with in my mind.

  • It’s 2025. Why am I still not writing down thoughts I had in the shower that I knew I wanted to remember? 🤦

  • 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 →

  • Bluesky needs a bookmarking feature. It took me a while, but I’ve grown to bookmarking posts in Micro.blog and Mastodon that I’d like to revisit in the future. Extra points for having a public API/RSS feed for those bookmarks.

  • 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 →

  • Very happy with how this evening has panned out. 🇦🇺

  • Free business idea for anyone: I see lots of people around the polling booth with dogs. I don’t believe dogs are allowed inside, so they must be walking them. But they’ll need to vote eventually, and if the queue is small, maybe they’ll think it’s worth voting now.

    So, here’s the pitch:

    Stand outside the front along with those handing how-to-vote cards, and offer to look after their dogs while they go in to vote. I’m not sure you can charge much for the service — voting usually takes around 5-10 minutes if the queue is small — and it might be more community minded if you just offer to do it for nothing. But maybe you can earn $10 for standing around half-a-day? Buy a democracy sausage and coffee for that.

  • At the cafe. Polling station is directly across the road and will open in a few minutes. Already a queue of people waiting to vote. Party banners on the fence, people with how-to-vote cards at the ready. Hardest decision I have before me is if I should join them once I’ve finished breakfast. But the barbie’s not been wheeled out yet and I’ve not organised anything for lunch.

  • Lot of welcomed news from the open-source realm: Redis is moving back to an OSS license, and NATS has settled their dispute with CNCF. That’s good news for users of these packages. But some doubt remains. The reason for why they turned to commercial licenses still seems largely unanswered to me.

  • The journey to being good at parkour begins with a single step.

  • 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. Continue reading →

  • “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.