<?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: Sh Raj</title>
    <description>The latest articles on DEV Community by Sh Raj (@sh20raj).</description>
    <link>https://dev.to/sh20raj</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%2F788719%2F0012e877-5660-4495-97b5-60a3d7f9121e.jpg</url>
      <title>DEV Community: Sh Raj</title>
      <link>https://dev.to/sh20raj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sh20raj"/>
    <language>en</language>
    <item>
      <title>MCP vs API: What's the Difference? A Visual Guide for Developers</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sat, 10 Oct 2026 19:45:24 +0000</pubDate>
      <link>https://dev.to/sh20raj/mcp-vs-api-whats-the-difference-a-visual-guide-for-developers-447m</link>
      <guid>https://dev.to/sh20raj/mcp-vs-api-whats-the-difference-a-visual-guide-for-developers-447m</guid>
      <description>&lt;h1&gt;
  
  
  MCP vs API: What's the Difference? A Visual Guide for Developers
&lt;/h1&gt;

&lt;p&gt;Imagine building an AI assistant that can search GitHub issues, query databases, read documentation, create tasks, and send Slack messages.&lt;/p&gt;

&lt;p&gt;All these services already have APIs.&lt;/p&gt;

&lt;p&gt;So, why do we need MCP?&lt;/p&gt;

&lt;p&gt;Is MCP replacing APIs? Is it just another type of API? And what actually happens when an AI agent calls a tool?&lt;/p&gt;

&lt;p&gt;Let's break it down, from the fundamentals to production architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. First, what is an API?
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;API (Application Programming Interface)&lt;/strong&gt; defines how one piece of software can interact with another.&lt;/p&gt;

&lt;p&gt;For example, imagine a task management application that exposes this endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /api/tasks/42
Authorization: Bearer YOUR_TOKEN
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fix login bug"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"in_progress"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"assignee"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sh"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your application knows which endpoint to call, what authentication to provide, and how to interpret the response.&lt;/p&gt;

&lt;p&gt;APIs aren't limited to REST or HTTP. They can also be library interfaces, GraphQL APIs, RPC interfaces, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does a typical API request work?
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Frontend or Backend Client] --&amp;gt;|HTTP Request| B[API Server]
    B --&amp;gt; C[Authentication and Validation]
    C --&amp;gt; D[Business Logic]
    D --&amp;gt; E[(Database)]
    E --&amp;gt; D
    D --&amp;gt; B
    B --&amp;gt;|HTTP Response| A&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The client constructs the request. The server validates it, executes the operation, and returns a result.&lt;/p&gt;

&lt;p&gt;Simple enough!&lt;/p&gt;

&lt;p&gt;But now imagine letting an AI model use hundreds of these APIs.&lt;/p&gt;

&lt;p&gt;That's where things get interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The problem: APIs weren't designed specifically for AI tool interoperability
&lt;/h2&gt;

&lt;p&gt;Suppose you're building an AI coding assistant.&lt;/p&gt;

&lt;p&gt;You want it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read files from GitHub.&lt;/li&gt;
&lt;li&gt;Search GitHub issues.&lt;/li&gt;
&lt;li&gt;Query a PostgreSQL database.&lt;/li&gt;
&lt;li&gt;Create tasks in Linear.&lt;/li&gt;
&lt;li&gt;Read external documentation.&lt;/li&gt;
&lt;li&gt;Send messages to Slack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each service may already provide an API.&lt;/p&gt;

&lt;p&gt;However, your AI application still needs to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which operations are available.&lt;/li&gt;
&lt;li&gt;What arguments each operation expects.&lt;/li&gt;
&lt;li&gt;How to invoke an operation.&lt;/li&gt;
&lt;li&gt;How to handle its output and errors.&lt;/li&gt;
&lt;li&gt;How to manage credentials and permissions.&lt;/li&gt;
&lt;li&gt;How to expose the capability to the AI model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditionally, developers build custom integration code for these tasks.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[AI Application] --&amp;gt; B[GitHub Adapter]
    A --&amp;gt; C[Database Adapter]
    A --&amp;gt; D[Slack Adapter]
    A --&amp;gt; E[Linear Adapter]

    B --&amp;gt; F[GitHub API]
    C --&amp;gt; G[(PostgreSQL)]
    D --&amp;gt; H[Slack API]
    E --&amp;gt; I[Linear API]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This works, but each integration can require its own implementation and maintenance.&lt;/p&gt;

&lt;p&gt;Now imagine building another AI application that needs access to the same services.&lt;/p&gt;

&lt;p&gt;You may end up repeating much of the integration work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem isn't that APIs don't work with AI. The problem is that every AI application shouldn't have to reinvent the integration contract for every tool.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What is MCP?
&lt;/h2&gt;

&lt;p&gt;MCP stands for &lt;strong&gt;Model Context Protocol&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's an open protocol that standardizes how AI applications connect to external systems that provide tools, data, and reusable prompts.&lt;/p&gt;

&lt;p&gt;Think of MCP as a common language for AI applications and the services that expose capabilities to them.&lt;/p&gt;

&lt;p&gt;Instead of creating a completely different integration mechanism for every AI client, developers can expose capabilities through an MCP server.&lt;/p&gt;

&lt;p&gt;Compatible clients can then discover and invoke those capabilities through a shared protocol.&lt;/p&gt;

&lt;h3&gt;
  
  
  The MCP architecture
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[User] --&amp;gt; B[AI Host]
    B --&amp;gt; C[AI Model]
    B --&amp;gt; D[MCP Client]

    D &amp;lt;--&amp;gt;|MCP Protocol| E[MCP Server]

    E --&amp;gt; F[Tools]
    E --&amp;gt; G[Resources]
    E --&amp;gt; H[Prompts]

    F --&amp;gt; I[APIs and Business Logic]
    G --&amp;gt; J[Files and Data Sources]
    H --&amp;gt; K[Reusable Templates]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;There are three important components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Host:&lt;/strong&gt; The AI-enabled application coordinating the model and integrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Client:&lt;/strong&gt; The component that communicates with an MCP server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Server:&lt;/strong&gt; The program that exposes capabilities through MCP.&lt;/p&gt;

&lt;p&gt;An MCP server doesn't necessarily run on a remote machine. It can be a local process communicating through standard input/output (stdio), or a remote service using Streamable HTTP.&lt;/p&gt;

&lt;h3&gt;
  
  
  MCP's three core primitives
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Primitive&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tools&lt;/td&gt;
&lt;td&gt;Execute operations&lt;/td&gt;
&lt;td&gt;&lt;code&gt;create_issue&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resources&lt;/td&gt;
&lt;td&gt;Provide contextual data&lt;/td&gt;
&lt;td&gt;Database schema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompts&lt;/td&gt;
&lt;td&gt;Provide reusable templates&lt;/td&gt;
&lt;td&gt;Code review instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tools can read data or modify state. Resources provide information that an application can use as context. Prompts define reusable interaction templates.&lt;/p&gt;

&lt;p&gt;Not every MCP server needs to implement all three.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. MCP vs API: the fundamental difference
&lt;/h2&gt;

&lt;p&gt;Here's the simplest way to understand it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An API defines how to interact with a service. MCP standardizes how AI applications discover and interact with capabilities exposed by a server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These concepts are related, but they're not interchangeable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Side-by-side comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;MCP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary purpose&lt;/td&gt;
&lt;td&gt;Expose functionality or data&lt;/td&gt;
&lt;td&gt;Standardize AI-to-tool/context integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interface&lt;/td&gt;
&lt;td&gt;Endpoints, functions, queries, RPC methods, etc.&lt;/td&gt;
&lt;td&gt;Protocol messages and capability schemas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discovery&lt;/td&gt;
&lt;td&gt;Documentation, SDKs, schemas, or custom mechanisms&lt;/td&gt;
&lt;td&gt;Protocol-defined capability discovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI-specific design&lt;/td&gt;
&lt;td&gt;Not inherently&lt;/td&gt;
&lt;td&gt;Designed for AI application integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Actions&lt;/td&gt;
&lt;td&gt;Depends on the API&lt;/td&gt;
&lt;td&gt;Tools expose callable operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;Depends on the API&lt;/td&gt;
&lt;td&gt;Resources can provide contextual information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reusable prompts&lt;/td&gt;
&lt;td&gt;Not a defining feature&lt;/td&gt;
&lt;td&gt;A defined primitive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;Depends on the API&lt;/td&gt;
&lt;td&gt;Commonly stdio or Streamable HTTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can coexist with the other?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MCP uses JSON-RPC 2.0 for protocol messages. It can use HTTP for remote communication, but it isn't simply another name for a REST API.&lt;/p&gt;

&lt;h3&gt;
  
  
  An analogy
&lt;/h3&gt;

&lt;p&gt;Imagine a restaurant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API = the restaurant's ordering interface.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The menu describes what you can order, the available options, and how to submit an order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP = a standardized ordering interface for compatible AI applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Different AI applications can discover available operations and invoke them through a common protocol.&lt;/p&gt;

&lt;p&gt;The analogy isn't perfect, but it captures the central idea: standardizing how you interact with a service doesn't eliminate the service itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A real example: building a GitHub issue assistant
&lt;/h2&gt;

&lt;p&gt;Let's say you ask an AI assistant:&lt;/p&gt;

&lt;p&gt;"Find the open authentication bugs in my repository and summarize the most urgent ones."&lt;/p&gt;

&lt;p&gt;Your assistant needs to search GitHub issues and retrieve their details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option A: Direct GitHub API integration
&lt;/h3&gt;

&lt;p&gt;A developer could call GitHub's REST API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /repos/OWNER/REPO/issues?state=open&amp;amp;labels=bug
Authorization: Bearer GITHUB_TOKEN
Accept: application/vnd.github+json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application must then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Authenticate with GitHub.&lt;/li&gt;
&lt;li&gt;Make the HTTP request.&lt;/li&gt;
&lt;li&gt;Handle pagination and rate limits.&lt;/li&gt;
&lt;li&gt;Parse the response.&lt;/li&gt;
&lt;li&gt;Define a tool the AI model can invoke.&lt;/li&gt;
&lt;li&gt;Execute that tool when requested.&lt;/li&gt;
&lt;li&gt;Return the results to the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A simplified model-facing tool definition might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;function&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;search_github_issues&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Search open issues in a repository&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;owner&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;repo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;label&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;additionalProperties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This describes the tool the model can request. Your application still needs to implement the function that calls GitHub.&lt;/p&gt;

&lt;p&gt;The API defines how to access GitHub. The tool definition tells the model how to request that access.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option B: Expose the capability through MCP
&lt;/h3&gt;

&lt;p&gt;An MCP server could expose a tool called &lt;code&gt;search_issues&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A compatible client can discover the tool and its input schema, then request its execution.&lt;/p&gt;

&lt;p&gt;An illustrative schema might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search_issues"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Search issues in a repository"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inputSchema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"repo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"enum"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"open"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"closed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"all"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"repo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a simplified example of a tool definition, not a complete MCP protocol exchange.&lt;/p&gt;

&lt;p&gt;The MCP server might internally call GitHub's REST API. The client doesn't need to know the underlying endpoint URL or HTTP headers if the server handles those details.&lt;/p&gt;

&lt;h3&gt;
  
  
  The complete flow
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;sequenceDiagram
    participant U as User
    participant A as AI Host
    participant M as MCP Client
    participant S as MCP Server
    participant G as GitHub API

    U-&amp;gt;&amp;gt;A: Find authentication bugs
    A-&amp;gt;&amp;gt;M: Discover available tools
    M-&amp;gt;&amp;gt;S: tools/list
    S--&amp;gt;&amp;gt;M: Tool definitions
    A-&amp;gt;&amp;gt;M: Call search_issues
    M-&amp;gt;&amp;gt;S: tools/call
    S-&amp;gt;&amp;gt;G: HTTP API request
    G--&amp;gt;&amp;gt;S: Issue data
    S--&amp;gt;&amp;gt;M: Tool result
    M--&amp;gt;&amp;gt;A: Return results
    A--&amp;gt;&amp;gt;U: Summarize urgent bugs&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The host coordinates the model and tool execution. The MCP client handles protocol communication. The MCP server executes the operation, potentially using an existing API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP doesn't replace GitHub's API. It provides a standardized AI-facing interface to the capability.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Build a simple MCP server with TypeScript
&lt;/h2&gt;

&lt;p&gt;Let's make the example more concrete.&lt;/p&gt;

&lt;p&gt;Imagine you already have a backend endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /api/tasks/:id
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You want compatible AI applications to retrieve tasks through MCP without rewriting the backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install the SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @modelcontextprotocol/sdk zod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Create the server
&lt;/h3&gt;

