<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS Feed for ai - James Stone&apos;s Blog</title><description>Blog posts tagged with ai</description><link>https://jamesst.one/</link><item><title>The other AI bubble</title><link>https://jamesst.one/posts/the-other-ai-bubble-that-no-one-is-talking-about/</link><guid isPermaLink="true">https://jamesst.one/posts/the-other-ai-bubble-that-no-one-is-talking-about/</guid><description>import Detail from &quot;../../components/Detail.astro&quot;;

Excuse my click baity title. I mean the AI Filter Bubble.

&lt;span&gt;As the memory features of AI apps are getting &lt;Detail&gt;&lt;span slot=&quot;c&quot;&gt;smarter&lt;/span&gt;&lt;span slot=&quot;e&quot;&gt;a larger context window&lt;/span&gt;&lt;/Detail&gt;, I have recently found it harder to convice AI to not always recommend [nix](https://jamesst.one/tag/nix)! Ok that [example](https://chatgpt.com/share/69931fce-8be8-8002-bca2-dfeb7732be45) is specific to me.  It has clearly remembered my love for it.
    But it got me thinking we are just making another [filter bubble](https://en.wikipedia.org/wiki/Filter_bubble). It&apos;s social media all over.&lt;/span&gt;

&lt;br/&gt;
&lt;span&gt;Whilst _I_ don&apos;t think there is anything wrong with nix. Sometimes it doesn&apos;t hurt to hear other &lt;Detail&gt;&lt;span slot=&quot;c&quot;&gt;minority&lt;/span&gt;&lt;span slot=&quot;e&quot;&gt;well at least less &lt;a href=&quot;https://distrowatch.com/table.php?distribution=guixsd&quot;&gt;popular&lt;/a&gt;&lt;/span&gt;&lt;/Detail&gt;  [lispy](https://guix.gnu.org/) opinions.&lt;/span&gt;</description><pubDate>Mon, 16 Feb 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>