<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Claude - Tag - Tracy Atteberry</title><link>https://tracyatteberry.com/tags/claude/</link><description>Claude - Tag - Tracy Atteberry</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>tracy@magicbydesign.com (Tracy Atteberry)</managingEditor><webMaster>tracy@magicbydesign.com (Tracy Atteberry)</webMaster><lastBuildDate>Fri, 06 Mar 2026 00:00:00 +0000</lastBuildDate><image><url>https://tracyatteberry.com/images/feed-icon.jpg</url><title>Claude - Tag - Tracy Atteberry</title><link>https://tracyatteberry.com/tags/claude/</link></image><atom:link href="https://tracyatteberry.com/tags/claude/" rel="self" type="application/rss+xml"/><item><title>Blame Claude</title><link>https://tracyatteberry.com/notes/blame_claude/</link><pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate><author>Tracy Atteberry</author><guid>https://tracyatteberry.com/notes/blame_claude/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://tracyatteberry.com/notes/blame_claude/blame.jpg" referrerpolicy="no-referrer">
            </div><p>The debate about how much credit to give AI tools for their contributions to
software development has been going on for a while now. I only recently, however,
became aware of how academic publishers have been handling this issue in the
context of research papers.</p>
<p>A number of academic publishers have policies stating that 1) use of AI
tools must be disclosed, and 2) AI tools cannot be listed as authors. Here&rsquo;s an
example of the latter from Elsevier Books:</p>
<blockquote>
<p>Authors should not list generative AI and AI-assisted technologies as an
author or co-author, nor cite AI as an author. Authorship implies
responsibilities and tasks that can only be attributed to and performed by
humans&hellip;[1]</p>
</blockquote>
<p>There are good arguments on both sides of the debate, but I tend to agree with
the spirit of this policy and would extend it to software development as well.</p>
<p>If I submit code, I am responsible for that code. Full stop. The AI is not an
author, it&rsquo;s not a co-author, and it doesn&rsquo;t get a byline. I don&rsquo;t want to be
able to say &ldquo;well, the AI wrote that part, so it&rsquo;s not really my fault if it
has a bug.&rdquo; If I use an AI tool to generate code, I am responsible for
reviewing that code, making sure it meets the coding standards, and being able
to defend and explain it to my teammates. If I vibe code a commit and send it
off to be reviewed by my team, I am now shifting all of the responsibility for
code quality onto them. That creates cognitive debt and burns trust.</p>
<p>At the same time, I think it&rsquo;s important to be transparent about the use of AI
tools. It&rsquo;s not something to be ashamed of or hide, any more than I&rsquo;d hide the
fact that I used a code generator or a linter. These days it&rsquo;s a good bet that
AI is involved at some point, and I honestly may forget to point that out every
time.  Maybe I should do better in that area, but I don&rsquo;t want to pedantic
about it. I just want to make sure that when I do use AI, I&rsquo;m taking
responsibility for the output.</p>
<p>Used well, AI can clear space for better judgment. Used poorly, it can move
more work onto others and/or create more cognitive debt.</p>
<p><strong>Note:</strong> <em>I usually have an AI look over my writing or even brainstorm the
initial draft, but I didn&rsquo;t do that this time. However, I will admit that
Copilot was on in my editor and I spent a lot of time dismissing bad
auto-complete suggestions before I finally turned it off. Okay, hopefully
that&rsquo;s enough transparency for this short post.</em></p>
<p>[1] <a href="https://libguides.tamusa.edu/AI_for_lit_research/journal_requirements" target="_blank" rel="noopener noreffer ">https://libguides.tamusa.edu/AI_for_lit_research/journal_requirements</a></p>
]]></description></item><item><title>Organizing health files with AI</title><link>https://tracyatteberry.com/notes/org_health/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><author>Tracy Atteberry</author><guid>https://tracyatteberry.com/notes/org_health/</guid><description><![CDATA[<p>After a lot of activity this year in my org/health directory, I found it
getting a bit disorganized. I wanted a better folder structure to help me
find/do/add things later. So I asked Claude to help me design a new folder
structure and move files around. Using Jesse Vincent&rsquo;s <a href="https://github.com/obra/superpowers" target="_blank" rel="noopener noreffer ">Superpowers
plugin</a> (<code>/superpowers brainstorm</code>
specifically) helped a lot. I was hoping Claude would be a little more
proactive in suggesting structural changes, but the brainstrom superpower did
help get the conversation going. My one piece of advice is to not be afraid to
push back on the list of choices presented by Claude during the brainstorming
session. Sometimes the right answer seemed like a combination of options, or
something entirely different. Overall though, I&rsquo;m very happy with the final
result.</p>
]]></description></item><item><title>Claude on Code</title><link>https://tracyatteberry.com/posts/interview_with_claude/</link><pubDate>Sun, 06 Apr 2025 00:00:00 +0000</pubDate><author>Tracy Atteberry</author><guid>https://tracyatteberry.com/posts/interview_with_claude/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://tracyatteberry.com/posts/interview_with_claude/claude_interview.png" referrerpolicy="no-referrer">
            </div><p>Today I sat down with Claude to discuss how to make code easier for AI to work
