<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kevin Smith</title>
    <description>The latest articles on DEV Community by Kevin Smith (@kevinsmith_iaastha).</description>
    <link>https://dev.to/kevinsmith_iaastha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4214791%2Fd60d9305-63f8-49bd-abe4-8d0882a7ce7b.png</url>
      <title>DEV Community: Kevin Smith</title>
      <link>https://dev.to/kevinsmith_iaastha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kevinsmith_iaastha"/>
    <language>en</language>
    <item>
      <title>Technical Due Diligence: The Three Questions Investors Really Ask</title>
      <dc:creator>Kevin Smith</dc:creator>
      <pubDate>Fri, 30 Oct 2026 07:23:10 +0000</pubDate>
      <link>https://dev.to/kevinsmith_iaastha/technical-due-diligence-the-three-questions-investors-really-ask-4466</link>
      <guid>https://dev.to/kevinsmith_iaastha/technical-due-diligence-the-three-questions-investors-really-ask-4466</guid>
      <description>&lt;p&gt;Technical due diligence is often treated as a formality, a checklist item after the term sheet handled by whichever engineer has a spare afternoon. That is a mistake for investors, who inherit risks no pitch deck shows, and for founders, who miss a chance to turn engineering maturity into an advantage.&lt;/p&gt;

&lt;p&gt;I recently read &lt;a href="https://iaastha.com/insights/blog/technical-due-diligence-investors/" rel="noopener noreferrer"&gt;iAastha's article on technical due diligence for investors&lt;/a&gt;, and its framing is the clearest I have seen. Good diligence is not a code-quality audit for its own sake. It answers three questions that map directly to investment risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three questions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Can the product scale&lt;/strong&gt; with the growth the business plan assumes?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can the team maintain and extend it&lt;/strong&gt;, including people not yet hired?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much lives in one person's head&lt;/strong&gt; instead of in the system?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those matter more than any individual code smell. A slightly messy codebase from a team that ships fast, tests critical paths and documents decisions is a better bet than pristine code with no tests, no CI and one founder who is the only person able to deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Red flags worth weighting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No automated tests on paths that touch money or user data (checkout, auth, fund movement), even if overall coverage is low.&lt;/li&gt;
&lt;li&gt;A single point of failure in people or access.&lt;/li&gt;
&lt;li&gt;Infrastructure costs that will multiply once growth accelerates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  For founders
&lt;/h2&gt;

&lt;p&gt;Prepare weeks ahead. Write down architecture decisions, make deploys boring and repeatable, spread knowledge across the team, and know your cost curve. Diligence then becomes a conversation where you demonstrate control, not a test you hope to survive.&lt;/p&gt;

&lt;p&gt;If you are on either side of a funding round, the full piece, &lt;a href="https://iaastha.com/insights/blog/technical-due-diligence-investors/" rel="noopener noreferrer"&gt;Technical Due Diligence: What Investors Actually Need to Know&lt;/a&gt;, is a practical framework you can use immediately.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>engineering</category>
    </item>
    <item>
      <title>Strangler Fig Pattern: Modernizing One Business Capability at a Time</title>
      <dc:creator>Kevin Smith</dc:creator>
      <pubDate>Thu, 29 Oct 2026 10:37:01 +0000</pubDate>
      <link>https://dev.to/kevinsmith_iaastha/strangler-fig-pattern-modernizing-one-business-capability-at-a-time-2ke</link>
      <guid>https://dev.to/kevinsmith_iaastha/strangler-fig-pattern-modernizing-one-business-capability-at-a-time-2ke</guid>
      <description>&lt;p&gt;Most enterprises carry at least one system nobody wants to touch and nobody can replace overnight. A full rewrite looks tidy on a slide, but it hides risk until cut-over day, when every undocumented behavior surfaces at once. This is my summary of a walkthrough by the iAastha team on a safer alternative: the strangler fig pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Martin Fowler described the approach in 2004: gradually create a new system around the edges of the old. Each capability goes through three moves: &lt;strong&gt;transform&lt;/strong&gt; (build the new implementation of one capability), &lt;strong&gt;coexist&lt;/strong&gt; (run old and new behind a routing layer), and &lt;strong&gt;eliminate&lt;/strong&gt; (remove the old path once the new one has earned trust).&lt;/p&gt;

&lt;h2&gt;
  
  
  The worked example
&lt;/h2&gt;

