<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Artificial Intelligence on Arrans Technical blog</title><link>https://arran4.github.io/blog/categories/artificial-intelligence/</link><description>Recent content in Artificial Intelligence on Arrans Technical blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>technicalblog123@arran4.com (Arran Ubels)</managingEditor><webMaster>technicalblog123@arran4.com (Arran Ubels)</webMaster><copyright>Arran Ubels. This work is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a>.</copyright><lastBuildDate>Thu, 06 Aug 2026 10:42:00 +0000</lastBuildDate><atom:link href="https://arran4.github.io/blog/categories/artificial-intelligence/index.xml" rel="self" type="application/rss+xml"/><item><title>Refactoring Go CLIs with go-subcommand and Agent Feedback Files</title><link>https://arran4.github.io/blog/post/2026/032-go-subcommand-infrastructure/</link><pubDate>Thu, 06 Aug 2026 10:42:00 +0000</pubDate><author>technicalblog123@arran4.com (Arran Ubels)</author><guid>https://arran4.github.io/blog/post/2026/032-go-subcommand-infrastructure/</guid><description>A Go CLI often begins with a small main.go, a few flags, and a switch statement. Then it grows.
Before long, cmd/ contains argument parsing, configuration loading, filesystem access, database calls, output formatting, and the actual application logic. Adding a command means copying another block of flag handling. Testing a command means pretending to invoke the entire executable. Changing the CLI framework risks touching the whole program.
[go-subcommand](https://github.com/arran4/go-subcommand) takes a different approach.</description></item><item><title>Using gap.md to Guide LLMs in Complex Projects</title><link>https://arran4.github.io/blog/post/2026/030-using-gap-md-for-llms/</link><pubDate>Thu, 06 Aug 2026 09:57:57 +0000</pubDate><author>technicalblog123@arran4.com (Arran Ubels)</author><guid>https://arran4.github.io/blog/post/2026/030-using-gap-md-for-llms/</guid><description>Working with Large Language Models (LLMs) on multi-module projects or complex codebases can sometimes feel like a high-wire act. You give the LLM a large set of instructions, and while it might accomplish the immediate tasks, you often find yourself wondering: Did it actually have all the context it needed? Did it silently skip over something because a dependency wasn&amp;rsquo;t ready?
To prevent the LLM from trying to stubbornly forge ahead when it lacks prerequisites—or worse, hallucinating a solution—I&amp;rsquo;ve developed a prompting pattern that I use regularly.</description></item></channel></rss>