<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>machine unlearning</title>
    <link>https://machine-unlearning.com/</link>
    <description></description>
    <pubDate>Wed, 06 May 2026 09:38:47 +0000</pubDate>
    <item>
      <title>A Software Developer&#39;s Taste</title>
      <link>https://machine-unlearning.com/a-software-developers-taste?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[(Edited with Claude)&#xA;&#xA;A few weeks ago, I saw someone on Reddit comment something along the lines of “If you think Claude Code is good, you’re a vibe coder.” The force of my eyes rolling into the back of my head almost killed me.&#xA;&#xA;As I’ve consumed more content about AI-assisted tools, I’ve noticed “taste” mentioned as a differentiating quality between “good” and “bad” software developers. Within the professional software development world, there seems to be a taste stack:&#xA;&#xA;!--more--&#xA;&#xA;Problem Identification: Selecting the right problems and solutions to build&#xA;Tools: Picking the right programming languages, tools, frameworks, etc. for building&#xA;Logic Development:  Building logic that is efficient, extensible and scalable&#xA;Visual Design: Wrapping logic in a usable, design-forward interface&#xA;&#xA;I struggle with how the word “taste” is being used, both because of its entanglement with economic constraints and how it creates an exclusionary binary of good vs. bad developers. Personally, taste is a tool for building an aesthetic, and an aesthetic holds beauty, a point of view. The word is almost a misnomer… it’s really “craftsmanship” that people are referring to.&#xA;&#xA;As software development becomes more accessible, I’m curious if evaluation will move beyond the obvious and into the indescribable, the mysterious, the emotional. What would it mean for someone to say, “That’s a beautiful piece of software” and not refer to anything identifiable? In order to break into this domain, software developers will need to be thought of as creatives rather than engineers.&#xA;&#xA;Food for thought:&#xA;&#xA;Lenny Rachitsky’s interviews with Anthropic’s Ben Mann and Cursor’s Michael Truell&#xA;The Vibe Coding Paradox by Sangeet Paul Choudary&#xA;Vibe Coding as a Software Engineer by Gergely Orosz&#xA;A Survival Guide to a PhD by Andrej Karpathy&#xA;How Vibe Coding Really Works by Alex Glushenkov&#xA;Man Ray on craftsmanship and mystery&#xA;Ira Glass on a creative’s taste]]&gt;</description>
      <content:encoded><![CDATA[<p><em>(Edited with Claude)</em></p>

<p>A few weeks ago, I saw someone on Reddit comment something along the lines of “If you think Claude Code is good, you’re a vibe coder.” The force of my eyes rolling into the back of my head almost killed me.</p>

<p>As I’ve consumed more content about AI-assisted tools, I’ve noticed “taste” mentioned as a differentiating quality between “good” and “bad” software developers. Within the professional software development world, there seems to be a taste stack:</p>


<ul><li>Problem Identification: Selecting the right problems and solutions to build</li>
<li>Tools: Picking the right programming languages, tools, frameworks, etc. for building</li>
<li>Logic Development:  Building logic that is efficient, extensible and scalable</li>
<li>Visual Design: Wrapping logic in a usable, design-forward interface</li></ul>

<p>I struggle with how the word “taste” is being used, both because of its entanglement with economic constraints and how it creates an exclusionary binary of good vs. bad developers. Personally, taste is a tool for building an aesthetic, and an aesthetic holds beauty, a point of view. The word is almost a misnomer… it’s really “craftsmanship” that people are referring to.</p>

<p>As software development becomes more accessible, I’m curious if evaluation will move beyond the obvious and into the indescribable, the mysterious, the emotional. What would it mean for someone to say, “That’s a beautiful piece of software” and not refer to anything identifiable? In order to break into this domain, software developers will need to be thought of as creatives rather than engineers.</p>

<p>Food for thought:</p>
<ul><li>Lenny Rachitsky’s interviews with <a href="https://www.lennysnewsletter.com/p/anthropic-co-founder-benjamin-mann?utm_source=publication-search" title="Anthropic&#39;s Ben Mann">Anthropic’s Ben Mann</a> and <a href="https://www.lennysnewsletter.com/p/the-rise-of-cursor-michael-truell?utm_source=publication-search" title="Cursor&#39;s Michael Truell">Cursor’s Michael Truell</a></li>
<li><a href="https://platforms.substack.com/p/the-vibe-coding-paradox" title="The Vibe Coding Paradox">The Vibe Coding Paradox</a> by Sangeet Paul Choudary</li>
<li><a href="https://newsletter.pragmaticengineer.com/p/vibe-coding-as-a-software-engineer" title="Vibe Coding as a Software Engineer">Vibe Coding as a Software Engineer</a> by Gergely Orosz</li>
<li><a href="https://karpathy.github.io/2016/09/07/phd/" title="A Survival Guide to a PhD">A Survival Guide to a PhD</a> by Andrej Karpathy</li>
<li><a href="https://medium.com/@alexglushenkov/how-vibe-coding-really-works-the-art-and-science-of-coding-with-feeling-2522fb38feb1" title="How Vibe Coding Really Works">How Vibe Coding Really Works</a> by Alex Glushenkov</li>
<li>Man Ray on <a href="https://www.tiktok.com/@artrkl_mag/video/7558127689740143927?_r=1&amp;_t=ZT-90KQConcFDr" title="craftsmanship and mystery">craftsmanship and mystery</a></li>
<li>Ira Glass on <a href="https://www.youtube.com/watch?v=91FQKciKfHI&amp;t=34s" title="a creative&#39;s taste">a creative’s taste</a></li></ul>
]]></content:encoded>
      <guid>https://machine-unlearning.com/a-software-developers-taste</guid>
      <pubDate>Mon, 06 Oct 2025 17:25:49 +0000</pubDate>
    </item>
    <item>
      <title>Bridging the PRD-to-Code Gap While Vibe Coding</title>
      <link>https://machine-unlearning.com/bridging-the-prd-to-code-gap-while-vibe-coding?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[A PRD Isn’t Enough&#xA;&#xA;I’m building out an idea that’s been sitting on the shelf - a platform that allows users to gather around a shared prompt and share incremental updates, centering focus on process rather than product. During MVP development there’s been a lot of trial and error: discarding agent-generated code, re-prompting the agent, moving back to older commits, starting the project over during peak frustration\… A PRD, no matter how well defined, isn’t enough at this point in time for an agent to build a complex system that aligns exactly with the intended. I’m learning that guiding agents successfully, in addition to writing clear requirements, involves reducing their assumptions by setting the development context, building in validation, and specifying end goals for tasks.&#xA;&#xA;Techniques for Moving from PRD to Production&#xA;&#xA;!--more--&#xA;&#xA;During PRD Development:&#xA;&#xA;Ask agent to list questions it’s unsure about in PRD and answer them (Cursor tutorial with Lee Robinson https://www.youtube.com/watch?v=mm8cn53_pdU&amp;t=229s)&#xA;Ask agent to break PRD down into development phases&#xA;&#xA;Setting Cursor Rules Before Building:&#xA;&#xA;Specify using git, the commit message verbosity, and the frequency of commits&#xA;Specify building tests during development and validating development phases against these tests&#xA;&#xA;During Development:&#xA;&#xA;Select the appropriate model for the type of partnership you want (https://docs.cursor.com/en/guides/selecting-models)&#xA;Specify the end goal that you want when you prompt a task or the agent/model will pick an end goal for you (https://www.anthropic.com/news/tracing-thoughts-language-model)&#xA;&#xA;\This reminds me of an Ira Glass interview where he talks about creative work and the frustration creatives feel in the early years of their career when the work they produce doesn’t align with their taste. Coincidentally, a developer’s taste is something I’ve heard mentioned in multiple interviews on vibe coding as a necessity for validating agent solutions. Interesting parallel between taste in work that is considered “creative” traditionally and code built with agents. Are we all turning into storytellers?]]&gt;</description>
      <content:encoded><![CDATA[<h3 id="a-prd-isn-t-enough" id="a-prd-isn-t-enough">A PRD Isn’t Enough</h3>

<p>I’m building out an <a href="https://github.com/nahzhluh/forms" title="idea">idea</a> that’s been sitting on the shelf – a platform that allows users to gather around a shared prompt and share incremental updates, centering focus on process rather than product. During MVP development there’s been a lot of trial and error: discarding agent-generated code, re-prompting the agent, moving back to older commits, starting the project over during peak frustration*… A PRD, no matter how well defined, isn’t enough at this point in time for an agent to build a complex system that aligns exactly with the intended. I’m learning that guiding agents successfully, in addition to writing clear requirements, involves reducing their assumptions by setting the development context, building in validation, and specifying end goals for tasks.</p>

<h3 id="techniques-for-moving-from-prd-to-production" id="techniques-for-moving-from-prd-to-production">Techniques for Moving from PRD to Production</h3>



<h4 id="during-prd-development" id="during-prd-development">During PRD Development:</h4>
<ul><li>Ask agent to list questions it’s unsure about in PRD and answer them (Cursor tutorial with Lee Robinson <iframe allow="monetization" class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fmm8cn53_pdU%3Ffeature%3Doembed%26start%3D229&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dmm8cn53_pdU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fmm8cn53_pdU%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="640" height="360" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe>)</li>
<li>Ask agent to break PRD down into development phases</li></ul>

<h4 id="setting-cursor-rules-before-building" id="setting-cursor-rules-before-building">Setting Cursor Rules Before Building:</h4>
<ul><li>Specify using git, the commit message verbosity, and the frequency of commits</li>
<li>Specify building tests during development and validating development phases against these tests</li></ul>

<h4 id="during-development" id="during-development">During Development:</h4>
<ul><li>Select the appropriate model for the type of partnership you want (<a href="https://docs.cursor.com/en/guides/selecting-models">https://docs.cursor.com/en/guides/selecting-models</a>)</li>
<li>Specify the end goal that you want when you prompt a task or the agent/model will pick an end goal for you (<a href="https://www.anthropic.com/news/tracing-thoughts-language-model">https://www.anthropic.com/news/tracing-thoughts-language-model</a>)</li></ul>

<p>*This reminds me of an <a href="https://www.youtube.com/watch?v=X2wLP0izeJE" title="Ira Glass interview">Ira Glass interview</a> where he talks about creative work and the frustration creatives feel in the early years of their career when the work they produce doesn’t align with their taste. Coincidentally, a developer’s taste is something I’ve heard mentioned in multiple interviews on vibe coding as a necessity for validating agent solutions. Interesting parallel between taste in work that is considered “creative” traditionally and code built with agents. Are we all turning into storytellers?</p>
]]></content:encoded>
      <guid>https://machine-unlearning.com/bridging-the-prd-to-code-gap-while-vibe-coding</guid>
      <pubDate>Tue, 26 Aug 2025 01:15:41 +0000</pubDate>
    </item>
    <item>
      <title>Building a Job Search Tool with Cursor</title>
      <link>https://machine-unlearning.com/building-a-job-search-tool-with-cursor?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[(Edited with Claude)&#xA;&#xA;Job Hunting Sucks&#xA;&#xA;Job hunting is exhausting. My days are a constant juggle between LinkedIn, Claude, Google Docs, and company websites—filtering jobs, evaluating fit, writing custom resumes. Add the pressure to apply quickly (applications submitted closest to posting date get priority) and networking for internal referrals (also get priority), and suddenly my entire day is gone.&#xA;&#xA;So I Built a Script&#xA;&#xA;!--more--&#xA;&#xA;An AI trend I’ve noticed is a shift from one-size-fits-all applications to hyper-personalized ones. Since tools like Cursor lower the barrier to building apps, why not solve your own problems? We used to build generic solutions for maximum reach. Now we&#39;re personalizing everything and building locally to meet individual needs.&#xA;&#xA;So I did what people are doing but probably aren&#39;t discussing publicly—I used Cursor to build Leads, a job tool that streamlines job discovery to application. You can try it out here.&#xA;&#xA;Leads does three things:&#xA;&#xA;Analyzes your resume with Claude to understand what role you&#39;re seeking&#xA;Finds and ranks fresh jobs by how well they match your background and job requirements&#xA;Saves interesting jobs and generates personalized resumes&#xA;&#xA;Working on this for a few days taught me three key lessons about building with AI:&#xA;&#xA;Start Small, Iterate Fast&#xA;&#xA;Originally, I wanted a website to share with friends. I fed Cursor my problem and requirements, and it built something way beyond what I needed. I got lost in UI details trying to remove elements.&#xA;&#xA;So I put on my MVP hat: I needed something quickly (built within a day), just for me, no UI necessary and a script was enough. I scrapped everything and worked iteratively—first job scraper, then job analysis, then relevancy scoring, and so on. Got a proof of concept within an hour or two.&#xA;&#xA;Test as You Build&#xA;&#xA;Building piece by piece let me test individual components and build confidence to keep going. The Cursor agent often builds tests unprompted, and catching issues early beats debugging a massive codebase later. The agent also doesn’t always build what you intend, so manual oversight is still necessary. Forget the Waterfall model and get to validation quickly.&#xA;&#xA;Clean Up Your Code&#xA;&#xA;Iterative development with agents creates redundancy because the agents aren’t always building off of previous work. For example, Leads initially had three identical if statements for match scoring (High/Medium/Low)—same logic, just different title styles. I pointed this out and prompted Cursor to &#34;refactor and deduplicate code when appropriate,&#34; and it cleaned things up nicely. Not necessary for functionality, but crucial for scalability.&#xA;&#xA;The biggest efficiency gain? Caching API results. All that iterative testing burned through my Anthropic credits fast. I had Cursor cache Claude&#39;s analyses— resumes, keywords, job listings, personalized resumes — making the script faster and cheaper.&#xA;&#xA;The Reality&#xA;&#xA;Within a few days, without writing code myself, I built something that significantly reduces time spent on applications. I feel less drained and can focus on learning new skills and doing things that bring me joy.&#xA;&#xA;But I won&#39;t lie… part of my soul died building this. It&#39;s wild that I could do it so quickly, and wilder that this is what staying competitive looks like. Yet it&#39;s also an evolution in using AI tools that are quickly becoming industry standard.&#xA;&#xA;Please don&#39;t ban me, LinkedIn.&#xA;&#xA;---&#xA;&#xA;(No Editing)&#xA;&#xA;Job Hunting Sucks&#xA;&#xA;A problem I’ve had recently is managing my energy while job hunting. My days consist of:&#xA;&#xA;Filtering jobs for my requirements&#xA;Evaluating if I’m a good fit&#xA;Writing custom resumes&#xA;&#xA;I’m trying to accomplish one task, which is applying to a job, but it requires hopping back and forth between LinkedIn, Claude, Google Docs and company website. Add in trying to apply to x number of jobs and then networking to find an internal referral and my day is gone. Not only is it exhausting, but there’s added pressure to do it quickly because applications submitted closest to the job posting date have a higher chance of being reviewed.&#xA;&#xA;So I Built a Script&#xA;&#xA;One AI trend I’ve noticed is a shift from large scale on-size-fits-all applications to hyper personalized ones. Since vibe coding lowers the barrier to entry for developing an app, it costs less to build something for yourself, so why not do it. In addition, existing apps can use AI to build in personalization so that each user gets a different experience based on their needs. We used to build generic apps to meet the needs of as many customers as possible. Now we’re personalizing existing apps and building locally to meet the needs of even more customers.&#xA;&#xA;So I did what people are doing but probably aren’t publicly discussing - I used Cursor to build Leads, a job tool that streamlines the three actions to quickly move me from job discovery to application. You can find and use Leads here.&#xA;&#xA;Leads will:&#xA;&#xA;Analyze your resume with Claud&#xA;&#xA;Understand what role you&#39;re seeking&#xA;&#xA;Find fresh jobs matching your criteria&#xA;&#xA;Rank them by how well they match your background and industry preferences&#xA;&#xA;Displays jobs ranked by match quality (High/Medium/Low) with confidence scores&#xA;&#xA;Saves jobs of interest and generates personalized resumes with Claud&#xA;&#xA;I’ve been working on this on and off for a few days, the majority of my time being spent scoping the application, validating the functionality, refactoring and improving efficiency/lowering cost.&#xA;&#xA;Scoping the application&#xA;&#xA;Originally I wanted to build a website to share with friends so I fed Cursor my problem and requirements. It built something that went beyond what I needed and I started getting in the weeds of the UI. So I put my MVP hat on - I needed an app quickly (built within a day), only for myself at the minimum, and I didn’t need a UI - a script was more than enough. I asked the agent to scrap everything and worked on the script iteratively: first job scraper, second job analysis, third job relevancy… and so on. This got me exactly what I needed much faster, honestly within an hour or two.&#xA;&#xA;Validating the functionality&#xA;&#xA;By building iteratively, I was able to test the individual pieces as I developed and build confidence to keep going. I used to test software in a former life, so I’m familiar building extensive test plans for new features. Cursor can build tests to validate functionality (often unprompted), and testing as you go rather than waiting until the very end simplifies debugging and gets you to a proof of concept faster.&#xA;&#xA;Refactoring&#xA;&#xA;Because I built iteratively, the Cursor agent generated code that had a lot of redundancy. For example, Leads generates a match score (High, Medium, Low) for each job based on your skills. Initially, it had three if statements for each match level and within those statement if listed keywords and reasoning. The code worked, but styling the matches differently, the code between the three statements was identical.&#xA;&#xA;  if high match,&#xA;      style with green circle&#xA;      add keywords&#xA;    add reasoning&#xA;      if medium match, &#xA;      style with yellow circle&#xA;      add keywords&#xA;      add reasoning&#xA;    if low match, &#xA;      style with red circle&#xA;      add keywords&#xA;      add reasoning&#xA;&#xA;Having written code before, I recognized that the shared actions could be moved out of the if statements. With that observation, I prompted Cursor to refactor by deduplicate code when appropriate and it cleaned things up nicely. Is this necessary for the application to function correctly? No, but reducing unnecessary code is an important principle for building a scalable application.&#xA;&#xA;Improving Efficiency&#xA;&#xA;Along scalability lines, because I was doing so much iterative testing, I was calling Claude over and over for the same analyses and quickly ran out of Anthropic API credit. Here’s where my technical background came in handy. I prompted the Cursor agent to cache results when Claude was called: analyzing resumes, analyzing keywords, analyzing job listings, generative personalized resumes. Reducing API calls to only when necessary made the script faster and saves me money as I continue to use the tool.&#xA;&#xA;Conclusion&#xA;&#xA;Within a few days and without writing any code myself, I built a script that significantly reduces the amount of time I spend on job applications. I feel less drained and can focus time on learning new skills and doing things that bring me joy. I won’t lie though… there’s a part of my soul that died building this script. It’s wild that I was able to do it so quickly and that this is what I need to do to stay competitive in the current job market. But it’s also an evolution to using AI tools that are quickly becoming industry standard. Please don’t ban me, LinkedIn.]]&gt;</description>
      <content:encoded><![CDATA[<p><em>(Edited with Claude)</em></p>

<h1 id="job-hunting-sucks" id="job-hunting-sucks">Job Hunting Sucks</h1>

<p>Job hunting is exhausting. My days are a constant juggle between LinkedIn, Claude, Google Docs, and company websites—filtering jobs, evaluating fit, writing custom resumes. Add the pressure to apply quickly (applications submitted closest to posting date get priority) and networking for internal referrals (also get priority), and suddenly my entire day is gone.</p>

<h2 id="so-i-built-a-script" id="so-i-built-a-script">So I Built a Script</h2>



<p>An AI trend I’ve noticed is a shift from one-size-fits-all applications to hyper-personalized ones. Since tools like Cursor lower the barrier to building apps, why not solve your own problems? We used to build generic solutions for maximum reach. Now we&#39;re personalizing everything and building locally to meet individual needs.</p>

<p>So I did what people are doing but probably aren&#39;t discussing publicly—I used Cursor to build Leads, a job tool that streamlines job discovery to application. <a href="https://github.com/nahzhluh/leads" title="You can try it out here">You can try it out here</a>.</p>

<p><img src="https://i.snap.as/iEdVVSDb.png" alt=""/></p>

<p><strong>Leads does three things:</strong></p>
<ul><li>Analyzes your resume with Claude to understand what role you&#39;re seeking</li>
<li>Finds and ranks fresh jobs by how well they match your background and job requirements</li>
<li>Saves interesting jobs and generates personalized resumes</li></ul>

<p>Working on this for a few days taught me three key lessons about building with AI:</p>

<h2 id="start-small-iterate-fast" id="start-small-iterate-fast">Start Small, Iterate Fast</h2>

<p>Originally, I wanted a website to share with friends. I fed Cursor my problem and requirements, and it built something way beyond what I needed. I got lost in UI details trying to remove elements.</p>

<p>So I put on my MVP hat: I needed something quickly (built within a day), just for me, no UI necessary and a script was enough. I scrapped everything and worked iteratively—first job scraper, then job analysis, then relevancy scoring, and so on. Got a proof of concept within an hour or two.</p>

<h2 id="test-as-you-build" id="test-as-you-build">Test as You Build</h2>

<p>Building piece by piece let me test individual components and build confidence to keep going. The Cursor agent often builds tests unprompted, and catching issues early beats debugging a massive codebase later. The agent also doesn’t always build what you intend, so manual oversight is still necessary. Forget the Waterfall model and get to validation quickly.</p>

<h2 id="clean-up-your-code" id="clean-up-your-code">Clean Up Your Code</h2>

<p>Iterative development with agents creates redundancy because the agents aren’t always building off of previous work. For example, Leads initially had three identical if statements for match scoring (High/Medium/Low)—same logic, just different title styles. I pointed this out and prompted Cursor to “refactor and deduplicate code when appropriate,” and it cleaned things up nicely. Not necessary for functionality, but crucial for scalability.</p>

<p>The biggest efficiency gain? <strong>Caching API results.</strong> All that iterative testing burned through my Anthropic credits fast. I had Cursor cache Claude&#39;s analyses— resumes, keywords, job listings, personalized resumes — making the script faster and cheaper.</p>

<h2 id="the-reality" id="the-reality">The Reality</h2>

<p>Within a few days, without writing code myself, I built something that significantly reduces time spent on applications. I feel less drained and can focus on learning new skills and doing things that bring me joy.</p>

<p>But I won&#39;t lie… part of my soul died building this. It&#39;s wild that I could do it so quickly, and wilder that this is what staying competitive looks like. Yet it&#39;s also an evolution in using AI tools that are quickly becoming industry standard.</p>

<p>Please don&#39;t ban me, LinkedIn.</p>

<hr/>

<p><em>(No Editing)</em></p>

<p><strong>Job Hunting Sucks</strong></p>

<p>A problem I’ve had recently is managing my energy while job hunting. My days consist of:</p>
<ul><li>Filtering jobs for my requirements</li>
<li>Evaluating if I’m a good fit</li>
<li>Writing custom resumes</li></ul>

<p>I’m trying to accomplish one task, which is applying to a job, but it requires hopping back and forth between LinkedIn, Claude, Google Docs and company website. Add in trying to apply to x number of jobs and then networking to find an internal referral and my day is gone. Not only is it exhausting, but there’s added pressure to do it quickly because applications submitted closest to the job posting date have a higher chance of being reviewed.</p>

<p><strong>So I Built a Script</strong></p>

<p>One AI trend I’ve noticed is a shift from large scale on-size-fits-all applications to hyper personalized ones. Since vibe coding lowers the barrier to entry for developing an app, it costs less to build something for yourself, so why not do it. In addition, existing apps can use AI to build in personalization so that each user gets a different experience based on their needs. We used to build generic apps to meet the needs of as many customers as possible. Now we’re personalizing existing apps and building locally to meet the needs of even more customers.</p>

<p>So I did what people are doing but probably aren’t publicly discussing – I used Cursor to build Leads, a job tool that streamlines the three actions to quickly move me from job discovery to application. You can find and use Leads <a href="https://github.com/nahzhluh/leads" title="here">here</a>.</p>

<p>Leads will:</p>
<ol><li><p>Analyze your resume with Claud</p></li>

<li><p>Understand what role you&#39;re seeking</p></li>

<li><p>Find fresh jobs matching your criteria</p></li>

<li><p>Rank them by how well they match your background and industry preferences</p></li>

<li><p>Displays jobs ranked by match quality (High/Medium/Low) with confidence scores</p></li>

<li><p>Saves jobs of interest and generates personalized resumes with Claud</p></li></ol>

<p>I’ve been working on this on and off for a few days, the majority of my time being spent scoping the application, validating the functionality, refactoring and improving efficiency/lowering cost.</p>

<p><strong>Scoping the application</strong></p>

<p>Originally I wanted to build a website to share with friends so I fed Cursor my problem and requirements. It built something that went beyond what I needed and I started getting in the weeds of the UI. So I put my MVP hat on – I needed an app quickly (built within a day), only for myself at the minimum, and I didn’t need a UI – a script was more than enough. I asked the agent to scrap everything and worked on the script iteratively: first job scraper, second job analysis, third job relevancy… and so on. This got me exactly what I needed much faster, honestly within an hour or two.</p>

<p><strong>Validating the functionality</strong></p>

<p>By building iteratively, I was able to test the individual pieces as I developed and build confidence to keep going. I used to test software in a former life, so I’m familiar building extensive test plans for new features. Cursor can build tests to validate functionality (often unprompted), and testing as you go rather than waiting until the very end simplifies debugging and gets you to a proof of concept faster.</p>

<p><strong>Refactoring</strong></p>

<p>Because I built iteratively, the Cursor agent generated code that had a lot of redundancy. For example, Leads generates a match score (High, Medium, Low) for each job based on your skills. Initially, it had three if statements for each match level and within those statement if listed keywords and reasoning. The code worked, but styling the matches differently, the code between the three statements was identical.</p>

<blockquote><p><code>if high match,</code></p>

<p><code>style with green circle</code></p>

<pre><code> `add keywords`

 `add reasoning`
</code></pre>

<p><code>if medium match,</code></p>

<p><code>style with yellow circle</code></p>

<p><code>add keywords</code></p>

<p><code>add reasoning</code></p>

<p><code>if low match,</code></p>

<p><code>style with red circle</code></p>

<p><code>add keywords</code></p>

<p><code>add reasoning</code></p></blockquote>

<p>Having written code before, I recognized that the shared actions could be moved out of the if statements. With that observation, I prompted Cursor to refactor by deduplicate code when appropriate and it cleaned things up nicely. Is this necessary for the application to function correctly? No, but reducing unnecessary code is an important principle for building a scalable application.</p>

<p><strong>Improving Efficiency</strong></p>

<p>Along scalability lines, because I was doing so much iterative testing, I was calling Claude over and over for the same analyses and quickly ran out of Anthropic API credit. Here’s where my technical background came in handy. I prompted the Cursor agent to cache results when Claude was called: analyzing resumes, analyzing keywords, analyzing job listings, generative personalized resumes. Reducing API calls to only when necessary made the script faster and saves me money as I continue to use the tool.</p>

<p><strong>Conclusion</strong></p>

<p>Within a few days and without writing any code myself, I built a script that significantly reduces the amount of time I spend on job applications. I feel less drained and can focus time on learning new skills and doing things that bring me joy. I won’t lie though… there’s a part of my soul that died building this script. It’s wild that I was able to do it so quickly and that this is what I need to do to stay competitive in the current job market. But it’s also an evolution to using AI tools that are quickly becoming industry standard. Please don’t ban me, LinkedIn.</p>
]]></content:encoded>
      <guid>https://machine-unlearning.com/building-a-job-search-tool-with-cursor</guid>
      <pubDate>Mon, 04 Aug 2025 23:02:13 +0000</pubDate>
    </item>
    <item>
      <title>Product Prompting: Using Product Thinking to Guide LLMs Beyond the Flash</title>
      <link>https://machine-unlearning.com/product-prompting-using-product-thinking-to-guide-llms-beyond-the-flash?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[(Edited with Claude)&#xA;&#xA;My first attempts using vibe coding to build apps gave results that were flashy but lacked substance. A few weeks ago, I got frustrated using iMessage to coordinate a spontaneous hangout with friends. What was supposed to be an easy trip to our local bar turned into hours of back-and-forth texts. By the time we settled on a time, my internal battery was depleted.&#xA;&#xA;Curious, I did what most people are probably doing—I opened a few vibe coding tools and entered the same prompt:&#xA;&#xA;  I want to build an app that helps me schedule casual and spontaneous hangouts with friends.&#xA;&#xA;!--more--&#xA;&#xA;It was magical watching applications build in real-time, but the solutions were more complicated than what I actually wanted to use. Claude and Lovable immediately started building. Cursor was different—it prompted me with key questions to scope the idea down.&#xA;&#xA;  Claude&#xA;    Lovable&#xA;    Cursor&#xA;&#xA;This got me thinking: is there a product equivalent to prompt engineering? A set of techniques to guide vibe coding into producing answers that align with product thinking? We know the LLMs matter, but prompt engineering shows that how you interact with an LLM is just as important.&#xA;&#xA;---&#xA;&#xA;A Framework for Product-Led LLM Development&#xA;&#xA;Over the past few weeks, I&#39;ve been experimenting with simple product development using Cursor. I&#39;m sure my techniques will evolve—soon I might even have my own agent based on my individual style of product development. But here&#39;s a starting point for using chatbots with product thinking.&#xA;&#xA;Start with the User Problem&#xA;&#xA;Like any product framework, begin by identifying the user problem you&#39;re trying to solve. The advantage of feeding this into an agent is turning it into a thinking partner. You&#39;re not solutioning yet—use the bot to think big and move quickly through possibilities.&#xA;&#xA;Identify Your User Segment&#xA;&#xA;Just because it can code before your eyes doesn&#39;t mean the solution will be valuable. You still need to understand who you&#39;re building for. Once the agent knows your user problem, prompt it to ideate on potential user segments and select the one that best fits.&#xA;&#xA;Define User Success&#xA;&#xA;Now that you have your problem and user segment, identify what success looks like: What actions should users be able to complete? How should they feel when using your application? This should inform the solution, not the other way around.&#xA;&#xA;Set Constraints and Ideate Solutions&#xA;&#xA;With user success defined, start ideating on solutions with constraints: platform (web, mobile, script), level of polish (MVP/MLP), tech stack preferences, core features and scalability requirements. The more you define, the more tailored the agent’s recommendations become.&#xA;&#xA;Select a Solution and Ask for Architecture Options&#xA;&#xA;As the PM/Engineer, you still need to use your &#34;taste&#34; to identify if the architecture of a solution will work in your context. For example, agents aren&#39;t great at building scalable applications yet. Try prompt engineering techniques: ask for alternative architectures or question whether the recommended architecture is scalable.&#xA;&#xA;Why This Matters&#xA;&#xA;With these techniques, you can use product thinking to guide vibe coding agents toward viable solutions without building anything first. This criteria can become a detailed PRD (you can even use the agent to review it), or you can prompt it to start building a solution immediately.&#xA;&#xA;The result? Higher control over the solution and something that&#39;s actually valuable to potential users, not just impressive to watch being built.]]&gt;</description>
      <content:encoded><![CDATA[<p><em>(Edited with Claude)</em></p>

<p>My first attempts using vibe coding to build apps gave results that were flashy but lacked substance. A few weeks ago, I got frustrated using iMessage to coordinate a spontaneous hangout with friends. What was supposed to be an easy trip to our local bar turned into hours of back-and-forth texts. By the time we settled on a time, my internal battery was depleted.</p>

<p>Curious, I did what most people are probably doing—I opened a few vibe coding tools and entered the same prompt:</p>

<blockquote><p>I want to build an app that helps me schedule casual and spontaneous hangouts with friends.</p></blockquote>



<p>It was magical watching applications build in real-time, but the solutions were more complicated than what I actually wanted to use. Claude and Lovable immediately started building. Cursor was different—it prompted me with key questions to scope the idea down.</p>

<blockquote><p><img src="https://i.snap.as/UZtTQSdo.png" alt=""/><em>Claude</em></p>

<p><img src="https://i.snap.as/TsgILc7k.png" alt=""/><em>Lovable</em></p>

<p><img src="https://i.snap.as/6XYRmDAq.png" alt=""/><em>Cursor</em></p></blockquote>

<p>This got me thinking: is there a product equivalent to prompt engineering? A set of techniques to guide vibe coding into producing answers that align with product thinking? We know the LLMs matter, but prompt engineering shows that <em>how</em> you interact with an LLM is just as important.</p>

<hr/>

<h2 id="a-framework-for-product-led-llm-development" id="a-framework-for-product-led-llm-development">A Framework for Product-Led LLM Development</h2>

<p>Over the past few weeks, I&#39;ve been experimenting with simple product development using Cursor. I&#39;m sure my techniques will evolve—soon I might even have my own agent based on my individual style of product development. But here&#39;s a starting point for using chatbots with product thinking.</p>

<h3 id="start-with-the-user-problem" id="start-with-the-user-problem">Start with the User Problem</h3>

<p>Like any product framework, begin by identifying the user problem you&#39;re trying to solve. The advantage of feeding this into an agent is turning it into a thinking partner. You&#39;re not solutioning yet—use the bot to think big and move quickly through possibilities.</p>

<h3 id="identify-your-user-segment" id="identify-your-user-segment">Identify Your User Segment</h3>

<p>Just because it can code before your eyes doesn&#39;t mean the solution will be valuable. You still need to understand <em>who</em> you&#39;re building for. Once the agent knows your user problem, prompt it to ideate on potential user segments and select the one that best fits.</p>

<h3 id="define-user-success" id="define-user-success">Define User Success</h3>

<p>Now that you have your problem and user segment, identify what success looks like: What actions should users be able to complete? How should they feel when using your application? This should inform the solution, not the other way around.</p>

<h3 id="set-constraints-and-ideate-solutions" id="set-constraints-and-ideate-solutions">Set Constraints and Ideate Solutions</h3>

<p>With user success defined, start ideating on solutions with constraints: platform (web, mobile, script), level of polish (MVP/MLP), tech stack preferences, core features and scalability requirements. The more you define, the more tailored the agent’s recommendations become.</p>

<h3 id="select-a-solution-and-ask-for-architecture-options" id="select-a-solution-and-ask-for-architecture-options">Select a Solution and Ask for Architecture Options</h3>

<p>As the PM/Engineer, you still need to use your “taste” to identify if the architecture of a solution will work in your context. For example, agents aren&#39;t great at building scalable applications yet. Try prompt engineering techniques: ask for alternative architectures or question whether the recommended architecture is scalable.</p>

<h2 id="why-this-matters" id="why-this-matters">Why This Matters</h2>

<p>With these techniques, you can use product thinking to guide vibe coding agents toward viable solutions without building anything first. This criteria can become a detailed PRD (you can even use the agent to review it), or you can prompt it to start building a solution immediately.</p>

<p>The result? Higher control over the solution and something that&#39;s actually valuable to potential users, not just impressive to watch being built.</p>
]]></content:encoded>
      <guid>https://machine-unlearning.com/product-prompting-using-product-thinking-to-guide-llms-beyond-the-flash</guid>
      <pubDate>Thu, 31 Jul 2025 20:11:54 +0000</pubDate>
    </item>
    <item>
      <title>Initial Thoughts on AI-Powered Coding Assistants as a PM</title>
      <link>https://machine-unlearning.com/initial-thoughts-on-ai-powered-coding-assistants-as-a-pm?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[(Edited with Claude)&#xA;&#xA;I haven&#39;t coded professionally since 2018, but those late nights debugging in my college&#39;s CS lab &#34;dungeon&#34; are burned into my memory. A few weeks ago, I decided to experiment with AI-powered coding assistants to understand how they might fit into my Product Management workflow.&#xA;&#xA;My first attempt was ambitious—I fed the same prompt to multiple assistants to compare their solutions. While there was magic in watching software appear from a few words, the results felt overly complicated. The UI choices were distracting, and I couldn&#39;t easily visualize the project structure. These tools excelled at helping me &#34;work backwards&#34; and refine my problem, but I wanted something more tangible.&#xA;&#xA;So I simplified. I decided to build a basic personal website with Cursor, and managed to go from nothing to hosted in just a few hours. It blew my mind.&#xA;&#xA;!--more--&#xA;&#xA;What Made the Difference&#xA;&#xA;Cursor&#39;s agent provides enough abstraction to let me focus on what I want to build instead of how to code it. The integrated IDE eliminated constant context switching between tools, letting me stay in a flow state longer. I could focus on ideation and building without the usual tool-hopping friction.&#xA;&#xA;Initially, I was hesitant to dive into an IDE. As a PM, I&#39;m used to tools that enhance problem discovery and high-level planning—not getting deep into code. I worried that being too close to implementation would add unnecessary work to my plate. I also wasn&#39;t sure my rusty coding skills would be enough to make Cursor valuable.&#xA;&#xA;What I discovered was the opposite. The time invested gave me a deeper understanding of the development process and made it easy to explore ideas without creating distractions. The agent made it less about knowing specific programming languages and more about clearly specifying what I wanted and debugging when things went wrong.&#xA;&#xA;If you&#39;re intimidated: a basic intro programming course is enough to get started. These skills are very attainable for PMs and lead to better collaboration.&#xA;&#xA;The Elephant in the Room&#xA;&#xA;There&#39;s an unspoken tension when PMs start prototyping or mocking up experiences: are we overstepping into our designers&#39; or engineers&#39; responsibilities? At Apple, they called your direct responsibilities your &#34;sphere of influence&#34;—working outside it was a big no-no. It&#39;s a relic of the hierarchy that&#39;s been historically necessary to coordinate thousands of employees building for millions of customers.&#xA;&#xA;The truth is, the person who&#39;ll excel at AI-assisted development is probably a TPM—someone who can identify customer problems worth solving while understanding enough about design, engineering, and testing to keep things moving. But I hesitate to even write this because there&#39;s so much pressure across roles to maintain relevancy, and these rigid role definitions are something the industry needs to evolve past.&#xA;&#xA;At the end of the day, if a team is truly collaborating, there&#39;s very little ego about how they reached a solution.&#xA;&#xA;Why This Matters&#xA;&#xA;AI-powered coding assistants make me excited to build software again. With Cursor, I built something tangible quickly while learning along the way. I feel satisfied with what I created and motivated to turn more ideas into reality.&#xA;&#xA;Bottom line: it&#39;s the most fun I&#39;ve had coding, maybe ever.&#xA;&#xA;I truly believe we&#39;re approaching a future where people currently labeled as &#34;non-technical&#34; will be capable of end-to-end software development. Don&#39;t let the big, bad, dark mode IDE stop you.&#xA;&#xA;---&#xA;&#xA;(No AI Modification)&#xA;&#xA;I haven’t coded professionally since 2018 but the late nights I spent debugging code in my college’s “dungeon” (CS lab) are burned into my memory. A few weeks ago, I started messing around with AI-powered coding assistants to better understand how they can be integrated into my Product Management workflow, so I entered the same prompt into a few assistants to see how their solutions differed. There was magic in seeing software being built so quickly from a few words, but I found the solutions overly complicated, the UI design choices distracting, and visualizing the project structure difficult. They were great for practicing “working backwards” and refining the problem I was trying to solve but I wanted a mutable skeleton.&#xA;&#xA;I abandoned the experiment and focused on something simpler, building a basic personal website, and I was able to build one, from nothing to hosted, with Cursor in a few hours. It blew my mind.&#xA;&#xA;Cursor’s agent provides enough coding abstraction to focus my attention on defining what I want to build instead of the programming language I am using. In addition, the agent being integrated into the IDE reduces the amount of context switching I’m doing investigating how to implement a component or debugging an issue in the code base. It felt easier to focus on ideation and building for a longer period of time because I wasn’t hopping back and forth between different tools.&#xA;&#xA;There are plenty of AI-powered coding assistants to choose from these days and I was hesitant to dive into an IDE off the bat. Being a PM there’s an emphasis on using tools that only enhance productivity related to problem discovery, high-level ideation, and development planning, and I thought being that close to code again would add unnecessary work to my plate. To be honest I also wasn’t sure if my coding experience would be enough for the tool to be valuable to me since Cursor is marketed towards “technical” folks. What I found was that the time I did invest into building a solution with Cursor paid off in a deeper understanding of the development process and made it easy to investigate curiosities without creating distractions.&#xA;&#xA;While having some experience with coding was helpful for using the IDE, the agent made it less about knowing how to write code in a specific language and more about knowing how to specify what I wanted and how to debug the system when something went wrong. If you’re intimidated, a basic intro-level programming course is enough to get started using Cursor. I’d like to write up some tips in another post but for now I want to emphasize that these skills are very attainable for Product Managers and make for better collaboration.&#xA;&#xA;There’s an elephant in the room that needs to be acknowledged when we talk about PMs using AI-assisted coding assistants. At most companies, there’s an unspoken tension between PMs and their partners during collaboration… if I, the PM, mock up an experience or engineer a prototype, am I overstepping into my designer’s or my engineer’s responsibilities? When I worked at Apple, your direct responsibilities were called your “sphere of influence”… working past your sphere was a big no no. It’s a relic of the hierarchy that’s been necessary historically to build many interrelated products across different organizations with thousands of employees for millions and millions of customers.&#xA;&#xA;If we really want to stick to the way Software Development companies have defined roles in the past 5 years, the truth is that the type of person that will excel doing AI-assisted software development is a TPM, a generalist who can clearly identify and define customer/business problems worth solving in addition to understanding a little bit of everything in the cycle to get things moving: design, engineering, testing, etc. But I hesitate to even write this because there is so much pressure across roles to maintain relevancy and the hard line between the way roles are defined is something the industry needs to evolve past. At the end of the day, if a team is truly collaborating, there is very little ego about how they reached a solution.&#xA;&#xA;Tangent aside, AI-powered coding assistants make me excited to build software. With Cursor, I was able to build something tangible quickly and learn along the way. I feel satisfied with the project I built and motivated to continue turning ideas into a reality. Bottom line - It’s the most fun I’ve had coding maybe ever. If Cursor were to add functionality for non-technical users, I would love for the agent to suggest or integrate prompt engineering techniques into its outputs. This would increase satisfaction with the agent’s outputs and help users move past the friction of development roadblocks.&#xA;&#xA;I truly believe there’s a future not too far from now where people who are currently labeled as non-technical will be capable of end-to-end software development. Don’t let the big, bad, dark mode IDE stop you.]]&gt;</description>
      <content:encoded><![CDATA[<p><em>(Edited with Claude)</em></p>

<p>I haven&#39;t coded professionally since 2018, but those late nights debugging in my college&#39;s CS lab “dungeon” are burned into my memory. A few weeks ago, I decided to experiment with AI-powered coding assistants to understand how they might fit into my Product Management workflow.</p>

<p>My first attempt was ambitious—I fed the same prompt to multiple assistants to compare their solutions. While there was magic in watching software appear from a few words, the results felt overly complicated. The UI choices were distracting, and I couldn&#39;t easily visualize the project structure. These tools excelled at helping me “work backwards” and refine my problem, but I wanted something more tangible.</p>

<p>So I simplified. I decided to build a basic personal website with Cursor, and managed to go from nothing to hosted in just a few hours. It blew my mind.</p>



<h2 id="what-made-the-difference" id="what-made-the-difference">What Made the Difference</h2>

<p>Cursor&#39;s agent provides enough abstraction to let me focus on <em>what</em> I want to build instead of <em>how</em> to code it. The integrated IDE eliminated constant context switching between tools, letting me stay in a flow state longer. I could focus on ideation and building without the usual tool-hopping friction.</p>

<p>Initially, I was hesitant to dive into an IDE. As a PM, I&#39;m used to tools that enhance problem discovery and high-level planning—not getting deep into code. I worried that being too close to implementation would add unnecessary work to my plate. I also wasn&#39;t sure my rusty coding skills would be enough to make Cursor valuable.</p>

<p>What I discovered was the opposite. The time invested gave me a deeper understanding of the development process and made it easy to explore ideas without creating distractions. The agent made it less about knowing specific programming languages and more about clearly specifying what I wanted and debugging when things went wrong.</p>

<p>If you&#39;re intimidated: a basic intro programming course is enough to get started. These skills are very attainable for PMs and lead to better collaboration.</p>

<h2 id="the-elephant-in-the-room" id="the-elephant-in-the-room">The Elephant in the Room</h2>

<p>There&#39;s an unspoken tension when PMs start prototyping or mocking up experiences: are we overstepping into our designers&#39; or engineers&#39; responsibilities? At Apple, they called your direct responsibilities your “sphere of influence”—working outside it was a big no-no. It&#39;s a relic of the hierarchy that&#39;s been historically necessary to coordinate thousands of employees building for millions of customers.</p>

<p>The truth is, the person who&#39;ll excel at AI-assisted development is probably a TPM—someone who can identify customer problems worth solving while understanding enough about design, engineering, and testing to keep things moving. But I hesitate to even write this because there&#39;s so much pressure across roles to maintain relevancy, and these rigid role definitions are something the industry needs to evolve past.</p>

<p>At the end of the day, if a team is truly collaborating, there&#39;s very little ego about how they reached a solution.</p>

<h2 id="why-this-matters" id="why-this-matters">Why This Matters</h2>

<p>AI-powered coding assistants make me excited to build software again. With Cursor, I built something tangible quickly while learning along the way. I feel satisfied with what I created and motivated to turn more ideas into reality.</p>

<p>Bottom line: it&#39;s the most fun I&#39;ve had coding, maybe ever.</p>

<p>I truly believe we&#39;re approaching a future where people currently labeled as “non-technical” will be capable of end-to-end software development. Don&#39;t let the big, bad, dark mode IDE stop you.</p>

<hr/>

<p><em>(No AI Modification)</em></p>

<p>I haven’t coded professionally since 2018 but the late nights I spent debugging code in my college’s “dungeon” (CS lab) are burned into my memory. A few weeks ago, I started messing around with AI-powered coding assistants to better understand how they can be integrated into my Product Management workflow, so I entered the same prompt into a few assistants to see how their solutions differed. There was magic in seeing software being built so quickly from a few words, but I found the solutions overly complicated, the UI design choices distracting, and visualizing the project structure difficult. They were great for practicing “working backwards” and refining the problem I was trying to solve but I wanted a mutable skeleton.</p>

<p>I abandoned the experiment and focused on something simpler, building a basic personal website, and I was able to build one, from nothing to hosted, with Cursor in a few hours. It blew my mind.</p>

<p>Cursor’s agent provides enough coding abstraction to focus my attention on defining what I want to build instead of the programming language I am using. In addition, the agent being integrated into the IDE reduces the amount of context switching I’m doing investigating how to implement a component or debugging an issue in the code base. It felt easier to focus on ideation and building for a longer period of time because I wasn’t hopping back and forth between different tools.</p>

<p>There are plenty of AI-powered coding assistants to choose from these days and I was hesitant to dive into an IDE off the bat. Being a PM there’s an emphasis on using tools that only enhance productivity related to problem discovery, high-level ideation, and development planning, and I thought being that close to code again would add unnecessary work to my plate. To be honest I also wasn’t sure if my coding experience would be enough for the tool to be valuable to me since Cursor is marketed towards “technical” folks. What I found was that the time I did invest into building a solution with Cursor paid off in a deeper understanding of the development process and made it easy to investigate curiosities without creating distractions.</p>

<p>While having some experience with coding was helpful for using the IDE, the agent made it less about knowing how to write code in a specific language and more about knowing how to specify what I wanted and how to debug the system when something went wrong. If you’re intimidated, a basic intro-level programming course is enough to get started using Cursor. I’d like to write up some tips in another post but for now I want to emphasize that these skills are very attainable for Product Managers and make for better collaboration.</p>

<p>There’s an elephant in the room that needs to be acknowledged when we talk about PMs using AI-assisted coding assistants. At most companies, there’s an unspoken tension between PMs and their partners during collaboration… if I, the PM, mock up an experience or engineer a prototype, am I overstepping into my designer’s or my engineer’s responsibilities? When I worked at Apple, your direct responsibilities were called your “sphere of influence”… working past your sphere was a big no no. It’s a relic of the hierarchy that’s been necessary historically to build many interrelated products across different organizations with thousands of employees for millions and millions of customers.</p>

<p>If we really want to stick to the way Software Development companies have defined roles in the past 5 years, the truth is that the type of person that will excel doing AI-assisted software development is a TPM, a generalist who can clearly identify and define customer/business problems worth solving in addition to understanding a little bit of everything in the cycle to get things moving: design, engineering, testing, etc. But I hesitate to even write this because there is so much pressure across roles to maintain relevancy and the hard line between the way roles are defined is something the industry needs to evolve past. At the end of the day, if a team is truly collaborating, there is very little ego about how they reached a solution.</p>

<p>Tangent aside, AI-powered coding assistants make me excited to build software. With Cursor, I was able to build something tangible quickly and learn along the way. I feel satisfied with the project I built and motivated to continue turning ideas into a reality. Bottom line – It’s the most fun I’ve had coding maybe ever. If Cursor were to add functionality for non-technical users, I would love for the agent to suggest or integrate prompt engineering techniques into its outputs. This would increase satisfaction with the agent’s outputs and help users move past the friction of development roadblocks.</p>

<p>I truly believe there’s a future not too far from now where people who are currently labeled as non-technical will be capable of end-to-end software development. Don’t let the big, bad, dark mode IDE stop you.</p>
]]></content:encoded>
      <guid>https://machine-unlearning.com/initial-thoughts-on-ai-powered-coding-assistants-as-a-pm</guid>
      <pubDate>Thu, 31 Jul 2025 18:26:58 +0000</pubDate>
    </item>
    <item>
      <title>Software as Craft: Finding Hope in the AI Revolution</title>
      <link>https://machine-unlearning.com/looking-towards-software-development-as-craft?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[(Edited with Claude)&#xA;&#xA;It&#39;s impossible to escape the doom and gloom think pieces about how AI will impact tech—most of them fixated on the &#34;death of the software developer.&#34; As AI enhances existing development tooling, it&#39;s natural that developers will work at higher levels of abstraction and existing processes will become obsolete.&#xA;&#xA;But this feels more like evolution than death. The way we communicate with computers is becoming closer to how we communicate with humans. There&#39;s a shift from identifying developers by the languages they write to the problems they solve.&#xA;&#xA;Yes, this transformation is important. Yes, we need to understand AI&#39;s moral and ethical impact on humanity. But what interests me is how AI might help software move beyond Tech and into Craft.&#xA;&#xA;!--more--&#xA;&#xA;The Liberation of Programming Languages&#xA;&#xA;As AI integrates into development processes, our existing non-AI programming languages and tooling lose their commercial value. They become liberated from the constraints of capitalism: revenue targets, business objectives, scale requirements, performance metrics, growth imperatives.&#xA;&#xA;When there&#39;s no external objective other than creation, software development can become a &#34;capital C&#34; Craft.&#xA;&#xA;Think about traditional crafts—weaving, woodworking, papermaking. Many practitioners deliberately reject modern machinery, not because it&#39;s inefficient, but because it removes the mark of the human hand. I can imagine new software communities forming with similar principles, refusing AI-assisted tooling for the sole purpose of highlighting human creativity and intention.&#xA;&#xA;A Different Kind of Software Creativity&#xA;&#xA;This new motivation could lead to forms of software creativity we&#39;ve never seen before. It&#39;s the rebirth of a medium: programming languages that seem inefficient under current market drivers become languages that allow deeper levels of control under a new purpose.&#xA;&#xA;Imagine software built not for users or revenue, but for the pure joy of creation. Code written as poetry. Applications that prioritize beauty over functionality. Digital experiences crafted with the same intentionality as hand-thrown pottery.&#xA;&#xA;A Seed of Positivity&#xA;&#xA;In all the rubble of AI disruption discourse, here&#39;s something genuinely exciting: the possibility that software development could rediscover its soul as a craft. Not everything has to scale. Not everything has to optimize for engagement or conversion.&#xA;&#xA;Sometimes, the most meaningful work happens when we choose the harder path—not because it&#39;s more efficient, but because it&#39;s more human.&#xA;&#xA;---&#xA;&#xA;(Original - No AI Modification)&#xA;&#xA;It’s impossible to escape the doom and gloom think pieces anticipating how AI will impact the Tech industry, the majority of it focused on the death of the Software Developer. As AI enhances existing Software Development tooling (programming languages, IDEs, models, data analysis, project management), it’s natural that Software Developers will work at a higher level of abstraction and existing processes will become obsolete. This change is more of an evolution than a death… the way we communicate with computers is becoming closer to how we communicate between humans and there’s a shift from identifying a developer by the computer languages they write to the problems they solve. And yes, this is important, and yes, it’s also important to understand moral and ethical impact of AI on humans as a whole, but what is interesting to me is how AI will help Software move beyond Tech and into Craft. As AI integrates into Software Development processes, our existing non-AI assisted programming languages/tooling are no longer seen as valuable and will be liberated from the constraints of Capitalism: revenue, business objectives, scale, performance, growth, etc. When there is no external objective other than creation, Software Development can turn into a ‘capital C’ Craft. Similar to how traditional Crafts (weaving, woodworking, papermaking \wink wink\) reject modern machinery, there can be the formation of new Software communities that refuse AI-assisted decision-making in their tooling solely for the purpose of highlighting the mark of the human hand. This new motivation could lead to a different form of Software creativity beyond what we’ve seen, and that’s exciting! It’s the rebirth of a medium: a programming language that is now seen as inefficient under current drivers becomes a language that allows a deeper lever of control under a new purpose. A seed of positivity in the rubble.&#xA;&#xA;---&#xA;&#xA;Food for thought:&#xA;&#xA;https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/&#xA;https://sourcegraph.com/blog/chat-oriented-programming-in-action&#xA;https://www.404media.co/microsoft-study-finds-ai-makes-human-cognition-atrophied-and-unprepared-3/&#xA;https://sciodev.com/blog/what-is-the-meaning-of-true-craftsmanship-in-software-development-2/&#xA;https://manifesto.softwarecraftsmanship.org]]&gt;</description>
      <content:encoded><![CDATA[<p><em>(Edited with Claude)</em></p>

<p>It&#39;s impossible to escape the doom and gloom think pieces about how AI will impact tech—most of them fixated on the “death of the software developer.” As AI enhances existing development tooling, it&#39;s natural that developers will work at higher levels of abstraction and existing processes will become obsolete.</p>

<p>But this feels more like evolution than death. The way we communicate with computers is becoming closer to how we communicate with humans. There&#39;s a shift from identifying developers by the languages they write to the problems they solve.</p>

<p>Yes, this transformation is important. Yes, we need to understand AI&#39;s moral and ethical impact on humanity. But what interests me is how AI might help software move beyond Tech and into Craft.</p>



<h2 id="the-liberation-of-programming-languages" id="the-liberation-of-programming-languages">The Liberation of Programming Languages</h2>

<p>As AI integrates into development processes, our existing non-AI programming languages and tooling lose their commercial value. They become liberated from the constraints of capitalism: revenue targets, business objectives, scale requirements, performance metrics, growth imperatives.</p>

<p>When there&#39;s no external objective other than creation, software development can become a “capital C” Craft.</p>

<p>Think about traditional crafts—weaving, woodworking, papermaking. Many practitioners deliberately reject modern machinery, not because it&#39;s inefficient, but because it removes the mark of the human hand. I can imagine new software communities forming with similar principles, refusing AI-assisted tooling for the sole purpose of highlighting human creativity and intention.</p>

<h2 id="a-different-kind-of-software-creativity" id="a-different-kind-of-software-creativity">A Different Kind of Software Creativity</h2>

<p>This new motivation could lead to forms of software creativity we&#39;ve never seen before. It&#39;s the rebirth of a medium: programming languages that seem inefficient under current market drivers become languages that allow deeper levels of control under a new purpose.</p>

<p>Imagine software built not for users or revenue, but for the pure joy of creation. Code written as poetry. Applications that prioritize beauty over functionality. Digital experiences crafted with the same intentionality as hand-thrown pottery.</p>

<h2 id="a-seed-of-positivity" id="a-seed-of-positivity">A Seed of Positivity</h2>

<p>In all the rubble of AI disruption discourse, here&#39;s something genuinely exciting: the possibility that software development could rediscover its soul as a craft. Not everything has to scale. Not everything has to optimize for engagement or conversion.</p>

<p>Sometimes, the most meaningful work happens when we choose the harder path—not because it&#39;s more efficient, but because it&#39;s more human.</p>

<hr/>

<p><em>(Original – No AI Modification)</em></p>

<p>It’s impossible to escape the doom and gloom think pieces anticipating how AI will impact the Tech industry, the majority of it focused on the death of the Software Developer. As AI enhances existing Software Development tooling (programming languages, IDEs, models, data analysis, project management), it’s natural that Software Developers will work at a higher level of abstraction and existing processes will become obsolete. This change is more of an evolution than a death… the way we communicate with computers is becoming closer to how we communicate between humans and there’s a shift from identifying a developer by the computer languages they write to the problems they solve. And yes, this is important, and yes, it’s also important to understand moral and ethical impact of AI on humans as a whole, but what is interesting to me is how AI will help Software move beyond Tech and into Craft. As AI integrates into Software Development processes, our existing non-AI assisted programming languages/tooling are no longer seen as valuable and will be liberated from the constraints of Capitalism: revenue, business objectives, scale, performance, growth, etc. When there is no external objective other than creation, Software Development can turn into a ‘capital C’ Craft. Similar to how traditional Crafts (weaving, woodworking, papermaking *wink wink*) reject modern machinery, there can be the formation of new Software communities that refuse AI-assisted decision-making in their tooling solely for the purpose of highlighting the mark of the human hand. This new motivation could lead to a different form of Software creativity beyond what we’ve seen, and that’s exciting! It’s the rebirth of a medium: a programming language that is now seen as inefficient under current drivers becomes a language that allows a deeper lever of control under a new purpose. A seed of positivity in the rubble.</p>

<hr/>

<p>Food for thought:</p>
<ul><li><a href="https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/" title="The End of Programming as We Know It">https://www.oreilly.com/radar/the-end-of-programming-as-we-know-it/</a></li>
<li><a href="https://sourcegraph.com/blog/chat-oriented-programming-in-action">https://sourcegraph.com/blog/chat-oriented-programming-in-action</a></li>
<li><a href="https://www.404media.co/microsoft-study-finds-ai-makes-human-cognition-atrophied-and-unprepared-3/">https://www.404media.co/microsoft-study-finds-ai-makes-human-cognition-atrophied-and-unprepared-3/</a></li>
<li><a href="https://sciodev.com/blog/what-is-the-meaning-of-true-craftsmanship-in-software-development-2/">https://sciodev.com/blog/what-is-the-meaning-of-true-craftsmanship-in-software-development-2/</a></li>
<li><a href="https://manifesto.softwarecraftsmanship.org/">https://manifesto.softwarecraftsmanship.org</a></li></ul>
]]></content:encoded>
      <guid>https://machine-unlearning.com/looking-towards-software-development-as-craft</guid>
      <pubDate>Mon, 03 Mar 2025 21:57:28 +0000</pubDate>
    </item>
  </channel>
</rss>