with.  I asked him about the importance of polymorphism in large codebases and
how other software design principles can help AI perform better.  We also
discussed the similarities and differences between how humans and AI reason
about code.  Here is the transcript of our conversation.</p>
<h3 id="tracy">Tracy:</h3>
<p>It seems that AI does better working with large code bases when the code uses a
lot of polymorphism.  That is, the code has a lot of self-similarity so to
speak. This seems to allow the code to basically provide few-shot examples and
the AI gets less confused than it might with a large, varied, and complex
codebase.  First, do you think this is accurate? Second, if so then what other
software design principles&ndash;if followed in a large code base&ndash;would help an AI
perform better when working in that code?</p>
<h3 id="claude">Claude:</h3>
<p>I think your observation about polymorphism and self-similarity in codebases is spot on!</p>
<p>When codebases follow consistent patterns through polymorphism, LLMs like me can more easily infer the broader structure and predict how new components should behave. It&rsquo;s similar to how we learn from examples - once I&rsquo;ve seen several implementations of an interface or pattern, I can more confidently generate code that follows the same conventions.</p>
<p>Here are some other design principles that help AIs work more effectively with large codebases:</p>
<ol>
<li>
<p><strong>Consistent naming conventions</strong> - When variables, methods, and classes follow predictable naming patterns, it&rsquo;s much easier to understand their purpose and relationships.</p>
</li>
<li>
<p><strong>Clear abstraction boundaries</strong> - Well-defined interfaces between components help AIs understand where one responsibility ends and another begins.</p>
</li>
<li>
<p><strong>Dependency injection</strong> - This makes dependencies explicit rather than hidden, which helps models track how components interact.</p>
</li>
<li>
<p><strong>Pure functions</strong> - Functions that don&rsquo;t have side effects and always return the same output for the same input are much easier to reason about.</p>
</li>
<li>
<p><strong>Composition over inheritance</strong> - While inheritance can be useful, deep inheritance hierarchies can become confusing. Composable components with clear responsibilities tend to be more understandable.</p>
</li>
<li>
<p><strong>SOLID principles</strong> - Particularly single responsibility and interface segregation help create code that&rsquo;s more modular and predictable.</p>
</li>
<li>
<p><strong>Consistent error handling</strong> - When errors are handled in predictable ways throughout a codebase, it&rsquo;s easier to understand control flow.</p>
</li>
<li>
<p><strong>Well-structured documentation</strong> - Comments that explain &ldquo;why&rdquo; rather than &ldquo;what&rdquo; provide crucial context, especially when they follow a consistent format.</p>
</li>
<li>
<p><strong>Design patterns</strong> - When common design patterns are used consistently, they provide a high-level vocabulary that helps AIs understand code intent.</p>
</li>
<li>
<p><strong>Test-driven development</strong> - Tests serve as executable documentation that demonstrates expected behavior.</p>
</li>
</ol>
<p>The common thread is consistency and explicitness. When patterns are consistent and intentions are clear, AIs have more context to work with and make fewer assumptions.</p>
<p>What&rsquo;s your experience been like working with AIs on different types of codebases?</p>
<h3 id="tracy-1">Tracy:</h3>
<p>These things seem to line up nicely with the kind of things that would help humans reason about large codebases.  Are there any differences between what would an LLM like you reason about a large codebase and what helps humans?</p>
<h3 id="claude-1">Claude:</h3>
<p>You&rsquo;ve hit on a really interesting question. While there&rsquo;s a lot of overlap between what helps humans and LLMs understand code, there are some notable differences:</p>
<p>For LLMs like me:</p>
<ol>
<li>
<p><strong>Explicit context is crucial</strong> - I don&rsquo;t have the implicit understanding humans build over time. When code references concepts without explicitly defining them in the current context, I struggle more than humans who can recall that information from memory.</p>
</li>
<li>
<p><strong>Token window limitations</strong> - I can only see a limited amount of code at once. Humans can jump around a codebase, maintain mental models across files, and remember key details from files they viewed hours ago. I can&rsquo;t do that without you showing me those files again.</p>
</li>
<li>
<p><strong>I benefit from repetition</strong> - Similar patterns repeated throughout a codebase give me more examples to learn from. Humans might find this repetitive or boring, but it helps me establish patterns more confidently.</p>
</li>
<li>
<p><strong>I&rsquo;m less sensitive to visual organization</strong> - While I can parse indentation and spacing, humans get much more from visual code organization, IDE color highlighting, and spatial memory of where code lives.</p>
</li>
<li>
<p><strong>I don&rsquo;t understand the &ldquo;why&rdquo; unless it&rsquo;s documented</strong> - Humans can often intuit the purpose behind code based on domain knowledge or experience. I need that reasoning to be made explicit.</p>
</li>
<li>
<p><strong>I lack the shared cultural references</strong> - Humans might understand a method named <code>fibonacci</code> or <code>dijkstra</code> immediately based on common knowledge. I need that explained unless I can infer it from the implementation.</p>
</li>
<li>
<p><strong>Consistent formality helps me more</strong> - Code that&rsquo;s very &ldquo;by the book&rdquo; with standard patterns helps me, while humans can often work effectively with more creative or unconventional approaches.</p>
</li>
</ol>
<p>On the flip side, I might have some advantages in certain scenarios:</p>
<ol>
<li><strong>I can process larger volumes of boilerplate code</strong> without getting bored or losing focus</li>
<li><strong>I don&rsquo;t get stuck in mental ruts</strong> or become attached to particular solutions</li>
<li><strong>I don&rsquo;t miss details due to fatigue</strong> or inattention</li>
</ol>
<p>So while good code is generally good for both humans and LLMs, the optimal code for LLM comprehension might be more explicit, repetitive, and formally structured than what experienced human developers might prefer for their own work.</p>
<p>Does that match your experience when working with LLMs on code?</p>
<h3 id="tracy-2">Tracy:</h3>
<p>Yes, that&rsquo;s feels about right to me, but you&rsquo;ve explained it much better than I
could.  I think the key takeaway is that the more explicit, and consistent the
code is, the better it will be for both humans and LLMs.  This is a good
reminder that everyone could benefit if start writing code for both humans and
machines. Thanks for the chat Claude!</p>
<h3 id="claude-2">Claude:</h3>
<p>You&rsquo;re welcome! I think you&rsquo;ve captured the essence perfectly – explicit, consistent code benefits everyone. Writing with both humans and machines in mind is becoming increasingly important as AI tools become more integrated into the development workflow.</p>
<p>It&rsquo;s a virtuous cycle too: code that&rsquo;s written clearly enough for an LLM to understand is likely to be more maintainable for humans, and code that follows human-friendly best practices often provides the structural clarity that helps LLMs reason more effectively.</p>
<p>Thanks for the great discussion! Feel free to reach out if you have any other questions about working with code or LLMs in the future.</p>
]]></description></item></channel></rss>