• I’ve not yet used a REST endpoint tester that I liked. I have dreams of building one that would work for me, but I haven’t found a workflow that is any better. Something about using GUI tools for testing REST endpoints that just sucks.

  • We never got a satisfactory answer as to why a raven is like writing desk. Maybe it will prompt one to wonder why a crow is like a kitchen bench. Well, it’s probably not worth considering why, as the two are completely different things (that is, unless, you opt for a bench with black surfaces).

  • πŸ“˜ Devlog

    Weiro - Update 6th March 2026

    A small update on Weiro. I’ve been working on it over the past week, trying to get it in a state that is pleasant to use. I’m been trying to get something halfway usable before doubt scuppers my motivation and this project appears on the growing list of aborted attempts at making a CMS. There’ve been one or two close calls, but it hasn’t caused me to stop yet.

    A large part of that was a feature I knew I wanted but was daunting to implement: uploads. The thought of writing the logic to manage large files, make sure EXIF data is stripped, and serve and manage them always seems like a pain. It’s the reason why I’ve abandoned CMS projects in the past. And I want something that support uploads: I’ve tried CMSes that didn’t have them and I never stayed long.

    Continue reading β†’

  • Coffee at the cafe may cost around $6.50. But I’m not paying for just coffee: if I wanted coffee, I would’ve made it at home. I’m paying for “coffee at the cafe,” to have the ability to be out, sit, read, or write a post like this.

  • πŸ“˜ Devlog

    CSVTool - A Vibe-coded CSV Editor

    One of the fun aspects of these new code agents is seeing what they’re capable of producing just form the prompt, so called “vibe-coding.” There are some that are definitely all in on the concept: I’m thinking of Steve Yeggie and his Gas Town work. As for myself, I still prefer to be a bit more hands on. But it’s still amusing to see what these agents are capable of just from the prompt.

    Continue reading β†’

  • πŸ–ΌοΈ Gallery

    Newport Workshops Open Day

    Where we’re going we don’t need… roads. Continue reading β†’

  • My Coolify instance has been running really slowly over the last few days. I may start looking at alternatives, or maybe go back to using Dokku.

  • On the train heading into the city. It’s like freaking peek hour.

  • PostgreSQL Docker and "No space left on device"

    Dealing with PostgreSQL Docker complaining about “No space left on device” Continue reading β†’

  • Ooh, this is a nice new feature of Pocket Casts: the web player now includes chapter markers in the scrubber. You can mouse over them to get the chapter name, and click them to jump to the chapter.

    Auto-generated description: A music player interface shows the song Long Weekend by Hemispheric Views being played at 0:34 out of 5:11.
  • It’s apted and apklicable to brew something yum occasionally. #package-management-humour 😜

  • Go iterators don’t have a built in way to send errors back, so I borrowed something from Haskell and made a “maybe” type:

    type Maybe[T any] {
      Value T
      Err   error
    }
    
    func (m Maybe[T]) Get() (T, error) {
      return m.Value, m.Err
    }
    

    The iterator pushes values wrapped in this, which would have Value set if one is available, or Err set if not. The Get() method provides a convenient way to get both, allowing for patterns that look much like the following:

    func consume() error {
      for m := range myIter() {
        val, err := m.Get()
        if err != nil {
          return err
        }
      }
      doThingWithVal(val)
    }
    
  • Had a go (heh) at making a Go iterator. It was simpler than I expected, once I got my head around how they work. It’s a push model, the iterator pushes value to a yield function, which sends it to range, and receives a flag on whether to continue. The package docs do a good job explaining this.

  • Argh! Yeah, frickin’ tram replacement busses. Effin’ loving the Grand Prix. πŸ‘Ž

    Auto-generated description: A person stands at a tram stop watching a bus approach on a busy street lined with historic buildings.
  • Must say the MacBook Neo looks like an interesting offering. I don’t need a laptop β€” I use a desktop at home β€” but that may be where the strength of such a computer lies: a laptop for those that generally don’t use laptops. Could be useful for travel (I don’t travel that often either).

  • Are the sounds made by reversing EVs designed to be awful? Well, I guess they get my head turning so they must be doing something right. 😏

  • Really enjoying Inkwell, @manton’s RSS reader. Using it on the phone has been pretty good. Adjusting to the river approach to RSS has been interesting. I’ve been finding myself saving less and trying to get through more posts during the day, less they drop out of the Today view.

  • Here’s a pitch for the maintainers of Homebrew: make brew update and brew upgrade aliases of the same command, then add brew update brew (or brew upgrade brew) to upgrade Homebrew itself. End this confusion once and for all.

  • Well mark this one off your bucket list: appearing in someone’s travel vlog recommended to you by the YouTube algorithm. πŸ˜„

    Auto-generated description: A television screen displays a YouTube video titled First Day In Melbourne πŸ‡¦πŸ‡Ί I Was NOT Prepared, featuring a city scene with people and shops.Auto-generated description: People are walking inside a spacious, modern building with a large window and a coffee shop visible in the background.

  • Oof! Everyone's building blogging CMS's now, apparently.

    Since starting work on this project, I saw one other announce their own CMS that was vibe-coded with Claude. No shame in that: making something that works for you is part of the joy of participating in the Indie-web. I did take a brief look at it, and dismissed it because it was written in PHP. Yes, I am a snooty developer that looks down on those using PHP (it's just so annoying to deploy; although credit to this person, they did prepare a Docker container).

    Weiro is not vibe coded. Much of it is written by hand. Not all of it, mind you: I am using agents to help with the more mundane stuff. But the models, DB schema, and much of the UI is hand-rolled. And I'm conflicted as to whether that's the right balance. Progress is slower: these vibe-coders are whipping up CMS's in the same time it takes me to add a single feature to it. And there are probably better things I could be doing other than adding one more CMS into the world (although when my mind whispers that doubt, it usually suggests watching TV or doomscrolling as an alternative, so there are certainly worse things I could be doing).

    I haven't stopped working on it yet, so here's a brief update. I've got a version of it up and running in Coolify. It currently supports posts at the moment: both draft and published via Netlify. Much of the work was just making the writing experience feel natural, given that working on posts is probably the core feature of any CMS. So there's a very large window for the post body (maybe a little too large), and there's a Cmd+S keyboard shortcut for saving updates. I would like to add an auto-save feature, but I'm not entirely sure how best to do that server side, so I may settle for something that's browser only, just to save work for when the browser crashes or has no network connection. I'm also working on uploads, so there shouldn't be too much time before I can start sharing screenshots.

  • πŸ“˜ Devlog

    3rd March 2026

    Oof! Everyone’s building blogging CMS’s now, apparently.

    Since starting work on this project, I saw one other announce their own CMS that was vibe-coded with Claude. No shame in that: making something that works for you is part of the joy of participating in the Indie-web. I did take a brief look at it, and dismissed it because it was written in PHP. Yes, I am a snooty developer that looks down on those using PHP (it’s just so annoying to deploy; although credit to this person, they did prepare a Docker container).

    Continue reading β†’

  • Ooh, the barge is back. This time it’s car themed, probably because of the F1.

    A floating platform with equipment and covered items is anchored next to a dock, with trees and buildings in the background.
  • Oof! As a non-American, it’s sometimes a little hard to listen to Ben Thompson.

  • I do wonder if some of the patterns we’ve been using in software engineering, like multi-repo micro-service architecture, is actually a determent to agent coding. Those were deployed to help human developers coordinate, but it subdivides the possible area for agents to operate in. A monolith in a single repo, remarkably, may actually be better here.

  • How is it that people making screenshot mark-up apps still don’t understand that the blend mode for highlights should be multiply, not mix with alpha. A real highlighter would keep the text black, and won’t produce obvious overcoating. This just looks like I’m smearing yellow paint everywhere.

  • Grand final bocce match at Fitzroy Gardens. Congrats to Foxy for winning the season.

  • Oof! Glad that’s over.

    Joke quick review of Summer, for 2025-06 by Optoclurity of Ecliptic. Rating: Decent. Not as bad as it could've been. Started well in the first act (December), but then got quite annoying during the second (January) with all the elemental effects: the heat and the smoke. Finished well enough in the third though (February) with the grand finale of some rain (the encore of more rain is welcome). Just wish the running time was shorter. At 2,160 hours, it just dragged on for weeks.
  • Also saw a flock of pigeons enjoying the morning.

    A group of pigeons is foraging on the grass beneath a large tree near a road.
  • Saw an ibis this morning, but not a bin chicken. This is a Straw-necked Ibis.

    An ibis stands on a grassy field near a black chain-link fence.
  • You offer me Parmesan cheese for anything, you’re not getting it back.

    (And lo! The floodgates, they open.)

  • It’s funny how some days, your overthinking of what to post results in nothing being written. This is me not overthinking it (with a bit of assistance from alcohol).

  • πŸ“˜ Devlog

    Hello

    This is the inaugural post of Devlog, where I'm planning to write on what I'm working on. This post was created using Weiro, a new blogging CMS I've been working on. This post is little more than a test to see if the deployed version of Weiro is working. I'll post more about Weiro in later posts. For now, I just want to make sure this is being published correctly.

    Continue reading β†’

  • The Colour of Production

    On the colour-coding system used for different development environments. Continue reading β†’

  • A bit frustrating that I asked my IDE to rename all instances of a method, and it did around half of them, ignoring the interfaces the type implements. I know Go interfaces are different to Java interfaces, but if the type checker passes already, rename things such that it remains that way.

  • This is green grass. A week ago it was brown grass that hasn’t seen rain in about a month and a half. What a difference a week and two rainy days makes.

    A grassy field with patches of brown and green grass.
  • Been riding the Metro tunnel to work in the morning, but I think I’ll switch back to my old commute. I’ve been touching off after 7 AM which means I’m losing out on the free travel coming into the city. Noticed this after seeing the top-up alerts come through more frequently.

  • Coding agents may help with coding, but it’s been my experience that the biggest time sink in software is dealing with all the rubbish associated with micro-services. Troubleshooting dozens of services, trying to see why they’re not talking to one another. Ain’t no agent that can fix that.

  • πŸ”— Pixel Envy: On Software Quality

    I am somewhat impressed by the breadth of Apple’s current offerings as I consider all the ways they are failing me, and I cannot help but wonder if it is that breadth that is contributing to the unreliability of this software. Or perhaps it is the company’s annual treadmill.

    I’m almost certain that the devs at Apple are not happy with shipping software that doesn’t match this quality threshold. They’d fix all this issues with Tahoe and iOS 26 if they could (well, the one’s that are not just bad designs). They just don’t have the time to do so.

    Hardware takes months to setup, and once the lines are ready, it’s expensive to change them. So there’s huge resistance to change it near the end of the release cycle. Software’s malleability, in this respect, is a blessing and a curse. So easy to change, meaning that those making the decisions don’t see a cost in making these changes in the 11th hour. After all, it’s “just” software. But established software products are also resistant to change, and adding more cruft on the top just makes the change harder. Rather than fix things, devs spend all their time trying to get the bodged code working in concert while trying to meet the deadlines set from those that need features to sell. The result is lower quality software.

    There’s no escaping the “scope, quality, time: pick two” maxim.

  • Will the solution to my problems really be at the end of an infinitely long social media feed?

    Well, I don’t know. I haven’t reached the end yet. πŸ˜›

  • Missed my tram but thanks to the horrible traffic due to the rain, managed to catch it by walking to the next stop. Managed to lap the tram before it too, before it reached the dedicated track section.

    A tram and an SUV are traveling along a city street lined with trees and modern buildings.