<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts tagged "llm" - nolan caudill&#39;s internet house</title>
    <link>https://nolancaudill.com/tags/llm/</link>
    <description>Posts tagged "llm" on nolan caudill&#39;s internet house</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 07 Apr 2026 17:27:50 -0700</lastBuildDate>
    <atom:link href="https://nolancaudill.com/tags/llm/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Claude Cowork and Home Assistant</title>
      <link>https://nolancaudill.com/2026/04/07/claude-cowork-and-home-assistant/</link>
      <pubDate>Tue, 07 Apr 2026 17:27:50 -0700</pubDate>
      <guid>https://nolancaudill.com/2026/04/07/claude-cowork-and-home-assistant/</guid>
      <description>&lt;p&gt;I have not dabbled with any of the OpenClaw ecosystem (yet) but I&amp;rsquo;ve used Claude enough on non-coding local tasks that I wanted to give &lt;a href=&#34;https://claude.com/product/cowork&#34;&gt;Claude Cowork&lt;/a&gt; a try.&lt;/p&gt;
&lt;p&gt;Cowork is a native app that lets Claude do more file and local machine manipulation. Specifically, combined with the Chrome extension that lets Claude access and drive a browser session.&lt;/p&gt;
&lt;p&gt;Recently, I&amp;rsquo;ve started adding a few more home automation sensors like door sensors and lights. I&amp;rsquo;m using Home Assistant to organize and build automations. The Home Assistant UI is extensive but creating automations gets unwieldy, especially when you have a few dozen and want to refactor across automations.&lt;/p&gt;
&lt;p&gt;This seemed like it&amp;rsquo;d be a perfect test run of Cowork + Chrome for Cowork.&lt;/p&gt;
&lt;p&gt;The first task I gave it was creating a better default dashboard. I&amp;rsquo;m sure I could have fiddled my way to something usable, but Claude with just a little direction created a dashboard that was admittedly better than what I could have gotten to, and definitely not in the one or two minutes it took.&lt;/p&gt;
&lt;p&gt;Satisified that it was doing reasonable things, I decided to tackle my automations.&lt;/p&gt;
&lt;p&gt;First, I had it create a couple that I had wanted but hadn&amp;rsquo;t gotten to yet, like use tomorrow&amp;rsquo;s forecast and enable notifications to tell me to open and close windows &amp;amp; doors if the day was going to be warm and another one that would send me a nightly report that everything was locked up and turned off.&lt;/p&gt;
&lt;p&gt;The fun one: if I signaled that I was leaving on a bike ride (by clicking a new iOS widget on my lock screen), my garage door would automatically open when I got close to the house so I could roll straight in.&lt;/p&gt;
&lt;p&gt;That all worked so I asked Claude to look over all the automations and refactor for redundancy, standardize how the notifications looked, and fix any weird gotchas. It gave me a list of 17 things it found, and I went through each one and gave feedback (eg, do it, do it but with this tweak, ignore this one) and it ripped through the changes.&lt;/p&gt;
&lt;p&gt;This was a fun way to spend a morning and I was pleased with how effortless it was to now change something that had been previously fiddly.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>LLMs to fix calendar files</title>
      <link>https://nolancaudill.com/2026/02/26/llms-for-calendar-files/</link>
      <pubDate>Thu, 26 Feb 2026 08:21:37 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/26/llms-for-calendar-files/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve started using Claude to do something that I really shouldn&amp;rsquo;t have to: making calendar files.&lt;/p&gt;