&lt;p&gt;The following example demonstrates the MCP server pattern using TypeScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;McpServer&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@modelcontextprotocol/sdk/server/mcp.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;StdioServerTransport&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@modelcontextprotocol/sdk/server/stdio.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zod&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;McpServer&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;task-server&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1.0.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;registerTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;get_task&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Get a task by its numeric ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;number&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;positive&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="s2"&gt;`https://your-api.example.com/api/tasks/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Task API returned &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StdioServerTransport&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example assumes an SDK version that supports the shown registration pattern. Check the official TypeScript SDK documentation for the exact version-specific API.&lt;/p&gt;

&lt;p&gt;Replace the placeholder URL with your actual backend and implement appropriate authentication, timeouts, authorization, and error handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens when the AI calls &lt;code&gt;get_task&lt;/code&gt;?
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;The MCP client discovers &lt;code&gt;get_task&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The model decides that the tool is relevant.&lt;/li&gt;
&lt;li&gt;The host orchestrates the tool call.&lt;/li&gt;
&lt;li&gt;The client sends the request through MCP.&lt;/li&gt;
&lt;li&gt;The server validates the input and calls the existing API.&lt;/li&gt;
&lt;li&gt;The server returns the task information.&lt;/li&gt;
&lt;li&gt;The model uses the result to answer the user.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The MCP server acts as an adapter between the protocol and your existing service.&lt;/p&gt;

&lt;p&gt;It doesn't eliminate your backend's business logic or security requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. When should you use MCP instead of a direct API integration?
&lt;/h2&gt;

&lt;p&gt;Neither approach is universally better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use a direct API integration when:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You have one application you control.&lt;/li&gt;
&lt;li&gt;You need a small number of fixed operations.&lt;/li&gt;
&lt;li&gt;You want explicit control over requests and orchestration.&lt;/li&gt;
&lt;li&gt;A separate protocol adapter would add unnecessary complexity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Consider MCP when:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Multiple compatible AI clients need the same capabilities.&lt;/li&gt;
&lt;li&gt;You want standardized tool discovery.&lt;/li&gt;
&lt;li&gt;You want to expose reusable contextual resources.&lt;/li&gt;
&lt;li&gt;You want to separate AI-facing integrations from backend implementations.&lt;/li&gt;
&lt;li&gt;You are building an ecosystem of tools for AI agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The best production architecture may use both
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Existing Backend] --&amp;gt; B[REST API]
    A --&amp;gt; C[Internal Service Layer]

    B --&amp;gt; D[Web and Mobile Apps]
    C --&amp;gt; E[MCP Server]

    E --&amp;gt; F[AI Client 1]
    E --&amp;gt; G[AI Client 2]
    E --&amp;gt; H[AI Client 3]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Your web and mobile applications can continue using the existing API, while compatible AI clients use MCP to access selected capabilities.&lt;/p&gt;

&lt;p&gt;You don't need to rebuild your entire backend to support MCP.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Advanced considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  8.1 Integration complexity
&lt;/h3&gt;

&lt;p&gt;Suppose you have &lt;code&gt;N&lt;/code&gt; AI applications and &lt;code&gt;M&lt;/code&gt; external services.&lt;/p&gt;

&lt;p&gt;With fully custom integrations, the potential number of application-to-service adapters can approach:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;N × M&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With compatible clients and servers using a shared protocol, the integration structure can often move toward:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;N + M&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is a simplified architectural model, not a guaranteed reduction in engineering effort. Custom authentication, unsupported features, configuration, and service-specific logic can still require substantial work.&lt;/p&gt;

&lt;p&gt;The advantage becomes more significant as the number of integrations grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.2 Latency and performance
&lt;/h3&gt;

&lt;p&gt;MCP does not automatically make requests faster.&lt;/p&gt;

&lt;p&gt;A direct integration might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application → API → Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An MCP integration might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI host → MCP client → MCP server → API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second approach may add serialization, protocol handling, or network overhead.&lt;/p&gt;

&lt;p&gt;However, an MCP server can also expose higher-level operations that reduce unnecessary round trips.&lt;/p&gt;

&lt;p&gt;For example, a single &lt;code&gt;summarize_project_health&lt;/code&gt; tool might internally retrieve issues, pull requests, and project metadata, then return a consolidated result.&lt;/p&gt;

&lt;p&gt;Any performance improvement comes from the implementation and tool design, not from MCP alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.3 Security is still your responsibility
&lt;/h3&gt;

&lt;p&gt;MCP is not a security guarantee.&lt;/p&gt;

&lt;p&gt;An MCP server may expose powerful capabilities such as reading files, querying databases, or modifying business records.&lt;/p&gt;

&lt;p&gt;Production systems should implement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Least-privilege credentials.&lt;/li&gt;
&lt;li&gt;Server-side authorization.&lt;/li&gt;
&lt;li&gt;Strict input validation.&lt;/li&gt;
&lt;li&gt;Explicit confirmation for sensitive or destructive actions when appropriate.&lt;/li&gt;
&lt;li&gt;Protection against prompt injection and untrusted tool output.&lt;/li&gt;
&lt;li&gt;Secure secret management.&lt;/li&gt;
&lt;li&gt;Audit logging and appropriate monitoring.&lt;/li&gt;
&lt;li&gt;Duplicate-action safeguards for operations that need idempotency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A tool description saying "read-only" is not a substitute for enforcing read-only access in the server.&lt;/p&gt;

&lt;p&gt;The system must enforce permissions independently of what the model requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Common misconceptions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Myth 1: MCP replaces APIs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. MCP servers frequently call existing APIs. Both can coexist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Myth 2: MCP is just another REST API.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. MCP uses JSON-RPC 2.0 messages and defines an AI-oriented client-server protocol. Remote MCP can use HTTP as its transport.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Myth 3: Every API needs an MCP server.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Direct API calls remain perfectly reasonable for simple, fixed integrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Myth 4: MCP makes AI models smarter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. MCP provides standardized access to capabilities and context. The model, orchestration logic, available information, and tool design still determine the quality of its work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Myth 5: MCP automatically makes applications secure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Authentication, authorization, isolation, and approval workflows remain essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Myth 6: MCP servers must be remote.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. MCP supports local stdio communication as well as remote Streamable HTTP.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is MCP an API?
&lt;/h3&gt;

&lt;p&gt;MCP is a protocol that defines how compatible applications communicate with servers. It can expose capabilities backed by APIs, but the two are different interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use MCP with a REST API?
&lt;/h3&gt;

&lt;p&gt;Yes. An MCP server can translate tool calls into REST requests without requiring the underlying REST API to implement MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use APIs without MCP?
&lt;/h3&gt;

&lt;p&gt;Absolutely. Traditional applications and AI applications can call APIs directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is MCP the same as function calling?
&lt;/h3&gt;

&lt;p&gt;No. Function calling lets a model request that an application execute a function. MCP standardizes communication with servers that expose tools and other capabilities. An MCP client can connect these capabilities to a model's tool-calling mechanism.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does MCP work with any AI model?
&lt;/h3&gt;

&lt;p&gt;MCP is model-independent at the protocol level. However, the host application must implement MCP support and integrate the discovered capabilities with its model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is MCP useful for agentic AI?
&lt;/h3&gt;

&lt;p&gt;Yes. MCP can provide tools and contextual information for agents. Planning, reasoning, execution loops, and decision-making are separate concerns.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Further reading
&lt;/h2&gt;

&lt;p&gt;If you want to go deeper, start with these resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol — Official Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/typescript-sdk" rel="noopener noreferrer"&gt;MCP TypeScript SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/api/docs/guides/tools-connectors-mcp" rel="noopener noreferrer"&gt;OpenAI — MCP Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/learn/docs-mcp" rel="noopener noreferrer"&gt;OpenAI Docs MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These resources cover protocol concepts, implementation details, and practical integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. The final mental model
&lt;/h2&gt;

&lt;p&gt;Remember these three layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1 — Reasoning:&lt;/strong&gt; The AI model interprets the request and selects a capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2 — Integration:&lt;/strong&gt; MCP or application-specific tool integration makes the capability discoverable and callable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3 — Execution:&lt;/strong&gt; APIs, databases, and business logic perform the actual work.&lt;/p&gt;

&lt;p&gt;For example, the AI model decides to create a GitHub issue. The integration layer exposes &lt;code&gt;create_issue&lt;/code&gt;. The underlying service checks permissions and creates the issue.&lt;/p&gt;

&lt;p&gt;That separation is the core idea.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An API exposes functionality. MCP standardizes how AI applications can discover and access functionality.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They are complementary technologies, and many strong architectures use both.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written for developers exploring AI integrations, MCP servers, and modern software architecture.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think?&lt;/strong&gt; Are you already using MCP in your projects, or are you still integrating AI tools directly through APIs? Share your experience in the comments!&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>api</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How Hackers Mod APKs: Android Reverse Engineering Explained</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sat, 10 Oct 2026 19:03:55 +0000</pubDate>
      <link>https://dev.to/sh20raj/how-hackers-mod-apks-android-reverse-engineering-explained-3hi5</link>
      <guid>https://dev.to/sh20raj/how-hackers-mod-apks-android-reverse-engineering-explained-3hi5</guid>
      <description>&lt;h1&gt;
  
  
  How Hackers Mod APKs: Inside Android Reverse Engineering, Runtime Analysis, and App Integrity
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;By StackShade · Android Security · Reverse Engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How does a modified Android application emerge even after developers add obfuscation, server-side validation, and integrity checks? The answer lies in understanding where an application executes, where its trust decisions live, and what an attacker can observe or control.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Introduction: The Endless Battle Over Modified APKs
&lt;/h2&gt;

&lt;p&gt;In the video &lt;em&gt;How Hackers Mod APKs&lt;/em&gt;, Manguman opens with the recurring problem of modified versions of popular applications breaking after backend changes, only for new versions to appear later.&lt;/p&gt;

&lt;p&gt;The video uses Spotify, Netflix, and mobile games to illustrate a broader security problem: developers invest heavily in protecting their applications, yet unauthorized modifications remain possible.&lt;/p&gt;

&lt;p&gt;The apparent contradiction disappears when we distinguish between &lt;strong&gt;making software difficult to modify and making unauthorized behavior impossible to authorize&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An Android application is a package of executable code, resources, configuration, and sometimes native libraries. Much of its behavior executes on a device that the developer does not physically control. A determined analyst can inspect the package, observe execution, and experiment with the application in a controlled environment.&lt;/p&gt;

&lt;p&gt;Developers therefore use several layers of protection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code obfuscation to increase the cost of understanding an application.&lt;/li&gt;
&lt;li&gt;Server-side authorization to keep valuable decisions outside the client.&lt;/li&gt;
&lt;li&gt;Transport security to protect communications.&lt;/li&gt;
&lt;li&gt;Integrity verification to identify potentially modified applications or untrusted environments.&lt;/li&gt;
&lt;li&gt;Runtime defenses and abuse detection to respond to suspicious behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these controls solves every problem independently.&lt;/p&gt;

&lt;h3&gt;
  
  
  The central security principle
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;If an attacker controls the client environment, any security decision made exclusively by that client should be treated as potentially manipulable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This does not mean every Android device is compromised or every local check is useless. It means that client-side checks should not be the sole authority for valuable server-controlled operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Understanding the Android APK
&lt;/h2&gt;

&lt;p&gt;Before examining reverse engineering, we need to understand what an APK actually contains.&lt;/p&gt;

&lt;p&gt;An APK, or Android Package Kit, is an archive containing the files needed to install an Android application. Depending on the application, these can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AndroidManifest.xml&lt;/code&gt; — application components, permissions, and configuration.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;classes.dex&lt;/code&gt; — compiled Android bytecode.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;res/&lt;/code&gt; — compiled resources such as layouts and drawable assets.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;assets/&lt;/code&gt; — application-specific files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/&lt;/code&gt; — native libraries, often compiled for particular CPU architectures.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;META-INF/&lt;/code&gt; and signing-related information — package metadata and signature-related artifacts, depending on the package and signing scheme.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An APK is not simply a Java source-code directory compressed into a ZIP file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 From Java or Kotlin to executable Android code
&lt;/h3&gt;

&lt;p&gt;Consider a simplified Android build pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Java / Kotlin source"] --&amp;gt; B["Compiler output"]
    B --&amp;gt; C["DEX bytecode"]
    C --&amp;gt; D["APK packaging"]
    D --&amp;gt; E["APK signing"]
    E --&amp;gt; F["Installation and execution"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This is a conceptual view rather than a complete build pipeline. Android Gradle Plugin, D8, R8, resource processing, desugaring, native compilation, and signing may introduce additional stages.&lt;/p&gt;

&lt;p&gt;The important point is that the installed package contains compiled representations, not necessarily the original source code.&lt;/p&gt;

&lt;p&gt;Android Studio's APK Analyzer can inspect the final package, its DEX files, resources, manifest, and size distribution. This is useful both for debugging your own build and for authorized security analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical reference:&lt;/strong&gt; Android Developers, &lt;a href="https://developer.android.com/studio/debug/apk-analyzer" rel="noopener noreferrer"&gt;Analyze your build with APK Analyzer&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 DEX versus Smali
&lt;/h3&gt;

&lt;p&gt;The video introduces DEX and Smali as different representations of application logic.&lt;/p&gt;

&lt;p&gt;DEX, or Dalvik Executable, is a bytecode format designed for Android's runtime environment. ART executes DEX-based application code.&lt;/p&gt;

&lt;p&gt;Smali is a human-readable assembly-like representation of DEX instructions. It exposes operations such as register access, method invocation, conditional branching, and returning values.&lt;/p&gt;

&lt;p&gt;For example, the following is an illustrative Smali-like fragment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.method public isFeatureEnabled()Z
    .locals 1

    const/4 v0, 0x1
    return v0
.end method
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The method returns a boolean value of &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This example demonstrates the representation, not a modification to any real commercial application.&lt;/p&gt;

&lt;p&gt;A corresponding high-level method might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="nf"&gt;isFeatureEnabled&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, decompilation is not a perfect reversal of compilation. The reconstructed Java may have different names, missing comments, altered control flow, synthetic methods, or other differences from the original source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important distinction:&lt;/strong&gt; Smali is not the original Java source code, and a decompiler cannot reliably recover information that was discarded during compilation.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Static Analysis: Understanding an Application Without Running It
&lt;/h2&gt;

&lt;p&gt;Static analysis examines an application or its code without requiring the relevant functionality to execute.&lt;/p&gt;

&lt;p&gt;The video describes a workflow in which an analyst decompiles an APK, searches through the resulting representation, and tries to understand how particular features work.&lt;/p&gt;

&lt;p&gt;The underlying technique is legitimate and widely used in malware analysis, vulnerability research, compatibility testing, and software auditing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Why static analysis works
&lt;/h3&gt;

&lt;p&gt;Compiled code still has structure.&lt;/p&gt;

&lt;p&gt;Even when meaningful identifiers disappear, an analyst may be able to infer functionality from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Method parameters and return types.&lt;/li&gt;
&lt;li&gt;Conditional branches and control flow.&lt;/li&gt;
&lt;li&gt;String constants and resource identifiers.&lt;/li&gt;
&lt;li&gt;Network endpoints and request models.&lt;/li&gt;
&lt;li&gt;Calls into Android framework APIs.&lt;/li&gt;
&lt;li&gt;Serialization and deserialization logic.&lt;/li&gt;
&lt;li&gt;References between classes and methods.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a method that reads a subscription status, parses a response, and selects a user interface state may remain recognizable from its surrounding data flow, even if its original class and method names are unavailable.&lt;/p&gt;

&lt;p&gt;This is why renaming methods alone does not eliminate the information contained in program behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 The danger of trusting local feature flags
&lt;/h3&gt;

&lt;p&gt;Suppose an application contains a local feature flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;canUseAdvancedFeature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the application uses this value as the sole authority for a valuable operation, the architecture is weak.&lt;/p&gt;

&lt;p&gt;A local boolean can influence what the interface displays. But displaying a premium button and authorizing a premium transaction are fundamentally different operations.&lt;/p&gt;

&lt;p&gt;A more robust architecture asks the backend to authorize the actual operation.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["User requests a feature"] --&amp;gt; B["Android client"]
    B --&amp;gt; C["Authenticated API request"]
    C --&amp;gt; D["Backend authorization"]
    D --&amp;gt; E{"Entitled?"}
    E --&amp;gt;|Yes| F["Perform authorized operation"]
    E --&amp;gt;|No| G["Reject operation"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The server must enforce the decision independently of the interface.&lt;/p&gt;

&lt;p&gt;A modified interface might still display an enabled button, but that should not grant access to protected data or change a server-controlled account balance.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Obfuscation is not encryption
&lt;/h3&gt;

&lt;p&gt;The video correctly identifies obfuscation as a technique for making code harder to understand.&lt;/p&gt;

&lt;p&gt;Modern Android builds commonly use R8 to optimize and obfuscate application code. Depending on configuration, this can include renaming classes and methods, removing unreachable code, and simplifying program structure.&lt;/p&gt;

&lt;p&gt;Consider the conceptual difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technique&lt;/th&gt;
&lt;th&gt;Primary purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Minification&lt;/td&gt;
&lt;td&gt;Reduce application size by removing unnecessary code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Obfuscation&lt;/td&gt;
&lt;td&gt;Make program structure and intent harder to understand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encryption&lt;/td&gt;
&lt;td&gt;Protect data from unauthorized disclosure when correctly applied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrity verification&lt;/td&gt;
&lt;td&gt;Detect or establish evidence of modification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Server-side authorization&lt;/td&gt;
&lt;td&gt;Decide whether an operation is permitted&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Obfuscation changes how understandable the implementation is; it does not inherently make the application's behavior secret.&lt;/p&gt;

&lt;p&gt;Encryption also requires care. If an application contains the decryption key and must decrypt a payload locally, a sufficiently privileged analyst may be able to inspect the key or the plaintext at runtime. Encrypting code or resources can increase complexity, but it is not a substitute for a sound trust model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional technical context:&lt;/strong&gt; OWASP's mobile security guidance treats obfuscation and anti-tampering as resilience measures, not replacements for core security controls. See &lt;a href="https://mas.owasp.org/MASVS/11-MASVS-RESILIENCE/" rel="noopener noreferrer"&gt;OWASP MASVS: Resilience Against Reverse Engineering and Tampering&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Dynamic Analysis: Observing What Happens at Runtime
&lt;/h2&gt;

&lt;p&gt;Static analysis answers questions about code structure. Dynamic analysis answers questions about actual behavior during execution.&lt;/p&gt;

&lt;p&gt;The video explains that analysts can observe which functions execute when a user performs an action, even when the corresponding methods have meaningless names.&lt;/p&gt;

&lt;p&gt;This is an important distinction: &lt;strong&gt;obscuring a method's name does not obscure the fact that it executes or the effects it produces&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 What runtime analysis can reveal
&lt;/h3&gt;

&lt;p&gt;In an authorized test environment, runtime analysis can help establish:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which methods execute after a particular interaction.&lt;/li&gt;
&lt;li&gt;Which values are passed between components.&lt;/li&gt;
&lt;li&gt;Whether a security check actually affects a sensitive operation.&lt;/li&gt;
&lt;li&gt;How network requests and responses influence application state.&lt;/li&gt;
&lt;li&gt;Whether a supposedly protected value appears in memory.&lt;/li&gt;
&lt;li&gt;Whether the application behaves differently on a modified or instrumented device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact observations depend on the runtime, device privileges, available instrumentation, and the application's defenses.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Ghidra, IDA Pro, and runtime instrumentation
&lt;/h3&gt;

&lt;p&gt;The video mentions Ghidra and IDA Pro as professional tools for analyzing applications.&lt;/p&gt;

&lt;p&gt;The terminology needs some precision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Static disassemblers and decompilers&lt;/strong&gt;, including Ghidra and IDA, help analysts inspect machine code and reconstruct program structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debuggers&lt;/strong&gt; help inspect execution state, breakpoints, registers, and memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic instrumentation tools&lt;/strong&gt; can observe or instrument running applications when the environment and protections permit it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These capabilities overlap in some toolchains, but they are not interchangeable. A static disassembler does not, by itself, provide a complete live view of every function executing on an Android device.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Why runtime observation defeats some obfuscation strategies
&lt;/h3&gt;

&lt;p&gt;Imagine a method named &lt;code&gt;a()&lt;/code&gt; that returns an integer. Its name reveals almost nothing.&lt;/p&gt;

&lt;p&gt;But suppose repeated observations establish that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The method executes when an account screen opens.&lt;/li&gt;
&lt;li&gt;Its result changes when the account's entitlement changes.&lt;/li&gt;
&lt;li&gt;Its output influences a local interface decision.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The analyst has learned something about the method through behavior rather than its identifier.&lt;/p&gt;

&lt;p&gt;This illustrates a broader principle from software security: program behavior can leak semantic information that names and source-code structure conceal.&lt;/p&gt;

&lt;p&gt;It does not imply that every relevant function can be identified easily. Large applications, native code, asynchronous execution, reflection, and runtime protections can make analysis substantially harder.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Server-Side Validation: Moving Trust Away from the Device
&lt;/h2&gt;

&lt;p&gt;The video next discusses a more meaningful architectural defense: moving sensitive logic and authorization to a backend.&lt;/p&gt;

&lt;p&gt;Consider a streaming service. The mobile client sends a request to play protected content. The backend verifies the account's entitlement and determines whether the requested operation is allowed.&lt;/p&gt;

&lt;p&gt;A simplified request might contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"content_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example-content-123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"session_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"authenticated-session"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an illustrative payload, not a real service API.&lt;/p&gt;

&lt;p&gt;The server should not accept a client's assertion that the account is premium merely because the client says so.&lt;/p&gt;

&lt;p&gt;Instead, it should establish the user's identity, retrieve authoritative entitlement data, evaluate the requested operation, and enforce the result.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 The difference between authentication and authorization
&lt;/h3&gt;

&lt;p&gt;These terms are related but distinct:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; Who is making the request?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization:&lt;/strong&gt; Is that identity permitted to perform the requested operation?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity verification:&lt;/strong&gt; Is there evidence that the client or execution environment satisfies expected integrity conditions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A valid login does not automatically establish a paid entitlement. A valid subscription does not necessarily authorize every resource. A genuine application binary does not guarantee that the account has permission to access a particular feature.&lt;/p&gt;

&lt;p&gt;A robust design evaluates the relevant conditions separately.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Backend authority and entitlement checks
&lt;/h3&gt;

&lt;p&gt;For a subscription-based application, a backend can follow this pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;receive request
    ↓
validate session and identity
    ↓
load authoritative entitlement
    ↓
check resource and operation permissions
    ↓
apply rate limits and abuse rules
    ↓
allow or reject the operation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The client can cache information for responsiveness, but the backend must revalidate sensitive operations where appropriate.&lt;/p&gt;

&lt;p&gt;This is especially important for purchases, virtual currency, competitive game results, protected content, account changes, and access to private data.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 What server-side validation does not solve
&lt;/h3&gt;

&lt;p&gt;Moving logic to the backend does not make all attacks disappear.&lt;/p&gt;

&lt;p&gt;For example, a client may still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Display an interface that suggests an unauthorized feature is available.&lt;/li&gt;
&lt;li&gt;Extract information already delivered to the device.&lt;/li&gt;
&lt;li&gt;Automate legitimate endpoints in abusive ways.&lt;/li&gt;
&lt;li&gt;Exploit broken authorization rules on the server.&lt;/li&gt;
&lt;li&gt;Misuse an account with otherwise valid access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Server-side enforcement protects operations and data that remain under the server's control. It cannot retroactively make information secret after that information has been delivered to an untrusted client.&lt;/p&gt;

&lt;p&gt;This is why server-side authorization must be combined with data minimization, appropriate session management, abuse prevention, and secure API design.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Network Interception and Response Tampering
&lt;/h2&gt;

&lt;p&gt;The video describes an attacker intercepting a server response, changing an entitlement-related value, and returning the modified response to the client.&lt;/p&gt;

&lt;p&gt;This is a useful conceptual illustration of why clients should not be trusted blindly. However, it simplifies the network-security problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.1 HTTPS changes the situation
&lt;/h3&gt;

&lt;p&gt;With correctly implemented HTTPS, traffic is encrypted and authenticated in transit. A passive observer on the network cannot simply read and modify the response without detection.&lt;/p&gt;

&lt;p&gt;To inspect or alter HTTPS traffic, an analyst generally needs an additional capability or weakness, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Control of the client or its runtime.&lt;/li&gt;
&lt;li&gt;A test environment configured to trust an interception proxy.&lt;/li&gt;
&lt;li&gt;A certificate-validation weakness.&lt;/li&gt;
&lt;li&gt;A compromised endpoint or trust configuration.&lt;/li&gt;
&lt;li&gt;Another application or protocol flaw that exposes the relevant data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The specific possibilities depend on the implementation and the analyst's level of access.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.2 Certificate validation and pinning
&lt;/h3&gt;

&lt;p&gt;Android supports Network Security Configuration, which lets developers configure trust anchors and other network-security settings. Certificate pinning can further restrict which certificates or public keys an application accepts.&lt;/p&gt;

&lt;p&gt;These controls can make certain interception scenarios more difficult. They must be implemented carefully, with backup pins and a tested certificate-rotation strategy where pinning is used.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://developer.android.google.cn/privacy-and-security/security-config?hl=en" rel="noopener noreferrer"&gt;Android Network Security Configuration documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, transport security and authorization address different questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TLS helps protect the authenticity and confidentiality of communication.&lt;/li&gt;
&lt;li&gt;Certificate validation helps establish whether the peer's certificate chain is trusted.&lt;/li&gt;
&lt;li&gt;Backend authorization determines whether an operation is permitted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even a perfectly encrypted connection does not fix an API that grants access based on a client-controlled entitlement field.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.3 A safer mental model
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Android client"] --&amp;gt; B["TLS-protected request"]
    B --&amp;gt; C["Backend"]
    C --&amp;gt; D["Authenticate identity"]
    D --&amp;gt; E["Authorize operation"]
    E --&amp;gt; F["Return permitted data"]
    F --&amp;gt; G["Client displays result"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The backend's authorization decision must remain authoritative. The client should not be able to turn an unauthorized request into an authorized one merely by changing a locally interpreted response flag.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Google Play Integrity: What It Does and Does Not Do
&lt;/h2&gt;

&lt;p&gt;The video describes Google Play integrity protection as a mechanism that checks whether the installed application matches its expected compiled state. It then suggests that removing the relevant library can make a modified application work again.&lt;/p&gt;

&lt;p&gt;This description captures the general purpose of integrity protection, but it is not an accurate account of the complete Play Integrity architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.1 What the Play Integrity API actually provides
&lt;/h3&gt;

&lt;p&gt;Google Play Integrity helps a developer assess whether requests or user actions are associated with a recognized application binary, an expected installation context, and a device environment that meets configured integrity criteria.&lt;/p&gt;

&lt;p&gt;Depending on the API response and enabled capabilities, relevant signals can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;App integrity:&lt;/strong&gt; Whether the application binary is recognized as expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account details:&lt;/strong&gt; Information relevant to the app's installation or acquisition context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device integrity:&lt;/strong&gt; Signals about the device environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Additional risk signals:&lt;/strong&gt; Optional verdicts that can help identify suspicious access, known malware, or anomalous activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact verdicts depend on the API, configuration, and environment.&lt;/p&gt;

&lt;p&gt;Official documentation: &lt;a href="https://developer.android.com/google/play/integrity/overview" rel="noopener noreferrer"&gt;Overview of the Play Integrity API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.2 The backend is part of the design
&lt;/h3&gt;

&lt;p&gt;A typical integrity-protected operation follows this sequence:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;sequenceDiagram
    participant U as User
    participant A as Android App
    participant P as Google Play Integrity
    participant B as Application Backend

    U-&amp;gt;&amp;gt;A: Request sensitive action
    A-&amp;gt;&amp;gt;P: Request integrity token
    P--&amp;gt;&amp;gt;A: Return integrity token
    A-&amp;gt;&amp;gt;B: Send action and token
    B-&amp;gt;&amp;gt;P: Verify/decode token
    P--&amp;gt;&amp;gt;B: Return integrity verdict
    B-&amp;gt;&amp;gt;B: Check verdict and authorize action
    B--&amp;gt;&amp;gt;A: Allow or reject&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This is a simplified conceptual sequence. The precise verification flow differs by API request type and integration details.&lt;/p&gt;

&lt;p&gt;The crucial architectural detail is that the application backend evaluates the integrity evidence. The token should not be treated as an arbitrary client-provided string or a permanent guarantee that every future request is safe.&lt;/p&gt;

&lt;p&gt;For standard requests, developers should bind relevant request data to the integrity request and verify that binding on the backend. Otherwise, a valid verdict may not provide the intended assurance about the particular operation being authorized.&lt;/p&gt;

&lt;p&gt;Google's guidance also recommends requesting verdicts close to the protected action and using a tiered enforcement strategy rather than treating every non-ideal signal identically.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.3 Why a client-side integrity check is not enough
&lt;/h3&gt;

&lt;p&gt;An integrity-related SDK running in the client is one component of a larger verification flow.&lt;/p&gt;

&lt;p&gt;If the backend grants access solely because the client claims that an integrity check succeeded, the architecture has placed too much trust in the component it is trying to assess.&lt;/p&gt;

&lt;p&gt;Instead, the backend should validate the integrity token using the documented verification process and combine the resulting verdict with authentication, authorization, and abuse controls.&lt;/p&gt;

&lt;p&gt;This distinction matters because &lt;strong&gt;a local check, an integrity token, and a backend authorization decision are three different things&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.4 Can integrity checks be bypassed?
&lt;/h3&gt;

&lt;p&gt;The video suggests that removing or stubbing an integrity library can defeat the protection.&lt;/p&gt;

&lt;p&gt;That may describe some poorly designed client-side checks or a simplified demonstration. It should not be generalized to the Play Integrity API as a whole.&lt;/p&gt;

&lt;p&gt;Removing an SDK from a modified APK does not, by itself, produce a valid Google-issued integrity verdict or cause a properly configured backend to accept the modified application.&lt;/p&gt;

&lt;p&gt;An application may still have weaknesses if it relies on local checks, mishandles tokens, accepts replayed or incorrectly bound requests, or fails to enforce the backend decision. The outcome depends on the actual implementation.&lt;/p&gt;

&lt;p&gt;Play Integrity is a risk signal and integrity mechanism, not a magic shield. Its security value depends on correct server-side verification and enforcement.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Why the Cycle Continues: A Layered Security Model
&lt;/h2&gt;

&lt;p&gt;The video repeatedly returns to the same pattern: developers introduce a defense, and analysts find new ways to study the application or its surrounding system.&lt;/p&gt;

&lt;p&gt;The deeper lesson is not that every defense is useless. It is that each defense addresses a different part of the problem.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Defense&lt;/th&gt;
&lt;th&gt;What it helps with&lt;/th&gt;
&lt;th&gt;What it cannot guarantee&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;R8 obfuscation&lt;/td&gt;
&lt;td&gt;Makes code structure harder to understand&lt;/td&gt;
&lt;td&gt;That code cannot be analyzed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource protection&lt;/td&gt;
&lt;td&gt;Reduces exposure of selected resources&lt;/td&gt;
&lt;td&gt;That runtime plaintext remains secret&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime checks&lt;/td&gt;
&lt;td&gt;Detects some forms of instrumentation or tampering&lt;/td&gt;
&lt;td&gt;That every hostile environment is detected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS and certificate validation&lt;/td&gt;
&lt;td&gt;Protects communications against many network attacks&lt;/td&gt;
&lt;td&gt;That the client itself is trustworthy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Play Integrity&lt;/td&gt;
&lt;td&gt;Supplies evidence about app and device integrity&lt;/td&gt;
&lt;td&gt;That every request is authorized or every attack is prevented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend authorization&lt;/td&gt;
&lt;td&gt;Enforces permissions for server-controlled operations&lt;/td&gt;
&lt;td&gt;That already-delivered information stays secret&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Abuse detection and rate limiting&lt;/td&gt;
&lt;td&gt;Helps identify and constrain suspicious behavior&lt;/td&gt;
&lt;td&gt;That every abusive action is detected immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;OWASP's mobile security guidance emphasizes defense in depth and explicitly warns against using anti-tampering or obfuscation as a substitute for sound security architecture.&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://mas.owasp.org/MASVS/11-MASVS-RESILIENCE/" rel="noopener noreferrer"&gt;OWASP MASVS — Resilience&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.1 The economics of reverse engineering
&lt;/h3&gt;

&lt;p&gt;Security controls also change the cost of an attack.&lt;/p&gt;

&lt;p&gt;An analyst may spend minutes inspecting an uncomplicated application, hours understanding an obfuscated codebase, or substantially longer investigating a complex application with native components, runtime checks, and backend dependencies.&lt;/p&gt;

&lt;p&gt;These are illustrative possibilities, not predictable timelines.&lt;/p&gt;

&lt;p&gt;The defender's goal is to make unauthorized modification more expensive, limit the value of any successful modification, and detect or constrain abuse when prevention fails.&lt;/p&gt;

&lt;p&gt;A successful defense therefore need not make reverse engineering impossible. It can ensure that reverse engineering alone does not grant access to protected server-side capabilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. A Defensive Architecture for Android Developers
&lt;/h2&gt;

&lt;p&gt;For developers building subscription-based applications, games, or other Android products, a layered design is more reliable than relying on a single anti-modification technique.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1: Harden the application build
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enable appropriate R8 optimization and obfuscation for release builds.&lt;/li&gt;
&lt;li&gt;Avoid shipping debug artifacts, unnecessary secrets, or internal endpoints.&lt;/li&gt;
&lt;li&gt;Review resources and bundled assets for sensitive information.&lt;/li&gt;
&lt;li&gt;Verify the final artifact rather than assuming the build configuration produced the intended result.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 2: Keep authoritative state on the backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Store subscription entitlements and virtual currency balances on the server.&lt;/li&gt;
&lt;li&gt;Validate purchase information using the appropriate trusted purchase-verification flow.&lt;/li&gt;
&lt;li&gt;Perform sensitive state transitions transactionally.&lt;/li&gt;
&lt;li&gt;Do not accept client-reported prices, balances, or entitlement flags as authoritative.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 3: Secure network communication
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use HTTPS with correct certificate validation.&lt;/li&gt;
&lt;li&gt;Configure Android network security deliberately.&lt;/li&gt;
&lt;li&gt;Consider certificate pinning when the threat model justifies its operational costs.&lt;/li&gt;
&lt;li&gt;Never ship private server credentials or long-lived privileged secrets inside the APK.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 4: Integrate integrity signals
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use Play Integrity where appropriate for the distribution model and risk profile.&lt;/li&gt;
&lt;li&gt;Verify integrity tokens on the backend according to Google's documented flow.&lt;/li&gt;
&lt;li&gt;Bind the verdict to the relevant request data.&lt;/li&gt;
&lt;li&gt;Use verdicts in proportion to the sensitivity of the action being protected.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 5: Detect and constrain abuse
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Apply per-account and per-action rate limits.&lt;/li&gt;
&lt;li&gt;Detect anomalous gameplay, transaction patterns, and request volumes.&lt;/li&gt;
&lt;li&gt;Log security-relevant decisions without unnecessarily collecting sensitive user data.&lt;/li&gt;
&lt;li&gt;Revoke sessions or restrict actions when evidence justifies intervention.&lt;/li&gt;
&lt;li&gt;Provide recovery paths for legitimate users incorrectly classified as risky.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 6: Test the system, not only the APK
&lt;/h3&gt;

&lt;p&gt;A secure-looking client can still communicate with an insecure API. Security assessments should therefore examine both the Android package and the backend.&lt;/p&gt;

&lt;p&gt;For a structured assessment, use the &lt;a href="https://mas.owasp.org/MASVS/" rel="noopener noreferrer"&gt;OWASP Mobile Application Security Verification Standard&lt;/a&gt; and its companion testing resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. A Safe Reverse-Engineering Lab for Learners
&lt;/h2&gt;

&lt;p&gt;The concepts in the video are best learned using an application you own or are explicitly authorized to test.&lt;/p&gt;

&lt;p&gt;A small educational project can demonstrate compilation, decompilation, obfuscation, runtime behavior, and backend authorization without targeting a commercial application or defeating its access controls.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lab A: Inspect your own APK
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a minimal Android application with a non-sensitive feature flag.&lt;/li&gt;
&lt;li&gt;Build a debug APK and inspect it using Android Studio's APK Analyzer.&lt;/li&gt;
&lt;li&gt;Examine the manifest, DEX contents, resources, and package structure.&lt;/li&gt;
&lt;li&gt;Compare the readable structure with a release build using R8.&lt;/li&gt;
&lt;li&gt;Record which names, resources, and structural details remain visible.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Learning objective:&lt;/strong&gt; Understand what compilation and obfuscation change—and what they do not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lab B: Observe runtime behavior
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add a harmless diagnostic method to your own application.&lt;/li&gt;
&lt;li&gt;Log a feature decision and its inputs in a debug-only build.&lt;/li&gt;
&lt;li&gt;Set breakpoints and observe the call sequence.&lt;/li&gt;
&lt;li&gt;Compare source-level names with the optimized release representation.&lt;/li&gt;
&lt;li&gt;Document the limits of what you can infer from a single execution.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Learning objective:&lt;/strong&gt; Understand the difference between static code inspection and dynamic analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lab C: Compare client-side and server-side authorization
&lt;/h3&gt;

&lt;p&gt;Build a small application with two feature implementations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A local demonstration feature controlled by a boolean.&lt;/li&gt;
&lt;li&gt;A protected test endpoint that independently checks an authenticated user's entitlement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the second implementation, make the backend authoritative. Test that an enabled interface does not grant access when the backend denies the operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning objective:&lt;/strong&gt; Demonstrate why changing interface state must not change server-side permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lab D: Evaluate integrity decisions
&lt;/h3&gt;

&lt;p&gt;In a development environment, document how your application responds to different integrity verdicts and how the backend handles missing, invalid, or mismatched verification data.&lt;/p&gt;

&lt;p&gt;Use Google's official Play Integrity testing and integration guidance. Do not treat the absence of a verdict as proof that a user is malicious; design an appropriate fallback or restricted mode for your threat model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning objective:&lt;/strong&gt; Understand how integrity evidence contributes to a larger authorization decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Common Misconceptions to Avoid
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Misconception 1: Decompiled code is the original source code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Decompiled output is a reconstruction. It may be incomplete or structurally different from the original implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconception 2: Obfuscation makes code impossible to understand.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Obfuscation increases the effort needed to interpret a program but does not guarantee secrecy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconception 3: HTTPS prevents all response tampering.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTPS protects data in transit under its security assumptions. It does not prevent a sufficiently privileged analyst from manipulating a client or eliminate application-level authorization flaws.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconception 4: Keeping logic on the server makes everything secure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Server-side enforcement protects operations controlled by the backend. It does not protect secrets that have already been delivered to the client or fix vulnerabilities in the backend itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconception 5: Play Integrity is just a library that crashes modified applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Play Integrity provides integrity verdicts through a documented verification flow. The backend's correct interpretation and enforcement of those verdicts are essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconception 6: If a mod works, the developer's entire security system has failed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not necessarily. A modified interface may appear to unlock a feature without obtaining the protected resource or successfully performing the protected operation. The security impact depends on what the modification actually enables.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. Conclusion: Design for an Untrusted Client
&lt;/h2&gt;

&lt;p&gt;Manguman's video provides an accessible introduction to a genuine and important area of Android security: the ongoing effort to understand and modify compiled applications.&lt;/p&gt;

&lt;p&gt;Its main narrative moves through static analysis, obfuscation, runtime analysis, backend validation, and integrity checks. These techniques are useful concepts for developers and security learners to understand.&lt;/p&gt;

&lt;p&gt;The technical nuance is that no individual technique establishes complete security. Obfuscation raises the cost of inspection. TLS protects communication. Integrity verdicts provide evidence about the application and environment. Backend authorization determines whether protected operations should proceed.&lt;/p&gt;

&lt;p&gt;These mechanisms become more effective when they reinforce one another.&lt;/p&gt;

&lt;p&gt;For Android developers, the most valuable design principle is straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assume that the client can be inspected, that local state can be manipulated, and that requests can be replayed or automated unless your architecture prevents it. Then enforce security where the authority and valuable resources actually reside.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That approach does not eliminate reverse engineering. It ensures that understanding an application is not, by itself, enough to defeat its security model.&lt;/p&gt;




&lt;h2&gt;
  
  
  References and Further Reading
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Android Developers — &lt;a href="https://developer.android.com/studio/debug/apk-analyzer" rel="noopener noreferrer"&gt;Analyze your build with APK Analyzer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Android Developers — &lt;a href="https://developer.android.com/google/play/integrity/overview" rel="noopener noreferrer"&gt;Overview of the Play Integrity API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Android Developers — &lt;a href="https://developer.android.com/google/play/integrity/standard" rel="noopener noreferrer"&gt;Make a standard Play Integrity API request&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Android Developers — &lt;a href="https://developer.android.google.cn/privacy-and-security/security-config?hl=en" rel="noopener noreferrer"&gt;Network Security Configuration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP — &lt;a href="https://mas.owasp.org/MASVS/11-MASVS-RESILIENCE/" rel="noopener noreferrer"&gt;MASVS: Resilience Against Reverse Engineering and Tampering&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP — &lt;a href="https://mas.owasp.org/MASVS/" rel="noopener noreferrer"&gt;Mobile Application Security Verification Standard&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Editorial note: The discussion of the Spotify incident and the individual techniques attributed to attackers follows the supplied transcript. Those claims are not independently verified here. The explanations of DEX, Smali, network security, and Play Integrity provide additional technical context based on the references above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>cybersecurity</category>
      <category>apk</category>
      <category>apkeditor</category>
    </item>
    <item>
      <title>CampusLoop Atlas: I Built an Agent That Knows What Is Actually Happening on Campus</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Thu, 24 Sep 2026 08:38:55 +0000</pubDate>
      <link>https://dev.to/sh20raj/campusloop-atlas-i-built-an-agent-that-knows-what-is-actually-happening-on-campus-1iai</link>
      <guid>https://dev.to/sh20raj/campusloop-atlas-i-built-an-agent-that-knows-what-is-actually-happening-on-campus-1iai</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge, Path One: Ship an Agent That Queries Real Content&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  CampusLoop Atlas: I Built an Agent That Knows What Is Actually Happening on Campus
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ask the campus. Get an answer grounded in real, structured campus content.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most "AI campus assistants" are really just chat UIs sitting on top of a search box.&lt;/p&gt;

&lt;p&gt;I wanted to build something harder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CampusLoop Atlas&lt;/strong&gt; is an agent that answers questions about clubs, events, people, schedules, eligibility, locations, and opportunities by querying a structured Sanity content system through &lt;strong&gt;Sanity Context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The important part is not that it can answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What clubs exist?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A keyword search can do that.&lt;/p&gt;

&lt;p&gt;The interesting questions are things like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"I'm a second-year CSE student, I like web development, I can only attend events after 5 PM on Friday, and I want something where beginners are welcome. What should I join, and why?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That answer requires the agent to connect multiple pieces of structured content.&lt;/p&gt;

&lt;p&gt;It has to reason over:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student profile
     │
     ├──────────────┐
     │              │
     ▼              ▼
interests       availability
     │              │
     └──────┬───────┘
            ▼
          clubs
            │
      ┌─────┼─────┐
      ▼     ▼     ▼
    events people eligibility
      │
      ▼
   locations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the part I wanted Sanity to power.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CampusLoop Atlas&lt;/strong&gt; turns a structured campus content graph into a conversational agent.&lt;/p&gt;

&lt;p&gt;The content model is intentionally richer than a collection of blog posts.&lt;/p&gt;

&lt;p&gt;A typical record looks conceptually like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Club
├── name
├── slug
├── description
├── categories[]
├── skills[]
├── audience[]
├── beginnerFriendly
├── members[]
├── events[]
└── socials

Event
├── title
├── startAt
├── endAt
├── venue
├── organizer
├── clubs[]
├── eligibility[]
├── skills[]
├── registrationUrl
└── status

Person
├── name
├── role
├── clubs[]
└── areas[]

Venue
├── name
├── building
└── campusArea
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can then answer questions that depend on &lt;strong&gt;relationships between documents&lt;/strong&gt;, not just matching words.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;User:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which web-development opportunities can a first-year student attend this weekend?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent needs to discover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;events occurring this weekend&lt;/li&gt;
&lt;li&gt;their organizers&lt;/li&gt;
&lt;li&gt;the organizer's associated clubs&lt;/li&gt;
&lt;li&gt;the skills/category attached to those events&lt;/li&gt;
&lt;li&gt;eligibility requirements&lt;/li&gt;
&lt;li&gt;registration state&lt;/li&gt;
&lt;li&gt;exact timing and venue&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's precisely the kind of task where structured content becomes useful.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Problem With Normal Search
&lt;/h1&gt;

&lt;p&gt;Suppose the dataset contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Web Development Club
HackQuest
Frontend Workshop
ACM Meetup
React Bootcamp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A search engine can find these words.&lt;/p&gt;

&lt;p&gt;But the real question might be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which beginner-friendly event this Saturday is run by a club that actively teaches frontend development, is on campus, and still has registration open?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is not a document.&lt;/p&gt;

&lt;p&gt;It is a &lt;strong&gt;join across documents&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          ┌─────────────┐
          │    Events   │
          └──────┬──────┘
                 │
                 │ organizer
                 ▼
          ┌─────────────┐
          │    Clubs    │
          └──────┬──────┘
                 │
        ┌────────┼─────────┐
        ▼        ▼         ▼
     skills   audience   members
        │        │
        └────┬───┘
             ▼
       Candidate events
             │
       ┌─────┴─────┐
       ▼           ▼
   eligibility   schedule
       │           │
       └─────┬─────┘
             ▼
          Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Sanity stores the structure. The agent reasons over it.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Sanity?
&lt;/h1&gt;

&lt;p&gt;Sanity's Content Lake stores content as structured JSON documents with schemas that I can design around the domain.&lt;/p&gt;

&lt;p&gt;For this project, that means I can model the campus as actual entities and relationships rather than forcing everything into flat text.&lt;/p&gt;

&lt;p&gt;Sanity Context then exposes that content to an agent through a hosted, read-only MCP server. In GROQ mode, Context provides tools for understanding the schema and querying documents; Knowledge Base mode provides access to pre-built indexed entries. citeturn545668search1turn545668search0&lt;/p&gt;

&lt;p&gt;For this challenge I use &lt;strong&gt;Knowledge Base + Sanity Context MCP&lt;/strong&gt; so the agent can retrieve the curated campus knowledge that I selected instead of relying on a generic web search.&lt;/p&gt;

&lt;p&gt;The challenge explicitly calls for an agent backed by a Sanity Context MCP endpoint and a Knowledge Base, and says the strongest Path One submissions are ones that only work because the content is structured. citeturn545668view0&lt;/p&gt;

&lt;p&gt;That is exactly the constraint I designed around.&lt;/p&gt;




&lt;h1&gt;
  
  
  How I Used Sanity
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. I modeled the campus as connected content
&lt;/h2&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"ACM organizes HackQuest in the Main Auditorium..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I store:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"event"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HackQuest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"organizer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"_ref"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"club-acm"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"venue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"_ref"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"venue-main-auditorium"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"skills"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"web-development"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ai"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eligibility"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"students"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"registration-open"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That small difference changes what the agent can infer.&lt;/p&gt;

&lt;p&gt;The agent doesn't have to guess whether two pieces of text refer to the same entity.&lt;/p&gt;

&lt;p&gt;The relationship is data.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. I pointed Sanity Context at the content I actually care about
&lt;/h2&gt;

&lt;p&gt;The Knowledge Base contains the campus sources used by the agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CampusLoop content
├── Clubs
├── Events
├── People
├── Venues
├── Eligibility rules
├── Categories
└── FAQs / announcements
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Knowledge Bases are pre-built indexes over selected material and can combine sources so an agent can retrieve from one indexed knowledge layer. Sanity currently documents Knowledge Bases as a beta feature. citeturn545668search3turn545668search2&lt;/p&gt;

&lt;p&gt;For this project, that means the agent sees a &lt;strong&gt;curated campus knowledge graph&lt;/strong&gt; rather than an unstructured pile of pages.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. I used the Context tools as an agent, not as a hidden search endpoint
&lt;/h1&gt;

&lt;p&gt;Sanity Context's GROQ-mode tools include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;initial_context
schema_explorer
groq_query
array_field_reader
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The schema-aware tools matter because the agent first needs to understand &lt;strong&gt;what kind of content exists and how it is shaped&lt;/strong&gt; before it can ask useful questions of the data. citeturn545668search0&lt;/p&gt;

&lt;p&gt;In Knowledge Base mode, the agent works with indexed entries instead of directly querying the live dataset. citeturn545668search0turn545668search3&lt;/p&gt;

&lt;p&gt;The important workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      │
      ▼
Agent interprets intent
      │
      ▼
Sanity Context
      │
      ├── discover relevant content
      ├── follow structured relationships
      ├── retrieve source-backed facts
      │
      ▼
Agent synthesizes answer
      │
      ▼
Answer + evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  A Question That Breaks Keyword Search
&lt;/h1&gt;

&lt;p&gt;Here is the type of question Atlas is designed for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"I am a first-year student interested in AI and frontend development. I don't want competitive coding events, I can only attend after 6 PM, and I want something that doesn't require prior club membership. What can I attend this week?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice how many constraints are hidden inside one sentence.&lt;/p&gt;

&lt;p&gt;The agent needs to combine:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Constraint&lt;/th&gt;
&lt;th&gt;Structured field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;First-year&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eligibility&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;skills[]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;skills[]&lt;/code&gt; / &lt;code&gt;categories[]&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Avoid competitive coding&lt;/td&gt;
&lt;td&gt;&lt;code&gt;categories[]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After 6 PM&lt;/td&gt;
&lt;td&gt;&lt;code&gt;startAt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No membership required&lt;/td&gt;
&lt;td&gt;&lt;code&gt;eligibility[]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;This week&lt;/td&gt;
&lt;td&gt;event date&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A plain text search engine may retrieve relevant pages.&lt;/p&gt;

&lt;p&gt;But it isn't naturally performing this structured filtering and relationship traversal.&lt;/p&gt;

&lt;p&gt;That's why the content model is part of the product.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Agent's Answer
&lt;/h1&gt;

&lt;p&gt;Instead of dumping search results, Atlas is designed to return something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I found 3 opportunities that match your constraints.

1. Frontend Workshop
   Friday • 6:30 PM
   Web Development Club
   Beginner-friendly
   No club membership required
   Main Lecture Hall

   Why it matches:
   ✓ frontend
   ✓ after 6 PM
   ✓ beginner-friendly
   ✓ open to students

2. AI Build Night
   Saturday • 7:00 PM
   AI Club
   ...

3. Open Source Sprint
   Sunday • 6:30 PM
   Developer Community
   ...

I excluded 4 other events because they:
• started before 6 PM
• required prior membership
• were categorized as competitive programming
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final response is generated by the agent.&lt;/p&gt;

&lt;p&gt;But the facts come from structured content.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔍 The "Why?" Button
&lt;/h1&gt;

&lt;p&gt;One feature I care about a lot is &lt;strong&gt;showing why the agent reached its conclusion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For every recommendation, the UI can expose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Matched because:

✓ skill = frontend
✓ audience = first-year
✓ beginnerFriendly = true
✓ startAt &amp;gt; 18:00
✓ registrationStatus = open

Source:
→ Frontend Workshop
→ Web Development Club
→ Main Lecture Hall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the result inspectable.&lt;/p&gt;

&lt;p&gt;Sanity Context is read-only and the connection is scoped by its configured sources and filters, which is useful for keeping the agent inside the content boundary I explicitly gave it. citeturn545668search10&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 Handling Conflicting Information
&lt;/h1&gt;

&lt;p&gt;Another reason I chose Sanity Context instead of simply scraping pages at runtime is provenance.&lt;/p&gt;

&lt;p&gt;The challenge specifically highlights that Knowledge Base entries remain linked to their source and that contradictory source claims can be surfaced together. citeturn545668view0&lt;/p&gt;

&lt;p&gt;That matters on a campus.&lt;/p&gt;

&lt;p&gt;Imagine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Club page:
"Workshop starts at 5 PM"

Official event page:
"Workshop starts at 6 PM"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A generic chatbot might confidently choose one.&lt;/p&gt;

&lt;p&gt;Atlas can treat those as conflicting source-backed claims and surface the discrepancy for resolution instead of silently inventing certainty.&lt;/p&gt;

&lt;p&gt;That is a much safer interaction model for real-world content.&lt;/p&gt;




&lt;h1&gt;
  
  
  🛠️ Architecture
&lt;/h1&gt;

&lt;p&gt;The production architecture is intentionally small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                   ┌─────────────────────┐
                   │   CampusLoop Atlas  │
                   │      Web App        │
                   └──────────┬──────────┘
                              │
                              ▼
                   ┌─────────────────────┐
                   │      AI Agent       │
                   │                     │
                   │ intent + planning   │
                   │ answer synthesis    │
                   └──────────┬──────────┘
                              │
                              │ MCP
                              ▼
                   ┌─────────────────────┐
                   │   Sanity Context    │
                   │                     │
                   │ Knowledge Base      │
                   └──────────┬──────────┘
                              │
                       indexed content
                              │
                              ▼
                   ┌─────────────────────┐
                   │   Sanity Content    │
                   │       Lake          │
                   └─────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend is only the interface.&lt;/p&gt;

&lt;p&gt;The interesting system is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;structured content
       +
retrieval
       +
agent reasoning
       =
grounded campus answers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  💻 The Data Model
&lt;/h1&gt;

&lt;p&gt;The schema is deliberately relationship-heavy.&lt;/p&gt;

&lt;p&gt;A simplified version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;defineType&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;event&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;document&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;validation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Rule&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Rule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;startAt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;datetime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;validation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Rule&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;Rule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;organizer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reference&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;club&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;venue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reference&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;venue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skills&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;array&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eligibility&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;array&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;

    &lt;span class="nf"&gt;defineField&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;beginnerFriendly&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boolean&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact production schema is available in the repository linked below.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔗 Why References Matter
&lt;/h1&gt;

&lt;p&gt;Consider these two representations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flat content
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HackQuest is hosted by ACM in Main Auditorium.
ACM is a technical club.
Main Auditorium is on Central Campus.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Structured content
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HackQuest
 ├── organizer → ACM
 └── venue → Main Auditorium

ACM
 └── category → Technical

Main Auditorium
 └── campusArea → Central Campus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now a question like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which technical events are happening in Central Campus?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;can be answered from relationships rather than semantic coincidence.&lt;/p&gt;

&lt;p&gt;That is the difference between &lt;strong&gt;searching text&lt;/strong&gt; and &lt;strong&gt;querying a content model&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🤖 Agent Loop
&lt;/h1&gt;

&lt;p&gt;The agent roughly follows this pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Understand the question
2. Identify constraints
3. Retrieve relevant entities
4. Traverse relationships
5. Filter candidates
6. Resolve conflicts
7. Generate an answer
8. Cite the supporting content
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pseudo-code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parse_question&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;candidates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sanity_context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retrieve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;entities&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;entities&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;constraints&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;filtered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;apply_constraints&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;constraints&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;conflicts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;detect_conflicts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filtered&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;synthesize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;filtered&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;conflicts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conflicts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;get_sources&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filtered&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key point is that &lt;strong&gt;Sanity is the source of truth for the campus knowledge used by the agent&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🚦 Guardrails
&lt;/h1&gt;

&lt;p&gt;I don't want a campus assistant that confidently fabricates event information.&lt;/p&gt;

&lt;p&gt;So Atlas follows a few rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NO SOURCE
   ↓
Do not present the claim as campus fact.

CONFLICTING SOURCES
   ↓
Surface the conflict.

MISSING CONSTRAINT
   ↓
Ask a follow-up question.

STALE / PAST EVENT
   ↓
Label it clearly instead of presenting it as upcoming.

NO MATCH
   ↓
Say no matching opportunity was found.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is especially important because Sanity Context itself is a &lt;strong&gt;read-only&lt;/strong&gt; content interface; it exposes the content configured for the agent rather than letting the agent silently mutate the dataset. citeturn545668search1turn545668search10&lt;/p&gt;




&lt;h1&gt;
  
  
  🧪 How I Tested It
&lt;/h1&gt;

&lt;p&gt;I created test questions in increasing levels of difficulty.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 1 — Direct lookup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"What is the next HackQuest event?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 2 — Filtering
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Which events are happening after 6 PM?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 3 — Multi-constraint
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Which AI events after 6 PM are beginner-friendly?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 4 — Relationship reasoning
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Which beginner-friendly events are hosted by clubs
that teach web development?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 5 — Real-world ambiguity
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Which event should I attend if I'm a first-year student,
want to learn frontend development, cannot attend before 6 PM,
and don't want competitive programming?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 6 — Conflict handling
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Why does one source say 5 PM and another say 6 PM?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The higher-level tests are the important ones.&lt;/p&gt;

&lt;p&gt;A benchmark that only measures Level 1 is basically measuring search.&lt;/p&gt;




&lt;h1&gt;
  
  
  📈 What I Measure
&lt;/h1&gt;

&lt;p&gt;I evaluate more than whether an answer "sounds right."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;What I check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Grounding&lt;/td&gt;
&lt;td&gt;Are important claims supported by Sanity content?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constraint accuracy&lt;/td&gt;
&lt;td&gt;Did the answer respect every user constraint?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relationship accuracy&lt;/td&gt;
&lt;td&gt;Did it follow the right references?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Freshness&lt;/td&gt;
&lt;td&gt;Did it distinguish upcoming from past content?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conflict awareness&lt;/td&gt;
&lt;td&gt;Did it surface contradictions?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Abstention&lt;/td&gt;
&lt;td&gt;Did it avoid inventing an answer when data was missing?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source coverage&lt;/td&gt;
&lt;td&gt;Can I trace recommendations back to content?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A useful agent should be &lt;strong&gt;correct because it found the right content&lt;/strong&gt;, not merely because the language model produced a plausible sentence.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔥 The coolest use case
&lt;/h1&gt;

&lt;p&gt;The feature I ultimately want CampusLoop Atlas to become is a &lt;strong&gt;personal campus navigator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine opening the app at the beginning of a semester and asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I have 6 hours free this week. I want to meet developers, learn React, attend one AI event, avoid anything before 5 PM, and I'd prefer events that are free."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Atlas could construct a schedule from structured campus content.&lt;/p&gt;

&lt;p&gt;That is not a search result.&lt;/p&gt;

&lt;p&gt;It is a &lt;strong&gt;plan built from a content graph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that is exactly why Sanity is useful here.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎬 Demo
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; [ADD YOUR DEPLOYED AGENT URL]&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Recommended demo flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Ask a simple question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Ask a multi-constraint question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Open the "Why this answer?" evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Ask a question whose answer depends on two or more linked documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; Demonstrate a conflict or missing-data case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; Show the underlying Sanity content that produced the answer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sixth step is important.&lt;/p&gt;

&lt;p&gt;I don't just want to show that the agent talks.&lt;/p&gt;

&lt;p&gt;I want to show &lt;strong&gt;where the answer came from&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  💻 Code
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; [ADD YOUR PUBLIC GITHUB REPOSITORY]&lt;/p&gt;

&lt;p&gt;The repository contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/apps
  /web
  /agent

/sanity
  /schemas
  /seed

/lib
  /context
  /retrieval
  /evaluation

/README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The README includes setup instructions, environment variables, the Sanity schema, and the agent integration.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧩 How I Used Sanity Context
&lt;/h1&gt;

&lt;p&gt;The key integration is the &lt;strong&gt;Sanity Context MCP endpoint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The agent is configured to access the Sanity knowledge surface rather than being given a giant prompt containing campus data.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent
  │
  │ MCP
  ▼
Sanity Context
  │
  ├── initial context
  ├── schema / content understanding
  ├── retrieval
  └── source-linked knowledge
       │
       ▼
   Sanity Knowledge Base
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sanity documents the Context MCP as a hosted, structured, read-only interface for agents. GROQ mode exposes schema and query tools, while Knowledge Base mode exposes indexed entries. citeturn545668search0turn545668search1&lt;/p&gt;

&lt;p&gt;For the challenge, I use the &lt;strong&gt;Knowledge Base path&lt;/strong&gt; because I want the agent to work from a curated campus corpus.&lt;/p&gt;




&lt;h1&gt;
  
  
  🗂️ Sanity Project Details
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Sanity Project ID:&lt;/strong&gt; &lt;code&gt;[ADD YOUR SANITY PROJECT ID]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public dataset / project link:&lt;/strong&gt; &lt;code&gt;[ADD PUBLIC DATASET URL, IF USED]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The Sanity workspace contains the structured content models used by CampusLoop Atlas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;club
event
person
venue
category
announcement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part of the model is not the number of document types.&lt;/p&gt;

&lt;p&gt;It is the relationships between them.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧾 Agent Session
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Agent Session:&lt;/strong&gt; &lt;code&gt;[ADD PUBLIC DEV AGENT SESSION URL]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The session should show:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt
  ↓
agent planning
  ↓
Sanity Context calls
  ↓
retrieved content
  ↓
reasoning
  ↓
final grounded answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agent Sessions on DEV are unlisted by default, so the session must be made public for judges to access it. The challenge also recommends curating the useful portions and checking the transcript for secrets before publishing. citeturn545668view0&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 What I Learned
&lt;/h1&gt;

&lt;p&gt;The biggest lesson was surprisingly simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Retrieval quality is partly a schema-design problem.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I started from the agent.&lt;/p&gt;

&lt;p&gt;I ended up thinking much more about the data.&lt;/p&gt;

&lt;p&gt;Questions such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"What events should I attend?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;became schema questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What is an event?
Who organizes it?
Who can attend?
What skills does it teach?
Where is it?
When does it happen?
What club does it belong to?
What else is related to it?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once those relationships existed as structured data, the agent had something much stronger than a pile of documents.&lt;/p&gt;

&lt;p&gt;It had a model of the campus.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚔️ Why this is more than RAG
&lt;/h1&gt;

&lt;p&gt;A lot of AI applications can be described as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chunk text
  ↓
embed
  ↓
vector search
  ↓
LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That pattern is powerful.&lt;/p&gt;

&lt;p&gt;But it doesn't automatically understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;event → organizer → club → skill
event → venue → campus area
event → eligibility → student year
event → time → availability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CampusLoop Atlas is intentionally built around &lt;strong&gt;structured relationships plus retrieval&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The content model is part of the agent's intelligence.&lt;/p&gt;




&lt;h1&gt;
  
  
  🌐 What I Want to Build Next
&lt;/h1&gt;

&lt;p&gt;The next version could add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;calendar-aware planning
        +
personal preferences
        +
real-time event state
        +
notifications
        +
agent-generated weekly plans
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Build me a campus week."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The response could become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MON
6:00 PM — React Workshop

WED
7:00 PM — AI Build Night

SAT
5:30 PM — Open Source Meetup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each recommendation would remain connected to its underlying Sanity content.&lt;/p&gt;




&lt;h1&gt;
  
  
  🏁 Final Takeaway
&lt;/h1&gt;

&lt;p&gt;I didn't build CampusLoop Atlas because campus information needs another chatbot.&lt;/p&gt;

&lt;p&gt;I built it because campus information is &lt;strong&gt;structured&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Clubs have members.&lt;/p&gt;

&lt;p&gt;Events have organizers.&lt;/p&gt;

&lt;p&gt;Events have venues.&lt;/p&gt;

&lt;p&gt;Venues belong to areas.&lt;/p&gt;

&lt;p&gt;Events have dates.&lt;/p&gt;

&lt;p&gt;Events have eligibility.&lt;/p&gt;

&lt;p&gt;Clubs have skills.&lt;/p&gt;

&lt;p&gt;And students have preferences.&lt;/p&gt;

&lt;p&gt;Those relationships are exactly what makes the problem interesting.&lt;/p&gt;

&lt;p&gt;Sanity gives me a place to model those relationships.&lt;/p&gt;

&lt;p&gt;Sanity Context gives the agent a controlled way to access them.&lt;/p&gt;

&lt;p&gt;The agent turns those facts into an answer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRUCTURED CONTENT
        ↓
   SANITY CONTEXT
        ↓
   AGENT RETRIEVAL
        ↓
RELATIONSHIP REASONING
        ↓
  GROUNDED ANSWER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal isn't to make an agent that knows everything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's to make an agent that knows where its answers came from.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔗 Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://campusloop.space/" rel="noopener noreferrer"&gt;https://campusloop.space/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/SH20RAJ/campusloop" rel="noopener noreferrer"&gt;https://github.com/SH20RAJ/campusloop&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanity Project ID:&lt;/strong&gt; &lt;code&gt;sekwib79&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Session:&lt;/strong&gt; &lt;a href="https://github.com/SH20RAJ/campusloop/blob/main/sanity/AGENT_SESSION.md" rel="noopener noreferrer"&gt;https://github.com/SH20RAJ/campusloop/blob/main/sanity/AGENT_SESSION.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CampusLoop:&lt;/strong&gt; &lt;a href="https://campusloop.space/" rel="noopener noreferrer"&gt;https://campusloop.space/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanity Context Endpoint&lt;/strong&gt;: &lt;code&gt;https://sekwib79.api.sanity.io/v2024-03-01/context/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanity Project ID&lt;/strong&gt;: &lt;code&gt;sekwib79&lt;/code&gt; (Dataset: &lt;code&gt;production&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📚 References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sanity.io/docs/ai/sanity-context" rel="noopener noreferrer"&gt;Sanity Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sanity.io/docs/ai/sanity-context-mcp" rel="noopener noreferrer"&gt;Sanity Context MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sanity.io/docs/ai/sanity-context-mcp-tools" rel="noopener noreferrer"&gt;Sanity Context MCP Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sanity.io/docs/ai/sanity-context-knowledge-bases" rel="noopener noreferrer"&gt;Knowledge Bases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/challenges/sanity-2026-09-16"&gt;Sanity Challenge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  sanitychallenge #agents #ai #webdev
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>sanitychallenge</category>
      <category>sanity</category>
      <category>ai</category>
    </item>
    <item>
      <title>Jev Is Not Trying to Be Another Chatbot — It Is Trying to Become a Decision Layer for Software</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Thu, 24 Sep 2026 08:37:52 +0000</pubDate>
      <link>https://dev.to/sh20raj/jev-is-not-trying-to-be-another-chatbot-it-is-trying-to-become-a-decision-layer-for-software-1ldi</link>
      <guid>https://dev.to/sh20raj/jev-is-not-trying-to-be-another-chatbot-it-is-trying-to-become-a-decision-layer-for-software-1ldi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Jev Is Not Trying to Be Another Chatbot — It Is Trying to Become a Decision Layer for Software
&lt;/h1&gt;

&lt;p&gt;AI has spent the last few years getting dramatically better at &lt;strong&gt;generating things&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Code. Emails. Images. Plans. Explanations. Entire applications.&lt;/p&gt;

&lt;p&gt;But software does something else thousands—or millions—of times per day:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;It makes tiny decisions.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Should this request go to billing or support?&lt;/p&gt;

&lt;p&gt;Should this document be reviewed?&lt;/p&gt;

&lt;p&gt;Should this agent retry?&lt;/p&gt;

&lt;p&gt;Which tool should run next?&lt;/p&gt;

&lt;p&gt;Is this input relevant enough to keep?&lt;/p&gt;

&lt;p&gt;Should a human take over?&lt;/p&gt;

&lt;p&gt;For many of those decisions, we have been using a very expensive tool: a general-purpose language model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jev takes the opposite approach.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of asking an AI to write a paragraph that our software has to interpret, Jev is designed to return a &lt;strong&gt;structured decision&lt;/strong&gt; that software can use directly.&lt;/p&gt;

&lt;p&gt;That sounds like a small API design choice.&lt;/p&gt;

&lt;p&gt;I think it is a much bigger architectural idea.&lt;/p&gt;




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

&lt;p&gt;The easiest way to understand Jev is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        ┌──────────────────┐
        │      STATE       │
        │                  │
        │ text / JSON      │
        │ application data │
        └────────┬─────────┘
                 │
                 ▼
        ┌──────────────────┐
        │       JEV        │
        │                  │
        │  Choice / Score  │
        │      / Noul      │
        └────────┬─────────┘
                 │
                 ▼
        ┌──────────────────┐
        │ TYPED DECISION   │
        │ + probabilities  │
        │ + confidence     │
        └────────┬─────────┘
                 │
                 ▼
        ┌──────────────────┐
        │   YOUR PROGRAM   │
        │                  │
        │ route / filter   │
        │ rank / branch    │
        │ escalate / act   │
        └──────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A normal LLM workflow often looks more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;State
  ↓
LLM
  ↓
Generated text
  ↓
Parser
  ↓
Validation
  ↓
Retries / error handling
  ↓
Application logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Jev is designed to remove the &lt;strong&gt;generated-text middleman&lt;/strong&gt; for bounded decisions.&lt;/p&gt;

&lt;p&gt;TypeSafe describes Jev as its first &lt;strong&gt;System One model&lt;/strong&gt;: a model class intended for fast, structured decisions inside software rather than free-form text generation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLMs generate strings. Jev returns decisions.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction is the entire story.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a "System One" model?
&lt;/h1&gt;

&lt;p&gt;The name is inspired by the familiar distinction between fast, intuitive judgment and slower, deliberative reasoning.&lt;/p&gt;

&lt;p&gt;But in software, the useful interpretation is simpler:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use a fast intelligence primitive for the small judgments inside a larger software system.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model is not supposed to replace your entire application.&lt;/p&gt;

&lt;p&gt;It sits &lt;em&gt;inside&lt;/em&gt; your application.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User message
     │
     ▼
┌───────────────┐
│     Jev       │
│ "What kind of │
│  request is   │
│  this?"       │
└───────┬───────┘
        │
   ┌────┴────┐
   ▼         ▼
Billing    Technical
   │         │
   ▼         ▼
Code       Tool
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is fundamentally different from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Hey AI, please think through this request and tell me what
my application should probably do next..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first interface is a &lt;strong&gt;decision API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The second is a conversation with a language model.&lt;/p&gt;




&lt;h1&gt;
  
  
  The three primitives
&lt;/h1&gt;

&lt;p&gt;Jev currently exposes three important question types.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Primitive&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Typical use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Choice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Picks one option&lt;/td&gt;
&lt;td&gt;Routing, classification, tool selection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Score&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scores something against a rubric&lt;/td&gt;
&lt;td&gt;Quality, urgency, risk, relevance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Noul&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Estimates whether a statement is true&lt;/td&gt;
&lt;td&gt;Verification, gating, yes/no decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The interesting part is that these are not three ways of asking a chatbot a question.&lt;/p&gt;

&lt;p&gt;They are three &lt;strong&gt;typed interfaces for software decisions&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;code&gt;Choice&lt;/code&gt; — "Which one?"
&lt;/h2&gt;

&lt;p&gt;Imagine an incoming support ticket:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"My payment went through twice and I still cannot access my subscription."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your application might need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;billing
technical
account
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With an LLM, you might ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Classify this support ticket into one of:
billing, technical, account.

Return JSON.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then your application has to trust the format, parse it, validate it, and handle whatever weird edge case the model produces.&lt;/p&gt;

&lt;p&gt;With Jev, the question itself is structured:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typesafe_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Choice&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TypeSafeClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TypeSafeClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;My payment went through twice and I still cannot access my subscription.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;questions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;department&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Which team should handle this request?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;criteria&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;billing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Charges, refunds, invoices, payment problems&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;technical&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bugs, errors, broken integrations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;account&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Login, permissions, account access&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;answers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;department&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important output is not a paragraph.&lt;/p&gt;

&lt;p&gt;It is a value your code can branch on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;answers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;department&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;billing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;route_to_billing&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is much closer to calling a function than chatting with an AI.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. &lt;code&gt;Score&lt;/code&gt; — "How much?"
&lt;/h1&gt;

&lt;p&gt;Some decisions are not categories.&lt;/p&gt;

&lt;p&gt;They are measurements.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;How urgent is this support message?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might define:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 → Not urgent
1 → Somewhat urgent
2 → Critical
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 → Low quality
1 → Acceptable
2 → Excellent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important thing is that &lt;strong&gt;your code defines the rubric&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That makes the model a judgment component rather than the owner of the final policy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typesafe_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Score&lt;/span&gt;

&lt;span class="n"&gt;quality&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;How useful is this answer to a developer?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;criteria&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Incorrect or unusable&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Partially useful&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Correct and useful&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the model estimates where the state falls on your predefined scale.&lt;/p&gt;

&lt;p&gt;Your application decides what to do with the result.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. &lt;code&gt;Noul&lt;/code&gt; — "Is this true?"
&lt;/h1&gt;

&lt;p&gt;This is the simplest primitive.&lt;/p&gt;

&lt;p&gt;You give Jev a statement such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"This ticket contains a request for a refund."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typesafe_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Noul&lt;/span&gt;

&lt;span class="n"&gt;refund_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Noul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Does this message contain a request for a refund?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result is a probability-like value from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That opens up an interesting class of software:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;refund_request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;noul&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;start_refund_review&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;spam_score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;refund_request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;noul&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;auto_route&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suddenly, AI becomes part of ordinary application logic.&lt;/p&gt;




&lt;h1&gt;
  
  
  🤯 Why this is interesting
&lt;/h1&gt;

&lt;p&gt;Here's the mental shift I find most important.&lt;/p&gt;

&lt;p&gt;We normally think about AI as a &lt;strong&gt;thing that produces content&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Jev suggests thinking about AI as a &lt;strong&gt;thing that produces uncertainty-aware decisions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a much smaller interface.&lt;/p&gt;

&lt;p&gt;And smaller interfaces are powerful.&lt;/p&gt;

&lt;p&gt;Compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate a response explaining which tool should be called.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Choose:
[search_docs, execute_sql, browse_web, ask_human]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second one gives the model much less freedom.&lt;/p&gt;

&lt;p&gt;But that constraint is the feature.&lt;/p&gt;

&lt;p&gt;The application remains in control.&lt;/p&gt;




&lt;h1&gt;
  
  
  "But can't normal LLMs already return JSON?"
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;And this is where the distinction becomes important.&lt;/p&gt;

&lt;p&gt;A modern LLM can be instructed to produce:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"search_docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.91&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is useful.&lt;/p&gt;

&lt;p&gt;But the model is fundamentally still a &lt;strong&gt;text-generation system&lt;/strong&gt; whose output has been constrained or structured for a downstream consumer.&lt;/p&gt;

&lt;p&gt;Jev is designed around the decision interface from the beginning.&lt;/p&gt;

&lt;p&gt;The conceptual difference is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM:

question
   ↓
tokens
   ↓
structured text
   ↓
parser
   ↓
application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;versus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jev:

state + typed question
          ↓
     typed decision
          ↓
      application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That sounds subtle.&lt;/p&gt;

&lt;p&gt;Inside a production system, it can be a very important distinction.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚡ Why the speed matters
&lt;/h1&gt;

&lt;p&gt;The other reason Jev is interesting is not just its output format.&lt;/p&gt;

&lt;p&gt;It is the economics of putting intelligence &lt;strong&gt;inside loops&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;TypeSafe currently publishes Jev at &lt;strong&gt;$0.042 per million input tokens&lt;/strong&gt; and describes typical end-to-end response times of roughly &lt;strong&gt;70–500 ms&lt;/strong&gt; for its System One workloads.&lt;/p&gt;

&lt;p&gt;That creates an interesting possibility:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if AI decisions became cheap enough to use like infrastructure?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Imagine an agent processing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 documents
×
8 classification checks
×
5 routing decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI layer quickly becomes a large number of tiny calls.&lt;/p&gt;

&lt;p&gt;With a conventional generative model, you are paying for text generation at each stage.&lt;/p&gt;

&lt;p&gt;With a decision model, the target workload is much narrower.&lt;/p&gt;




&lt;h1&gt;
  
  
  🏗️ The architecture I find most interesting
&lt;/h1&gt;

&lt;p&gt;I don't think Jev should replace LLMs.&lt;/p&gt;

&lt;p&gt;I think it makes more sense as a &lt;strong&gt;second layer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌──────────────────────┐
                 │     APPLICATION      │
                 └──────────┬───────────┘
                            │
                            ▼
                 ┌──────────────────────┐
                 │         JEV          │
                 │                      │
                 │ classify             │
                 │ score                │
                 │ verify               │
                 │ route                │
                 │ gate                 │
                 └───────┬───────┬──────┘
                         │       │
                  confident      uncertain
                         │       │
                         ▼       ▼
                    execute     ┌───────────┐
                                │ LLM /     │
                                │ human     │
                                └───────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the idea gets really powerful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cheap decisions first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expensive reasoning only when necessary.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  🔀 A hybrid AI agent
&lt;/h1&gt;

&lt;p&gt;Suppose an autonomous coding agent receives an issue.&lt;/p&gt;

&lt;p&gt;It could work like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Issue arrives
     │
     ▼
Jev: Is this actionable?
     │
 ┌───┴────┐
 │        │
No       Yes
 │        │
 ▼        ▼
Ask     Jev: What type?
          │
      ┌───┼─────────┐
      ▼   ▼         ▼
     bug feature  question
      │     │         │
      └─────┴─────────┘
                │
                ▼
        Use appropriate tool
                │
                ▼
        LLM for deep work
                │
                ▼
            Jev: verify
                │
          ┌─────┴─────┐
          ▼           ▼
        pass        uncertain
          │           │
          ▼           ▼
        ship       human review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice what happened.&lt;/p&gt;

&lt;p&gt;The LLM did not disappear.&lt;/p&gt;

&lt;p&gt;It became &lt;strong&gt;one component instead of the entire control plane&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧪 A real benchmark question
&lt;/h1&gt;

&lt;p&gt;This is the part I wanted to explore for the Kaggle Benchmarking Challenge.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which model writes the best answer?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I want to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Which model makes the best decision when the correct action is not always to act?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That produces a very different benchmark.&lt;/p&gt;

&lt;p&gt;For example, give every model the same software scenario:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A pull request changes authentication middleware.

The tests pass.

The PR description says the change is required for a new API.

However, the repository contains an older mobile client
that still uses the previous authentication flow.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The possible decisions could be:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Decision&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SHIP&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Safe to merge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CHANGE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Modify before merging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ASK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;More information is required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;STOP&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Known unacceptable risk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now we can test something that matters in real automation:&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the model distinguish "I can answer this" from "I should act on this"?
&lt;/h3&gt;

&lt;p&gt;That's a much more interesting failure mode than whether an LLM can produce valid JSON.&lt;/p&gt;




&lt;h1&gt;
  
  
  📊 What I would measure
&lt;/h1&gt;

&lt;p&gt;A useful benchmark should not collapse everything into one accuracy number.&lt;/p&gt;

&lt;p&gt;I would measure at least:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Decision accuracy&lt;/td&gt;
&lt;td&gt;Was the selected action correct?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calibration&lt;/td&gt;
&lt;td&gt;Does confidence track correctness?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Abstention quality&lt;/td&gt;
&lt;td&gt;Does the model ask when it should?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;False-action rate&lt;/td&gt;
&lt;td&gt;How often does it act when it should not?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;False-stop rate&lt;/td&gt;
&lt;td&gt;How often does it block something safe?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;How quickly can the decision be made?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;How much does each decision cost?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consistency&lt;/td&gt;
&lt;td&gt;Does rephrasing change the result unnecessarily?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That creates a much more useful picture of an AI system.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔬 There is already evidence worth looking at
&lt;/h1&gt;

&lt;p&gt;Independent public benchmark work is already starting to test Jev in this direction.&lt;/p&gt;

&lt;p&gt;For example, a published &lt;strong&gt;JevBench&lt;/strong&gt; run evaluated 242 typed decisions per system. In that run, Jev 1.13.0 reported:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Jev 1.13.0&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Accuracy&lt;/td&gt;
&lt;td&gt;96.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost / 1K decisions&lt;/td&gt;
&lt;td&gt;$0.027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p50 latency&lt;/td&gt;
&lt;td&gt;0.65 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p95 latency&lt;/td&gt;
&lt;td&gt;0.72 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ECE&lt;/td&gt;
&lt;td&gt;0.027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valid answers&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact-sum answers&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are measurements from the benchmark authors' published run—not numbers I independently reproduced.&lt;/p&gt;

&lt;p&gt;The interesting part is not "Jev won."&lt;/p&gt;

&lt;p&gt;The interesting part is that the benchmark is measuring &lt;strong&gt;different axes at the same time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For decision systems, accuracy without calibration is incomplete.&lt;/p&gt;

&lt;p&gt;Speed without correctness is useless.&lt;/p&gt;

&lt;p&gt;Cheap but unreliable automation can be expensive in disguise.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧩 The hidden superpower: probabilities
&lt;/h1&gt;

&lt;p&gt;This may be the most important architectural idea.&lt;/p&gt;

&lt;p&gt;Suppose your system needs to choose between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A = 0.51
B = 0.49
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A naive application sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A probability-aware application sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A, but barely.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a huge difference.&lt;/p&gt;

&lt;p&gt;Your code can define:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.90&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;automate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;escalate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;automatic&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.70&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;review_queue&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;human&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model produces the uncertainty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The application owns the policy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That separation is healthy software architecture.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 And this changes how prompts should be written
&lt;/h1&gt;

&lt;p&gt;Traditional prompting often looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Analyze this problem deeply and provide the best answer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A System One-style question should look more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Choose the deployment state.

Options:
- safe
- needs_review
- unsafe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Score the relevance of this document from 0 to 3.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does this message contain a security incident?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;small&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;atomic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;specific&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;machine-actionable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TypeSafe's documentation explicitly recommends decomposing complex judgments into smaller questions and combining those results in code.&lt;/p&gt;

&lt;p&gt;That is a very software-engineering-heavy way of using AI.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔥 This is where Jev gets weirdly interesting
&lt;/h1&gt;

&lt;p&gt;Imagine processing one document.&lt;/p&gt;

&lt;p&gt;Instead of asking one giant prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Analyze this document and give me a complete structured report.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is it relevant?
↓
How urgent is it?
↓
Which department owns it?
↓
Does it contain sensitive information?
↓
Does it require human review?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those are separate questions.&lt;/p&gt;

&lt;p&gt;And they can be combined into an ordinary program:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;sensitive&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;urgency&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;escalate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;relevance&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;discard&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;billing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;billing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is almost like adding a fuzzy intelligence layer to &lt;code&gt;if&lt;/code&gt; statements.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧱 The big limitation
&lt;/h1&gt;

&lt;p&gt;There is an important catch.&lt;/p&gt;

&lt;p&gt;Jev is &lt;strong&gt;not a replacement for a generative model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is not designed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;write an article&lt;/li&gt;
&lt;li&gt;implement a feature&lt;/li&gt;
&lt;li&gt;generate a long explanation&lt;/li&gt;
&lt;li&gt;produce arbitrary source code&lt;/li&gt;
&lt;li&gt;replace a reasoning-heavy agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's not a bug.&lt;/p&gt;

&lt;p&gt;It is the boundary of the product.&lt;/p&gt;

&lt;p&gt;A useful architecture therefore looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code
 │
 ├── deterministic rules
 │
 ├── Jev
 │    ├── classify
 │    ├── score
 │    ├── verify
 │    └── route
 │
 └── LLM
      ├── reason
      ├── generate
      ├── code
      └── explain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use each tool for what it is good at.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚠️ "Zero hallucinations" needs a careful interpretation
&lt;/h1&gt;

&lt;p&gt;TypeSafe talks about Jev being unable to hallucinate in the traditional text-generation sense.&lt;/p&gt;

&lt;p&gt;That's understandable because Jev does not generate arbitrary prose.&lt;/p&gt;

&lt;p&gt;But this should &lt;strong&gt;not&lt;/strong&gt; be interpreted as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Jev cannot be wrong."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are different things.&lt;/p&gt;

&lt;p&gt;A model can return:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"choice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"billing"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.98&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and still be incorrect.&lt;/p&gt;

&lt;p&gt;Type-safe output guarantees the &lt;strong&gt;shape of the answer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It does not magically guarantee the &lt;strong&gt;truth of the decision&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That distinction matters enormously when putting AI inside production systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧪 My benchmark idea: "Should the Agent Act?"
&lt;/h1&gt;

&lt;p&gt;For the Kaggle challenge, I would turn this into a benchmark around &lt;strong&gt;actionability under uncertainty&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each task would contain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt; — the information currently available to the agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision&lt;/strong&gt; — the action the system could take.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hidden risk&lt;/strong&gt; — a detail that makes some actions unsafe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ground truth&lt;/strong&gt; — what a careful engineer should do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confidence&lt;/strong&gt; — how strongly the model believes the decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Counterfactual&lt;/strong&gt; — a minimally changed version of the same scenario.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The benchmark could deliberately contain tasks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Case A
Everything is clear.
→ ACT

Case B
The requirement is ambiguous.
→ ASK

Case C
The change violates a constraint.
→ STOP

Case D
The implementation is almost correct.
→ CHANGE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then flip one sentence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- The old client has already been migrated.
&lt;/span&gt;&lt;span class="gi"&gt;+ The old client is still deployed.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and see whether the model updates its decision.&lt;/p&gt;

&lt;p&gt;That gives us something closer to &lt;strong&gt;decision robustness&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧪 The counterfactual test
&lt;/h1&gt;

&lt;p&gt;This could become my favorite metric.&lt;/p&gt;

&lt;p&gt;Take:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scenario A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scenario B = Scenario A + one important fact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Did the model change its decision?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A:
The database migration has been tested on staging.

B:
The database migration has NOT been tested on staging.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good decision system should respond differently.&lt;/p&gt;

&lt;p&gt;If the model confidently returns the same action in both cases, the failure is extremely informative.&lt;/p&gt;




&lt;h1&gt;
  
  
  🛠️ Building a Jev benchmark on Kaggle
&lt;/h1&gt;

&lt;p&gt;The benchmark itself can stay simple.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;scenario&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;run_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;scenario&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;questions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;scenario&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;questions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;predicted&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;expected&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;scenario&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expected&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then calculate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;accuracy
calibration
false-action rate
abstention rate
latency
cost
counterfactual consistency
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The leaderboard becomes more than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model A: 91%
Model B: 89%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    Accuracy   Calibration   Cost   Latency
Model A              91.0%       0.07        ...
Model B              89.0%       0.04        ...
Model C              90.4%       0.03        ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now engineers can actually decide which model fits a workload.&lt;/p&gt;




&lt;h1&gt;
  
  
  💻 A tiny Jev API example
&lt;/h1&gt;

&lt;p&gt;The official quick-start API is deliberately simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.typesafe.ai/v1/systemone &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$TYPESAFE_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "state": "A user reported that their payment succeeded twice.",
    "model": "jev-latest",
    "questions": {
      "department": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {
          "billing": "Payment, invoice, refund, or charge issue",
          "technical": "Bug or integration problem",
          "account": "Login or account access issue"
        }
      },
      "needs_review": {
        "type": "noul",
        "instructions": "Does this request require manual review?"
      }
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response contains typed answers rather than a generated essay.&lt;/p&gt;

&lt;p&gt;That means your application can immediately do something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;department&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;choice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;needs_review&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;needs_review&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;noul&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;needs_review&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;send_to_human_review&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;route_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;department&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a very different abstraction from a chatbot.&lt;/p&gt;




&lt;h1&gt;
  
  
  🚀 Where I think this could matter
&lt;/h1&gt;

&lt;p&gt;The most interesting workloads are the ones where your application repeatedly asks tiny questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 AI agents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Should I call this tool?&lt;/li&gt;
&lt;li&gt;Should I retry?&lt;/li&gt;
&lt;li&gt;Should I ask the user?&lt;/li&gt;
&lt;li&gt;Which tool should I call?&lt;/li&gt;
&lt;li&gt;Is the task complete?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📬 Email
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Is this urgent?&lt;/li&gt;
&lt;li&gt;Is this a sales lead?&lt;/li&gt;
&lt;li&gt;Is this an invoice?&lt;/li&gt;
&lt;li&gt;Does it require a reply?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧑‍💻 Developer tooling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Is this PR risky?&lt;/li&gt;
&lt;li&gt;Which reviewer should receive it?&lt;/li&gt;
&lt;li&gt;Does this issue need reproduction?&lt;/li&gt;
&lt;li&gt;Is this error related to the current deployment?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🛡️ Safety &amp;amp; guardrails
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Does the input violate a policy?&lt;/li&gt;
&lt;li&gt;Does an output require review?&lt;/li&gt;
&lt;li&gt;Is the request suspicious?&lt;/li&gt;
&lt;li&gt;Should the next step be blocked?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔎 Retrieval systems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Is this document relevant?&lt;/li&gt;
&lt;li&gt;Which documents deserve deeper analysis?&lt;/li&gt;
&lt;li&gt;Which result should be escalated to an expensive reasoning model?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ Real-time applications
&lt;/h3&gt;

&lt;p&gt;When a decision has to happen hundreds or thousands of times, latency and cost stop being minor implementation details.&lt;/p&gt;

&lt;p&gt;They become product features.&lt;/p&gt;




&lt;h1&gt;
  
  
  The bigger idea
&lt;/h1&gt;

&lt;p&gt;The most interesting part of Jev isn't that it is "another AI model."&lt;/p&gt;

&lt;p&gt;It is that it challenges the assumption that &lt;strong&gt;every AI task should look like chat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Maybe the future stack is not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Everything → LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maybe it becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌─────────────┐
                 │    CODE     │
                 └──────┬──────┘
                        │
              ┌─────────┴─────────┐
              │                   │
              ▼                   ▼
          ┌───────┐          ┌────────┐
          │  Jev  │          │  LLM   │
          │ decide│          │ create │
          └───┬───┘          └───┬────┘
              │                  │
              └────────┬─────────┘
                       ▼
                    SYSTEM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Code controls the system.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jev makes small probabilistic judgments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLMs handle open-ended generation and reasoning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That separation feels much more like software engineering than "put everything in a prompt."&lt;/p&gt;




&lt;h1&gt;
  
  
  🏁 Final takeaway
&lt;/h1&gt;

&lt;p&gt;Jev is interesting because it asks a surprisingly simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if AI didn't always need to talk?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For many software systems, the answer to an AI question isn't a paragraph.&lt;/p&gt;

&lt;p&gt;It is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true
false
0.82
priority_high
use_tool_x
ask_human
ship
stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And once you think about AI that way, a lot of application architecture starts to look different.&lt;/p&gt;

&lt;p&gt;The model doesn't need to own the workflow.&lt;/p&gt;

&lt;p&gt;It can simply provide &lt;strong&gt;judgment at the exact point where the code needs it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is the idea behind System One models.&lt;/p&gt;

&lt;p&gt;And that is what I want to test.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Benchmark
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kaggle benchmark:&lt;/strong&gt; &lt;code&gt;[ADD YOUR PUBLIC KAGGLE BENCHMARK URL HERE]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The benchmark will test actionability, confidence, calibration, counterfactual consistency, latency, and cost across structured decision tasks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal isn't to find a model with the biggest number.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is to understand when an AI can safely become part of the software's decision loop.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📚 Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;TypeSafe AI — Introducing System One Models &amp;amp; Jev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.typesafe.ai/introduction" rel="noopener noreferrer"&gt;TypeSafe AI — Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.typesafe.ai/introduction/quickstart" rel="noopener noreferrer"&gt;Jev Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.typesafe.ai/primitives/choice" rel="noopener noreferrer"&gt;Choice primitive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jevmodel.ai/benchmarks/" rel="noopener noreferrer"&gt;Jev benchmark reports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fstandhartinger/jevbench/blob/main/RESULTS.md" rel="noopener noreferrer"&gt;JevBench results&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;DEV Kaggle Benchmarking Challenge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ What I learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AI does not always need to generate text.&lt;/li&gt;
&lt;li&gt;Structured decisions can be a better abstraction for software.&lt;/li&gt;
&lt;li&gt;Confidence is useful only when the application knows what to do with uncertainty.&lt;/li&gt;
&lt;li&gt;Small AI decisions can be composed into larger deterministic workflows.&lt;/li&gt;
&lt;li&gt;Benchmarks should measure &lt;strong&gt;when a model should act&lt;/strong&gt;, not just whether it can answer.&lt;/li&gt;
&lt;li&gt;The most useful AI architecture may be &lt;strong&gt;LLM + decision model + ordinary code&lt;/strong&gt;, not LLM everywhere.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  One final thought
&lt;/h3&gt;

&lt;p&gt;The next big improvement in AI may not come from making models talk better.&lt;/p&gt;

&lt;p&gt;It may come from making them &lt;strong&gt;fit inside software better&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>softwaredevelopment</category>
      <category>kagglechallenge</category>
    </item>
    <item>
      <title>Submission for the Kaggle Benchmarking Challenge</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Thu, 24 Sep 2026 08:32:39 +0000</pubDate>
      <link>https://dev.to/sh20raj/submission-for-the-kaggle-benchmarking-challenge-4bo4</link>
      <guid>https://dev.to/sh20raj/submission-for-the-kaggle-benchmarking-challenge-4bo4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Stop or Ship: Can AI Make Safe Software Decisions?
&lt;/h1&gt;

&lt;p&gt;Modern AI models are getting remarkably good at writing code.&lt;/p&gt;

&lt;p&gt;But writing code is only one part of software engineering.&lt;/p&gt;

&lt;p&gt;A much less discussed question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can an AI correctly decide when it should change code, when it should stop, and when it should ask a human?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question motivated my benchmark.&lt;/p&gt;

&lt;p&gt;Instead of measuring whether a model can produce a syntactically correct solution, I wanted to measure something closer to what happens in a real software repository: incomplete requirements, ambiguous bug reports, risky changes, missing context, and situations where confidently doing the wrong thing is worse than doing nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Benchmarked
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Stop-or-Ship&lt;/strong&gt;, a benchmark for AI decision-making in realistic software-maintenance scenarios.&lt;/p&gt;

&lt;p&gt;Each task gives a model a small software-engineering situation, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a bug report with incomplete information&lt;/li&gt;
&lt;li&gt;a proposed code change&lt;/li&gt;
&lt;li&gt;a pull request with a subtle regression&lt;/li&gt;
&lt;li&gt;a feature request whose requirements are ambiguous&lt;/li&gt;
&lt;li&gt;a dependency update with a potential compatibility problem&lt;/li&gt;
&lt;li&gt;a change that looks correct locally but violates an existing constraint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model must choose what should happen next.&lt;/p&gt;

&lt;p&gt;The core actions are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SHIP&lt;/strong&gt; — the change is sufficiently safe and should proceed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CHANGE&lt;/strong&gt; — the proposed implementation should be modified before proceeding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ASK&lt;/strong&gt; — there is not enough information to safely make the decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STOP&lt;/strong&gt; — the change introduces a meaningful risk or violates an important constraint.&lt;/p&gt;

&lt;p&gt;This is intentionally different from a normal coding benchmark.&lt;/p&gt;

&lt;p&gt;A model can write beautiful code and still make a terrible engineering decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I wanted to measure
&lt;/h3&gt;

&lt;p&gt;I focused on four dimensions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision accuracy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Did the model choose the correct action?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk sensitivity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Could it identify changes where a seemingly reasonable implementation introduces a hidden problem?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstention quality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Did it know when it should ask for more information instead of pretending to know?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calibration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the model was uncertain, did its confidence match reality?&lt;/p&gt;

&lt;p&gt;That last dimension is especially important for agentic systems. A wrong answer with low confidence can trigger a human review. A wrong answer delivered with extreme confidence can silently become production code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models Tested
&lt;/h2&gt;

&lt;p&gt;I selected a mix of general-purpose frontier models and decision-oriented models so that the benchmark would not simply become a comparison between models from the same family.&lt;/p&gt;

&lt;p&gt;The initial lineup includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Jev&lt;/strong&gt; — included because it is specifically designed around decision-making rather than long-form text generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI GPT-family model&lt;/strong&gt; — a strong general-purpose reasoning baseline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic Claude-family model&lt;/strong&gt; — included to test another strong reasoning-oriented approach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini-family model&lt;/strong&gt; — included as a different model family with strong coding and multimodal capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Additional model]&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Additional model]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact versions and inference configuration are recorded in the Kaggle benchmark so that the comparison remains reproducible.&lt;/p&gt;

&lt;p&gt;I deliberately did not want to answer "which AI writes the best code?"&lt;/p&gt;

&lt;p&gt;I wanted to answer a narrower question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which models are better at making the decision that should happen before code gets merged or deployed?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Findings
&lt;/h2&gt;

&lt;p&gt;The most interesting part of this benchmark is not a single leaderboard number.&lt;/p&gt;

&lt;p&gt;It is the difference between &lt;strong&gt;being capable of solving a problem&lt;/strong&gt; and &lt;strong&gt;being capable of deciding whether a problem is safe to act on&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Getting the answer right is not enough
&lt;/h3&gt;

&lt;p&gt;[INSERT ACTUAL RESULT]&lt;/p&gt;

&lt;p&gt;The benchmark showed that raw decision accuracy does not tell the entire story.&lt;/p&gt;

&lt;p&gt;Two models can achieve similar accuracy while behaving very differently:&lt;/p&gt;

&lt;p&gt;One may confidently choose an action on almost every task.&lt;/p&gt;

&lt;p&gt;Another may recognize uncertainty and ask for additional information.&lt;/p&gt;

&lt;p&gt;For software agents, those behaviours have very different consequences.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Ambiguity is its own failure mode
&lt;/h3&gt;

&lt;p&gt;[INSERT ACTUAL RESULT]&lt;/p&gt;

&lt;p&gt;The "ASK" category produced some of the most interesting examples.&lt;/p&gt;

&lt;p&gt;Traditional benchmarks often reward a model for producing an answer.&lt;/p&gt;

&lt;p&gt;Real software engineering sometimes rewards the opposite behaviour.&lt;/p&gt;

&lt;p&gt;When requirements are contradictory, tests are missing, or repository context is incomplete, &lt;strong&gt;not acting can be the correct action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This benchmark makes that behaviour measurable instead of treating it as a failure to answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Confidence matters as much as correctness
&lt;/h3&gt;

&lt;p&gt;[INSERT ACTUAL CALIBRATION RESULT]&lt;/p&gt;

&lt;p&gt;I also tracked whether confidence was aligned with correctness.&lt;/p&gt;

&lt;p&gt;That creates a more useful distinction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Correct + confident&lt;/strong&gt; → ideal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correct + uncertain&lt;/strong&gt; → potentially acceptable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong + uncertain&lt;/strong&gt; → human review can still catch it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong + confident&lt;/strong&gt; → dangerous automation failure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one reason I think benchmark design should move beyond a single accuracy number.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Decision models vs. language models is an interesting boundary
&lt;/h3&gt;

&lt;p&gt;The benchmark also let me explore a broader question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does a model optimized for making decisions behave differently from a model optimized primarily for generating language?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jev was particularly interesting to include because its design targets calibrated decisions rather than conventional chat completion.&lt;/p&gt;

&lt;p&gt;[INSERT ACTUAL COMPARISON FROM KAGGLE RESULTS]&lt;/p&gt;

&lt;p&gt;I don't think this benchmark proves that one model architecture is universally better.&lt;/p&gt;

&lt;p&gt;Instead, it suggests that &lt;strong&gt;model choice should depend on the role an AI is playing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An AI that writes documentation has different requirements from an AI deciding whether an automated deployment should continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;The biggest surprise was how often the difficult cases were not about coding at all.&lt;/p&gt;

&lt;p&gt;They were about &lt;strong&gt;knowing what the model did not know&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A task could contain a perfectly plausible implementation while still being impossible to approve safely because one critical piece of context was missing.&lt;/p&gt;

&lt;p&gt;That made "ASK" one of the most important actions in the benchmark.&lt;/p&gt;

&lt;p&gt;It also changed how I think about AI evaluation.&lt;/p&gt;

&lt;p&gt;A model should not only be rewarded for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can you solve this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should also be evaluated on:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Should you act on this?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What I Would Measure Next
&lt;/h2&gt;

&lt;p&gt;The next version of Stop-or-Ship could go beyond static prompts.&lt;/p&gt;

&lt;p&gt;I would like to test:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-turn repository context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Give the model the ability to inspect files, tests, commit history, and previous discussions before making its decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool-use decisions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Measure whether the model requests the right tool before making a high-risk decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost-aware decisions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Test whether a model can balance correctness against API calls, latency, and engineering cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long-horizon agent behaviour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of one decision, evaluate an entire sequence of actions and measure whether the model eventually recovers from a bad assumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adversarial tasks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introduce realistic distractions such as misleading comments, plausible-but-wrong tests, stale documentation, and incomplete bug reports.&lt;/p&gt;

&lt;p&gt;That would turn Stop-or-Ship from a simple classification benchmark into a more realistic evaluation of autonomous software agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Benchmark
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kaggle Benchmark:&lt;/strong&gt; [INSERT YOUR KAGGLE BENCHMARK LINK]&lt;/p&gt;

&lt;p&gt;The benchmark contains the task definitions, evaluation methodology, model runs, and leaderboard.&lt;/p&gt;

&lt;p&gt;All model comparisons should be interpreted within the exact dataset, prompts, and configurations used in the benchmark rather than as a universal ranking of AI systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;AI coding benchmarks usually ask whether a model can produce the right code.&lt;/p&gt;

&lt;p&gt;I think the next generation of benchmarks should also ask whether the model knows &lt;strong&gt;when it should be allowed to act&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the difference between an AI that can generate code and an AI that can safely participate in software engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop or Ship is my attempt to measure that gap.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  kagglechallenge #kagglebenchmarkchallenge #machinelearning #ai #devchallenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>kagglechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>What REALLY Happens When You Type a URL?</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Thu, 17 Sep 2026 08:36:00 +0000</pubDate>
      <link>https://dev.to/sh20raj/what-really-happens-when-you-type-a-url-3j0l</link>
      <guid>https://dev.to/sh20raj/what-really-happens-when-you-type-a-url-3j0l</guid>
      <description>&lt;h1&gt;
  
  
  🌐 What REALLY Happens When You Type a URL?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3pzxyd6ytsdrd527m9u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi3pzxyd6ytsdrd527m9u.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You type:&lt;/strong&gt; &lt;code&gt;https://example.com&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;You press:&lt;/strong&gt; &lt;code&gt;Enter&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;And somehow:&lt;/strong&gt; a complete webpage appears in milliseconds.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;what actually happened between those two events?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article follows the journey of a URL from your keyboard → browser → DNS → network → server → browser → pixels on your screen.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Big Picture
&lt;/h2&gt;

&lt;p&gt;At a very high level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You type a URL
      ↓
Browser parses the URL
      ↓
Check browser cache
      ↓
DNS: "What IP belongs to this domain?"
      ↓
Get IP address
      ↓
Establish connection
      ↓
TLS handshake (HTTPS)
      ↓
HTTP request
      ↓
Server processes request
      ↓
HTTP response
      ↓
Browser receives HTML
      ↓
Download CSS / JavaScript / Images
      ↓
Build DOM + CSSOM
      ↓
Layout + Paint + Composite
      ↓
🎨 Webpage appears
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And this can happen incredibly quickly.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. 🔗 First: What Exactly Is a URL?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;URL (Uniform Resource Locator)&lt;/strong&gt; tells your browser &lt;strong&gt;where a resource is and how to access it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.example.com:443/products?id=42#reviews
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's break it apart.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scheme&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host&lt;/td&gt;
&lt;td&gt;&lt;code&gt;www.example.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Website/domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Network port&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/products&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resource location&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query&lt;/td&gt;
&lt;td&gt;&lt;code&gt;?id=42&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Additional parameters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fragment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#reviews&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Position inside page&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🧩 URL Anatomy
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              https://www.example.com:443/products?id=42#reviews
              └─┬─┘   └────┬──────┘ └┬┘ └────┬────┘ └──┬───┘
             scheme       host       port   query    fragment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💡 Important
&lt;/h3&gt;

&lt;p&gt;The browser does &lt;strong&gt;not&lt;/strong&gt; immediately connect to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;www.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Computers communicate using &lt;strong&gt;IP addresses&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So eventually we need something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;www.example.com
       ↓
93.184.216.34
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's where &lt;strong&gt;DNS&lt;/strong&gt; enters the story.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. 🧭 The Browser First Parses the URL
&lt;/h1&gt;

&lt;p&gt;When you press Enter, the browser first determines what you've entered.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com/products
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser understands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Protocol → HTTPS
Host     → example.com
Path     → /products
Port     → 443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser now knows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I need to retrieve &lt;code&gt;/products&lt;/code&gt; from &lt;code&gt;example.com&lt;/code&gt; using HTTPS.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But it still doesn't know where &lt;code&gt;example.com&lt;/code&gt; actually lives.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. ⚡ Before DNS: Check the Cache
&lt;/h1&gt;

&lt;p&gt;Your browser may already know the answer.&lt;/p&gt;

&lt;p&gt;Modern browsers and operating systems maintain several caches.&lt;/p&gt;

&lt;p&gt;A simplified hierarchy looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser DNS Cache
       ↓
Operating System Cache
       ↓
Hosts File
       ↓
Configured DNS Resolver
       ↓
Root DNS
       ↓
TLD DNS
       ↓
Authoritative DNS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the IP is already cached and hasn't expired:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
     ↓
Cached IP
     ↓
Skip DNS lookup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one reason why repeatedly visiting a website can feel faster.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. 📖 DNS — The Internet's Phone Book
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is DNS?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DNS = Domain Name System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Humans prefer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Computers ultimately need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;142.250.x.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DNS translates the domain name into an IP address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          DNS
           │
           ▼
"Where is example.com?"
           │
           ▼
    93.184.216.34
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  5. 🌳 How DNS Actually Finds the IP
&lt;/h1&gt;

&lt;p&gt;Here's where things get interesting.&lt;/p&gt;

&lt;p&gt;Suppose your DNS resolver doesn't already know the answer.&lt;/p&gt;

&lt;p&gt;It can walk through the DNS hierarchy.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Browser"] --&amp;gt; B["DNS Resolver"]
    B --&amp;gt; C["Root DNS Server"]
    C --&amp;gt; D[".com TLD Server"]
    D --&amp;gt; E["Authoritative DNS Server"]
    E --&amp;gt; F["IP Address"]
    F --&amp;gt; B
    B --&amp;gt; A&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Step 1 — Ask the Resolver
&lt;/h3&gt;

&lt;p&gt;Your computer asks its configured DNS resolver:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What is the IP address of example.com?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resolver might be operated by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your ISP&lt;/li&gt;
&lt;li&gt;your organization&lt;/li&gt;
&lt;li&gt;a public DNS service&lt;/li&gt;
&lt;li&gt;another DNS provider&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2 — Root DNS
&lt;/h3&gt;

&lt;p&gt;If the resolver doesn't know, it can ask a &lt;strong&gt;root DNS server&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The root doesn't usually know the final IP.&lt;/p&gt;

&lt;p&gt;Instead, it says approximately:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I don't know &lt;code&gt;example.com&lt;/code&gt;, but I know who handles &lt;code&gt;.com&lt;/code&gt;.”&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Root
 ↓
.com TLD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 3 — TLD Server
&lt;/h3&gt;

&lt;p&gt;The resolver asks the &lt;code&gt;.com&lt;/code&gt; TLD server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Who is authoritative for example.com?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The TLD server points toward the domain's &lt;strong&gt;authoritative DNS servers&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.com
 ↓
Authoritative DNS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 4 — Authoritative DNS
&lt;/h3&gt;

&lt;p&gt;Finally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authoritative DNS
       ↓
example.com
       ↓
93.184.216.34
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resolver returns the answer to your computer.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. 🧠 DNS Records
&lt;/h1&gt;

&lt;p&gt;DNS isn't just about IP addresses.&lt;/p&gt;

&lt;p&gt;A domain can have different record types.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Record&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;A&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IPv4 address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AAAA&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IPv6 address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CNAME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Alias to another hostname&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MX&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mail server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TXT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Text / verification / policy data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NS&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Authoritative nameserver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CAA&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Certificate authority authorization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
     │
     ├── A     → IPv4
     ├── AAAA  → IPv6
     ├── MX    → Mail server
     └── TXT   → Verification / policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. 🕒 TTL — Why DNS Doesn't Happen Every Time
&lt;/h1&gt;

&lt;p&gt;DNS records have a &lt;strong&gt;TTL (Time To Live)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
A → 93.184.216.34
TTL → 300 seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A resolver can cache the answer for that period.&lt;/p&gt;

&lt;p&gt;So the next request may become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
  ↓
Cached DNS result
  ↓
IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
 ↓
Resolver
 ↓
Root
 ↓
TLD
 ↓
Authoritative DNS
 ↓
IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. 📍 We Now Have an IP Address
&lt;/h1&gt;

&lt;p&gt;Great!&lt;/p&gt;

&lt;p&gt;Suppose DNS returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;93.184.216.34
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the browser knows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That's the machine I need to communicate with.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But there's another question:&lt;/p&gt;

&lt;h2&gt;
  
  
  How do we establish the connection?
&lt;/h2&gt;

&lt;p&gt;For HTTPS, traditionally this involves &lt;strong&gt;TCP + TLS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For HTTP/3, it can instead use &lt;strong&gt;QUIC over UDP&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let's first understand the classic TCP path.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. 🤝 TCP — Establishing a Connection
&lt;/h1&gt;

&lt;p&gt;TCP provides a reliable connection between two endpoints.&lt;/p&gt;

&lt;p&gt;Before sending application data, TCP traditionally performs the famous:&lt;/p&gt;

&lt;h1&gt;
  
  
  Three-Way Handshake
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client                         Server
  │                               │
  │ -------- SYN ---------------&amp;gt; │
  │                               │
  │ &amp;lt;------- SYN + ACK ---------- │
  │                               │
  │ -------- ACK ---------------&amp;gt; │
  │                               │
  │        Connection ready       │
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What do these mean?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SYN&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I want to start a TCP connection.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;SYN-ACK&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I received your request and I'm willing to connect.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;ACK&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Got it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now the TCP connection is established.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. 🔐 HTTPS Changes the Story
&lt;/h1&gt;

&lt;p&gt;If the URL is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we need encryption.&lt;/p&gt;

&lt;p&gt;That's what &lt;strong&gt;TLS&lt;/strong&gt; provides.&lt;/p&gt;

&lt;p&gt;Without HTTPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser ────────────────&amp;gt; Server
          HTTP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With HTTPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser ════════════════&amp;gt; Server
          Encrypted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. 🔐 TLS Handshake
&lt;/h1&gt;

&lt;p&gt;TLS allows the browser and server to establish cryptographic parameters and authenticate the server.&lt;/p&gt;

&lt;p&gt;A simplified TLS 1.3 flow:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;sequenceDiagram
    participant B as Browser
    participant S as Server

    B-&amp;gt;&amp;gt;S: ClientHello
    S-&amp;gt;&amp;gt;B: ServerHello
    S-&amp;gt;&amp;gt;B: Certificate
    S-&amp;gt;&amp;gt;B: Handshake messages
    B-&amp;gt;&amp;gt;S: Finished
    S-&amp;gt;&amp;gt;B: Finished
    Note over B,S: Encrypted application data&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The exact wire exchange is more detailed, but conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   │
   │ "Here are the cryptographic options I support."
   ▼
Server
   │
   │ "Let's use these."
   │
   │ "Here's my certificate."
   ▼
Browser
   │
   │ Verify certificate
   ▼
Secure session established
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. 🪪 What's the Certificate For?
&lt;/h1&gt;

&lt;p&gt;When you visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;your browser wants to know:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Am I really talking to example.com?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The server presents a &lt;strong&gt;digital certificate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The certificate contains information such as the domain names it covers and cryptographic identity information.&lt;/p&gt;

&lt;p&gt;It is signed through a chain involving trusted &lt;strong&gt;Certificate Authorities (CAs)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Simplified:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Certificate
     │
     ▼
Trusted CA
     │
     ▼
Browser's trust store
     │
     ▼
"Can I trust this identity?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If certificate validation fails, the browser may show a security warning.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. 🔒 Is the Data Now Encrypted?
&lt;/h1&gt;

&lt;p&gt;After the TLS handshake:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ║
   ║ 🔐 Encrypted
   ║
   ▼
Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Someone observing the network generally cannot simply read the HTTPS request contents.&lt;/p&gt;

&lt;p&gt;However, HTTPS does &lt;strong&gt;not&lt;/strong&gt; make you invisible.&lt;/p&gt;

&lt;p&gt;Depending on the circumstances, information such as destination IP addresses and some connection metadata can still be observable.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. 📦 Now Comes HTTP
&lt;/h1&gt;

&lt;p&gt;Finally, we can send the actual web request.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="nf"&gt;GET&lt;/span&gt; &lt;span class="nn"&gt;/products&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;
&lt;span class="na"&gt;Host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;
&lt;span class="na"&gt;Accept&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;text/html&lt;/span&gt;
&lt;span class="na"&gt;Accept-Language&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;en-US&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET
 ↓
/products
 ↓
example.com
 ↓
"Please give me this resource."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With HTTP/2 or HTTP/3, the wire representation is different from this textual HTTP/1.1 example, but the application-level idea remains similar.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. 📬 What Is an HTTP Request?
&lt;/h1&gt;

&lt;p&gt;An HTTP request contains several important pieces.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────┐
│ Method                      │
│ URL / Path                  │
│ Headers                     │
│ Body (optional)             │
└─────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Common HTTP methods:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Typical purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieve data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Submit/create data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PUT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Replace data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PATCH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Partially update data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When loading a webpage, the initial navigation is commonly a &lt;code&gt;GET&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. 📨 HTTP Request Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="nf"&gt;GET&lt;/span&gt; &lt;span class="nn"&gt;/&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;
&lt;span class="na"&gt;Host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;example.com&lt;/span&gt;
&lt;span class="na"&gt;User-Agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;
&lt;span class="na"&gt;Accept&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;text/html&lt;/span&gt;
&lt;span class="na"&gt;Accept-Language&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;en-US&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think of it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Server, give me the homepage.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  17. 🏢 But Where Did Our Request Actually Go?
&lt;/h1&gt;

&lt;p&gt;This is an important part people often skip.&lt;/p&gt;

&lt;p&gt;The IP address may not represent the actual application server.&lt;/p&gt;

&lt;p&gt;Modern websites can sit behind infrastructure such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Internet
                   │
                   ▼
              CDN / Edge
                   │
            Load Balancer
                   │
          ┌────────┼────────┐
          ▼        ▼        ▼
       Server A Server B Server C
          │        │        │
          └────────┼────────┘
                   ▼
                Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your request may pass through several layers.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. 🌍 CDN — The Website May Be Closer Than You Think
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;CDN (Content Delivery Network)&lt;/strong&gt; places cached content at locations around the world.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;India
  │
  └──────────────&amp;gt; US Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you might get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;India
  │
  ▼
Nearby CDN Edge
  │
  ▼
Cached Content
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This reduces latency for cacheable resources.&lt;/p&gt;




&lt;h1&gt;
  
  
  19. ⚖️ Load Balancer
&lt;/h1&gt;

&lt;p&gt;Suppose millions of users visit a website.&lt;/p&gt;

&lt;p&gt;One server may not be enough.&lt;/p&gt;

&lt;p&gt;A load balancer can distribute requests:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    U["Users"] --&amp;gt; L["Load Balancer"]
    L --&amp;gt; A["Server A"]
    L --&amp;gt; B["Server B"]
    L --&amp;gt; C["Server C"]
    A --&amp;gt; D["Database"]
    B --&amp;gt; D
    C --&amp;gt; D&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The browser doesn't necessarily know which backend server handled the request.&lt;/p&gt;




&lt;h1&gt;
  
  
  20. 🧠 The Server Starts Working
&lt;/h1&gt;

&lt;p&gt;The server receives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now application code may execute.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
   ↓
Web server
   ↓
Application
   ↓
Authentication
   ↓
Business logic
   ↓
Database
   ↓
Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Imagine an e-commerce website.&lt;/p&gt;

&lt;p&gt;Your request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /products/42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;could cause the application to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Authenticate session
2. Validate product ID
3. Query database
4. Fetch product information
5. Render HTML
6. Return response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  21. 🗄️ Database
&lt;/h1&gt;

&lt;p&gt;The server may need information from a database.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The database returns something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product
──────────────
id: 42
name: Laptop
price: ₹79,999
stock: 12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application uses this information to generate the response.&lt;/p&gt;




&lt;h1&gt;
  
  
  22. 📨 The Server Sends an HTTP Response
&lt;/h1&gt;

&lt;p&gt;The server might respond:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt; &lt;span class="ne"&gt;OK&lt;/span&gt;
&lt;span class="na"&gt;Content-Type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;text/html&lt;/span&gt;
&lt;span class="na"&gt;Content-Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;followed by the HTML document.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   │
   │ GET /
   ▼
Server
   │
   │ 200 OK + HTML
   ▼
Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  23. 🚦 HTTP Status Codes
&lt;/h1&gt;

&lt;p&gt;The response has a status code.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;201&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Created&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;301&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Permanent redirect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;302&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Temporary redirect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;304&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Not modified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bad request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Authentication required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Forbidden&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;404&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Not found&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Server error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;502&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bad gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Service unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So when you see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;404
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the browser did communicate with a server.&lt;/p&gt;

&lt;p&gt;The server is essentially saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I don't have the resource you requested.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  24. 📄 The Browser Receives HTML
&lt;/h1&gt;

&lt;p&gt;Now the browser finally has something to work with.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Hello World&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Welcome!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the page isn't finished yet.&lt;/p&gt;

&lt;p&gt;The HTML may reference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;style.css
app.js
logo.png
font.woff2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the browser starts requesting those resources too.&lt;/p&gt;




&lt;h1&gt;
  
  
  25. 🕸️ One Page Can Trigger Many Requests
&lt;/h1&gt;

&lt;p&gt;This is something you can demonstrate beautifully in your video.&lt;/p&gt;

&lt;p&gt;You type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the browser may request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /
GET /style.css
GET /app.js
GET /logo.svg
GET /font.woff2
GET /api/user
GET /products
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One URL can therefore trigger &lt;strong&gt;dozens or hundreds of network requests&lt;/strong&gt; on a modern site.&lt;/p&gt;




&lt;h1&gt;
  
  
  26. 🔄 The Browser Builds the DOM
&lt;/h1&gt;

&lt;p&gt;The browser parses HTML and constructs the:&lt;/p&gt;

&lt;h1&gt;
  
  
  DOM — Document Object Model
&lt;/h1&gt;

&lt;p&gt;HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;World&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Becomes conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Document"] --&amp;gt; B["html"]
    B --&amp;gt; C["body"]
    C --&amp;gt; D["h1"]
    C --&amp;gt; E["p"]
    D --&amp;gt; F["Hello"]
    E --&amp;gt; G["World"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The DOM represents the document as a tree.&lt;/p&gt;




&lt;h1&gt;
  
  
  27. 🎨 CSSOM
&lt;/h1&gt;

&lt;p&gt;CSS is parsed separately.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser builds a structure called the:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSSOM — CSS Object Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
 ↓
DOM

CSS
 ↓
CSSOM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the browser combines the information to determine what should be rendered.&lt;/p&gt;




&lt;h1&gt;
  
  
  28. 🧱 Render Tree
&lt;/h1&gt;

&lt;p&gt;The browser uses the DOM and CSS information to determine what is rendered.&lt;/p&gt;

&lt;p&gt;A simplified pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
 ↓
DOM
 ↓
      ┌──────────────┐
CSS → │ CSSOM        │
      └──────┬───────┘
             ↓
       Render Tree
             ↓
          Layout
             ↓
           Paint
             ↓
        Composite
             ↓
          🖥️ Screen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  29. 📐 Layout
&lt;/h1&gt;

&lt;p&gt;The browser calculates where everything should appear.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Viewport
┌──────────────────────────────┐
│ Header                       │
├──────────────────────────────┤
│                              │
│       Hello World             │
│                              │
│       [ Button ]              │
│                              │
└──────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It calculates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;width&lt;/li&gt;
&lt;li&gt;height&lt;/li&gt;
&lt;li&gt;position&lt;/li&gt;
&lt;li&gt;margins&lt;/li&gt;
&lt;li&gt;padding&lt;/li&gt;
&lt;li&gt;font metrics&lt;/li&gt;
&lt;li&gt;line wrapping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This stage is commonly called &lt;strong&gt;layout&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  30. 🎨 Paint
&lt;/h1&gt;

&lt;p&gt;Now the browser needs to draw things.&lt;/p&gt;

&lt;p&gt;It determines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Text
Backgrounds
Borders
Shadows
Images
Gradients
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and produces drawing operations for the rendering system.&lt;/p&gt;




&lt;h1&gt;
  
  
  31. 🧩 Composite
&lt;/h1&gt;

&lt;p&gt;Modern browsers can use multiple rendering layers.&lt;/p&gt;

&lt;p&gt;Those layers can then be composited together to produce the final frame.&lt;/p&gt;

&lt;p&gt;Simplified:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Layer 1 → Header
Layer 2 → Content
Layer 3 → Image
Layer 4 → Animation
          ↓
       Composite
          ↓
       🖥️ Frame
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And finally...&lt;/p&gt;

&lt;h1&gt;
  
  
  🎉 You See The Website
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Keyboard
   ↓
URL
   ↓
Browser
   ↓
DNS
   ↓
IP
   ↓
TCP / QUIC
   ↓
TLS
   ↓
HTTP
   ↓
Server
   ↓
Database / APIs
   ↓
HTML / CSS / JS
   ↓
DOM / CSSOM
   ↓
Layout
   ↓
Paint
   ↓
Composite
   ↓
👀 Website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  32. 🚀 But What About JavaScript?
&lt;/h1&gt;

&lt;p&gt;We're not done.&lt;/p&gt;

&lt;p&gt;Modern websites aren't just HTML.&lt;/p&gt;

&lt;p&gt;JavaScript can execute after the page starts loading.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;might trigger:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
HTTP request
   ↓
API server
   ↓
Database
   ↓
JSON response
   ↓
JavaScript
   ↓
Update DOM
   ↓
Browser renders again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why modern web applications can feel more like applications than documents.&lt;/p&gt;




&lt;h1&gt;
  
  
  33. 🍪 What About Cookies?
&lt;/h1&gt;

&lt;p&gt;Cookies can also be involved.&lt;/p&gt;

&lt;p&gt;A server may send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Set-Cookie: session=abc123
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser stores the cookie according to its rules.&lt;/p&gt;

&lt;p&gt;Later requests may include it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Cookie: session=abc123
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helps websites maintain things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sessions&lt;/li&gt;
&lt;li&gt;preferences&lt;/li&gt;
&lt;li&gt;authentication state&lt;/li&gt;
&lt;li&gt;certain tracking mechanisms&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  34. 🔑 What About Login?
&lt;/h1&gt;

&lt;p&gt;Suppose you're already logged into a website.&lt;/p&gt;

&lt;p&gt;The browser might send authentication information through a cookie or another mechanism.&lt;/p&gt;

&lt;p&gt;Simplified:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Login
  ↓
Server authenticates user
  ↓
Session established
  ↓
Browser stores credential/session state
  ↓
Future requests identify the session
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So when you visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the server can determine which account the request belongs to.&lt;/p&gt;




&lt;h1&gt;
  
  
  35. 📱 What If You're Using Your Phone?
&lt;/h1&gt;

&lt;p&gt;The overall architecture remains similar.&lt;/p&gt;

&lt;p&gt;But the network path may be different.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phone
  ↓
Wi-Fi
  ↓
Router
  ↓
ISP
  ↓
Internet
  ↓
Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phone
  ↓
Cellular Network
  ↓
Carrier Network
  ↓
Internet
  ↓
Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  36. 🌐 What Happens to the Packet?
&lt;/h1&gt;

&lt;p&gt;At the network level, your data is broken into packets and transported across networks.&lt;/p&gt;

&lt;p&gt;A simplified view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your Computer
      ↓
Router
      ↓
ISP
      ↓
Internet Routers
      ↓
Destination Network
      ↓
Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The actual route can vary.&lt;/p&gt;

&lt;p&gt;You can inspect routing information with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;traceroute example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;tracert&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;example.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  37. 🧪 Try It Yourself
&lt;/h1&gt;

&lt;p&gt;Open DevTools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chrome / Edge
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Right Click
    ↓
Inspect
    ↓
Network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then visit a website.&lt;/p&gt;

&lt;p&gt;You'll see requests such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Document
CSS
JS
Images
Fonts
XHR / Fetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  38. 🔍 Inspect a Request
&lt;/h1&gt;

&lt;p&gt;Click a request in the Network tab.&lt;/p&gt;

&lt;p&gt;You'll usually find information such as:&lt;/p&gt;

&lt;h3&gt;
  
  
  Headers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request URL
Request Method
Status Code
Remote Address
Content-Type
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Response
&lt;/h3&gt;

&lt;p&gt;The data returned by the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Timing
&lt;/h3&gt;

&lt;p&gt;You can often see timing phases related to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Queueing
DNS
Connection
TLS
Request
Waiting
Download
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one of the best ways to &lt;strong&gt;show the concepts in the video instead of only talking about them.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  39. 🛠️ Useful Commands
&lt;/h1&gt;

&lt;h3&gt;
  
  
  DNS lookup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nslookup example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Trace network path
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;traceroute example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Test HTTP headers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt; https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Make an HTTP request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verbose HTTPS connection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-v&lt;/span&gt; https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The verbose output can expose useful connection details such as DNS resolution, connection establishment, TLS negotiation, and HTTP exchange.&lt;/p&gt;




&lt;h1&gt;
  
  
  40. ⚡ Where Does Latency Come From?
&lt;/h1&gt;

&lt;p&gt;The browser isn't necessarily spending all its time downloading data.&lt;/p&gt;

&lt;p&gt;A simplified timeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DNS
 │
 ├── DNS lookup
 │
 ▼
Connection
 │
 ├── TCP / QUIC
 │
 ▼
TLS
 │
 ├── Secure handshake
 │
 ▼
Request
 │
 ├── HTTP request
 │
 ▼
TTFB
 │
 ├── Server processing
 │
 ▼
Download
 │
 ├── HTML / CSS / JS
 │
 ▼
Rendering
 │
 ├── Parse
 ├── Layout
 ├── Paint
 └── Composite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  41. 🏎️ Why Websites Use Caching
&lt;/h1&gt;

&lt;p&gt;Without caching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every request
      ↓
Server
      ↓
Generate response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With caching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
   ↓
Cache
   ↓
Found?
 ┌─┴─┐
Yes  No
 ↓    ↓
Return Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caching can happen at multiple layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser Cache
      ↓
CDN Cache
      ↓
Reverse Proxy Cache
      ↓
Application Cache
      ↓
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  42. 🌍 HTTP/2 and HTTP/3
&lt;/h1&gt;

&lt;p&gt;The web has evolved.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP/1.1
&lt;/h2&gt;

&lt;p&gt;Traditionally represents requests as individual HTTP messages over a TCP connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP/2
&lt;/h2&gt;

&lt;p&gt;Introduces features such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multiplexed streams&lt;/li&gt;
&lt;li&gt;binary framing&lt;/li&gt;
&lt;li&gt;header compression&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multiple HTTP streams can share a connection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             TCP Connection
                  │
       ┌──────────┼──────────┐
       ↓          ↓          ↓
    HTML         CSS        JS
   Stream 1    Stream 2   Stream 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP/3
&lt;/h2&gt;

&lt;p&gt;HTTP/3 uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/3
  ↓
QUIC
  ↓
UDP
  ↓
IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;QUIC integrates transport and TLS functionality into its protocol design and provides features such as stream multiplexing and connection migration.&lt;/p&gt;

&lt;p&gt;So the simplified modern stack can look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/3
  ↓
QUIC
  ↓
UDP
  ↓
IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2
  ↓
TLS
  ↓
TCP
  ↓
IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  43. 🧠 The Entire Journey
&lt;/h1&gt;

&lt;p&gt;Let's put everything together.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["⌨️ Type URL"] --&amp;gt; B["Browser parses URL"]
    B --&amp;gt; C["Cache checks"]
    C --&amp;gt; D["DNS resolution"]
    D --&amp;gt; E["IP address"]
    E --&amp;gt; F["TCP or QUIC connection"]
    F --&amp;gt; G["TLS / HTTPS"]
    G --&amp;gt; H["HTTP request"]
    H --&amp;gt; I["CDN / Load Balancer"]
    I --&amp;gt; J["Web Server"]
    J --&amp;gt; K["Application"]
    K --&amp;gt; L["Database / APIs"]
    L --&amp;gt; M["HTTP Response"]
    M --&amp;gt; N["HTML"]
    N --&amp;gt; O["DOM"]
    N --&amp;gt; P["CSS"]
    P --&amp;gt; Q["CSSOM"]
    O --&amp;gt; R["Render Tree"]
    Q --&amp;gt; R
    R --&amp;gt; S["Layout"]
    S --&amp;gt; T["Paint"]
    T --&amp;gt; U["Composite"]
    U --&amp;gt; V["🖥️ Pixels on Screen"]&lt;/code&gt;&lt;/pre&gt;






&lt;h1&gt;
  
  
  44. 🎯 The 10-Second Explanation
&lt;/h1&gt;

&lt;p&gt;If someone asks you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“What happens when I type a URL?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The browser parses the URL, resolves the domain through DNS, establishes a network connection, negotiates HTTPS when applicable, sends an HTTP request to the server, receives the response, downloads additional resources like CSS and JavaScript, builds the DOM and rendering structures, calculates layout, paints the page, and finally displays the result on your screen.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  45. 🧩 The Mental Model
&lt;/h1&gt;

&lt;p&gt;Remember these layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    🌐 WEBPAGE
                       ▲
                       │
                 Rendering
                       ▲
                       │
                HTML / CSS / JS
                       ▲
                       │
                    HTTP
                       ▲
                       │
                 TLS / HTTPS
                       ▲
                       │
               TCP / QUIC / UDP
                       ▲
                       │
                       IP
                       ▲
                       │
                    DNS
                       ▲
                       │
                     URL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or even simpler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL
 ↓
WHERE?
 ↓
DNS

HOW DO I CONNECT?
 ↓
TCP / QUIC

HOW DO I SECURE IT?
 ↓
TLS

WHAT DO I WANT?
 ↓
HTTP

WHERE DOES IT GO?
 ↓
CDN / Server / Application

WHAT DID I GET?
 ↓
HTML / CSS / JS

HOW DO I SHOW IT?
 ↓
DOM → Layout → Paint → Composite

🎨 SCREEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  🧪 Mini Experiment
&lt;/h1&gt;

&lt;p&gt;Open your browser and try this:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open DevTools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;F12 / Right Click → Inspect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Open Network
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network → Reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Click the first document request
&lt;/h3&gt;

&lt;p&gt;Look for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request URL
Status Code
Remote Address
Response Headers
Timing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Run DNS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Inspect HTTP
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt; https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Trace the route
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;traceroute example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you're no longer just learning the theory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're watching the process happen.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  🎬 Suggested Video Flow
&lt;/h1&gt;

&lt;p&gt;For teaching this on YouTube, don't present it like a textbook.&lt;/p&gt;

&lt;p&gt;Use the browser as the protagonist.&lt;/p&gt;

&lt;p&gt;Start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“I'm going to press Enter. Your browser is about to do way more work than you think.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then reveal the journey one step at a time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;YOU
 ↓
URL
 ↓
DNS
 ↓
IP
 ↓
TCP / QUIC
 ↓
TLS
 ↓
HTTP
 ↓
SERVER
 ↓
HTML
 ↓
CSS + JS
 ↓
RENDERING
 ↓
SCREEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At each stage, show the relevant DevTools panel or a simple animation.&lt;/p&gt;




&lt;h1&gt;
  
  
  🏁 Final Takeaway
&lt;/h1&gt;

&lt;p&gt;The next time you type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://youtube.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;don't think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A website opened.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I entered a URL
      ↓
The browser interpreted it
      ↓
DNS found the destination
      ↓
A network path was established
      ↓
HTTPS secured the communication
      ↓
HTTP requested the resource
      ↓
Servers processed my request
      ↓
HTML/CSS/JS came back
      ↓
The browser parsed everything
      ↓
Layout was calculated
      ↓
Pixels were painted
      ↓
🎨 I see a webpage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;That tiny moment between pressing Enter and seeing a webpage is an entire distributed-system story happening in milliseconds.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Concepts Covered
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DNS · IP · TCP · UDP · QUIC · Routing · Packets&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTPS · TLS · Certificates · Encryption · Certificate Authorities&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP · Headers · Cookies · Status Codes · CDN · Load Balancers · APIs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Servers · Application Logic · Databases · Caching&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTML · DOM · CSSOM · Render Tree · Layout · Paint · Composite · JavaScript&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💭 One Last Question
&lt;/h2&gt;

&lt;p&gt;The next time a website takes &lt;strong&gt;5 seconds&lt;/strong&gt; to load, ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Where exactly did those 5 seconds go?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe it was DNS.&lt;/p&gt;

&lt;p&gt;Maybe the network.&lt;/p&gt;

&lt;p&gt;Maybe TLS.&lt;/p&gt;

&lt;p&gt;Maybe the server.&lt;/p&gt;

&lt;p&gt;Maybe the database.&lt;/p&gt;

&lt;p&gt;Maybe JavaScript.&lt;/p&gt;

&lt;p&gt;Maybe rendering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And that's exactly what browser DevTools lets you investigate.&lt;/strong&gt; 🔍&lt;/p&gt;

</description>
      <category>networking</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Vibe Coding Isn't the Problem. Calling It Engineering Is.</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sun, 13 Sep 2026 18:15:49 +0000</pubDate>
      <link>https://dev.to/sh20raj/vibe-coding-isnt-the-problem-calling-it-engineering-is-34p1</link>
      <guid>https://dev.to/sh20raj/vibe-coding-isnt-the-problem-calling-it-engineering-is-34p1</guid>
      <description>&lt;h1&gt;
  
  
  Vibe Coding Isn't the Problem. Calling It Engineering Is.
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vibe coding can help you build software faster.&lt;br&gt;
The problem starts when “it works” becomes the definition of engineering.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is a lot of debate around &lt;strong&gt;vibe coding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Some developers think it is the future.&lt;/p&gt;

&lt;p&gt;Others think it is destroying software engineering.&lt;/p&gt;

&lt;p&gt;I think both sides are missing the real problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe coding isn't inherently bad.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using AI to generate code, prototype an idea, explore an unfamiliar API, or get from zero to something working can be incredibly useful.&lt;/p&gt;

&lt;p&gt;The dangerous part is something else:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Confusing generated software with engineered software.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is Vibe Coding?
&lt;/h1&gt;

&lt;p&gt;At its simplest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Idea
  ↓
Prompt AI
  ↓
Generate code
  ↓
Run it
  ↓
"It works!"
  ↓
Ship it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can be surprisingly effective.&lt;/p&gt;

&lt;p&gt;You describe what you want.&lt;/p&gt;

&lt;p&gt;An AI generates an implementation.&lt;/p&gt;

&lt;p&gt;You run it.&lt;/p&gt;

&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;You move on.&lt;/p&gt;

&lt;p&gt;For a weekend project?&lt;/p&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;For a prototype?&lt;/p&gt;

&lt;p&gt;Often great.&lt;/p&gt;

&lt;p&gt;For testing an idea?&lt;/p&gt;

&lt;p&gt;Fantastic.&lt;/p&gt;

&lt;p&gt;But now imagine applying the exact same workflow to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authentication&lt;/li&gt;
&lt;li&gt;payments&lt;/li&gt;
&lt;li&gt;medical software&lt;/li&gt;
&lt;li&gt;financial systems&lt;/li&gt;
&lt;li&gt;distributed infrastructure&lt;/li&gt;
&lt;li&gt;security-sensitive applications&lt;/li&gt;
&lt;li&gt;systems expected to run for years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The standard changes completely.&lt;/p&gt;




&lt;h1&gt;
  
  
  Working ≠ Engineered
&lt;/h1&gt;

&lt;p&gt;This is the distinction that gets lost.&lt;/p&gt;

&lt;p&gt;A program that works for the happy path is not automatically good software.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1234&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;You can log in.&lt;/p&gt;

&lt;p&gt;The feature is technically functional.&lt;/p&gt;

&lt;p&gt;But would you call this production authentication?&lt;/p&gt;

&lt;p&gt;Obviously not.&lt;/p&gt;

&lt;p&gt;Engineering asks questions that "does it work?" doesn't answer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does it work?
     ↓
Is it correct?
     ↓
Is it secure?
     ↓
Is it maintainable?
     ↓
Is it observable?
     ↓
Does it fail safely?
     ↓
Can someone else understand it?
     ↓
Can we change it six months from now?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's engineering.&lt;/p&gt;




&lt;h1&gt;
  
  
  AI Is Extremely Good at Producing Code
&lt;/h1&gt;

&lt;p&gt;And that's exactly why this conversation matters.&lt;/p&gt;

&lt;p&gt;Modern coding models can generate surprisingly large amounts of software.&lt;/p&gt;

&lt;p&gt;They can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create components&lt;/li&gt;
&lt;li&gt;write APIs&lt;/li&gt;
&lt;li&gt;generate tests&lt;/li&gt;
&lt;li&gt;refactor code&lt;/li&gt;
&lt;li&gt;explain unfamiliar code&lt;/li&gt;
&lt;li&gt;create database queries&lt;/li&gt;
&lt;li&gt;scaffold projects&lt;/li&gt;
&lt;li&gt;fix obvious bugs&lt;/li&gt;
&lt;li&gt;connect services&lt;/li&gt;
&lt;li&gt;generate documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The productivity gain is real.&lt;/p&gt;

&lt;p&gt;But there is an important asymmetry:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Generating code is becoming cheap. Understanding code is still expensive.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the part people underestimate.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Real Bottleneck Is Understanding
&lt;/h1&gt;

&lt;p&gt;Imagine an AI generates 15,000 lines of code for your project.&lt;/p&gt;

&lt;p&gt;You didn't manually write those lines.&lt;/p&gt;

&lt;p&gt;But now you own them.&lt;/p&gt;

&lt;p&gt;You need to understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Architecture
     │
     ├── Data flow
     ├── Dependencies
     ├── Security assumptions
     ├── Failure modes
     ├── Performance
     ├── State management
     └── Deployment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code may have been generated in minutes.&lt;/p&gt;

&lt;p&gt;Understanding it may take days.&lt;/p&gt;

&lt;p&gt;That's why AI doesn't eliminate engineering.&lt;/p&gt;

&lt;p&gt;It can actually &lt;strong&gt;increase the amount of software you need to reason about&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  The "It Works" Trap
&lt;/h1&gt;

&lt;p&gt;One of the easiest mistakes in AI-assisted development is this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt
  ↓
Code
  ↓
Run
  ↓
Works
  ↓
Ship
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But professional engineering looks more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Problem
   ↓
Requirements
   ↓
Constraints
   ↓
Design
   ↓
Implementation
   ↓
Tests
   ↓
Review
   ↓
Observability
   ↓
Security
   ↓
Deployment
   ↓
Maintenance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice something?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coding is only one part of the process.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Vibe Coding Is Great at the Beginning
&lt;/h1&gt;

&lt;p&gt;There is a reason people love it.&lt;/p&gt;

&lt;p&gt;The feedback loop is ridiculously fast.&lt;/p&gt;

&lt;p&gt;You can go from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I have an idea"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I have a working prototype"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;in an afternoon.&lt;/p&gt;

&lt;p&gt;That's powerful.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day 0

Idea
 │
 ▼
AI
 │
 ▼
Prototype
 │
 ▼
Demo
 │
 ▼
Feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without AI, this might have taken considerably longer.&lt;/p&gt;

&lt;p&gt;That's not a problem.&lt;/p&gt;

&lt;p&gt;That's leverage.&lt;/p&gt;

&lt;p&gt;The mistake is assuming the prototype has automatically become a production system.&lt;/p&gt;




&lt;h1&gt;
  
  
  Prototype ≠ Product
&lt;/h1&gt;

&lt;p&gt;This is perhaps the most important distinction.&lt;/p&gt;

&lt;p&gt;A prototype optimizes for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed of learning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Production software optimizes for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability over time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those goals are different.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prototype

Speed
  ████████████████████
Reliability
  ███████


Production

Speed
  ███████████
Reliability
  ████████████████████
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A prototype asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can this work?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Engineering asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can this continue working when reality happens?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Reality includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unexpected users&lt;/li&gt;
&lt;li&gt;malicious input&lt;/li&gt;
&lt;li&gt;network failures&lt;/li&gt;
&lt;li&gt;corrupted data&lt;/li&gt;
&lt;li&gt;traffic spikes&lt;/li&gt;
&lt;li&gt;dependency failures&lt;/li&gt;
&lt;li&gt;partial deployments&lt;/li&gt;
&lt;li&gt;changing requirements&lt;/li&gt;
&lt;li&gt;future developers&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  The AI Doesn't Own the Consequences
&lt;/h1&gt;

&lt;p&gt;This is another uncomfortable truth.&lt;/p&gt;

&lt;p&gt;When an AI generates bad code, the AI isn't on call at 3 AM.&lt;/p&gt;

&lt;p&gt;You are.&lt;/p&gt;

&lt;p&gt;When the database gets corrupted:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you own it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a security vulnerability is discovered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you own it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the deployment breaks production:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you own it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a future developer asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why the hell does this work like this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Guess who's responsible?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The engineer.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Engineering Is About Managing Uncertainty
&lt;/h1&gt;

&lt;p&gt;This is why software engineering is more than programming.&lt;/p&gt;

&lt;p&gt;Programming is largely about telling a computer what to do.&lt;/p&gt;

&lt;p&gt;Engineering is about making decisions under constraints.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        ENGINEERING
             │
    ┌────────┼────────┐
    ▼        ▼        ▼
 Correctness Security Reliability
    │        │        │
    └────────┼────────┘
             ▼
        Maintainability
             │
             ▼
          Longevity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You are constantly balancing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cost&lt;/li&gt;
&lt;li&gt;complexity&lt;/li&gt;
&lt;li&gt;performance&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;li&gt;reliability&lt;/li&gt;
&lt;li&gt;developer experience&lt;/li&gt;
&lt;li&gt;deadlines&lt;/li&gt;
&lt;li&gt;business requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can help with those decisions.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;someone still has to make them.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The Best Developers Will Probably Vibe Code
&lt;/h1&gt;

&lt;p&gt;Ironically, I don't think the future is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Real engineers don't use AI."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Quite the opposite.&lt;/p&gt;

&lt;p&gt;The strongest developers will probably use AI aggressively.&lt;/p&gt;

&lt;p&gt;But they won't surrender the engineering process to it.&lt;/p&gt;

&lt;p&gt;They'll use AI for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Exploration
Scaffolding
Boilerplate
Refactoring
Testing
Research
Documentation
Debugging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And they'll keep humans in the loop for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Architecture
Tradeoffs
Security
Requirements
System boundaries
Risk
Correctness
Ownership
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a much more powerful model.&lt;/p&gt;




&lt;h1&gt;
  
  
  Think of AI as a Very Fast Junior Engineer
&lt;/h1&gt;

&lt;p&gt;A useful mental model is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI is a ridiculously fast junior engineer who has read an absurd amount of code but can confidently make mistakes.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means you don't ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can AI write this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How should I use AI here?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  Good use
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Generate three approaches for this API and explain the tradeoffs."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Better use
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Implement option two and write tests for the edge cases."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Engineering use
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Implement option two, identify security risks, explain assumptions, and give me a test strategy."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The difference isn't the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's the human using it.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The New Skill Isn't Prompting
&lt;/h1&gt;

&lt;p&gt;Prompting matters.&lt;/p&gt;

&lt;p&gt;But I think a more important skill is emerging:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Judgment.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When AI produces code, can you tell whether it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;correct?&lt;/li&gt;
&lt;li&gt;overcomplicated?&lt;/li&gt;
&lt;li&gt;insecure?&lt;/li&gt;
&lt;li&gt;inefficient?&lt;/li&gt;
&lt;li&gt;unnecessary?&lt;/li&gt;
&lt;li&gt;inconsistent with the rest of the system?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That requires fundamentals.&lt;/p&gt;

&lt;p&gt;You still need to understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Data structures
Algorithms
Networking
Databases
Operating systems
Security
Distributed systems
Architecture
Testing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI changes how you use those fundamentals.&lt;/p&gt;

&lt;p&gt;It doesn't make them irrelevant.&lt;/p&gt;




&lt;h1&gt;
  
  
  From "Code Writer" to "System Designer"
&lt;/h1&gt;

&lt;p&gt;There is a bigger shift happening.&lt;/p&gt;

&lt;p&gt;Historically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Engineer
   ↓
Write code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Increasingly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Engineer
   ↓
Understand problem
   ↓
Design system
   ↓
Use AI to implement
   ↓
Verify
   ↓
Operate
   ↓
Improve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The value moves upward.&lt;/p&gt;

&lt;p&gt;You don't necessarily become less important because AI writes more code.&lt;/p&gt;

&lt;p&gt;You become responsible for &lt;strong&gt;more of the system around the code&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Architecture Problem
&lt;/h1&gt;

&lt;p&gt;This is where AI-generated applications can become especially dangerous.&lt;/p&gt;

&lt;p&gt;You can ask AI to build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend
   ↓
API
   ↓
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it will happily produce something.&lt;/p&gt;

&lt;p&gt;But real systems quickly become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌─────────────┐
                 │   Clients   │
                 └──────┬──────┘
                        │
                        ▼
                 ┌─────────────┐
                 │ API Gateway │
                 └──────┬──────┘
                        │
          ┌─────────────┼─────────────┐
          ▼             ▼             ▼
       Auth          Service A     Service B
          │             │             │
          ▼             ▼             ▼
       Database       Queue         Cache
                        │
                        ▼
                     Workers
                        │
                        ▼
                    Storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point, generating code is only a small part of the job.&lt;/p&gt;

&lt;p&gt;The difficult questions become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where should state live?&lt;/li&gt;
&lt;li&gt;What happens when the queue fails?&lt;/li&gt;
&lt;li&gt;What happens when a request is retried?&lt;/li&gt;
&lt;li&gt;How do services authenticate?&lt;/li&gt;
&lt;li&gt;Which operations are idempotent?&lt;/li&gt;
&lt;li&gt;Where are transactions required?&lt;/li&gt;
&lt;li&gt;How do you observe failures?&lt;/li&gt;
&lt;li&gt;What happens during partial outages?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No amount of "make me a full-stack app" changes those questions.&lt;/p&gt;




&lt;h1&gt;
  
  
  Documentation Becomes More Important
&lt;/h1&gt;

&lt;p&gt;There's another interesting consequence.&lt;/p&gt;

&lt;p&gt;When AI makes code generation faster, &lt;strong&gt;understanding the system becomes harder&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That makes good documentation more valuable, not less.&lt;/p&gt;

&lt;p&gt;And not just README files.&lt;/p&gt;

&lt;p&gt;Teams need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture diagrams&lt;/li&gt;
&lt;li&gt;dependency maps&lt;/li&gt;
&lt;li&gt;data-flow diagrams&lt;/li&gt;
&lt;li&gt;API documentation&lt;/li&gt;
&lt;li&gt;decisions&lt;/li&gt;
&lt;li&gt;assumptions&lt;/li&gt;
&lt;li&gt;operational runbooks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A visual representation can sometimes explain what hundreds of lines of code cannot.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request
  │
  ▼
Gateway
  │
  ├──── Auth ──────► User DB
  │
  ▼
Order Service
  │
  ├────► PostgreSQL
  │
  └────► Queue
             │
             ▼
          Worker
             │
             ▼
        Notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The more software we generate, the more important it becomes to understand &lt;strong&gt;how the pieces fit together&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  So, Should We Stop Vibe Coding?
&lt;/h1&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;We should stop pretending it is the entire engineering process.&lt;/p&gt;

&lt;p&gt;Vibe code.&lt;/p&gt;

&lt;p&gt;Prototype.&lt;/p&gt;

&lt;p&gt;Experiment.&lt;/p&gt;

&lt;p&gt;Generate.&lt;/p&gt;

&lt;p&gt;Throw things away.&lt;/p&gt;

&lt;p&gt;Use AI to move ridiculously fast.&lt;/p&gt;

&lt;p&gt;But when something matters?&lt;/p&gt;

&lt;p&gt;Slow down.&lt;/p&gt;

&lt;p&gt;Understand it.&lt;/p&gt;

&lt;p&gt;Test it.&lt;/p&gt;

&lt;p&gt;Review it.&lt;/p&gt;

&lt;p&gt;Document it.&lt;/p&gt;

&lt;p&gt;Design it.&lt;/p&gt;

&lt;p&gt;Own it.&lt;/p&gt;




&lt;h1&gt;
  
  
  The New Rule
&lt;/h1&gt;

&lt;p&gt;I would describe the distinction like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vibe Coding

"Make it work."


Engineering

"Make it work,
make it understandable,
make it safe,
make it maintainable,
and make sure we know why."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neither approach is inherently wrong.&lt;/p&gt;

&lt;p&gt;They're optimized for different things.&lt;/p&gt;

&lt;p&gt;The problem happens when we use the first definition while claiming we're doing the second.&lt;/p&gt;




&lt;h1&gt;
  
  
  AI Didn't Kill Engineering
&lt;/h1&gt;

&lt;p&gt;It exposed what engineering actually is.&lt;/p&gt;

&lt;p&gt;If your definition of engineering was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I personally typed every line."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then AI absolutely threatens your definition.&lt;/p&gt;

&lt;p&gt;But if engineering means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;understanding a problem, making sound technical decisions, managing complexity, validating assumptions, and building systems that survive reality&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then AI doesn't eliminate engineering.&lt;/p&gt;

&lt;p&gt;It makes those skills &lt;strong&gt;more valuable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because when anyone can generate 10,000 lines of code...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;the scarce resource isn't code anymore.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's judgment.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;The future probably won't belong to developers who refuse to use AI.&lt;/p&gt;

&lt;p&gt;And it probably won't belong to people who blindly let AI build everything either.&lt;/p&gt;

&lt;p&gt;It will belong to people who can do both:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Move incredibly fast when speed matters.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Think incredibly deeply when correctness matters.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the difference between &lt;strong&gt;generating software&lt;/strong&gt; and &lt;strong&gt;engineering software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vibe coding isn't the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calling the vibe the engineering is.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Sketchflow: A Visual Workspace for Developers Who Think Beyond Code</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sun, 13 Sep 2026 18:09:15 +0000</pubDate>
      <link>https://dev.to/sh20raj/sketchflow-a-visual-workspace-for-developers-who-think-beyond-code-2bdg</link>
      <guid>https://dev.to/sh20raj/sketchflow-a-visual-workspace-for-developers-who-think-beyond-code-2bdg</guid>
      <description>&lt;h1&gt;
  
  
  Sketchflow: A Visual Workspace for Developers Who Think Beyond Code
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F97o9xnrrzapz8dzbwyx5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F97o9xnrrzapz8dzbwyx5.png" alt=" " width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Code tells computers what to do. Diagrams help humans understand why.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Software development is full of things that are difficult to express in code alone.&lt;/p&gt;

&lt;p&gt;Architecture.&lt;/p&gt;

&lt;p&gt;System design.&lt;/p&gt;

&lt;p&gt;Data flow.&lt;/p&gt;

&lt;p&gt;API relationships.&lt;/p&gt;

&lt;p&gt;Database schemas.&lt;/p&gt;

&lt;p&gt;Feature planning.&lt;/p&gt;

&lt;p&gt;Debugging.&lt;/p&gt;

&lt;p&gt;Project structure.&lt;/p&gt;

&lt;p&gt;And when a project gets large enough, explaining these things often becomes harder than building them.&lt;/p&gt;

&lt;p&gt;That's where &lt;strong&gt;&lt;a href="https://sketchflow.space/" rel="noopener noreferrer"&gt;Sketchflow&lt;/a&gt;&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;It is a visual workspace built around the idea that developers shouldn't have to jump between code, diagrams, documentation, and project context just to understand what they're building.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Modern Development Workflows
&lt;/h2&gt;

&lt;p&gt;A typical development workflow might look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub
  ↓
Code
  ↓
Documentation
  ↓
Figma / Excalidraw
  ↓
Architecture diagram
  ↓
Chat
  ↓
Back to GitHub
  ↓
"What were we working on again?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every tool solves a specific problem.&lt;/p&gt;

&lt;p&gt;But the &lt;strong&gt;context is fragmented&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You might have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;source code in GitHub&lt;/li&gt;
&lt;li&gt;architecture diagrams somewhere else&lt;/li&gt;
&lt;li&gt;documentation in Notion&lt;/li&gt;
&lt;li&gt;ideas in a whiteboard&lt;/li&gt;
&lt;li&gt;tasks in an issue tracker&lt;/li&gt;
&lt;li&gt;API information in another document&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result?&lt;/p&gt;

&lt;p&gt;Your project has plenty of information, but that information isn't necessarily connected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Sketchflow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sketchflow is a GitHub-native visual workspace designed to bring visual thinking closer to your development workflow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of treating diagrams and visual documentation as completely separate artifacts, the goal is to make the visual layer part of how developers understand and communicate their projects.&lt;/p&gt;

&lt;p&gt;Think of it as a bridge:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌───────────────────┐
                 │      GitHub       │
                 │  Code • Issues    │
                 │  Repositories     │
                 └─────────┬─────────┘
                           │
                           ▼
                 ┌───────────────────┐
                 │    SKETCHFLOW     │
                 │                   │
                 │  Visual Workspace │
                 │  Architecture     │
                 │  Ideas            │
                 │  Documentation    │
                 └─────────┬─────────┘
                           │
                           ▼
                 ┌───────────────────┐
                 │     Your Team     │
                 │ Understand • Plan │
                 │ Build • Explain   │
                 └───────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important idea isn't simply "make diagrams."&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Make the visual representation of a software project part of the project itself.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Why Visual Thinking Matters in Software
&lt;/h1&gt;

&lt;p&gt;Consider a simple application.&lt;/p&gt;

&lt;p&gt;You might have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌─────────────┐
                    │   Client    │
                    │  Web / App  │
                    └──────┬──────┘
                           │
                           ▼
                    ┌─────────────┐
                    │ API Server  │
                    └──────┬──────┘
                           │
                ┌──────────┴──────────┐
                ▼                     ▼
        ┌─────────────┐       ┌─────────────┐
        │ PostgreSQL  │       │    Redis    │
        └─────────────┘       └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can explain this architecture in 500 words.&lt;/p&gt;

&lt;p&gt;Or you can show it in five seconds.&lt;/p&gt;

&lt;p&gt;That's the power of visual communication.&lt;/p&gt;

&lt;p&gt;A good diagram can make complicated systems immediately understandable.&lt;/p&gt;




&lt;h1&gt;
  
  
  From Repository to Visual Understanding
&lt;/h1&gt;

&lt;p&gt;One of the interesting things about a GitHub-native workflow is that the repository becomes the natural center of gravity.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Repository → Separate diagram → Separate documentation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can think about your project as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 PROJECT
                    │
       ┌────────────┼────────────┐
       │            │            │
       ▼            ▼            ▼
     Code       Visuals     Documentation
       │            │            │
       └────────────┼────────────┘
                    │
                    ▼
               Team Context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That makes visual artifacts more useful because they aren't just pretty pictures.&lt;/p&gt;

&lt;p&gt;They become part of the project's understanding.&lt;/p&gt;




&lt;h1&gt;
  
  
  Great for System Design
&lt;/h1&gt;

&lt;p&gt;If you're preparing for technical interviews, working on a startup, building open-source software, or simply trying to understand a large codebase, system design is unavoidable.&lt;/p&gt;

&lt;p&gt;You might need to visualize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;microservices&lt;/li&gt;
&lt;li&gt;databases&lt;/li&gt;
&lt;li&gt;queues&lt;/li&gt;
&lt;li&gt;caches&lt;/li&gt;
&lt;li&gt;authentication&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;event-driven systems&lt;/li&gt;
&lt;li&gt;cloud infrastructure&lt;/li&gt;
&lt;li&gt;frontend/backend relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         ┌──────────────┐
                         │    Users     │
                         └───────┬──────┘
                                 │
                                 ▼
                         ┌──────────────┐
                         │ Load Balancer│
                         └───────┬──────┘
                                 │
                    ┌────────────┼────────────┐
                    ▼            ▼            ▼
                 API #1       API #2       API #3
                    │            │            │
                    └────────────┼────────────┘
                                 │
                 ┌───────────────┴──────────────┐
                 ▼                              ▼
           ┌───────────┐                  ┌───────────┐
           │ PostgreSQL│                  │   Redis   │
           └───────────┘                  └───────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A visual workspace makes this kind of thinking much easier to communicate.&lt;/p&gt;




&lt;h1&gt;
  
  
  Perfect for Open Source Projects
&lt;/h1&gt;

&lt;p&gt;Open-source projects have a communication problem.&lt;/p&gt;

&lt;p&gt;A contributor may understand the code.&lt;/p&gt;

&lt;p&gt;Another contributor may understand the architecture.&lt;/p&gt;

&lt;p&gt;A new developer may understand neither.&lt;/p&gt;

&lt;p&gt;Good visual documentation can dramatically reduce that learning curve.&lt;/p&gt;

&lt;p&gt;Imagine opening a repository and seeing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌───────────────────┐
                 │     Project       │
                 └─────────┬─────────┘
                           │
          ┌────────────────┼────────────────┐
          │                │                │
          ▼                ▼                ▼
      Frontend          Backend          Workers
          │                │                │
          ▼                ▼                ▼
       React            FastAPI          Celery
                           │
                           ▼
                       Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before reading hundreds of files, you already have a mental model.&lt;/p&gt;

&lt;p&gt;That's incredibly valuable.&lt;/p&gt;




&lt;h1&gt;
  
  
  Visual Documentation ≠ Decoration
&lt;/h1&gt;

&lt;p&gt;There's an important distinction here.&lt;/p&gt;

&lt;p&gt;A diagram shouldn't exist simply because it looks nice.&lt;/p&gt;

&lt;p&gt;A useful diagram answers a question.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"How does authentication work?"&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 │
 ▼
Login
 │
 ▼
Auth Service
 │
 ├──────► PostgreSQL
 │
 ▼
JWT
 │
 ▼
API Requests
 │
 ▼
Authorization Middleware
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What happens when a user uploads a file?"&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Upload
  │
  ▼
API
  │
  ▼
Validation
  │
  ▼
Object Storage
  │
  ▼
Queue
  │
  ▼
Worker
  │
  ▼
Processing
  │
  ▼
Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The visual representation becomes a form of documentation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Sketchflow Fits the Developer Mindset
&lt;/h1&gt;

&lt;p&gt;The interesting part about a developer-focused visual workspace is that developers don't only think in documents.&lt;/p&gt;

&lt;p&gt;We think in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nodes
    ↓
relationships
    ↓
dependencies
    ↓
flows
    ↓
systems
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's exactly what diagrams are good at representing.&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The API communicates with the authentication service, which validates the user's credentials before generating a token..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;you can show the relationship:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client
  │
  │ login()
  ▼
Auth API
  │
  │ validate()
  ▼
Database
  │
  │ success
  ▼
JWT
  │
  ▼
Client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second representation is often much faster to understand.&lt;/p&gt;




&lt;h1&gt;
  
  
  Use Cases
&lt;/h1&gt;

&lt;p&gt;Sketchflow can be useful across different stages of development.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Brainstorming
&lt;/h3&gt;

&lt;p&gt;Turn an idea into a visual structure before writing code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IDEA
 │
 ├── Users
 ├── Features
 ├── Data
 ├── APIs
 └── Infrastructure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🏗️ Architecture
&lt;/h3&gt;

&lt;p&gt;Map out how your components communicate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend
   │
   ▼
API Gateway
   │
   ├── Auth
   ├── Users
   ├── Payments
   └── Notifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🐛 Debugging
&lt;/h3&gt;

&lt;p&gt;Visualize where a request or event is failing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client
  ↓
Gateway ✓
  ↓
API ✓
  ↓
Queue ✓
  ↓
Worker ✗
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  📚 Documentation
&lt;/h3&gt;

&lt;p&gt;Give contributors a mental model of your system before they dive into the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  👥 Collaboration
&lt;/h3&gt;

&lt;p&gt;Discuss architecture visually instead of trying to explain everything through paragraphs of text.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Better Development Loop
&lt;/h1&gt;

&lt;p&gt;A powerful workflow could look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        IDEA
         │
         ▼
     VISUALIZE
         │
         ▼
      DESIGN
         │
         ▼
       CODE
         │
         ▼
       TEST
         │
         ▼
     DOCUMENT
         │
         ▼
      SHARE
         │
         └──────────► Iterate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The visual layer isn't necessarily something you use once.&lt;/p&gt;

&lt;p&gt;It can evolve with the project.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why GitHub-Native Matters
&lt;/h1&gt;

&lt;p&gt;Developers already live in GitHub.&lt;/p&gt;

&lt;p&gt;That's where repositories, pull requests, issues, commits, and collaboration happen.&lt;/p&gt;

&lt;p&gt;So putting visual project context closer to that ecosystem makes sense.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Where is the latest architecture diagram?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;you want the answer to be much closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's part of the project."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the direction Sketchflow is taking with its GitHub-native visual workspace.&lt;/p&gt;




&lt;h1&gt;
  
  
  Built for More Than Developers
&lt;/h1&gt;

&lt;p&gt;Although the developer workflow is an obvious use case, visual workspaces can also be useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;product teams&lt;/li&gt;
&lt;li&gt;technical writers&lt;/li&gt;
&lt;li&gt;startup founders&lt;/li&gt;
&lt;li&gt;designers&lt;/li&gt;
&lt;li&gt;students&lt;/li&gt;
&lt;li&gt;engineering teams&lt;/li&gt;
&lt;li&gt;open-source maintainers&lt;/li&gt;
&lt;li&gt;educators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anything that involves &lt;strong&gt;explaining relationships between things&lt;/strong&gt; can benefit from visualization.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Bigger Idea
&lt;/h1&gt;

&lt;p&gt;Tools often force us to choose between different representations of knowledge.&lt;/p&gt;

&lt;p&gt;Text.&lt;/p&gt;

&lt;p&gt;Code.&lt;/p&gt;

&lt;p&gt;Diagrams.&lt;/p&gt;

&lt;p&gt;Tables.&lt;/p&gt;

&lt;p&gt;Tasks.&lt;/p&gt;

&lt;p&gt;But real-world projects don't fit neatly into one format.&lt;/p&gt;

&lt;p&gt;A software project is simultaneously:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 PROJECT
                    │
       ┌────────────┼────────────┐
       ▼            ▼            ▼
      CODE       CONCEPTS     PEOPLE
       │            │            │
       ▼            ▼            ▼
    SYSTEMS      DIAGRAMS      TEAM
       │            │            │
       └────────────┼────────────┘
                    ▼
                KNOWLEDGE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The future of developer tooling isn't necessarily about creating yet another place to store information.&lt;/p&gt;

&lt;p&gt;It's about connecting the different ways we &lt;strong&gt;think about information&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that's what makes the idea behind Sketchflow interesting.&lt;/p&gt;




&lt;h1&gt;
  
  
  Try Sketchflow
&lt;/h1&gt;

&lt;p&gt;If you've ever opened a large repository and thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I wish I could just see how all of this fits together."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's exactly the kind of problem worth solving visually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sketchflow is building toward a GitHub-native visual workspace where developers can think, explain, design, and understand their projects visually.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://sketchflow.space/" rel="noopener noreferrer"&gt;sketchflow.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't just read your codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See it. Understand it. Explain it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Software is becoming more complex.&lt;/p&gt;

&lt;p&gt;Teams are becoming more distributed.&lt;/p&gt;

&lt;p&gt;Codebases are becoming larger.&lt;/p&gt;

&lt;p&gt;And documentation isn't getting any easier.&lt;/p&gt;

&lt;p&gt;Maybe the answer isn't writing more documentation.&lt;/p&gt;

&lt;p&gt;Maybe it's giving developers better ways to &lt;strong&gt;visualize the systems they're already building.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the idea behind Sketchflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your code tells the computer what to do.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your visual workspace helps humans understand it.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Harness Engineering Isn't Dead — It Just Moved</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sun, 13 Sep 2026 18:05:42 +0000</pubDate>
      <link>https://dev.to/sh20raj/harness-engineering-isnt-dead-it-just-moved-1028</link>
      <guid>https://dev.to/sh20raj/harness-engineering-isnt-dead-it-just-moved-1028</guid>
      <description>&lt;h1&gt;
  
  
  Harness Engineering Isn't Dead — It Just Moved
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI agents are getting easier to build. But the interesting part isn't that the harness disappeared — it's that more of the harness is becoming infrastructure.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For a long time, building an AI agent meant building much more than an LLM call.&lt;/p&gt;

&lt;p&gt;You needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool calling&lt;/li&gt;
&lt;li&gt;Agent loops&lt;/li&gt;
&lt;li&gt;Retries&lt;/li&gt;
&lt;li&gt;Context management&lt;/li&gt;
&lt;li&gt;File handling&lt;/li&gt;
&lt;li&gt;Code execution&lt;/li&gt;
&lt;li&gt;Sandboxing&lt;/li&gt;
&lt;li&gt;State management&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Multi-agent orchestration&lt;/li&gt;
&lt;li&gt;Error recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, you needed a &lt;strong&gt;harness&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now, things are changing.&lt;/p&gt;

&lt;p&gt;On September 10, 2026, OpenAI introduced the &lt;strong&gt;Agents API&lt;/strong&gt;, a public-beta API that provides a managed Codex harness and infrastructure for running cloud agents. OpenAI says the harness manages things such as orchestration, long-running sessions, context management, and recovery, while developers can focus on their agent's tools, knowledge, and workflows.&lt;/p&gt;

&lt;p&gt;So is harness engineering dead?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But something important is happening:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Generic harness infrastructure is becoming a managed platform capability.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that changes what AI developers should spend their time building.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The simplest explanation
&lt;/h2&gt;

&lt;p&gt;Imagine an LLM is a very intelligent person.&lt;/p&gt;

&lt;p&gt;You give it a task:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Investigate why our API has a high error rate and create a report."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model can reason.&lt;/p&gt;

&lt;p&gt;But reasoning alone isn't enough.&lt;/p&gt;

&lt;p&gt;It needs to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inspect logs&lt;/li&gt;
&lt;li&gt;Search files&lt;/li&gt;
&lt;li&gt;Run commands&lt;/li&gt;
&lt;li&gt;Call APIs&lt;/li&gt;
&lt;li&gt;Save intermediate results&lt;/li&gt;
&lt;li&gt;Retry failed operations&lt;/li&gt;
&lt;li&gt;Maintain context&lt;/li&gt;
&lt;li&gt;Possibly delegate work&lt;/li&gt;
&lt;li&gt;Produce the final report&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The model is only one component.&lt;/p&gt;

&lt;p&gt;Something has to coordinate all of this.&lt;/p&gt;

&lt;p&gt;That surrounding system is what we commonly call an &lt;strong&gt;agent harness&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A simplified view:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    U[User] --&amp;gt; A[Agent Application]
    A --&amp;gt; H[Agent Harness]
    H --&amp;gt; M[LLM]
    H --&amp;gt; T[Tools]
    H --&amp;gt; S[State &amp;amp; Context]
    H --&amp;gt; X[Execution Environment]
    H --&amp;gt; O[Observability]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The important idea is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An LLM generates decisions. The harness turns those decisions into a reliable workflow.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  1. What Exactly Is an Agent Harness?
&lt;/h1&gt;

&lt;p&gt;The term "harness" isn't a single universally standardized component.&lt;/p&gt;

&lt;p&gt;Different platforms may use the term differently.&lt;/p&gt;

&lt;p&gt;But conceptually, an agent harness is the system around the model that enables an agent to &lt;strong&gt;act repeatedly and reliably&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model
  ↓
"I need to inspect app.py"
  ↓
Harness
  ↓
File tool
  ↓
app.py
  ↓
Harness
  ↓
Model
  ↓
"I found the bug"
  ↓
Harness
  ↓
Edit file
  ↓
Run tests
  ↓
Model
  ↓
Final response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without something coordinating those steps, you're mostly dealing with a model that produces outputs.&lt;/p&gt;

&lt;p&gt;With a harness, you're building an &lt;strong&gt;agentic system&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. LLM vs Agent
&lt;/h1&gt;

&lt;p&gt;This distinction is extremely important.&lt;/p&gt;

&lt;h2&gt;
  
  
  An LLM call
&lt;/h2&gt;

&lt;p&gt;A basic application might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain this Python function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The flow is basically:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[Application] --&amp;gt; B[LLM]
    B --&amp;gt; C[Response]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;But now imagine:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Fix the bug in this repository."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent might need to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read repository
     ↓
Find relevant files
     ↓
Understand code
     ↓
Edit code
     ↓
Run tests
     ↓
Read failures
     ↓
Modify code again
     ↓
Run tests again
     ↓
Produce result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's no longer one model call.&lt;/p&gt;

&lt;p&gt;It's a &lt;strong&gt;loop&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. The Agent Loop
&lt;/h1&gt;

&lt;p&gt;A simplified agent loop looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Start Task] --&amp;gt; B[Send Context to Model]
    B --&amp;gt; C{Model Decision}
    C --&amp;gt;|Final Answer| D[Return Result]
    C --&amp;gt;|Tool Call| E[Execute Tool]
    E --&amp;gt; F[Return Tool Result]
    F --&amp;gt; B&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The important part is the loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model
 ↓
Tool
 ↓
Result
 ↓
Model
 ↓
Tool
 ↓
Result
 ↓
Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where a lot of the engineering happens.&lt;/p&gt;

&lt;p&gt;You have to decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What tools exist?&lt;/li&gt;
&lt;li&gt;Which tools can the model use?&lt;/li&gt;
&lt;li&gt;What arguments are valid?&lt;/li&gt;
&lt;li&gt;How are failures handled?&lt;/li&gt;
&lt;li&gt;How long can execution continue?&lt;/li&gt;
&lt;li&gt;How is context maintained?&lt;/li&gt;
&lt;li&gt;When should the agent stop?&lt;/li&gt;
&lt;li&gt;When should it retry?&lt;/li&gt;
&lt;li&gt;When should a human approve an action?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's harness engineering.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. The Old Way: Build Everything Yourself
&lt;/h1&gt;

&lt;p&gt;Imagine you want to build a coding agent.&lt;/p&gt;

&lt;p&gt;A simplified architecture could look like this:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    U[User] --&amp;gt; A[Your Application]

    A --&amp;gt; H[Your Agent Harness]

    H --&amp;gt; M[LLM]
    H --&amp;gt; F[File System]
    H --&amp;gt; T[Tools]
    H --&amp;gt; C[Code Execution]
    H --&amp;gt; DB[Database]
    H --&amp;gt; L[Logs]

    C --&amp;gt; SB[Sandbox]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;You own almost everything.&lt;/p&gt;

&lt;p&gt;You might have to implement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent loop
Retry logic
Tool execution
Tool permissions
Context handling
State
File management
Code execution
Sandbox
Logging
Tracing
Error recovery
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first, this can feel manageable.&lt;/p&gt;

&lt;p&gt;Then your agent becomes more capable.&lt;/p&gt;

&lt;p&gt;And suddenly your "small AI project" has turned into an infrastructure project.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Why Sandboxing Is Hard
&lt;/h1&gt;

&lt;p&gt;This is one of the most important parts.&lt;/p&gt;

&lt;p&gt;Suppose your agent can execute code.&lt;/p&gt;

&lt;p&gt;The model generates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rm -rf important-data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You obviously don't want arbitrary model-generated code running directly on your production machine.&lt;/p&gt;

&lt;p&gt;So you need an isolated environment.&lt;/p&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Agent] --&amp;gt; B[Sandbox]

    B --&amp;gt; C[Files]
    B --&amp;gt; D[Processes]
    B --&amp;gt; E[Python]
    B --&amp;gt; F[Shell]
    B --&amp;gt; G[Packages]

    B -. Restricted .-&amp;gt; H[Production Systems]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Now you need to think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filesystem isolation&lt;/li&gt;
&lt;li&gt;Network access&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;CPU limits&lt;/li&gt;
&lt;li&gt;Memory limits&lt;/li&gt;
&lt;li&gt;Process isolation&lt;/li&gt;
&lt;li&gt;Timeouts&lt;/li&gt;
&lt;li&gt;Cleanup&lt;/li&gt;
&lt;li&gt;Persistence&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a serious engineering problem.&lt;/p&gt;

&lt;p&gt;OpenAI has explicitly described the need for computer environments where agents can work with files, execute code, and persist intermediate results, and has also discussed the security controls required when agents act autonomously.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Then Came Agent SDKs
&lt;/h1&gt;

&lt;p&gt;The next abstraction was the &lt;strong&gt;Agent SDK&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of manually implementing every part of the agent loop, an SDK could provide abstractions for things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agents
Tools
Handoffs
Tracing
Approvals
Context
Execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The architecture becomes:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    U[User] --&amp;gt; A[Your Application]
    A --&amp;gt; SDK[Agent SDK]

    SDK --&amp;gt; M[Model]
    SDK --&amp;gt; T[Tools]
    SDK --&amp;gt; O[Observability]
    SDK --&amp;gt; W[Workflow]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This is much better.&lt;/p&gt;

&lt;p&gt;But there is still a distinction between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Using an SDK&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Using a fully managed agent runtime.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The SDK can simplify your application code while you may still be responsible for running and operating the environment.&lt;/p&gt;

&lt;p&gt;OpenAI's April 2026 update to the Agents SDK explicitly described a more capable harness with tools, approvals, tracing, handoffs, resume bookkeeping, and sandbox environments.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. The Next Step: Managed Agent Infrastructure
&lt;/h1&gt;

&lt;p&gt;Now we reach the interesting part.&lt;/p&gt;

&lt;p&gt;Instead of you operating the entire agent runtime, the platform can provide more of it.&lt;/p&gt;

&lt;p&gt;The conceptual shift looks like this:&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Your App] --&amp;gt; B[Your Harness]
    B --&amp;gt; C[Your Sandbox]
    B --&amp;gt; D[Your State]
    B --&amp;gt; E[Your Observability]
    B --&amp;gt; F[Model Provider]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  With managed agent infrastructure
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Your App] --&amp;gt; B[Managed Agent Platform]

    B --&amp;gt; C[Agent Harness]
    B --&amp;gt; D[Session Management]
    B --&amp;gt; E[Context Management]
    B --&amp;gt; F[Tool Orchestration]
    B --&amp;gt; G[Observability]
    B --&amp;gt; H[Recovery]

    B --&amp;gt; I[Sandbox]
    B --&amp;gt; J[Model]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Now you can send a high-level task to the platform.&lt;/p&gt;

&lt;p&gt;The platform handles much more of the execution machinery.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. OpenAI's Agents API
&lt;/h1&gt;

&lt;p&gt;On September 10, 2026, OpenAI announced the &lt;strong&gt;Agents API&lt;/strong&gt; in public beta.&lt;/p&gt;

&lt;p&gt;Its core idea is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build and run cloud agents using a managed Codex harness.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OpenAI says it hosts and maintains the harness while developers choose the agent's compute environment.&lt;/p&gt;

&lt;p&gt;Those environments can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI-hosted sandboxes&lt;/li&gt;
&lt;li&gt;Your own infrastructure&lt;/li&gt;
&lt;li&gt;Supported sandbox providers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API is designed around long-running agent sessions, tool use, context management, recovery, and multi-agent workflows.&lt;/p&gt;

&lt;p&gt;This is a significant architectural shift.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. What OpenAI Is Actually Managing
&lt;/h1&gt;

&lt;p&gt;It's important not to misunderstand this.&lt;/p&gt;

&lt;p&gt;The Agents API doesn't mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"OpenAI builds your entire application."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, the platform provides infrastructure around the agent.&lt;/p&gt;

&lt;p&gt;According to OpenAI, the managed harness includes capabilities around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context management&lt;/li&gt;
&lt;li&gt;Tool orchestration&lt;/li&gt;
&lt;li&gt;Long-running sessions&lt;/li&gt;
&lt;li&gt;Recovery&lt;/li&gt;
&lt;li&gt;Subagents&lt;/li&gt;
&lt;li&gt;Agent coordination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAI also provides hosted sandbox infrastructure where agents can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run code&lt;/li&gt;
&lt;li&gt;Work with files&lt;/li&gt;
&lt;li&gt;Produce artifacts&lt;/li&gt;
&lt;li&gt;Install packages&lt;/li&gt;
&lt;li&gt;Use configured capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it like this:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Your Product] --&amp;gt; B[Agents API]

    B --&amp;gt; C[Managed Harness]
    B --&amp;gt; D[Model]
    B --&amp;gt; E[Session]
    B --&amp;gt; F[Context]
    B --&amp;gt; G[Tool Orchestration]
    B --&amp;gt; H[Sandbox]

    A --&amp;gt; I[Your Business Logic]
    A --&amp;gt; J[Your Tools]
    A --&amp;gt; K[Your Data]
    A --&amp;gt; L[Your UX]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The platform handles generic agent infrastructure.&lt;/p&gt;

&lt;p&gt;You build the thing that makes your agent &lt;strong&gt;useful&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. So... Is Harness Engineering Dead?
&lt;/h1&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;This is the biggest misconception.&lt;/p&gt;

&lt;p&gt;A better statement is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Generic harness infrastructure is becoming commoditized and managed.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The harness hasn't disappeared.&lt;/p&gt;

&lt;p&gt;It has moved.&lt;/p&gt;

&lt;p&gt;Compare this to databases.&lt;/p&gt;

&lt;p&gt;You could run PostgreSQL yourself.&lt;/p&gt;

&lt;p&gt;Or you could use a managed database service.&lt;/p&gt;

&lt;p&gt;The database didn't disappear.&lt;/p&gt;

&lt;p&gt;The operational responsibility moved to another layer.&lt;/p&gt;

&lt;p&gt;The same idea applies here.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[Build Everything Yourself] --&amp;gt; B[Use SDK]
    B --&amp;gt; C[Use Managed Agent Runtime]

    A --&amp;gt; D[Maximum Control]
    C --&amp;gt; E[Maximum Abstraction]&lt;/code&gt;&lt;/pre&gt;






&lt;h1&gt;
  
  
  11. The Harness Is Moving Up the Stack
&lt;/h1&gt;

&lt;p&gt;Think about the evolution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ABSTRACTION
                         ↑

       Managed Agent Infrastructure
                    │
              Agent SDKs
                    │
              Raw Model APIs
                    │
                HTTP APIs

                         ↓
                    MORE WORK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart BT
    A[Raw Model API]
    B[Agent SDK]
    C[Managed Agent Runtime]
    D[Your Application]

    A --&amp;gt; B
    B --&amp;gt; C
    C --&amp;gt; D&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Every step upward removes some infrastructure work.&lt;/p&gt;

&lt;p&gt;But it also introduces trade-offs.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. What Developers Still Need to Build
&lt;/h1&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;Imagine you're building an AI customer-support agent.&lt;/p&gt;

&lt;p&gt;The platform may provide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent runtime
Tool execution
Context management
Sandbox
Tracing
Sessions
Recovery
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But it doesn't automatically know your business rules.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should this customer receive a $500 refund?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's your application.&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this agent allowed to access the financial database?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's your authorization system.&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should an email require human approval?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's your workflow.&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What information should the agent never reveal?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's your policy and security layer.&lt;/p&gt;

&lt;p&gt;So the architecture becomes:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    U[User] --&amp;gt; A[Your Application]

    A --&amp;gt; BL[Business Logic]
    A --&amp;gt; AUTH[Authorization]
    A --&amp;gt; POL[Policies]
    A --&amp;gt; TOOLS[Your Tools]

    A --&amp;gt; AG[Managed Agent Runtime]

    AG --&amp;gt; H[Harness]
    AG --&amp;gt; S[Sandbox]
    AG --&amp;gt; CTX[Context]
    AG --&amp;gt; OBS[Observability]
    AG --&amp;gt; M[Model]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The infrastructure is managed.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;product intelligence&lt;/strong&gt; is still yours.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. The 80/20 Shift
&lt;/h1&gt;

&lt;p&gt;A useful way to think about this is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BEFORE

80% infrastructure
20% application


AFTER

20% infrastructure
80% application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These percentages aren't literal benchmarks.&lt;/p&gt;

&lt;p&gt;They're a mental model.&lt;/p&gt;

&lt;p&gt;The point is that developers can spend less time rebuilding generic agent infrastructure.&lt;/p&gt;

&lt;p&gt;Instead, they can focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domain-specific tools&lt;/li&gt;
&lt;li&gt;Business workflows&lt;/li&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;User experience&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Evaluations&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Product design&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  14. But There Is a Trade-Off
&lt;/h1&gt;

&lt;p&gt;Managed infrastructure sounds perfect.&lt;/p&gt;

&lt;p&gt;It isn't.&lt;/p&gt;

&lt;p&gt;The more you outsource, the less control you have over certain layers.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Managed Platform
       │
       ├── Convenience
       ├── Faster development
       ├── Less infrastructure
       └── Less control
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may have questions around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data residency&lt;/li&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;li&gt;Network access&lt;/li&gt;
&lt;li&gt;Vendor lock-in&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;li&gt;Custom runtimes&lt;/li&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Compliance&lt;/li&gt;
&lt;li&gt;Security boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why the ability to choose your execution environment matters.&lt;/p&gt;

&lt;p&gt;OpenAI's Agents API allows developers to choose between OpenAI-hosted sandboxes, their own infrastructure, or supported sandbox providers.&lt;/p&gt;

&lt;p&gt;So the future isn't necessarily:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Everyone runs everything on OpenAI."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It can also be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"The harness and execution environment become separate layers."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  15. Harness vs Sandbox
&lt;/h1&gt;

&lt;p&gt;This distinction is extremely important.&lt;/p&gt;

&lt;p&gt;They're not the same thing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Harness
&lt;/h3&gt;

&lt;p&gt;The harness coordinates the agent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model
 ↓
Tool decision
 ↓
Tool execution
 ↓
Result
 ↓
Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sandbox
&lt;/h3&gt;

&lt;p&gt;The sandbox provides an environment where the agent can safely execute things.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Files
Processes
Commands
Packages
Runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can therefore have:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A[Agent Harness] --&amp;gt; B[Sandbox]
    A --&amp;gt; C[Model]
    A --&amp;gt; D[Tools]
    B --&amp;gt; E[Files]
    B --&amp;gt; F[Code]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;And importantly, they don't have to live on the same machine.&lt;/p&gt;

&lt;p&gt;OpenAI's Agents SDK documentation describes this separation as useful for isolation, durability, and security.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. Why This Matters for Security
&lt;/h1&gt;

&lt;p&gt;An agent that can execute code is fundamentally different from a chatbot.&lt;/p&gt;

&lt;p&gt;A chatbot might generate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Here is a Python script."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An agent might actually execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That changes the threat model.&lt;/p&gt;

&lt;p&gt;Now you need to think about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        Agent
          │
          ▼
       Tools
          │
          ▼
      Permissions
          │
          ▼
       Sandbox
          │
          ▼
     External Systems
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every arrow is a potential security boundary.&lt;/p&gt;

&lt;p&gt;This is why "just give the agent tools" is not a sufficient production architecture.&lt;/p&gt;

&lt;p&gt;OpenAI has described the need for explicit boundaries, approval controls, and telemetry when deploying coding agents into real workflows.&lt;/p&gt;




&lt;h1&gt;
  
  
  17. What Happens to Agent Engineers?
&lt;/h1&gt;

&lt;p&gt;This is perhaps the most interesting career question.&lt;/p&gt;

&lt;p&gt;If platforms handle more of the generic harness, does that mean agent engineers become less important?&lt;/p&gt;

&lt;p&gt;I don't think so.&lt;/p&gt;

&lt;p&gt;Their responsibilities change.&lt;/p&gt;

&lt;p&gt;Instead of spending most of their time implementing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;retry()
tool_loop()
context_manager()
sandbox_manager()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;they may spend more time on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent architecture
tool design
permissions
evaluation
workflow design
memory
reliability
cost optimization
security
domain logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The abstraction level rises.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. The New Agent Engineering Stack
&lt;/h1&gt;

&lt;p&gt;A useful model is:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart BT
    A[Foundation Models]
    B[Agent Runtime]
    C[Tools + Sandbox]
    D[Application Logic]
    E[Product]

    A --&amp;gt; B
    B --&amp;gt; C
    C --&amp;gt; D
    D --&amp;gt; E&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Each layer solves a different problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1 — Models
&lt;/h3&gt;

&lt;p&gt;Reasoning and generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2 — Agent Runtime
&lt;/h3&gt;

&lt;p&gt;Loops, context, orchestration, sessions, recovery.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3 — Tools &amp;amp; Execution
&lt;/h3&gt;

&lt;p&gt;Files, code execution, APIs, databases, browsers, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4 — Application Logic
&lt;/h3&gt;

&lt;p&gt;Your business rules and workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 5 — Product
&lt;/h3&gt;

&lt;p&gt;What users actually experience.&lt;/p&gt;

&lt;p&gt;The more infrastructure providers manage, the more developers can concentrate on layers 3–5.&lt;/p&gt;




&lt;h1&gt;
  
  
  19. What About Custom Harnesses?
&lt;/h1&gt;

&lt;p&gt;They aren't going away.&lt;/p&gt;

&lt;p&gt;There will always be situations where you need more control.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Custom planning
Custom memory
Custom routing
Custom model selection
Custom evaluation
Custom security policies
Custom scheduling
Custom orchestration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A managed platform might give you the generic 80%.&lt;/p&gt;

&lt;p&gt;Your custom system may implement the remaining 20%.&lt;/p&gt;

&lt;p&gt;And sometimes that 20% is the actual competitive advantage.&lt;/p&gt;




&lt;h1&gt;
  
  
  20. Generic Harness vs Custom Harness
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Managed Harness&lt;/th&gt;
&lt;th&gt;Custom Harness&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic agent loop&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool orchestration&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context management&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long-running sessions&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox infrastructure&lt;/td&gt;
&lt;td&gt;Often&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom execution&lt;/td&gt;
&lt;td&gt;Limited by platform&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business logic&lt;/td&gt;
&lt;td&gt;You build it&lt;/td&gt;
&lt;td&gt;You build it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum control&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development speed&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure burden&lt;/td&gt;
&lt;td&gt;Lower&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor dependency&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;td&gt;Lower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There isn't a universally correct choice.&lt;/p&gt;

&lt;p&gt;It depends on what you're building.&lt;/p&gt;




&lt;h1&gt;
  
  
  21. Why Codex Is Important to This Story
&lt;/h1&gt;

&lt;p&gt;The Agents API didn't appear out of nowhere.&lt;/p&gt;

&lt;p&gt;OpenAI has been building agent infrastructure through Codex.&lt;/p&gt;

&lt;p&gt;OpenAI describes the Codex harness as the system responsible for orchestrating interaction between the user, model, and tools.&lt;/p&gt;

&lt;p&gt;OpenAI also published its experience with &lt;strong&gt;harness engineering&lt;/strong&gt; after building a software product where Codex generated the code and the team focused heavily on environments, intent, feedback loops, tests, and agent-friendly infrastructure.&lt;/p&gt;

&lt;p&gt;This is important because it demonstrates something:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The harness itself can become an engineering product.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And now OpenAI is exposing more of that infrastructure through an API.&lt;/p&gt;




&lt;h1&gt;
  
  
  22. Harness Engineering Is Actually Becoming MORE Important
&lt;/h1&gt;

&lt;p&gt;Here's the paradox.&lt;/p&gt;

&lt;p&gt;We're saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The harness is becoming managed."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But at the same time:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The harness is becoming more important."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both can be true.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because as agents become more capable, the difference between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model alone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model + system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;becomes enormous.&lt;/p&gt;

&lt;p&gt;OpenAI's own engineering work describes the harness as a critical layer for making agents dependable in production. Its current Codex agent engineering roles explicitly cover harness behavior, sandboxing, orchestration, evaluation, observability, and reliability.&lt;/p&gt;

&lt;p&gt;So the harness isn't becoming irrelevant.&lt;/p&gt;

&lt;p&gt;It's becoming &lt;strong&gt;infrastructure&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  23. The Bigger Pattern in Software
&lt;/h1&gt;

&lt;p&gt;This isn't actually new.&lt;/p&gt;

&lt;p&gt;Look at the history of software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Servers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Physical server
      ↓
Virtual machines
      ↓
Cloud
      ↓
Serverless
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Databases
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manage database yourself
      ↓
Managed database
      ↓
Serverless database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Infrastructure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hardware
      ↓
Cloud infrastructure
      ↓
Managed services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now:&lt;/p&gt;

&lt;h3&gt;
  
  
  AI agents
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw model
      ↓
Agent SDK
      ↓
Managed agent runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The pattern is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure becomes abstraction.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  24. What Developers Should Learn Now
&lt;/h1&gt;

&lt;p&gt;If you're learning AI engineering today, don't focus only on API syntax.&lt;/p&gt;

&lt;p&gt;Learn these concepts:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Agent loops
&lt;/h3&gt;

&lt;p&gt;Understand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model → Tool → Result → Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Tool design
&lt;/h3&gt;

&lt;p&gt;Learn how to give agents reliable tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Context management
&lt;/h3&gt;

&lt;p&gt;Understand what information the model receives and when.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Sandboxing
&lt;/h3&gt;

&lt;p&gt;Understand how code execution should be isolated.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Permissions
&lt;/h3&gt;

&lt;p&gt;Never assume the agent should have unlimited access.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Observability
&lt;/h3&gt;

&lt;p&gt;You need to know what your agent actually did.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Evaluation
&lt;/h3&gt;

&lt;p&gt;A working demo isn't necessarily a reliable agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Workflow design
&lt;/h3&gt;

&lt;p&gt;Understand when agents should act autonomously and when humans should approve actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Cost and latency
&lt;/h3&gt;

&lt;p&gt;More reasoning and more tool calls aren't free.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. System architecture
&lt;/h3&gt;

&lt;p&gt;Most importantly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Know which layer should own which responsibility.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  25. A Practical Mental Model
&lt;/h1&gt;

&lt;p&gt;Whenever you're building an AI agent, ask these questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────┐
│ What does the model decide?        │
├────────────────────────────────────┤
│ What does the harness coordinate?  │
├────────────────────────────────────┤
│ What does the sandbox execute?     │
├────────────────────────────────────┤
│ What do my tools control?          │
├────────────────────────────────────┤
│ What does my application own?      │
├────────────────────────────────────┤
│ Where are the security boundaries? │
├────────────────────────────────────┤
│ Where is state stored?             │
├────────────────────────────────────┤
│ How do I evaluate the agent?       │
└────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you can answer all of these, you understand the architecture.&lt;/p&gt;




&lt;h1&gt;
  
  
  26. The Future
&lt;/h1&gt;

&lt;p&gt;I think we're moving toward a world where you won't start every AI project by asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do I build an agent loop?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You'll start with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What should this agent accomplish?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then you'll choose how much infrastructure you want to own.&lt;/p&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Problem] --&amp;gt; B{How much control?}

    B --&amp;gt;|Fastest| C[Managed Agent Runtime]
    B --&amp;gt;|More control| D[Agent SDK]
    B --&amp;gt;|Maximum control| E[Custom Harness]

    C --&amp;gt; F[Application]
    D --&amp;gt; F
    E --&amp;gt; F&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;That's much more interesting than simply saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Harness engineering is dead."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because it isn't.&lt;/p&gt;




&lt;h1&gt;
  
  
  27. The Final Takeaway
&lt;/h1&gt;

&lt;p&gt;The biggest change isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Developers don't need harnesses anymore."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Developers don't necessarily need to own the generic harness infrastructure anymore."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a huge difference.&lt;/p&gt;

&lt;p&gt;The future probably looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             YOUR PRODUCT
                  │
                  ▼
          YOUR APPLICATION
                  │
        ┌─────────┴─────────┐
        │                   │
 Business Logic       Custom Workflows
        │                   │
        └─────────┬─────────┘
                  │
                  ▼
          MANAGED AGENT
             RUNTIME
                  │
       ┌──────────┼──────────┐
       │          │          │
    Harness    Sandbox    Tools
       │          │          │
       └──────────┼──────────┘
                  │
                  ▼
                MODEL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Harness engineering isn't dead.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is being pushed down the stack.&lt;/p&gt;

&lt;p&gt;The generic parts are becoming platforms.&lt;/p&gt;

&lt;p&gt;The custom parts are becoming more valuable.&lt;/p&gt;

&lt;p&gt;And the job of the AI engineer is slowly moving from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How do I make the agent run?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How do I make the agent reliably solve the right problem?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more interesting engineering problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  🚀 If You're Building AI Agents
&lt;/h1&gt;

&lt;p&gt;Don't start by writing a giant agent framework.&lt;/p&gt;

&lt;p&gt;Start with three questions:&lt;/p&gt;

&lt;h3&gt;
  
  
  What should the agent do?
&lt;/h3&gt;

&lt;p&gt;Define the actual job.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the agent need access to?
&lt;/h3&gt;

&lt;p&gt;Define tools, data, files, and permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should I own vs. outsource?
&lt;/h3&gt;

&lt;p&gt;Decide whether you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Custom harness
        ↓
Agent SDK
        ↓
Managed agent runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The best architecture is not necessarily the one with the most code.&lt;/p&gt;

&lt;p&gt;It's the one where &lt;strong&gt;every layer has a clear responsibility.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  📚 Further Reading &amp;amp; Sources
&lt;/h1&gt;

&lt;h3&gt;
  
  
  OpenAI — Introducing the Agents API
&lt;/h3&gt;

&lt;p&gt;The primary announcement for the managed Codex harness, cloud agents, hosted sandboxes, long-running sessions, and execution environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/introducing-the-agents-api/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read the Agents API announcement&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI — Harness Engineering
&lt;/h3&gt;

&lt;p&gt;A detailed look at how OpenAI approached software development around Codex agents and why agent-friendly environments and feedback loops matter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/harness-engineering/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read Harness Engineering&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI — Unrolling the Codex Agent Loop
&lt;/h3&gt;

&lt;p&gt;A deeper explanation of the agent loop and the role of the Codex harness.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/unrolling-the-codex-agent-loop/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read Unrolling the Codex Agent Loop&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI — The Next Evolution of the Agents SDK
&lt;/h3&gt;

&lt;p&gt;Useful background on sandbox environments, tools, approvals, tracing, handoffs, and agent execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/the-next-evolution-of-the-agents-sdk/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read the Agents SDK article&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI — Running Codex Safely
&lt;/h3&gt;

&lt;p&gt;A useful introduction to the security boundaries, approvals, controls, and telemetry required for autonomous agents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/running-codex-safely/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read Running Codex Safely&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI — From Model to Agent
&lt;/h3&gt;

&lt;p&gt;Explains why agents need computer environments, execution, intermediate files, and reliable workflow infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openai.com/index/equip-responses-api-computer-environment/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read From Model to Agent&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What do you think?
&lt;/h2&gt;

&lt;p&gt;Do you think managed agent APIs will make custom harnesses obsolete?&lt;/p&gt;

&lt;p&gt;Or will the best AI products still require their own orchestration layer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'd love to hear your take in the comments.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>openai</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Demystifying Compiler Design: From Source Code to Executable (Course Overview)</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Sat, 29 Aug 2026 16:35:18 +0000</pubDate>
      <link>https://dev.to/sh20raj/demystifying-compiler-design-from-source-code-to-executable-course-overview-24j7</link>
      <guid>https://dev.to/sh20raj/demystifying-compiler-design-from-source-code-to-executable-course-overview-24j7</guid>
      <description>&lt;h3&gt;
  
  
  Why Care About Compiler Design?
&lt;/h3&gt;

&lt;p&gt;Most developers treat compilers like a black box: write high-level code, hit build, and machine instructions come out. Understanding what happens inside that black box fundamentally changes how you write code, debug runtime failures, optimize performance, and design custom domain-specific languages (DSLs) or developer tools.&lt;/p&gt;

&lt;p&gt;This course breaks down the end-to-end architecture of modern compilers into practical, digestible concepts—spanning lexical analysis, parsing, semantic verification, intermediate code generation, runtime environments, and low-level code optimization.&lt;/p&gt;




&lt;h3&gt;
  
  
  What We Will Build &amp;amp; Learn
&lt;/h3&gt;

&lt;p&gt;The series is structured across five core milestones:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Source Code ] 
       │
       ▼
 [ Lexical Analysis (Tokens) ] ─────────► (DFA &amp;amp; Regex)
       │
       ▼
 [ Syntax Analysis (AST/CST) ] ─────────► (LL &amp;amp; LR Parsers)
       │
       ▼
 [ Semantic Analysis &amp;amp; SDTS ]  ─────────► (Type Checking &amp;amp; TAC)
       │
       ▼
 [ Intermediate Code &amp;amp; Runtime ] ───────► (Control Flow &amp;amp; Activation Records)
       │
       ▼
 [ Optimization &amp;amp; Assembly ]   ─────────► (CFG, Dead Code, Constant Folding)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Course Roadmap
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Lexical Analysis (Scanning)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Anatomy of compilers and compilation phases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tokenization, lexemes, and input buffering techniques.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Direct conversion of Regular Expressions to Deterministic Finite Automata (DFA).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Syntax Analysis (Parsing)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Context-Free Grammars (CFG) and ambiguity elimination.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Top-down parsing strategies: Recursive Descent and predictive $LL(1)$ tables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bottom-up parsing: Shift-reduce mechanisms, $LR(0)$, $SLR(1)$, $LALR(1)$, and canonical $LR(1)$.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practical error detection and recovery routines.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Semantic Analysis &amp;amp; Intermediate Code Generation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Syntax-Directed Definitions (SDD) and Syntax-Directed Translation Schemes (SDTS).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Synthesized vs. Inherited attribute evaluation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Static type checking and symbol table operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generating Three-Address Code (TAC) and translating complex array references.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Control Flow &amp;amp; Runtime Environments&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Evaluating boolean logic (short-circuit vs. complete evaluation).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resolving forward and backward branching in intermediate code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Runtime stack organization, activation records, and function calls/returns.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Optimization &amp;amp; Code Generation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Constructing Basic Blocks and Control Flow Graphs (CFGs).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Machine-independent local and global optimizations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing Constant Folding, Dead Code Elimination, Common Subexpression Elimination, and Loop-Invariant Code Motion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Emitting targeted machine instructions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Who This Series Is For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CS Students:&lt;/strong&gt; Preparing for core systems courses and technical interviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Software Engineers:&lt;/strong&gt; Wanting to build custom linters, transpilers, AST analyzers, or programming languages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curious Builders:&lt;/strong&gt; Wanting to demystify low-level systems and execution runtimes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Follow along for **Part 1: The Anatomy of a Compiler &amp;amp; Building a Fast Lexical Scanner&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>compiler</category>
      <category>course</category>
      <category>compsci</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🔐 How Does a VPN Work?</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Fri, 28 Aug 2026 15:20:06 +0000</pubDate>
      <link>https://dev.to/sh20raj/how-does-a-vpn-work-1keo</link>
      <guid>https://dev.to/sh20raj/how-does-a-vpn-work-1keo</guid>
      <description>&lt;h1&gt;
  
  
  🔐 How Does a VPN Work?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Complete Visual Guide
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;VPN (Virtual Private Network)&lt;/strong&gt; creates an encrypted connection between your device and a VPN server. It changes the path your internet traffic takes and makes websites see the VPN server's public IP address instead of your own.&lt;/p&gt;

&lt;p&gt;But there is an important distinction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A VPN improves privacy and security. It does not make you completely anonymous.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/M_ec1-xDlD8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  1. What Happens Without a VPN?
&lt;/h2&gt;

&lt;p&gt;Normally, when you access a website, your traffic follows roughly this path:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 Your Device"] --&amp;gt; B["📡 Router"]
    B --&amp;gt; C["🌐 ISP"]
    C --&amp;gt; D["🌍 Internet"]
    D --&amp;gt; E["🖥️ Website"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;For example, when you open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;your request travels through your network and ISP before reaching the destination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who can see what?
&lt;/h3&gt;

&lt;p&gt;Your ISP can generally see information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That you're communicating over the internet&lt;/li&gt;
&lt;li&gt;Which IP addresses you're connecting to&lt;/li&gt;
&lt;li&gt;Timing and amount of traffic&lt;/li&gt;
&lt;li&gt;Depending on the protocol and encryption, potentially more information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The website can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your public IP address&lt;/li&gt;
&lt;li&gt;Approximate geographic location derived from that IP&lt;/li&gt;
&lt;li&gt;Your requests and account activity&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2. What Changes When You Turn On a VPN?
&lt;/h1&gt;

&lt;p&gt;Now imagine switching on a VPN:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 Your Device"] --&amp;gt; B["🔒 VPN Tunnel"]
    B --&amp;gt; C["🖥️ VPN Server"]
    C --&amp;gt; D["🌍 Internet"]
    D --&amp;gt; E["🖥️ Website"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You → ISP → Website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the important part becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You → ISP → 🔒 VPN Server → Website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The connection between &lt;strong&gt;your device and the VPN server is encrypted&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is commonly described as an &lt;strong&gt;encrypted tunnel&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. What Is the VPN Tunnel?
&lt;/h1&gt;

&lt;p&gt;Think of your internet traffic as letters.&lt;/p&gt;

&lt;p&gt;Without additional encryption, someone along the route may be able to inspect the contents if the traffic isn't otherwise protected.&lt;/p&gt;

&lt;p&gt;A VPN puts that traffic inside an encrypted connection.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["📄 Original Data"] --&amp;gt; B["🔐 Encryption"]
    B --&amp;gt; C["📦 Encrypted Data"]
    C --&amp;gt; D["🚇 Secure VPN Tunnel"]
    D --&amp;gt; E["🖥️ VPN Server"]
    E --&amp;gt; F["🌐 Destination"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BEFORE

GET /profile
User-Agent: Chrome
Cookie: ...


        ↓ VPN encryption


AFTER

8F 91 A2 7C 4B 19 0D
A8 31 F2 91 72 44 ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The actual cryptographic protocols are considerably more sophisticated than simply converting readable text into random characters, but this gives you the right intuition.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. What Actually Happens to a Packet?
&lt;/h1&gt;

&lt;p&gt;Let's simplify the process.&lt;/p&gt;

&lt;p&gt;Suppose you want to access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your device creates network traffic containing information needed to deliver the request.&lt;/p&gt;

&lt;p&gt;The VPN client encrypts the appropriate traffic and sends it through the VPN connection.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;sequenceDiagram
    participant U as 💻 You
    participant V as 🔒 VPN Server
    participant W as 🌐 Website

    U-&amp;gt;&amp;gt;V: Encrypted VPN traffic
    V-&amp;gt;&amp;gt;W: Request from VPN server
    W-&amp;gt;&amp;gt;V: Response
    V-&amp;gt;&amp;gt;U: Encrypted response&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The VPN server acts as the &lt;strong&gt;middle point between you and the public internet&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Your IP Address Changes
&lt;/h1&gt;

&lt;p&gt;This is one of the most noticeable effects of a VPN.&lt;/p&gt;

&lt;h3&gt;
  
  
  Without VPN
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 You"] --&amp;gt; B["🌐 Website"]
    B --&amp;gt; C["Website sees:&amp;lt;br/&amp;gt;Your Public IP"]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  With VPN
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 You"] --&amp;gt; B["🔒 VPN Server"]
    B --&amp;gt; C["🌐 Website"]
    C --&amp;gt; D["Website sees:&amp;lt;br/&amp;gt;VPN Server IP"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;So if your actual public IP were:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;203.0.113.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the website might instead see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;198.51.100.25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;—the public IP of the VPN server.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. So Does the VPN Hide You From Your ISP?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Not completely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one of the biggest misconceptions about VPNs.&lt;/p&gt;

&lt;p&gt;Your ISP can still observe that your device is communicating with a VPN server.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 You"] --&amp;gt; B["ISP"]
    B --&amp;gt; C["🔒 VPN Server"]
    C --&amp;gt; D["🌐 Website"]

    B -. "Can see VPN connection" .-&amp;gt; C
    B -. "Cannot normally see inside VPN tunnel" .-&amp;gt; C&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The ISP generally doesn't get to see the contents of the traffic protected by the VPN tunnel.&lt;/p&gt;

&lt;p&gt;However, it can still observe &lt;strong&gt;metadata&lt;/strong&gt;, such as traffic timing, volume, and the VPN server you're connecting to.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. What Does the VPN Provider See?
&lt;/h1&gt;

&lt;p&gt;This is extremely important.&lt;/p&gt;

&lt;p&gt;When you use a VPN, you're shifting trust.&lt;/p&gt;

&lt;p&gt;Without a VPN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You → ISP → Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a VPN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You → ISP → VPN Provider → Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The VPN provider operates the server through which your traffic exits.&lt;/p&gt;

&lt;p&gt;Therefore, your VPN provider may be able to observe significant information about your connection, depending on its infrastructure, logging practices, configuration, and the protocols/services involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  The key idea:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A VPN doesn't eliminate trust. It moves part of that trust from your ISP to the VPN provider.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's why choosing a trustworthy VPN provider matters.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. What Does the Website See?
&lt;/h1&gt;

&lt;p&gt;From the website's perspective:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 Your Device&amp;lt;br/&amp;gt;203.0.113.10"]
    B["🔒 VPN Server&amp;lt;br/&amp;gt;198.51.100.25"]
    C["🌐 Website"]

    A --&amp;gt; B
    B --&amp;gt; C&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The website generally sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source IP:
198.51.100.25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;203.0.113.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why VPNs can also make it appear as though you're connecting from another region when the VPN server is located there.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. But What About HTTPS?
&lt;/h1&gt;

&lt;p&gt;Here's an important layer that many basic VPN explanations skip.&lt;/p&gt;

&lt;p&gt;A VPN isn't the only thing protecting your data.&lt;/p&gt;

&lt;p&gt;When you visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HTTPS typically provides encryption between your browser and the website.&lt;/p&gt;

&lt;p&gt;So you can think of the connection as having &lt;strong&gt;multiple security layers&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 Your Device"]
    B["🔒 VPN Encryption"]
    C["🌐 Internet"]
    D["🔐 HTTPS"]
    E["🖥️ Website"]

    A --&amp;gt; B --&amp;gt; C --&amp;gt; D --&amp;gt; E&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;A simplified mental model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your Device
     │
     │ VPN encryption
     ▼
VPN Server
     │
     │ HTTPS encryption
     ▼
Website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Without a VPN, your ISP can read all your passwords"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is generally &lt;strong&gt;wrong for HTTPS websites&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Modern HTTPS already protects the contents of your web traffic from ordinary network observers.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. VPN vs HTTPS
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;VPN&lt;/th&gt;
&lt;th&gt;HTTPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Encrypts connection between you and VPN server&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encrypts browser ↔ website traffic&lt;/td&gt;
&lt;td&gt;Not necessarily by itself&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hides your public IP from website&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hides VPN use from ISP&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Protects against some hostile local networks&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ for HTTPS traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Makes you anonymous&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Best mental model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VPN = protects the path to the VPN server
HTTPS = protects the connection to the website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using both can provide complementary protections.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. The Complete Journey of a Request
&lt;/h1&gt;

&lt;p&gt;Let's put everything together.&lt;/p&gt;

&lt;p&gt;Suppose you type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;youtube.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1 — Your device creates traffic
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;💻 Browser
   ↓
Request for youtube.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2 — VPN encrypts the VPN connection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;💻 Device
   ↓
🔐 Encrypted VPN traffic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3 — Traffic travels to the VPN server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;💻 You
   ↓
🔒 VPN Tunnel
   ↓
🖥️ VPN Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4 — VPN server sends the request onward
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VPN Server
    ↓
🌐 Internet
    ↓
YouTube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5 — Website responds
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;YouTube
   ↓
VPN Server
   ↓
🔒 VPN Tunnel
   ↓
💻 You
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. The Complete VPN Flow
&lt;/h1&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["💻 YOU&amp;lt;br/&amp;gt;Real IP"] 
    B["🔐 Encrypt"]
    C["🚇 VPN Tunnel"]
    D["🖥️ VPN SERVER&amp;lt;br/&amp;gt;VPN IP"]
    E["🌍 INTERNET"]
    F["🌐 WEBSITE"]

    A --&amp;gt; B --&amp;gt; C --&amp;gt; D --&amp;gt; E --&amp;gt; F

    F --&amp;gt; E --&amp;gt; D --&amp;gt; C --&amp;gt; B --&amp;gt; A&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Or remember it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;YOU
 │
 │  🔐 encrypted
 ▼
╔══════════════════════╗
║    VPN TUNNEL        ║
╚══════════════════════╝
 │
 ▼
VPN SERVER
 │
 │
 ▼
INTERNET
 │
 ▼
WEBSITE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  13. Why Use a VPN?
&lt;/h1&gt;

&lt;p&gt;VPNs can be useful for several legitimate reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☕ Public Wi-Fi
&lt;/h3&gt;

&lt;p&gt;On an untrusted network, a VPN can provide an additional encrypted layer between your device and the VPN server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laptop
   │
   │ 🔒
   ▼
Public Wi-Fi
   │
   ▼
VPN Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌍 Change apparent IP location
&lt;/h3&gt;

&lt;p&gt;The website sees the VPN server's IP rather than your own public IP.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛡️ Additional privacy
&lt;/h3&gt;

&lt;p&gt;It prevents your ISP from directly seeing the contents of traffic protected by the VPN tunnel.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏢 Remote work
&lt;/h3&gt;

&lt;p&gt;Organizations commonly use VPN technologies to provide secure access to internal resources.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. What a VPN Does NOT Do
&lt;/h1&gt;

&lt;p&gt;A VPN is &lt;strong&gt;not an invisibility cloak&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ It doesn't make you completely anonymous
&lt;/h3&gt;

&lt;p&gt;If you log into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Google
Instagram
GitHub
YouTube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;those services can still associate activity with your account.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ It doesn't make malware harmless
&lt;/h3&gt;

&lt;p&gt;If you download malware while connected to a VPN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VPN + Malware = Still Malware
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❌ It doesn't stop phishing
&lt;/h3&gt;

&lt;p&gt;A VPN won't prevent you from entering your password into a fake website.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ It doesn't automatically stop tracking
&lt;/h3&gt;

&lt;p&gt;Websites can use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cookies&lt;/li&gt;
&lt;li&gt;Browser fingerprinting&lt;/li&gt;
&lt;li&gt;Logged-in accounts&lt;/li&gt;
&lt;li&gt;Tracking technologies&lt;/li&gt;
&lt;li&gt;Other identifiers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A VPN mainly changes the network-level source IP and protects the VPN leg of the connection.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. VPN ≠ Tor
&lt;/h1&gt;

&lt;p&gt;Another common misconception is that a VPN and Tor are the same thing.&lt;/p&gt;

&lt;p&gt;They're not.&lt;/p&gt;

&lt;h3&gt;
  
  
  VPN
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["You"] --&amp;gt; B["VPN Server"] --&amp;gt; C["Website"]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  Tor
&lt;/h3&gt;

&lt;p&gt;Simplified:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["You"] --&amp;gt; B["Entry Node"] --&amp;gt; C["Middle Node"] --&amp;gt; D["Exit Node"] --&amp;gt; E["Website"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Tor routes traffic through multiple relays rather than relying on one VPN server.&lt;/p&gt;

&lt;p&gt;Each technology has different goals, trade-offs, and threat models.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. A VPN in One Diagram
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FkO0jk9YbjjpaAtIZG27rvH2-qZ0D2-5OmxnUC9uGFmbkasrS2T-JusiEZ6c1m6TvpLSIJMHVhD6XcKGdLxn8pg7egYxRW4ffJcRKtJviy9629LTSBM480tmufmOschoZp3BxxgJpDhubdE_igiZ-j4OE2ywxUUX-YC8Uh4qnqFbPNamBZDPXJCh2NpatJoZS%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FkO0jk9YbjjpaAtIZG27rvH2-qZ0D2-5OmxnUC9uGFmbkasrS2T-JusiEZ6c1m6TvpLSIJMHVhD6XcKGdLxn8pg7egYxRW4ffJcRKtJviy9629LTSBM480tmufmOschoZp3BxxgJpDhubdE_igiZ-j4OE2ywxUUX-YC8Uh4qnqFbPNamBZDPXJCh2NpatJoZS%3Fpurpose%3Dfullsize" alt="Image" width="1999" height="1999"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2F41EMNjiMHcpExXfhSoGw-lHD6kqLtVZ21ziiZAai9GhWPXTVSWcooyNu7a42SddV7kJcRx6kuv_CSDUaPsWWVLUbZ6wbjU27bu0GHmJLhF2aYk-qQJKlf53Jm0KpXYyCn264yjpeObDZ7E61mJG3UTKVUkso0PRi1ebJfykxFR3aAie7rQGIMTs8TqnphHI-%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2F41EMNjiMHcpExXfhSoGw-lHD6kqLtVZ21ziiZAai9GhWPXTVSWcooyNu7a42SddV7kJcRx6kuv_CSDUaPsWWVLUbZ6wbjU27bu0GHmJLhF2aYk-qQJKlf53Jm0KpXYyCn264yjpeObDZ7E61mJG3UTKVUkso0PRi1ebJfykxFR3aAie7rQGIMTs8TqnphHI-%3Fpurpose%3Dfullsize" alt="Image" width="1536" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FUT3j0Y38Ho5IbKAF5tVxbv2R_rDo-MN65IahTm37l04w6S1wN4edXpDGlj7Yhr03mImaDuOvwO6l1Zzs5vl9atiZ4tkBgQp7K2lbO1ji49oZQwyq2okJghJh0IS5FS6-fmYkkySvH3-4hvjApNtLHnB8JWdYxdbFMNtyZatyivejQEIymlrHnN0O8lhyw4fd%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FUT3j0Y38Ho5IbKAF5tVxbv2R_rDo-MN65IahTm37l04w6S1wN4edXpDGlj7Yhr03mImaDuOvwO6l1Zzs5vl9atiZ4tkBgQp7K2lbO1ji49oZQwyq2okJghJh0IS5FS6-fmYkkySvH3-4hvjApNtLHnB8JWdYxdbFMNtyZatyivejQEIymlrHnN0O8lhyw4fd%3Fpurpose%3Dfullsize" alt="Image" width="1201" height="1381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2Fw8KgcU2_ozsYfGBM1-WUf0mLtEMFJqrB0j4KOQLu_sRta9HgP4uMLM5T4zKTGXAaMxkbISYeDFtPARfKw1r0WxDVMlVq48frQr5bMZhk3HoV__1XtlBAyjUOmePUDvncU_GkB7pB3RJCH3yrNT0oii8bPTZK2lhoa2c6dbXYXIabqfIQAyvgObsVG39Ps-8N%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2Fw8KgcU2_ozsYfGBM1-WUf0mLtEMFJqrB0j4KOQLu_sRta9HgP4uMLM5T4zKTGXAaMxkbISYeDFtPARfKw1r0WxDVMlVq48frQr5bMZhk3HoV__1XtlBAyjUOmePUDvncU_GkB7pB3RJCH3yrNT0oii8bPTZK2lhoa2c6dbXYXIabqfIQAyvgObsVG39Ps-8N%3Fpurpose%3Dfullsize" alt="Image" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FvY4lrqHJxm8pvvedQTSr948nKwwOpQRUClnkN9JN6mjY35Tr0dRHA1YKz58EdEKo-06CFBrQcg2WdrbL6ol5GD_BMa_I536e_HFJG0fV_rcOQgEFajsEQwEcZedqb2WlUYcQbSqgpcccgMcOYFQZl4bwUyQsI6FNb4Zmx8NREFAHbI4RFLOUFWGOIq5bdIOe%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FvY4lrqHJxm8pvvedQTSr948nKwwOpQRUClnkN9JN6mjY35Tr0dRHA1YKz58EdEKo-06CFBrQcg2WdrbL6ol5GD_BMa_I536e_HFJG0fV_rcOQgEFajsEQwEcZedqb2WlUYcQbSqgpcccgMcOYFQZl4bwUyQsI6FNb4Zmx8NREFAHbI4RFLOUFWGOIq5bdIOe%3Fpurpose%3Dfullsize" alt="Image" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FnipRfaGmFtpJAdCyipoAov-S3z5PpV62XKLuSmrwLZNAL7oOTyITpEys6a0Snse89tmZ-fASMXKKVXvrqe9u7_cdraDI9NWGLmETMoF1Q8ES0DqON8o-fdTd0Tm9sRePZYON2lw2npGGbvTYiUwXW_yA4R1Du7dqkOplfjaqjo0oOXzkQ5Z9gKskySLIYZnL%3Fpurpose%3Dfullsize" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.openai.com%2Fstatic-rsc-4%2FnipRfaGmFtpJAdCyipoAov-S3z5PpV62XKLuSmrwLZNAL7oOTyITpEys6a0Snse89tmZ-fASMXKKVXvrqe9u7_cdraDI9NWGLmETMoF1Q8ES0DqON8o-fdTd0Tm9sRePZYON2lw2npGGbvTYiUwXW_yA4R1Du7dqkOplfjaqjo0oOXzkQ5Z9gKskySLIYZnL%3Fpurpose%3Dfullsize" alt="Image" width="1024" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The simplest way to remember it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             WITHOUT VPN

YOU ──────── ISP ───────── WEBSITE
 │                           │
 └────── Your IP ────────────┘


              WITH VPN

YOU ───🔐 ENCRYPTED─── VPN SERVER ─── WEBSITE
                         │
                         └── Website sees VPN IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  17. The Most Important Concept
&lt;/h1&gt;

&lt;p&gt;Don't think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"A VPN makes me invisible."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"A VPN changes the path my traffic takes and encrypts the connection between my device and the VPN server."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much more accurate mental model.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 Final Takeaway
&lt;/h1&gt;

&lt;p&gt;A VPN essentially works like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. You connect to a VPN server
             ↓
2. A secure encrypted VPN connection is established
             ↓
3. Your traffic travels through that connection
             ↓
4. The VPN server sends traffic to the internet
             ↓
5. Websites see the VPN server's IP
             ↓
6. Responses return through the VPN connection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  In one sentence:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A VPN creates an encrypted tunnel between your device and a VPN server, routing your internet traffic through that server so your public IP is masked from the destinations you connect to.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the most important caveat:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;VPN ≠ anonymity.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is a &lt;strong&gt;privacy and security tool&lt;/strong&gt;, not magic.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎬 If you're turning this into your short
&lt;/h2&gt;

&lt;p&gt;The article gives you the complete technical foundation. For the Reel, I'd reduce it to &lt;strong&gt;one story&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Normal internet → VPN tunnel appears → packet gets encrypted → VPN server forwards it → website sees VPN IP → “But VPN ≠ anonymity.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That gives you a much stronger visual narrative than trying to explain every VPN protocol in 60 seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo28j5j0b8gt9mwbwktb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo28j5j0b8gt9mwbwktb8.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vpn</category>
      <category>security</category>
      <category>cybersecurity</category>
      <category>layers</category>
    </item>
    <item>
      <title>Why Are We Still Running AI on Computers That Were Never Built for AI?</title>
      <dc:creator>Sh Raj</dc:creator>
      <pubDate>Wed, 29 Jul 2026 18:06:31 +0000</pubDate>
      <link>https://dev.to/sh20raj/why-are-we-still-running-ai-on-computers-that-were-never-built-for-ai-4j44</link>
      <guid>https://dev.to/sh20raj/why-are-we-still-running-ai-on-computers-that-were-never-built-for-ai-4j44</guid>
      <description>&lt;h1&gt;
  
  
  &lt;strong&gt;Why Are We Still Running AI on Computers That Were Never Built for AI?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsalff2duspg59xfnt1sc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsalff2duspg59xfnt1sc.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The next trillion-dollar breakthrough may not be a bigger language model—it may be an entirely new way of computing.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question Nobody Seems to Be Asking
&lt;/h2&gt;

&lt;p&gt;Every few months, a new AI model is released.&lt;/p&gt;

&lt;p&gt;It has more parameters.&lt;/p&gt;

&lt;p&gt;Requires more GPUs.&lt;/p&gt;

&lt;p&gt;Consumes more electricity.&lt;/p&gt;

&lt;p&gt;Costs more money to train.&lt;/p&gt;

&lt;p&gt;And everyone celebrates because it's "more powerful."&lt;/p&gt;

&lt;p&gt;But what if we're solving the wrong problem?&lt;/p&gt;

&lt;p&gt;What if the real bottleneck isn't the AI model at all?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if it's the computer?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Imagine Teaching a Fish to Climb a Tree
&lt;/h2&gt;

&lt;p&gt;Today's computers were never designed for Artificial Intelligence.&lt;/p&gt;

&lt;p&gt;The CPU in your laptop was designed to run operating systems, browsers, spreadsheets, games, compilers, and thousands of other applications.&lt;/p&gt;

&lt;p&gt;GPUs were originally built to render graphics for video games.&lt;/p&gt;

&lt;p&gt;Then one day researchers discovered that GPUs happened to be incredibly good at matrix multiplication, the mathematical operation behind deep learning.&lt;/p&gt;

&lt;p&gt;That accidental discovery changed AI forever.&lt;/p&gt;

&lt;p&gt;But here's the question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why are we still relying on hardware that wasn't originally built for AI?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Every Generation Keeps Upgrading the Wrong Thing
&lt;/h2&gt;

&lt;p&gt;Every year, researchers make AI models bigger.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More parameters&lt;/li&gt;
&lt;li&gt;More data&lt;/li&gt;
&lt;li&gt;More GPUs&lt;/li&gt;
&lt;li&gt;More memory&lt;/li&gt;
&lt;li&gt;More electricity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's like trying to make a car faster by adding bigger engines every year while keeping the same inefficient roads.&lt;/p&gt;

&lt;p&gt;Maybe the road is the real problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  We've Been Thinking Inside the Same Box for Decades
&lt;/h2&gt;

&lt;p&gt;Modern computers still follow principles developed many decades ago.&lt;/p&gt;

&lt;p&gt;Information moves between memory and processors.&lt;/p&gt;

&lt;p&gt;The processor performs calculations.&lt;/p&gt;

&lt;p&gt;The result goes back into memory.&lt;/p&gt;

&lt;p&gt;This happens billions of times every second.&lt;/p&gt;

&lt;p&gt;Ironically, much of the energy isn't spent calculating.&lt;/p&gt;

&lt;p&gt;It's spent &lt;strong&gt;moving data around.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine walking across your house every single time you wanted to use a pencil.&lt;/p&gt;

&lt;p&gt;Eventually, walking becomes more exhausting than writing.&lt;/p&gt;

&lt;p&gt;Modern AI systems face a similar inefficiency.&lt;/p&gt;




&lt;h2&gt;
  
  
  What If We Started From Zero?
&lt;/h2&gt;

&lt;p&gt;Forget CPUs.&lt;/p&gt;

&lt;p&gt;Forget GPUs.&lt;/p&gt;

&lt;p&gt;Forget operating systems.&lt;/p&gt;

&lt;p&gt;Forget even the assumption that computers must be general-purpose machines.&lt;/p&gt;

&lt;p&gt;Instead, ask a completely different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"If Artificial Intelligence were invented before the modern computer, what kind of hardware would we build?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question changes everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Computer That Knows Only AI
&lt;/h2&gt;

&lt;p&gt;Imagine buying a computer that cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Chrome&lt;/li&gt;
&lt;li&gt;Run Windows&lt;/li&gt;
&lt;li&gt;Play games&lt;/li&gt;
&lt;li&gt;Compile code&lt;/li&gt;
&lt;li&gt;Browse files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It has only one purpose.&lt;/p&gt;

&lt;p&gt;Running AI.&lt;/p&gt;

&lt;p&gt;Nothing else.&lt;/p&gt;

&lt;p&gt;Every transistor.&lt;/p&gt;

&lt;p&gt;Every circuit.&lt;/p&gt;

&lt;p&gt;Every electrical pathway.&lt;/p&gt;

&lt;p&gt;Every memory cell.&lt;/p&gt;

&lt;p&gt;Optimised for neural computation.&lt;/p&gt;

&lt;p&gt;Would it outperform today's hardware?&lt;/p&gt;

&lt;p&gt;Possibly by a huge margin.&lt;/p&gt;




&lt;h2&gt;
  
  
  Maybe We Should Redesign the Flow of Electricity
&lt;/h2&gt;

&lt;p&gt;Here's an even more radical thought.&lt;/p&gt;

&lt;p&gt;Instead of asking,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How can we make AI software faster?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ask,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How should electricity flow if its only job is intelligence?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That sounds strange.&lt;/p&gt;

&lt;p&gt;But remember...&lt;/p&gt;

&lt;p&gt;Every computer is ultimately just controlled movement of electrons.&lt;/p&gt;

&lt;p&gt;Voltage changes.&lt;/p&gt;

&lt;p&gt;Current flows.&lt;/p&gt;

&lt;p&gt;Tiny switches turning on and off.&lt;/p&gt;

&lt;p&gt;We've accepted one particular way of organising those switches because history led us there.&lt;/p&gt;

&lt;p&gt;But history isn't the same as perfection.&lt;/p&gt;

&lt;p&gt;Perhaps there are entirely different electrical architectures that make AI dramatically more efficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bigger Isn't Always Smarter
&lt;/h2&gt;

&lt;p&gt;Today's AI race often looks like this:&lt;/p&gt;

&lt;p&gt;More GPUs.&lt;/p&gt;

&lt;p&gt;More memory.&lt;/p&gt;

&lt;p&gt;More power.&lt;/p&gt;

&lt;p&gt;More cost.&lt;/p&gt;

&lt;p&gt;But biology tells a different story.&lt;/p&gt;

&lt;p&gt;The human brain runs on roughly the power of a small light bulb.&lt;/p&gt;

&lt;p&gt;Yet it performs extraordinary feats of perception, reasoning and learning.&lt;/p&gt;

&lt;p&gt;Clearly, intelligence does not necessarily require enormous energy.&lt;/p&gt;

&lt;p&gt;Maybe our approach does.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Revolution May Not Be Another AI Model
&lt;/h2&gt;

&lt;p&gt;The next breakthrough might not be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A better Transformer&lt;/li&gt;
&lt;li&gt;A larger language model&lt;/li&gt;
&lt;li&gt;A trillion parameters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It might be a completely different computing architecture.&lt;/p&gt;

&lt;p&gt;One where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory and computation become the same thing.&lt;/li&gt;
&lt;li&gt;Information doesn't constantly travel back and forth.&lt;/li&gt;
&lt;li&gt;Hardware itself represents knowledge.&lt;/li&gt;
&lt;li&gt;Physics performs part of the computation naturally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of forcing AI to adapt to computers...&lt;/p&gt;

&lt;p&gt;...we finally build computers that adapt to AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Isn't Everyone Doing This?
&lt;/h2&gt;

&lt;p&gt;Some researchers are.&lt;/p&gt;

&lt;p&gt;Work is already underway in areas like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Neuromorphic computing&lt;/li&gt;
&lt;li&gt;Optical computing&lt;/li&gt;
&lt;li&gt;Analogue AI chips&lt;/li&gt;
&lt;li&gt;Compute-in-memory&lt;/li&gt;
&lt;li&gt;Memristor-based hardware&lt;/li&gt;
&lt;li&gt;New semiconductor materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But replacing an entire computing ecosystem isn't easy.&lt;/p&gt;

&lt;p&gt;The world has spent more than half a century refining today's hardware and software stack.&lt;/p&gt;

&lt;p&gt;Creating a fundamentally new one requires breakthroughs in physics, materials science, computer architecture, manufacturing, algorithms and software—all at the same time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Next Computing Revolution
&lt;/h2&gt;

&lt;p&gt;History shows that every major leap in computing came from changing the hardware.&lt;/p&gt;

&lt;p&gt;Vacuum tubes became transistors.&lt;/p&gt;

&lt;p&gt;Transistors became integrated circuits.&lt;/p&gt;

&lt;p&gt;CPUs were joined by GPUs.&lt;/p&gt;

&lt;p&gt;GPUs were joined by AI accelerators.&lt;/p&gt;

&lt;p&gt;Perhaps the next step is even more radical.&lt;/p&gt;

&lt;p&gt;A machine that isn't a "computer" in the traditional sense.&lt;/p&gt;

&lt;p&gt;A machine whose sole purpose is intelligence.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;For decades we've been asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How do we make AI fit our computers?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe it's finally time to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How do we build computers that fit AI?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The next trillion-dollar company may not build the smartest AI model.&lt;/p&gt;

&lt;p&gt;It may build the first computer that truly understands what AI needs from the very first electron.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>computers</category>
      <category>hardware</category>
      <category>physics</category>
    </item>
  </channel>
</rss>
