(Mis)adventures in AI CLIs: Part 2 Confidently Building the Wrong Thing

If Part 1’s theme was attempting to ‘vibe’ through golang text templates with codex then Part 2’s theme is attempting to ‘vibe’ through updates to a legacy javascript library with Gemini CLI. As planned this did not go as planned. I recommend skimming Part 1’s narrative, if not reading, as the following builds on it incrementally. Context, again First, a brief refresh on the origin of this work. I was dissatisfied with an existing hugo theme for my image gallery. I also wanted to present images using modern formats like avif which are unsupported by hugo’s builtin processing capabilities. This had impacts on how the templates for my new theme were structured. It also meant client side, in browser client, processing of image tags (e.g. exif or XMP data) for presentation. ...

October 3, 2025 · Michael Hughes

(Mis)adventures in AI CLIs: Part 1 (?)

Originally, I was going to write about using OpenAI Codex versus Google Gemini CLI to help me code my personal photos website. I could and may still do that, however, here we’ll tell a story about building a Hugo theme with codex, where things went right, and where they did not. We might also take digressions into commentary on the reality of software development and the 1986 Fred Brook’s essay ‘No Silver Bullet…’. ...

September 23, 2025 · Michael Hughes

Some thoughts on partition keys in clustered databases

Partition keys are a common concept among distributed software including CouchDB and Azure CosmosDB to other systems like Kafka and AWS Kinesis. They are a key input into the system that has consequences on how well it can be used to solve different end user problems and how well it performs under load. ...

May 16, 2021 · Michael Hughes

Related to the topic of service level objective values

What is the expected availability of a service API? What does a “99.9%” availability mean in the context of a service’s operation? What can a service client expect, what about a customer? Continuing from our prior post in January, let’s know discuss some aspects of using these percentage values in the context of how to guarantee availability. ...

May 4, 2021 · Michael Hughes

On the topic of service level objective values

What is the expected availability of a service API? What does a “99.9%” availability mean in the context of a service’s operation? What can a service client expect, what about a customer? ...

January 15, 2021 · Michael Hughes

User inactivity and forced logout in single-sign-on scenarios

A couple incomplete thoughts and questions for those that need to automatically log end users out of web applications. ...

January 2, 2021 · Michael Hughes

When to prioritize maintenance of a system

Have you ever considered a service or suite of services and thought, “that looks like a ball of yarn.” There is a tendency amongst those of us who write software for a living to consider systems that are not understood as garbage. Often, this suspicion of poorly understood systems turns out to be unwarranted. What look like obtuse decisions made for no apparent reason turn out to have solid foundation in rationality. Software that looks strange with weird functionality sometimes is that way because strange and weird things were asked of it. ...

September 28, 2017 · Michael Hughes

AngularJS injectables and things to not do with them

We often think about best practices while developing software. Sometimes it is also instructive to contemplate what not to do when writing software. Today’s post covers some logic in AngularJS services which should be avoided save for rare exceptions. ...

September 11, 2016 · Michael Hughes

Why log?

It is a good practice to add logging capabilities to applications as they are built. There are a lot of good tutorials on how to setup logging within various applications and software frameworks. It is also instructive to discuss why something is a good practice since understanding why can lead to new insight in how, when, and where to apply said ’thing.’ The point of today’s post is to discuss some scenarios for why application logging is important. This post will be mostly non-technical because the how of logging can be learned with some decent web searches and there is already a wealth of information on logging software on the web. ...

July 24, 2016 · Michael Hughes

DNS Round Robin Failures

Round robin DNS records are a technique for distributing load across public facing web servers. As an experiment we tried using them in order to distribute load inside of a cluster. We found this approach didn’t work. In this post I’ll discuss round robin load balancing, how it works at a high level, what we did with DNS, why it didn’t work, and what can be done instead. ...

July 18, 2016 · Michael Hughes