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.

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.

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).

Continue reading...

Semantic Versions, Commits, and now Releases

Nearly every technologist knows about semantic versioning (semver), it’s familiar for developers and sysadmins alike. However, what’s really cool is implementing semantic commits and semantic releasing! I only really started to become familiar with the concept of semantic commits a couple of years ago. When you’re a hobbyiest writing lots of code, there isn’t much motivation or need to write a commit message - because nobody is going to read it.

Continue reading...

Implementing 15 Factor Apps with GoConnSPA

This is just a quick article to describe how the GoConSPA stack implements the 15 Factor App principles. 1. One Codebase, Ont Application GitHub: All code for the application is stored in a single repository. 2. API First ConnectRPC: The api is defined in protobuf, and exposed via ConnectRPC. 3. Dependencies Go Modules: All dependencies are managed via Go modules, and vendored in the repository. 4. Configuration GitOps: Configuration is stored in Git, allowing for version control and easy collaboration.

Continue reading...

The GoConnSPA Stack

I’m eager to write about a technology stack that I’ve stumbled into, which I believe is the nicest one I’ve ever worked with. The stack is called GoConnSPA, and it consists of the following technologies and tools; Overview flowchart TD A[Backend Service] <-->|websocket| B[Single Page App] Technologies Go: The Go programming language, which is known for its simplicity and efficiency. ConnectRPC: A gRPC framework for Go that simplifies the process of building and consuming gRPC services.

Continue reading...

Migrated docs.olivetin.app to Antora

This evening finally marks the completion of the migration of https://docs.olivetin.app to a new build system, called Antora. OliveTin’s documentation consists currently of 126 AsciiDoc files, 50 images, and many example config files, code examples, and similar. I would not say it is a very large documentation site, like OpenShift or any of the Red Hat documentation that I spend a lot of time reading (also written in AsciiDoc), but it’s a decent size that has been built up over the last 3 years.

Continue reading...

Faridoon: Save & Publish Your Favourite Chat Quotes

So many interactions with friends, family and coworkers now happen via our chat apps, and so many of the best bits of these chats just scroll by and are forgotten. Faridoon is a simple app that lets you save and publish your favourite chat quotes for you to save, for your community, or for the world to see. I was inspired to write Faridoon a long time ago, when I was chatting with friends mostly on Mumble chat.

Continue reading...

Why Do I Use #dee3e7?

The bluey-grey color that you see in nearly all of my projects has the HTML color code #dee3e7. It came from the very first “real” web project I worked on when I was about 16 years old, and I knew nothing! That website has had so many versions over the years, but it’s first version was built with PHP4.3, XHTML 1.0/HTML4.01 and CSS2.1 - and it was a mess! But I loved it, it taught me so much about web development, and it was my gateway into the world of web programming.

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.