&lt;p&gt;Every organization that can offer a simple calendar URL that I can subscribe to wants to make it fancy (read: harder). The Giants baseball schedule requires you give them an email address, no doubt so I can be put on some marketing list. The youngest kid&amp;rsquo;s soccer league has a bug where I only can subscribe to the &amp;ldquo;home&amp;rdquo; games (despite every game, home or away, being held at the exact same field&amp;hellip;). The adult rec league calendar awkwardly titles the events. And so on.&lt;/p&gt;
&lt;p&gt;To fix all these little gotchas and obstacles, I tell Claude to read a website and create an ICS file, which it does with no sweat. And, it will even add little surprise tweaks like adding a checkered-flag emoji to the front of every F1 race.&lt;/p&gt;
&lt;p&gt;Important note: If you point an LLM at a URL to create a schedule from, there is no guarantee that the timezone it&amp;rsquo;s fetched in will match your own. The workaround for me on this is to print-to-PDF the calendar and then tell the model to use that instead of the URL.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nolancaudill.com/images/f1-calendar.png&#34; alt=&#34;screenshot of a calendar list with the titles of F1 races prefixed with a checkered-flag emoji&#34;&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>My current agentic coding approach</title>
      <link>https://nolancaudill.com/2026/02/22/my-current-agentic-coding-approach/</link>
      <pubDate>Sun, 22 Feb 2026 16:41:52 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/22/my-current-agentic-coding-approach/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been full swing on using agents (primarily Codex with a mix of Claude) the past few weeks working on a few personal software projects, and I&amp;rsquo;ve started to get into a rhythm of an approach that is working for me, and results in relatively steady progress without many false starts, wild expansive scope, or complete do-overs.&lt;/p&gt;
