<?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 Murat Useinov</title>
    <link>https://useinov.com/tags/ai/</link>
    <description>Recent content in Ai on Murat Useinov</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 10 Oct 2025 21:30:00 +0300</lastBuildDate>
    <atom:link href="https://useinov.com/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Coding agents meet legacy PHP</title>
      <link>https://useinov.com/posts/2025/agents-and-legacy/</link>
      <pubDate>Fri, 10 Oct 2025 21:30:00 +0300</pubDate>
      <guid>https://useinov.com/posts/2025/agents-and-legacy/</guid>
      <description>&lt;p&gt;A strange-looking condition in a 2015 module, &amp;ldquo;fixed&amp;rdquo; by an agent. All tests green, static analysis clean, and the condition was a business rule with history. My review caught it. Barely.&lt;/p&gt;
&lt;p&gt;That came out of an experiment I ran this month: a coding agent on one legacy PHP module, since agents can do multi-file changes now and every old codebase suddenly looks like a target.&lt;/p&gt;
&lt;p&gt;The setup matters more than the model. I did not ask &amp;ldquo;modernize this&amp;rdquo;. I gave a narrow migration goal on one bounded module: replace a deprecated API, add proper namespaces, keep behavior. The same shape of task I would give to Rector. The difference is that the agent also handles the irregular cases Rector cannot express, the places where people wrote creative code in 2015.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI assistants do not know your production</title>
      <link>https://useinov.com/posts/2023/ai-assistants-limits/</link>
      <pubDate>Sat, 23 Dec 2023 10:40:00 +0300</pubDate>
      <guid>https://useinov.com/posts/2023/ai-assistants-limits/</guid>
      <description>&lt;p&gt;A DTO with a dozen fields, a framework migration, a slow query incident. Three tasks from the last few months, all done with Copilot and ChatGPT open. Here is where the line runs for me.&lt;/p&gt;
&lt;p&gt;Task one, boilerplate. The DTO, its validation rules, a test with fixtures. The assistant writes this faster than I type, and the result needs only a quick read. Same for converting an array-shaped legacy structure into typed classes. This is honest time saved, maybe an hour a day. The code is the kind where being generic is correct.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
