<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS Feed for agents - James Stone&apos;s Blog</title><description>Blog posts tagged with agents</description><link>https://jamesst.one/</link><item><title>PC cattle</title><link>https://jamesst.one/posts/agents-nix/</link><guid isPermaLink="true">https://jamesst.one/posts/agents-nix/</guid><description>&lt;![CDATA[&lt;p&gt;No, I am not talking about politically correct cattle, but rather the idea of treating your personal computer as cattle.&lt;/p&gt;
&lt;p&gt;I have always liked the idea of treating servers as cattle, not pets. By this, I mean having all configuration defined as code.&lt;/p&gt;
&lt;p&gt;Increasingly, I think it makes sense to treat your personal computer as cattle too - particularly with the rise of agents.
For servers, the main advantages are that you can destroy, deploy and scale them without thought.&lt;/p&gt;
&lt;p&gt;This is also a nice feature for personal computers, though traditionally it hasn’t been that important. You normally only have one PC.&lt;/p&gt;
&lt;p&gt;However, I think LLMs and agents start to change this equation.&lt;/p&gt;
&lt;p&gt;In the era of agents, by treating your personal computer as &lt;del&gt;cattle&lt;/del&gt; code, you get a few benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can scale it as many times as you want - think of all those parallel agents you can run!&lt;/li&gt;
&lt;li&gt;Your agents can help configure your computer - and when they stuff it up, you can just roll back to a previous version&lt;/li&gt;
&lt;li&gt;You can set up tests on your personal computer to make sure it works.are the right services running, are the tools installed, does the system still boot and behave as expected? All automatically when you make changes or update your setup. This also helps your agents catch their mistakes.&lt;/li&gt;
&lt;li&gt;You can (re)deploy your computer anywhere you want, destroy it whenever you want, and share the exact same environment with others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To turn your servers into cattle, you may use terraform, containers, k8s, a combination of these or anyother tool, my personal favourite though is &lt;strong&gt;Nix&lt;/strong&gt;. I live for that immuatbility.
Though for personal computers in my mind it really only makes sense to use Nix (or I guess GNU Guix). That’s because it actually is designed for that.&lt;/p&gt;]]&gt;</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate></item><item><title>How I use agents</title><link>https://jamesst.one/posts/how-i-use-agents/</link><guid isPermaLink="true">https://jamesst.one/posts/how-i-use-agents/</guid><description>import Detail from &quot;../../components/Detail.astro&quot;;

&lt;div&gt;Like many people, I have found &lt;Detail&gt;&lt;span slot=&quot;c&quot;&gt;AI&lt;/span&gt;&lt;span slot=&quot;e&quot;&gt;LLM&lt;/span&gt;&lt;/Detail&gt; agents to be increasingly useful.&lt;/div&gt;

Like people, some of the biggest power ups I have found are to give the agent a good environment.
It works best when it:
- has access to an **LSP** to allow it to quickly check type errors or just any error really.
- can quickly run **lint** checks
- has an existing **test** suite that it can incrementally add new tests for
    - in particular, I have found integration tests to be the most useful, that way you can let the agent go wild and not get bogged down by a particular implementation. It should not be scared to change
    - **Web dev tip**: Give it a browser it can use in the integration tests.
- has a working **formatter**


The beautiful thing is most agents auto run tests, code formatter and linters after every change.


-----
{
&lt;div&gt;My 2 cents above is based on my experience &lt;Detail&gt;&lt;span slot=&quot;c&quot;&gt;&quot;vibe coding&quot;&lt;/span&gt;&lt;span slot=&quot;e&quot;&gt;&quot;vibe coding&quot;, I also haven&apos;t truly been 100% vibe coding... I still look at the code it writes and then based on that either: &lt;ul&gt;&lt;li&gt;&lt;b&gt;completely undo&lt;/b&gt; the change and ask it to have another go, maybe slightly tweaking my prompt&lt;/li&gt;&lt;li&gt;give it a follow up prompt.&lt;/li&gt;&lt;/ul&gt; &lt;b&gt;though I think starting fresh seems to get better results.&lt;/b&gt;&lt;br/&gt;So I have been &quot;vibe coding&quot;&lt;/span&gt;&lt;/Detail&gt; an app to help me keep track of my running niggles/ injuries.
&lt;/div&gt;
}
The agents really came alive when I made them write some integration tests, using an actual browser. eg:

```ts
import { test, expect } from &quot;@playwright/test&quot;;

test(&quot;homepage loads just added diagnosis&quot;, async ({ page }) =&gt; {
    await page.goto(&quot;/&quot;);
    await expect(page).toHaveTitle(&quot;Current Diagnoses&quot;);
    await expect(page.locator(&quot;diag 1&quot;)).toBeVisible();
});
```</description><pubDate>Sun, 25 Jan 2026 00:00:00 GMT</pubDate></item></channel></rss>