&lt;h2 id=&#34;work-small&#34;&gt;Work small&lt;/h2&gt;
&lt;p&gt;I like to keep the feedback loops relatively small, which means asking for small iterations and then checking often.&lt;/p&gt;
&lt;p&gt;The guideline I&amp;rsquo;ve found that keeps the process moving along is to only ask it to build something that I could reasonably test in a few minutes.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Test&amp;rdquo; in this case is more like an acceptance test — did the software do the thing I hoped it would do? I&amp;rsquo;ve actually found the automated tests that the agents have been generating and automatically running after every change to be fairly complete so this has been the &amp;ldquo;Is this what I wanted? Does this feel right?&amp;rdquo; phase.&lt;/p&gt;
&lt;p&gt;When I first started using these tools, I&amp;rsquo;d ask for fairly large, open-ended changes and then give incredibly specific instructions for one aspect of it. This never worked. I&amp;rsquo;d get something that was akin to what I asked for but usually with lots of things I didn&amp;rsquo;t want, and few things that I did. I&amp;rsquo;d also have no idea how it fit together, tradeoffs it made, or even how to test it fully.&lt;/p&gt;
&lt;p&gt;Another benefit of working small is that I&amp;rsquo;m spending most of my time verifying and tweaking which is way less frustrating than trying to rephrase and describe a full worldview to the model so that it might guess better next time.&lt;/p&gt;
&lt;h2 id=&#34;use-plan-mode-liberally&#34;&gt;Use plan mode liberally&lt;/h2&gt;
&lt;p&gt;All the major players have some version of plan mode, where the agents are explicitly forbidden from writing code and instead come up with an output that is a readable doc.&lt;/p&gt;
&lt;p&gt;My first couple of attempts at these would be to write a full requirements doc, similar to the ones a product manager would write. But, I found that I could be much more concise and get just-as-good levels of plans.&lt;/p&gt;
&lt;p&gt;For any feature of some complexity or ambiguity, or where I wasn&amp;rsquo;t quite sure I what I wanted, I&amp;rsquo;d do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enter plan mode&lt;/li&gt;
&lt;li&gt;Write a quick, one sentence version of what I wanted&lt;/li&gt;
&lt;li&gt;Add in some extra context of the motivation if I thought it was useful&lt;/li&gt;
&lt;li&gt;If I knew of some edge cases or error conditions that I knew were important, I would add them here&lt;/li&gt;
&lt;li&gt;If it was similar to another feature, I&amp;rsquo;d mention that to give it a head-start of what &amp;ldquo;good&amp;rdquo; would look like&lt;/li&gt;
&lt;li&gt;Then, at the end, I literally say, &amp;ldquo;Ask me lots of questions.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And it would! It&amp;rsquo;d go off and read through code and docs, and quickly come back with some implementation questions, scope questions (&amp;ldquo;do you want the kit-and-kaboodle, or the quick-and-easy?&amp;rdquo;), and if at any point I wasn&amp;rsquo;t sure, I&amp;rsquo;d stop and go back and forth on a minor point until I was able to figure out and describe what should happen.&lt;/p&gt;
&lt;p&gt;Plan mode is a really nice mix of being high-level and then being presented with some tradeoffs where it matters.&lt;/p&gt;
&lt;p&gt;Side benefit: Sometimes a feature is one where I&amp;rsquo;m not sure what I wanted, but I would  know it when I saw it. Just being quizzed by the agent on tradeoffs sometimes has resulted in me seeing the kernel of the feature better, while also realizing that it was way more complexity than I wanted to add and I&amp;rsquo;d scrap the whole feature.&lt;/p&gt;
&lt;h2 id=&#34;fast-automated-tests&#34;&gt;Fast, automated tests&lt;/h2&gt;
&lt;p&gt;My current software project is a CLI tool, written in go. My original prompt included mentioning it needed to be robust and that tests should be maintained and ran before returning success. The magic is watching it make changes, run the tests, see breakage, figure out what needs to change, and then changing the code to get to green again.&lt;/p&gt;
&lt;p&gt;For the current project, I had used agents to write 100% of the code. Not a single line or character change was manual. I had a minor text change I wanted to make so I manually updated the text and sure enough broke the tests. It turned out that the minor text, in my eyes, was covered in tests coverage  3 different ways, which gave me a lot of confidence in the rest of the tests.&lt;/p&gt;
&lt;h2 id=&#34;one-thread-at-a-time&#34;&gt;One thread at a time&lt;/h2&gt;
&lt;p&gt;This one is probably controversial and may be as much of a reflection of my relative newbieness to this way of working but I really like the one thread at a time approach.&lt;/p&gt;
&lt;p&gt;I know people spend time on writing orchestration systems so they can spin up multiple changes at one time but for me, the bottleneck is what can I reason through and verify. Having multiple things in flight means reasoning about how they interact, and that turns play into work.&lt;/p&gt;
&lt;h2 id=&#34;the-architecture-matters&#34;&gt;The architecture matters&lt;/h2&gt;
&lt;p&gt;Easy to read that &amp;ldquo;architecture matters&amp;rdquo; as a no-duh, of-course-it-does statement, but I think it is more interesting than a quick read suggests.&lt;/p&gt;
&lt;p&gt;Many of the reasons that people favor certain tools or patterns are things that are, in some way, less relevant now. &amp;ldquo;This tool doesn&amp;rsquo;t have good documentation&amp;rdquo; doesn&amp;rsquo;t matter when agents can just vacuum the whole code into context. And any missing shim or API or wrapper can be quick work for a well-prompted LLM.&lt;/p&gt;
&lt;p&gt;But, there is a compounding benefit in choosing certain tools or patterns. For my current project, I picked go + bash as the weapons of choice. Go is fast to compile and has a good testing story and that makes for fast feedback loops. There is also a tremendous amount of go and bash code in the world and LLMs are pretty dang good at producing idiomatic go code.&lt;/p&gt;
&lt;p&gt;And, having seen lots of systems over the years, and knowing why some are &amp;ldquo;good&amp;rdquo; and others &amp;ldquo;less good&amp;rdquo; given certain constraints, absolutely helps when making tradeoffs or figuring out which paths to go down and which to avoid. This is probably the &amp;ldquo;taste&amp;rdquo; that people say doesn&amp;rsquo;t scale. (I am not sure what I believe here yet.)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Wrapping up, my biggest suggestion is to resist the urge to go big. Work in mind-sized chunks, use your taste and judgement each step of the way, and you&amp;rsquo;ll find the momentum builds from there. I have no doubt my approach will be wildly different as people figure out what these systems are capable of, and their limitations, but right now, this rhythm is working for me and I&amp;rsquo;m having fun.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Writing a Simulator</title>
      <link>https://nolancaudill.com/2026/02/17/writing-a-simulator/</link>
      <pubDate>Tue, 17 Feb 2026 13:46:32 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/17/writing-a-simulator/</guid>
      <description>&lt;p&gt;To give myself a slightly-bigger project, I came up with the idea of writing an simulator game where you&amp;rsquo;re the CTO of a small startup with a goal of helping your company get to an IPO.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://nolancaudill.com/images/cto-sim.png&#34; alt=&#34;screenshot of CTO simulator&#34;&gt;&lt;/p&gt;