&lt;p&gt;The article uses a hypothetical account-notification service inside a monolith: password resets, failed-payment alerts and statement-ready messages. Notifications are customer-visible and event-driven, so inputs and outputs are easy to observe and compare, which makes them a good first slice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Draw the boundary and build the seam.&lt;/strong&gt; Define the capability in one sentence, agree the contract (input event with a unique ID, output message plus delivery record, and a guarantee that one event never produces two sends), then add a facade that initially sends 100 percent of traffic to the legacy path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan coexistence.&lt;/strong&gt; Keep one system of record per data set, avoid dual writes, make everything idempotent, and run the new service in shadow mode before it sends anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route with a canary strategy.&lt;/strong&gt; Shift traffic by account cohort rather than random request, so a customer never gets half their alerts from each system. Canary suits moving a capability; blue-green suits releasing new versions of the new service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare behavior before trusting it.&lt;/strong&gt; Store both decisions per event and compare meaningful fields such as recipient, channel, template and timing. Sort each mismatch into new-service bug, legacy bug customers rely on, or acceptable difference, and agree pass criteria with the capability owner in advance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retire the old path on purpose.&lt;/strong&gt; Keep it warm through one full business cycle, then freeze changes, remove the routing fallback, archive historical data and delete the legacy code and jobs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Shrink the unit of change until each step is small enough to reverse. Old code left "just in case" keeps costing patches, infrastructure and on-call knowledge, so retirement deserves a checklist and an owner.&lt;/p&gt;

&lt;p&gt;The full article, including a traffic-routing simulator and the retirement checklist, is on the original post: &lt;a href="https://iaastha.com/insights/blog/strangler-fig-pattern-modernize-one-business-capability-at-a-time/" rel="noopener noreferrer"&gt;https://iaastha.com/insights/blog/strangler-fig-pattern-modernize-one-business-capability-at-a-time/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>legacy</category>
      <category>devops</category>
      <category>migration</category>
    </item>
    <item>
      <title>AI Access Control: Setting Boundaries Before You Connect an AI Tool</title>
      <dc:creator>Kevin Smith</dc:creator>
      <pubDate>Thu, 29 Oct 2026 08:52:37 +0000</pubDate>
      <link>https://dev.to/kevinsmith_iaastha/ai-access-control-setting-boundaries-before-you-connect-an-ai-tool-11f5</link>
      <guid>https://dev.to/kevinsmith_iaastha/ai-access-control-setting-boundaries-before-you-connect-an-ai-tool-11f5</guid>
      <description>&lt;p&gt;AI tools are easy to connect and surprisingly hard to take back. A chatbot that can read your shared drive, an agent that can send email, an assistant that can update your CRM: each is useful until it does something nobody expected. The practical fix is not a longer policy document. It is a short, explicit operating boundary, agreed before the tool goes live.&lt;/p&gt;

&lt;p&gt;This is my summary of the iAastha team's guide, &lt;a href="https://iaastha.com/insights/blog/ai-access-control/" rel="noopener noreferrer"&gt;AI Access Control: How to Set AI Governance Boundaries Before You Connect a Tool&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why tools need a boundary
&lt;/h2&gt;

&lt;p&gt;Most AI problems inside companies are not dramatic hacks. They are ordinary permission problems. A tool was given broad access because that was faster, nobody wrote down what it was meant to do, and nobody was named as the person who could say no. When something goes wrong, the team cannot answer the basic question: was this tool allowed to do that?&lt;/p&gt;

&lt;p&gt;AI-enabled tools raise this risk in two ways. They act on plain-language instructions, so behavior is less predictable than a fixed script. And agentic tools can chain several actions together, so one loose permission can reach much further than expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AI access control?
&lt;/h2&gt;

&lt;p&gt;It is the practice of deciding, in advance and in writing, what an AI system can see, what it can do, and when a human must step in. It borrows from least privilege: give a system only the access it needs to do its job, and nothing more. It sits inside the wider field of AI governance, the policies, roles and checks that keep AI use safe, lawful and accountable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three parts of a boundary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Allowed actions.&lt;/strong&gt; List every action the tool may take on its own, and be literal. "Helps with support" is not an action; "drafts replies in the helpdesk and saves them as unsent" is. Sort each into view only, draft, edit or execute. Most tools should start at draft and earn more trust over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data access.&lt;/strong&gt; Start with the workflow, not the system. If the tool summarizes support tickets, it needs tickets, not payroll. Name the systems, folders and fields it can read, and the ones it cannot. Take particular care with personal data, contracts and credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approval rules.&lt;/strong&gt; Decide which actions must pause for a human: anything irreversible, anything external, anything that spends money, and anything that changes permissions. Name who approves and how quickly, or people will route around the rule.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Review it with the workflow owner
&lt;/h2&gt;

&lt;p&gt;The card is only as good as the conversation behind it. In a 30-minute review, name the workflow owner, walk one real task end to end, mark each action as view, draft, edit or execute, set approval rules, decide how you will know (logs, a weekly sample, or a named reviewer), and set a review date at least every quarter.&lt;/p&gt;

&lt;p&gt;If you are planning to connect AI agents or RAG systems to company data, start with this one-page card. For the full guide and an interactive permission card builder, read the &lt;a href="https://iaastha.com/insights/blog/ai-access-control/" rel="noopener noreferrer"&gt;original article on iAastha&lt;/a&gt;. iAastha is an AI and software engineering partner for startups and enterprises.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>governance</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
