AI Levels of Autonomy in Software Engineering

AI tooling for software engineering has moved quickly from fancy autocomplete to the verge of fully autonomous engineering. Most people can see that AI adds value. The real question is no longer whether to use AI, but how much autonomy to give it.

Capability alone doesn’t justify maximising autonomy everywhere. You have to match autonomy to risk. This post defines a simple scale of autonomy levels and where I draw my own lines.


Continue reading...

2026 Is the Year of OliveTin Resilience

This is a post about making OliveTin more resilient in 2026, by adding betas, adding a Codeberg mirror, increasing Matrix usage, improving documentation, testing and tools. None of OliveTin’s principles are changing, it’s license isn’t changing, and it’s maintainer aren’t changing. Just making OliveTin stronger.


Continue reading...

I use cursor, and neovim; sometimes I want AI, sometimes I don't

This article started life in October 2024 as a “Initial reaction to using Cursor.AI for a few hours” - as the provisional title suggests, I was trying out Cursor.AI for the first time - and it was not love at first sight! As an eager user of vim (and now, neovim more recently) I was curious to see how well this AI-powered code completion tool would integrate into my existing workflow.


Continue reading...

Ventoy for USB Boot

This is just a super simple post to encourage you to check out Ventoy, a fantastic open-source tool for creating bootable USB drives. With Ventoy, you can easily create a multi-boot USB drive that can hold multiple ISO files, allowing you to boot into different operating systems or utilities without the need to reformat the drive each time.


Continue reading...

D2 Is a Great Language for Architecture Diagrams

Many people are familiar with the concept of using markup languages to develop diagrams, like GraphViz’s dot Language, or PlantUML. These languages allow users to define diagrams in a text-based format, which can then be rendered into images. If you are not familiar with these tools, check them out - they’re seriously faster for diagram editing and updates than manually drawing boxes in diagramming tools, like some sort of neandertal!


Continue reading...

Code your CV/Resume with LaTeX

I hate writing documents about myself - CVs, promotion applications, or even just long documents in general - like my dissertation. However, I do love coding, so I can trick myself into writing these documents by using using a markup language. What better language to use than LaTeX?

LaTeX (pronounced “Lay-tech” or “Lah-tech”) is a document preparation system and markup language, widely used in academia for writing papers, theses, and books. People say t hat it allows you to focus on the content of your document while LaTeX takes care of the formatting, but the markup syntax really is quite verbose. Having said that, it’s extremely powerful, and once you get the hang of it, you can create complex documents with ease.


Continue reading...

Nginx's map directive allows for cleaner config

I didn’t start with Nginx, but it’s become my standard for open source load balancing now-a-days. I started with HAProxy - I remember first hearing about it in my first job, in 2008, when our CTO at the time was raving about it - “HAProxy rocks”, he would say. I didn’t get a chance to use it until several years later. It was when I first started load balancing services properly - somewhat of an improvement than having many services listen publicly on various ports.


Continue reading...

Vibe Coding Does Not Solve GIGO

I fondly remember this quote when I first heard it - and it made me chuckle. However this is such a good reminder of “GIGO” (Garbage In, Garbage Out) that is so relevant in today’s world of AI and especially Vibe Coding.

‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’

  • Charles Babbage

Garbage In, Garbage Out is a principle of systems design, and also common sense, that simply means that if you feed in the wrong questions, clearly you will get the wrong answers. I encountered this problem recently in a little vibe coding experiment of my own.


Continue reading...

How Do I Name My Projects?

It is often said that there are two hard problems in computer science; cache invalidation, naming things, and off-by-one errors. This post is about the approach I’ve taken over the years to name things - how I’ve named my projects.

The very first project that I ever really created is also one that I released - called technowax. It’s actually still online today, in a fashion; http://technowax.net/ . I’m ashamed so say now, after all these years that the name was not original - and it was actually a distant family friend who had a web design company, I think it was, called TechnoWax. I’m not sure if they are still around, but I do remember that I thought it was a cool name at the time.


Continue reading...

The downside of '26 years of web developer experience' — an unhelpful belief about how to write frontend code

I’m 37 today (2025), but I started coding for the web 26 years ago at around 11 (~1999). That’s “26 years of web developer experience,” but I’ve realised it also bred an unhelpful belief about how to write frontend code.

I started with Windows Notepad at school, producing HTML pages for Internet Explorer 4. Early tools included Dreamweaver (pre-Macromedia) and Microsoft FrontPage. Without a FrontPage license at home, I used Microsoft Publisher (yes, the desktop publishing app). Horrible tools, but that’s all an 11-year-old had in the late 90s. Only one other person I knew was doing the same — Chris, if you’re reading this, thanks for the inspiration!


Continue reading...

About James Read

Picture of James Read James is a "full stack" Open Source enthusiast, who enjoys creating no-nonsense open source software.

Dad, hobbyist developer, open-source enthusiast and Red Hatter.