<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blogs on Today I learned</title>
    <link>https://www.seanmooney.info/blog/</link>
    <description>Recent content in Blogs on Today I learned</description>
    <image>
      <title>Today I learned</title>
      <url>https://www.seanmooney.info/images/papermod-cover.png</url>
      <link>https://www.seanmooney.info/images/papermod-cover.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>Sean Mooney</copyright>
    <lastBuildDate>Fri, 27 Mar 2026 10:00:00 +0100</lastBuildDate>
    <atom:link href="https://www.seanmooney.info/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Improving AI Review with AI Review</title>
      <link>https://www.seanmooney.info/blog/agentic-ai-teim-review/</link>
      <pubDate>Fri, 27 Mar 2026 10:00:00 +0100</pubDate>
      <guid>https://www.seanmooney.info/blog/agentic-ai-teim-review/</guid>
      <description>&lt;h1 id=&#34;agentic-loops-and-how-to-use-them&#34;&gt;Agentic Loops and How to Use Them&lt;/h1&gt;
&lt;h2 id=&#34;executive-summary&#34;&gt;Executive Summary&lt;/h2&gt;
&lt;p&gt;Over the course of a few sessions with Claude Code, I took an existing multi-agent
CI code review system and refactored it into a proper Claude Code plugin — complete
with a marketplace definition, a &lt;code&gt;/teim-review&lt;/code&gt; slash command for local use, and a
single orchestration agent that replaced three separate Ansible-driven Claude
invocations. The final commit was 26 files changed, 601 insertions, 397 deletions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Three Months with AI: Building, Coding, and Contributing</title>
      <link>https://www.seanmooney.info/blog/three-months-with-ai/</link>
      <pubDate>Mon, 09 Jun 2025 10:00:00 +0100</pubDate>
      <guid>https://www.seanmooney.info/blog/three-months-with-ai/</guid>
      <description>&lt;h1 id=&#34;three-months-with-ai-from-experiment-to-daily-workflow&#34;&gt;Three Months with AI: From Experiment to Daily Workflow&lt;/h1&gt;
&lt;p&gt;Over the past three months, I&amp;rsquo;ve been intentionally exploring how AI can fit into my software development workflow. Here&amp;rsquo;s what I learned.&lt;/p&gt;
&lt;h2 id=&#34;building-with-ai-the-prototype-experiment&#34;&gt;Building with AI: The Prototype Experiment&lt;/h2&gt;
&lt;p&gt;My initial foray into AI tooling was building a prototype to understand the fundamentals. I spent about 6 hours creating &lt;a href=&#34;https://github.com/SeanMooney/ca-bhfuil&#34;&gt;ca-bhfuil&lt;/a&gt;, a simple experiment in combining multiple AI components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LangChain and LangGraph&lt;/strong&gt; as the agent framework&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt; for local LLM hosting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sqlite-vec&lt;/strong&gt; as a basic vector database for RAG experimentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result was a very simple prototype using hardcoded data to demonstrate
storing commit messages in a vector database, prompting an LLM to use RAG
to retrieve relevant data, and generating responses. You can see an &lt;a href=&#34;https://github.com/SeanMooney/ca-bhfuil/commit/c1df8b24a50098e6a27946d103d962349f40c2a2&#34;&gt;example response in the commit message&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auto-Correcting Sean-Speak: Beyond Spell-Check to Real AI Assistance</title>
      <link>https://www.seanmooney.info/blog/ai-to-spec/</link>
      <pubDate>Sun, 08 Jun 2025 10:00:00 +0100</pubDate>
      <guid>https://www.seanmooney.info/blog/ai-to-spec/</guid>
      <description>&lt;h1 id=&#34;using-ai-to-write-openstack-nova-specifications-a-real-world-experiment&#34;&gt;Using AI to Write OpenStack Nova Specifications: A Real-World Experiment.&lt;/h1&gt;
&lt;h2 id=&#34;background-and-motivation&#34;&gt;Background and Motivation&lt;/h2&gt;
&lt;p&gt;After attending the 2025.2 PTG and seeing the extensive backlog of specs that
need to be written, reviewed, and implemented, I decided to run an experiment:
can AI meaningfully help with the OpenStack specification process? Not just the
writing, but the actual design thinking and technical architecture work that
goes into a good Nova spec.&lt;/p&gt;
&lt;p&gt;The motivation was simple - we have more good ideas than we have time to
properly document them. Between my day job, core review responsibilities, and
the general time constraints we all face, turning a concept into a
well-structured, technically sound specification can take days or weeks. What
if AI could help accelerate that process?&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025.2 Ptg</title>
      <link>https://www.seanmooney.info/blog/2025.2-ptg/</link>
      <pubDate>Tue, 15 Apr 2025 09:26:03 +0100</pubDate>
      <guid>https://www.seanmooney.info/blog/2025.2-ptg/</guid>
      <description>&lt;h1 id=&#34;watcher&#34;&gt;Watcher&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://etherpad.opendev.org/p/r.9c40a9e71e93a4be96ebd3e0ad2d7bc4&#34;&gt;PTG Etherpad&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The 2025.2 PTG was the Second PTG i have attended for watcher.
The last PTG had one session to cover all the technical debt required
to revive the project. This time we extended the ptg to 2 days.&lt;/p&gt;
&lt;h2 id=&#34;day-1&#34;&gt;Day 1&lt;/h2&gt;
&lt;h3 id=&#34;tech-debt&#34;&gt;Tech Debt&lt;/h3&gt;
&lt;h4 id=&#34;croniter&#34;&gt;&lt;a href=&#34;https://etherpad.opendev.org/p/r.9c40a9e71e93a4be96ebd3e0ad2d7bc4#L39&#34;&gt;Croniter&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The PTG started with a disscussion about technical debt that emerged during the
epxoy cycle. This focused mainly on croniter, which is used by watcher to schedule
continuous audits based on cron strings. The Croniter libaray maintainer has decided
to stop maintaining this library and it is transitioning to a new maintainer.
While that gives watcher some breathing space, our usage is minimal, so we agreed
to drop the dependency by leveraging the existing functionality of apscheduler.&lt;/p&gt;</description>
    </item>
    <item>
      <title>what is openstack</title>
      <link>https://www.seanmooney.info/blog/what-is-openstack/</link>
      <pubDate>Sun, 05 Feb 2017 18:51:40 +0000</pubDate>
      <guid>https://www.seanmooney.info/blog/what-is-openstack/</guid>
      <description>Intro to the OpenStack project</description>
    </item>
  </channel>
</rss>