&lt;p&gt;I just started it around dinnertime last night, writing up a few paragraphs with how things like projects, budgets, hiring, incidents, and so on work. I let Claude and Codex rip on a planning (&amp;ldquo;here&amp;rsquo;s some words. now ask me questions.&amp;rdquo;) and implementation loop. After every loop, I&amp;rsquo;d play around with it, think of a thing that&amp;rsquo;d make it better, and repeat.&lt;/p&gt;
&lt;p&gt;This post isn&amp;rsquo;t about writing software with agents (though I am amazed and am learning a lot about what they are good at and not so capable of) but a more general thing I&amp;rsquo;m learning when you&amp;rsquo;re writing a simulator.&lt;/p&gt;
&lt;p&gt;Writing this simulator is as much encoding how I think the job of engineering manager works than anything else. If someone said, &amp;ldquo;How would you do the mechanics of the job?,&amp;rdquo; this would be an interactive answer to that question which is neat in a meta way.&lt;/p&gt;
&lt;p&gt;When thinking through the elements of the game and how they work and interact, I started to use (my many) years of seeing these things up close to model how I think they should behave.&lt;/p&gt;
&lt;p&gt;The first part of writing the simulator was mostly coming up with the nouns, the physical objects: projects, engineers, budgets, incidents and then, what sort of attributes they&amp;rsquo;d have. Projects have a timeline, whether or not they are started or not, which team they are assigned to and other things that seemed relevant to the flow of the game.&lt;/p&gt;
&lt;p&gt;But, thinking harder, I started to think of things that &amp;ldquo;real&amp;rdquo; projects have. They have a distribution curve of when they&amp;rsquo;ll actually finish. The individuals that start on a project might not be the same set throughout. And, when you assign a project to an already busy team, each of project takes a little longer (though you as the CTO/manager might not know that until too late).&lt;/p&gt;
&lt;p&gt;I realized that writing a simulator about something you know well, you quickly see where the simulator isn&amp;rsquo;t correct and you add that in. And, before long, I realized I haven&amp;rsquo;t written a generic &amp;ldquo;you&amp;rsquo;re the CTO&amp;rdquo; game but instead an interactive way to explore how I specifically see the job. I believe someone else given this prompt would pick different things to emphasize, objects interacting differently, and likely even different success criteria.&lt;/p&gt;
&lt;p&gt;(Also, I don&amp;rsquo;t think the game is &amp;ldquo;fun&amp;rdquo; yet but I&amp;rsquo;m not sure a simulation of a fairly bureaucratic job would be fun? If it does up being fun, or at least interesting in my eyes, I&amp;rsquo;ll likely open source it but I&amp;rsquo;m not there yet.)&lt;/p&gt;
&lt;p&gt;The other part of this exercise that is interesting is that the game does have some emergent properties. For example, new engineers have some amount of ramp before they are fully productive. New engineers on a project might take longer or make more mistakes (which is natural!). Newer engineers add some risk to projects and missed projects hurt the CTO&amp;rsquo;s standing and lowers the morale of the team. Each of these consequences follow naturally based on some simple rules, but when interacting together, every game is slightly different and somewhat surprising.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The AI hater&#39;s guide to code With LLMs</title>
      <link>https://nolancaudill.com/2026/02/13/ai-haters-guide-to-code-with-llms/</link>
      <pubDate>Fri, 13 Feb 2026 15:08:33 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/13/ai-haters-guide-to-code-with-llms/</guid>
      <description>&lt;p&gt;A fairly clear-eyed view of the LLM landscape. After plugging away with these tools for a few days now, this quote resonates:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Coding with automated systems like this is intoxicating. It’s addictive, because it’s the lootbox effect. We don’t get addicted to rewards. We get addicted to potential rewards. Notice that gamblers aren’t actually motivated by having won. They’re motivated by maybe winning next time. It can lead us to the glassy eyed stare with a bucket of quarters at a slot machine, and it can lead us to 2am “one more prompt, maybe it’ll work this time” in a hurry.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;from &lt;a href=&#34;https://aredridel.dinhe.net/2026/02/12/the-ai-haters-guide-to-code-with-llms/&#34;&gt;The AI hater&amp;rsquo;s guide to code with LLMs (The Overview)&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Blink: A more secure OpenClaw</title>
      <link>https://nolancaudill.com/2026/02/13/blink-a-more-secure-openclaw/</link>
      <pubDate>Fri, 13 Feb 2026 09:56:59 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/13/blink-a-more-secure-openclaw/</guid>
      <description>&lt;p&gt;I have been intrigued by &lt;a href=&#34;https://openclaw.ai&#34;&gt;OpenClaw&lt;/a&gt; &amp;ndash; a system that uses LLM agents to act locally on your behalf, doing things like sorting email, filling out webforms, cleaning up files, etc  &amp;ndash; but the security seemed like a complete afterthought. I was happy for folks using that, but it was something I would not run for myself.&lt;/p&gt;
