• Why do I use CI/CD for my personal stuff at all? One reason: I don’t want to think about it. I want to do the work to setup build and release pipelines once, then not think about it until something breaks. I’ll complain like a toddler at the time, but it’s still better than doing releases manually.

  • Not willing to give AI agents every coding task I do on the side, but one thing it absolutely can have is all the rubbish involving CI/CD runners and code signing. That’s one avenue of software development I’d glady offload to something else.

  • It’s kind of strange, but while poking around Inkwell, I had flashbacks of using Google Inbox. I do sort of miss it, but in the end, I’m glad they killed it as it forced me to move to Fastmail.

  • 🔗 Forking Mad: Who knows that you blog?

    Question for the audience: Do you tell people you blog?

    I found this post via Kev Quirk who posted his own answer to this question. Mine are quite similar: I don’t really make a point of telling people I have a blog. It’s not like I keep it a complete secret: if someone talks about writing or keeping a blog of their own, I do mention that I also have one. And I may say a few words on what I tend to write about. But I rarely mention the URL or send links to people.

    That said, I know of a few people that are aware of it. I have a link to it on my LinkedIn profile and one or two people I work closely with stumbled upon it that way (hi, K.K. 👋). And I don’t think that’s necessarily a bad thing. It keeps me honest, and resident of the fact that whatever is written here is public. That’s always been true, but it becomes quite tangible if you know the people who can read it.

    But no, I generally don’t make it a point that I keep a blog.

  • It’s always DNS…

    Sometimes it’s NTP (if you know, you know).

  • A gentle reminder that just because you have a coding agent, doesn’t mean everything needs to go through the coding agent. If something can achieved using a traditional command invocation, just use that. It’ll burn zero tokens and would end up being faster in the long run.

  • Could Swift's Guard Statement Work in Go?

    Exploring the idea of a guard statement in Go reveals significant challenges and limitations compared to its implementation in Swift. Spoilers: it probably wouldn’t work. Continue reading →

  • Spoke with someone who used to work in the games industry. Apparently Aussie and Kiwi devs had a reputation for being the ones most likely to violate their NDAs. At the same time, they’re also the ones who know what’s going on in other areas of the company. And yes, this dynamic involves a pub. 😀

  • 🔗 Interconnected: We need RSS for sharing abundant vibe-coded apps

    It’s amusing imagining a world where custom apps are just as abundant as posts on a blog, but it kind of feels like we’re heading towards that future. I do like this idea, though.

  • Saw my first Java web service project in quite a while the other day. I don’t know how we wrote these things before Spring Boot: it reduces the amount of boilerplate to almost nothing. The addition of annotations and reflection was such a good move on Sun’s part.

  • And while we’re on the subject: when did people start calling the # character “hashtag?” Where do you think the “hash” in “hashtag” comes from? It’s a tag on a post that begins with the hash character: hash-tag. Argh! Drives me bonkers.

    A bold, black hash symbol is accompanied by the hashtag #MakeHashHashAgain in white text.
  • BTW, do you know what Shift+Opt+2 gave you before the Euro? Apparently it was the international currency symbol, which I believe is ¤. Which if you squint, sort of looks like a @, and could probably follow the same logic as £ being bounded to the 3 key because # , which I call “hash” but those in the US call “pound”, appears there. But still, I didn’t need to press Shift to get £.

  • I always get caught out trying to type a Euro sign on a US keyboard. This morning, I figured out why. £ is bound to Opt+3, and ¢ is bound to Opt+4, and ¥ is bound to Opt+Y, but is bound to Shift+Opt+2, not Opt+2. Missed a real opportunity for a memorable pattern here.

  • Really enjoying the latest releases from Lee Rosevere. 🎵

  • Modern micro-service development practices are so silo-inducing. No one developer can truly understand how the entire system should behave. If you want to know how something should work as a whole, you’re better off asking the QA team.

  • Bunching due to delayed trams working in my favour today.

    A city street features a tram departing, one approaching, traffic lights, and a mix of pedestrians and modern buildings under a clear sky.
  • It’s amusing that the role of developer on an engineering team can feel like a role in politics, where you’re lobbying for approvals for MRs based on your immediate needs and your promises for things you’ll do in the future. 😏

  • Grafana dashboards should be definable using a DSL, maybe XML. Editing the dashboard manually, exporting the JSON, checking that into Git, and calling it “config-as-code” is self delusional. As if anyone’s going to review a JSON dump of a dashboard.

  • Feeling a little bit restless. Might be time to get a few more stamps in my passport (figuratively speaking).

  • 📘 Devlog

    Imagen

    I won’t bore you with any justification on why I actually built this thing. It’s really nothing more than wanting a harness to play with Google’s Nano Banana. Up until now, I’ve been using Blogging Tools for that, but it lacked any ability to request changes to images in a chat-like interface (so called “multi-step flows”), where the context is preserved. So I made Imagen as a replacement.

    This is a pretty typical chat-based AI model harness. You start a chat requesting an image, maybe uploading one you want modified, click “Send”, and wait for the model to respond. There also exist a bunch of meta commands, entered using the / prefix, that allow you change the model, and retry or undo the last request.

    Continue reading →

  • Have been playing around with coding agent orchestrators recently, notably Paperclip and Gas Town, just to see what they’re capable of. They’re interesting modes of working in their own respect.

    Paperclip, recommend to me by a work colleague, is a bit more polished and has quite a strange approach to interacting with the agents. Basically, you create pretend organisations, with a business goal, org chart, projects, etc. You as the human take on the role of the “board”, and you give instructions to a “CEO” agent who then “hires” a “CTO” agent to do the coding work. This can branch out to other agents taking on other “roles” like marketing or documentation writing, all which do work dispatched either by those further up the org chart or by you, the human. Interacting it feels like buying into the illusion: I found myself writing tickets along the lines of “the board will request…” or “the board has approved…”

    Gas Town, by Steve Yegge, is a bit more of a scrappy upstart. The installation process was less polished and when launched, is little more than a Tmux session in-front of a Claude Code instance that has been heavily customised. Based on how Yegge describes it, it feels more automated in how it organises the agents and work, which I took to mean that you can take a more hands off approach, to the extent you feel comfortable. This has not been my experience so far, but to be fair, I’ve only had two interactions with the Mayor so far. What it does seem to have is community. Yegge talks about the group of developers that have taken his idea and have ran ahead with it, spinning it out into things like Gas City which is a project used to build other orchestrators.

    As to what these orchestrators could actually product, well, I guess it depends on your tolerance of vibe-coded artefacts. So far, I’ve only used these to produce toys and prototypes; nothing that could be considered “serious”. I don’t know if it’s possible to actually make anything really commercial with these. I’m afraid to try myself.

  • Some could say we’re experiencing a power outage, but I prefer to say that I’m involuntarily exercising my UPS. 😛

    A black UPS (uninterruptible power supply) is positioned on a tiled floor, displaying various digital readings on its front panel.
  • Just had my last consultation with my doctor. For a time I thought I had a doctor, but he’s moving out of the practice. A real shame. It’s always the good ones that leave.

  • I’ve been burned by my designs of something that’s “future proof” so often by now that I’m skeptical of any thought I have along these lines. Future proofing is not a free endeavour, and simplicity and readability are usually the sacrifices made for a design that may or may not be suitable in a future that may or may not actually come. And of course, with these coding agents now on the scene, seemingly unfazed by all this introduce complexity, it doesn’t make the decision any easier.

  • Saw this in a Mastodon reply:

    Why do we do the things we pour our life energy into?

    I’ve been wondering this myself lately.