<?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>Ai on Liam Asman&#39;s Blog</title>
    <link>https://liamasman.com/blog/tags/ai/</link>
    <description>Recent content in Ai on Liam Asman&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-GB</language>
    <copyright>Copyright © 2025, Liam Asman.</copyright>
    <lastBuildDate>Thu, 17 Apr 2025 18:00:00 +0100</lastBuildDate>
    <atom:link href="https://liamasman.com/blog/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Vibe Coding</title>
      <link>https://liamasman.com/blog/posts/2025/04/vibe-coding/</link>
      <pubDate>Thu, 17 Apr 2025 18:00:00 +0100</pubDate>
      <guid>https://liamasman.com/blog/posts/2025/04/vibe-coding/</guid>
      <description>&lt;p&gt;&amp;ldquo;Vibe Coding&amp;rdquo; is a term used to describe the creation of software simply by&#xA;prompting an LLM, and accepting whatever it outputs.&lt;/p&gt;&#xA;&lt;p&gt;Although the term soon became the butt of some jokes, I believe there is a place&#xA;for &amp;lsquo;Vibe Coding&amp;rsquo; in serious software development.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;    &#xA;    &#xA;    &#xA;    &#xA;        &#xA;        &lt;img src=&#34;https://liamasman.com/blog/posts/2025/04/vibe-coding/vibe-tweet_hu_b6a0507b350a280f.png&#34; alt=&#34;Post on X (formerly known as Twitter) by Andrej Karpathy (@karpathy). 11:17pm, 2 February 2025. There\&amp;#39;s a new kind of coding I call \&amp;#34;vibe coding\&amp;#34;, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It\&amp;#39;s possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like \&amp;#34;decrease the padding on the sidebar by half\&amp;#34; because I\&amp;#39;m too lazy to find it. I \&amp;#34;Accept All\&amp;#34; always, I don\&amp;#39;t read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I\&amp;#39;d have to really read through it for a while. Sometimes the LLMs can\&amp;#39;t fix a bug so I just work around it or ask for random changes until it goes away. It\&amp;#39;s not too bad for throwaway weekend projects, but still quite amusing. I\&amp;#39;m building a project or webapp, but it\&amp;#39;s not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.&#34; class=&#34;post-img&#34; title=&#34;I&amp;#39;m not sure about the term, but Andrej has a point about it being &amp;#39;Not bad for throwaway weekend projects&amp;#39;&#34; loading=&#34;lazy&#34;&gt;&#xA;    &#xA;&#xA;&lt;span class=&#34;img-caption&#34;&gt;&#xA;    &#xA;Andrej Karpathy has been credited with coining the term &#34;Vibe Coding&#34;.&#xA;&#xA;&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>&ldquo;Vibe Coding&rdquo; is a term used to describe the creation of software simply by
prompting an LLM, and accepting whatever it outputs.</p>
<p>Although the term soon became the butt of some jokes, I believe there is a place
for &lsquo;Vibe Coding&rsquo; in serious software development.</p>
<p>


    
    
    
    
        
        <img src="https://liamasman.com/blog/posts/2025/04/vibe-coding/vibe-tweet_hu_b6a0507b350a280f.png" alt="Post on X (formerly known as Twitter) by Andrej Karpathy (@karpathy). 11:17pm, 2 February 2025. There\&#39;s a new kind of coding I call \&#34;vibe coding\&#34;, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It\&#39;s possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like \&#34;decrease the padding on the sidebar by half\&#34; because I\&#39;m too lazy to find it. I \&#34;Accept All\&#34; always, I don\&#39;t read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I\&#39;d have to really read through it for a while. Sometimes the LLMs can\&#39;t fix a bug so I just work around it or ask for random changes until it goes away. It\&#39;s not too bad for throwaway weekend projects, but still quite amusing. I\&#39;m building a project or webapp, but it\&#39;s not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works." class="post-img" title="I&#39;m not sure about the term, but Andrej has a point about it being &#39;Not bad for throwaway weekend projects&#39;" loading="lazy">
    

<span class="img-caption">
    
Andrej Karpathy has been credited with coining the term "Vibe Coding".

</span></p>
<p>Let&rsquo;s be clear; this is not a replacement for software development. Unchecked,
untested code should not make its way to production. I do not believe AI will be
a replacement for programmers any time soon, and certainly not in its current
state.</p>
<p>What AI can do is improve a developer&rsquo;s productivity. If I do not know how to
build an iOS app, AI can get me started, or if I do not know a particular API, AI
can point me in the right direction. This is AI used as a learning aid. All the
AI&rsquo;s output should be read, understood. Anything that is confusing should be
clarified and verified. Production code should be tested, and the test cases
designed by a human.</p>
<p>If I need to write a suite of similar looking tests, AI can help me generate them.
This is AI used as a productivity tool to remove tedious, repetitive tasks. Again,
all the AI&rsquo;s output should be checked.</p>
<p>&lsquo;Vibe coding&rsquo;, at its extreme, involves blindly accepting whatever the LLM has
generated. We do not check the output, we do not understand it. We run the
program, and if it does something wrong, we tell the AI to fix it. Edge cases
are ignored, and the code is not backed by a comprehensive test suite.
This is code that is fragile. This is code that is unmaintainable.</p>
<p>This is code that is not fit for production.</p>
<p>But it is fit for a prototype. It is fit for a proof of concept. It is fit for a
hackathon.</p>
<p>To build good software fast, we need an engineering mindset. We need to test
early and often and get fast feedback. A common issue in commercial software
development is that the business doesn&rsquo;t know what it wants, or isn&rsquo;t aware of
all the issues or edge cases that need business consideration.</p>
<p>A prototype that can be built quickly with vibe coding can be shown to the
business team and used to gather feedback. It can be used to explore the
problem space. It can be used to explore the solution space. It can be used to
explore the user experience. It can be used to explore the technology stack.
It can be used to explore the business model.</p>
<p>Once you have your feedback, and you move to writing production quality software,
the vibe code may be referenced, but picked from with consideration. Standard
software engineering practices should be followed; pair-programming and test-driven-development
must not be forgotten about. Ensure those that see the prototype understand that
it is an early prototype for gathering feedback, and not production quality code -
we all know how sales people can take a prototype and run with it!</p>
<p>I expect that in the future AI will be a competent pair-programmer. I do not
think we are at that stage yet. To blindly trust AI code would be a mistake. But
we do not need to trust it for it to be useful.</p>
<p>So get vibing! Try it yourself, but remember to set boundaries. Start a dialogue
with your teams about how to use AI in your software development process.
Finally, share your experiences! The more we share our experiences of using AI,
the faster the engineering community can learn and adapt to this rapidly
evolving technology.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