&lt;p&gt;This, though, looks interesting and well thought-out. I&amp;rsquo;m still not at the point where I&amp;rsquo;d set this up but this is moving things in the right direction.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://coder.com/blog/why-i-ditched-openclaw-and-built-a-more-secure-ai-agent-on-blink-mac-mini&#34;&gt;Why I Ditched OpenClaw and Built a More Secure AI Agent on Blink + Mac Mini&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The community responded with workarounds: layering on firewalls, VPN tunnels, and reverse proxies. These were patches on a system that wasn&amp;rsquo;t built with security at its core. OpenClaw was designed as a single-user local tool that organically grew into something much bigger. Security was bolted on after the fact instead of baked in from the start.&lt;/p&gt;
&lt;p&gt;I wanted everything OpenClaw offered: a personal AI agent on my own hardware, connected to my real tools, available around the clock. But I also wanted a system where the secure setup is the default, without requiring constant hardening and maintenance.&lt;/p&gt;&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <title>Fun with LLMs</title>
      <link>https://nolancaudill.com/2026/02/12/fun-with-llms/</link>
      <pubDate>Thu, 12 Feb 2026 21:41:26 -0800</pubDate>
      <guid>https://nolancaudill.com/2026/02/12/fun-with-llms/</guid>
      <description>&lt;p&gt;I had a lot of fun playing Claude and OpenRouter today, trying out new techniques, prompts and different models. I realize I&amp;rsquo;m about 6 months to 2 years behind a lot of people but this is truly the most fun I&amp;rsquo;ve had writing software in a long long time.&lt;/p&gt;
&lt;p&gt;Just today I&amp;rsquo;ve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Diagnosed a bug with how I was added SSL to the &lt;a href=&#34;https://nolancaudill.com/2026/02/11/hosting-rss/&#34;&gt;miniflux&lt;/a&gt; installation&lt;/li&gt;
&lt;li&gt;Completely revamped my vimrc&lt;/li&gt;
&lt;li&gt;Completely revamped my zshrc&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Wrote&amp;rdquo; a basic test harness and test suite for this blog (in bash, naturally)&lt;/li&gt;
&lt;li&gt;Played with 3-4 different models&lt;/li&gt;
&lt;li&gt;And most fun of all, I sat with our 9 year old this afternoon (who is home because of the &lt;a href=&#34;https://missionlocal.org/2026/02/sf-teachers-strike-sfusd-schools-day-4-live-updates/&#34;&gt;strike&lt;/a&gt;) and wrote a complete browser-based store simulator, where you are a shopkeeper and have to do pricing and inventory management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now I&amp;rsquo;m spending the evening reading about how best to use these tools beyond barking commands at them.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
