<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Enterprise on David Parry</title>
    <link>https://davidparry.com/tags/enterprise/</link>
    <description>Recent content in Enterprise on David Parry</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 28 Aug 2026 11:00:00 -0500</lastBuildDate>
    <atom:link href="https://davidparry.com/tags/enterprise/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>📚 Open Source Wrote the Textbooks AI Learned From</title>
      <link>https://davidparry.com/blog/2026/08/28/open-source-wrote-the-textbooks-ai-learned-from/</link>
      <pubDate>Fri, 28 Aug 2026 11:00:00 -0500</pubDate>
      <guid>https://davidparry.com/blog/2026/08/28/open-source-wrote-the-textbooks-ai-learned-from/</guid>
      <description>&lt;img src=&#34;https://davidparry.com/images/open-source-wrote-the-textbooks-ai-learned-from-linkedin.jpg&#34; alt=&#34;Open source code as textbooks: glowing manuals of source and pull requests feeding a neural lattice&#34; style=&#34;display: block; margin: 0 auto; width: 70%; max-width: 560px;&#34; /&gt;&#xA;&lt;p&gt;&lt;strong&gt;We owe the open source community more than we usually credit for how good AI has gotten at writing software.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s a theory that matters more as we move from asking LLMs to generate snippets to asking agents to build real systems:&lt;/p&gt;&#xA;&lt;p&gt;An LLM didn&amp;rsquo;t independently discover what good software architecture looks like. It learned patterns from an enormous body of code written, reviewed, refactored, tested, documented, and maintained by developers over decades. Which means the quality of those examples matters.&lt;/p&gt;</description>
      <content:encoded>&lt;img src=&#34;https://davidparry.com/images/open-source-wrote-the-textbooks-ai-learned-from-linkedin.jpg&#34; alt=&#34;Open source code as textbooks: glowing manuals of source and pull requests feeding a neural lattice&#34; style=&#34;display: block; margin: 0 auto; width: 70%; max-width: 560px;&#34; /&gt;&#xA;&lt;p&gt;&lt;strong&gt;We owe the open source community more than we usually credit for how good AI has gotten at writing software.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s a theory that matters more as we move from asking LLMs to generate snippets to asking agents to build real systems:&lt;/p&gt;&#xA;&lt;p&gt;An LLM didn&amp;rsquo;t independently discover what good software architecture looks like. It learned patterns from an enormous body of code written, reviewed, refactored, tested, documented, and maintained by developers over decades. Which means the quality of those examples matters.&lt;/p&gt;&#xA;&lt;h2 id=&#34;better-code-in-better-code-out&#34;&gt;Better Code In, Better Code Out&lt;/h2&gt;&#xA;&lt;p&gt;Research backs this up. &lt;a href=&#34;https://arxiv.org/abs/2503.11402&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;One study&lt;/a&gt;&#xA; found that removing low-quality code from training data cut quality problems in the model&amp;rsquo;s output significantly, without hurting functional correctness. Better code in, better code out.&lt;/p&gt;&#xA;&lt;p&gt;That makes me wonder whether mature enterprise ecosystems have an underappreciated advantage in the agentic era.&lt;/p&gt;&#xA;&lt;h2 id=&#34;javas-quiet-advantage&#34;&gt;Java&amp;rsquo;s Quiet Advantage&lt;/h2&gt;&#xA;&lt;p&gt;Take Java. Decades of professionally maintained open source projects have reinforced patterns around interfaces, dependency injection, domain boundaries, testing, error handling, package structure, API design, and backwards compatibility. The language then adds another layer of constraint through static typing and compilation.&lt;/p&gt;&#xA;&lt;p&gt;Those constraints matter to AI too. &lt;a href=&#34;https://arxiv.org/abs/2504.09246&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Type-constrained decoding&lt;/a&gt;&#xA; has been shown to cut compilation errors by more than half. Giving coding agents &lt;a href=&#34;https://arxiv.org/abs/2601.12146&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;compiler feedback&lt;/a&gt;&#xA; has produced similarly dramatic jumps in how often they generate valid code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;not-java-versus-python&#34;&gt;Not Java Versus Python&lt;/h2&gt;&#xA;&lt;p&gt;This isn&amp;rsquo;t &amp;ldquo;Java good, Python bad.&amp;rdquo; Python is one of the richest languages in current training data and performs extremely well on code-generation benchmarks.&lt;/p&gt;&#xA;&lt;p&gt;My hypothesis is narrower: the more a language and its ecosystem encode decades of professional engineering constraints, conventions, and high-quality examples, the more structure an LLM has to imitate — and the more we can mechanically verify what it produces.&lt;/p&gt;&#xA;&lt;p&gt;That starts to matter a lot more once the goal stops being &amp;ldquo;generate a function that passes a test&amp;rdquo; and becomes &amp;ldquo;build software another team can safely operate, modify, and maintain for the next twenty years.&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;they-wrote-the-textbooks&#34;&gt;They Wrote the Textbooks&lt;/h2&gt;&#xA;&lt;p&gt;Which means every developer who spent years maintaining Apache projects, Spring libraries, compilers, frameworks, and testing tools contributed something bigger than they probably realized. They didn&amp;rsquo;t just build software for us. They helped write the textbooks our machines learned from.&lt;/p&gt;&#xA;&lt;p&gt;So next time you&amp;rsquo;re working in a scripting language that never had to earn its keep in the enterprise — never got dragged through code review, backwards-compatibility guarantees, and a decade of production incidents — and you&amp;rsquo;re wondering why your agent keeps producing code nobody can maintain, that might be your answer. Try one of the languages the open source community spent decades hardening for exactly that job.&lt;/p&gt;&#xA;&lt;p&gt;And thank your contributors while you&amp;rsquo;re at it.&lt;/p&gt;&#xA;</content:encoded>
    </item>
    <item>
      <title>👑 Data Is King. AI Just Removed the Middleman.</title>
      <link>https://davidparry.com/blog/2026/08/18/data-is-king.-ai-just-removed-the-middleman./</link>
      <pubDate>Tue, 18 Aug 2026 08:00:00 -0500</pubDate>
      <guid>https://davidparry.com/blog/2026/08/18/data-is-king.-ai-just-removed-the-middleman./</guid>
      <description>&lt;img src=&#34;https://davidparry.com/images/data-is-king-ai-removed-the-middleman-linkedin.jpg&#34; alt=&#34;A person prompts AI directly into a crowned data cube, the beam skipping a crumbling wall of APIs and applications&#34; style=&#34;display: block; margin: 0 auto; width: 70%; max-width: 560px;&#34; /&gt;&#xA;&lt;p&gt;For years we have said &lt;strong&gt;data is king&lt;/strong&gt;, without fully appreciating what that meant.&lt;/p&gt;&#xA;&lt;p&gt;Data by itself was hard to use. Engineers had to understand it, write queries, encode business logic, build APIs and interfaces, then deploy and maintain the result. The application sat in the middle as interpreter. There was significant machinery between &lt;strong&gt;having data&lt;/strong&gt; and &lt;strong&gt;getting value from it&lt;/strong&gt;.&lt;/p&gt;</description>
      <content:encoded>&lt;img src=&#34;https://davidparry.com/images/data-is-king-ai-removed-the-middleman-linkedin.jpg&#34; alt=&#34;A person prompts AI directly into a crowned data cube, the beam skipping a crumbling wall of APIs and applications&#34; style=&#34;display: block; margin: 0 auto; width: 70%; max-width: 560px;&#34; /&gt;&#xA;&lt;p&gt;For years we have said &lt;strong&gt;data is king&lt;/strong&gt;, without fully appreciating what that meant.&lt;/p&gt;&#xA;&lt;p&gt;Data by itself was hard to use. Engineers had to understand it, write queries, encode business logic, build APIs and interfaces, then deploy and maintain the result. The application sat in the middle as interpreter. There was significant machinery between &lt;strong&gt;having data&lt;/strong&gt; and &lt;strong&gt;getting value from it&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;AI is collapsing that machinery.&lt;/p&gt;&#xA;&lt;p&gt;Instead of developers anticipating every question and encoding every interaction, we can describe what we want, provide context, iterate, and spend tokens. The cost of turning data into useful information is falling, and strategic value is moving with it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;The data itself becomes king.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;origin-is-a-signal&#34;&gt;Origin Is a Signal&lt;/h2&gt;&#xA;&lt;p&gt;That is why &lt;a href=&#34;https://cursor.com/changelog/origin-code-hosting&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Cursor&amp;rsquo;s Origin announcement&lt;/a&gt;&#xA; caught my attention.&lt;/p&gt;&#xA;&lt;p&gt;At first glance it looks like another GitHub, GitLab, or Bitbucket. That misses the point.&lt;/p&gt;&#xA;&lt;p&gt;Cursor is an AI development company recognizing that its most important input is the code itself, plus the history, structure, reviews, decisions, tests, and context around it. If that intelligence depends on another company permanently providing access, an important part of your future belongs to somebody else. APIs, pricing, permissions, and terms can change. The provider can ship a competing product.&lt;/p&gt;&#xA;&lt;p&gt;I have lived through that.&lt;/p&gt;&#xA;&lt;h2 id=&#34;when-your-platform-becomes-your-competitor&#34;&gt;When Your Platform Becomes Your Competitor&lt;/h2&gt;&#xA;&lt;p&gt;Years ago I worked at a startup whose product depended on Facebook&amp;rsquo;s platform and APIs. That access made the business possible. Then Facebook changed the rules and built overlapping functionality of its own. The company providing the infrastructure became the competitor.&lt;/p&gt;&#xA;&lt;p&gt;We did not control the platform, or our ability to reach the data the product depended on. When those conditions changed, so did the viability of the business.&lt;/p&gt;&#xA;&lt;p&gt;That experience permanently changed how I think about platform dependencies. There is an enormous difference between &lt;strong&gt;having access to data&lt;/strong&gt; and &lt;strong&gt;controlling your ability to access that data&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;reimagining-the-software-development-lifecycle&#34;&gt;Reimagining the Software Development Lifecycle&lt;/h2&gt;&#xA;&lt;p&gt;By moving closer to the repository, Cursor is not merely getting better access to code. It can rethink the entire software development lifecycle around AI.&lt;/p&gt;&#xA;&lt;p&gt;Today we insert AI into a lifecycle designed decades ago: source control, issues, pull requests, review, testing, security, CI/CD, and deployment. If the company building the AI environment also controls where the source and its context live, the repository can become persistent context for requirements, implementation, testing, review, security, deployment, and maintenance.&lt;/p&gt;&#xA;&lt;p&gt;That is bigger than a better editor. It is a chance to own the lifecycle from the moment an idea becomes a requirement through the life of the software.&lt;/p&gt;&#xA;&lt;h2 id=&#34;your-source-is-your-data&#34;&gt;Your Source Is Your Data&lt;/h2&gt;&#xA;&lt;p&gt;That makes ownership of source more important, not less.&lt;/p&gt;&#xA;&lt;p&gt;A repository is not merely files. It is years of intellectual property and organizational knowledge. History, reviews, architectural decisions, tests, security findings, and increasingly AI-generated context may become as valuable as the code itself.&lt;/p&gt;&#xA;&lt;p&gt;I want companies building incredible applications around that information: better coding, review, security analysis, agents, and ways to modernize software. The distinction that matters is between &lt;strong&gt;applications operating on my data&lt;/strong&gt; and &lt;strong&gt;applications controlling my data&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The enterprise should own its source and decide which systems operate against it. Ownership does not mean hosting every byte. It means control and portability. If another company can restrict your ability to access, move, interpret, or build upon your information, how much of it do you practically control?&lt;/p&gt;&#xA;&lt;p&gt;This matters more as AI systems accumulate context around source. An organization can legally own its code while years of decisions, relationships, agent context, and development knowledge sit trapped in a proprietary platform. Legal ownership and practical ownership are not the same thing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;follow-the-data&#34;&gt;Follow the Data&lt;/h2&gt;&#xA;&lt;p&gt;I expect we will see much more of this. AI companies will move toward the data. Enterprises will need to be deliberate about portability and control.&lt;/p&gt;&#xA;&lt;p&gt;The model I want is straightforward:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Companies own their data. Applications compete for the privilege of creating value from it.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI makes applications easier to build, interfaces easier to replace, and information easier to consume. That does not make data less valuable. It makes it more valuable.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Data was always king. AI is simply making that impossible to ignore.&lt;/strong&gt;&lt;/p&gt;&#xA;</content:encoded>
    </item>
    <item>
      <title>🔍 MCP: Enterprise Trust Through Traceability</title>
      <link>https://davidparry.com/blog/2026/07/22/mcp-enterprise-trust-through-traceability/</link>
      <pubDate>Wed, 22 Jul 2026 09:30:00 -0500</pubDate>
      <guid>https://davidparry.com/blog/2026/07/22/mcp-enterprise-trust-through-traceability/</guid>
      <description>&lt;p&gt;The headline everyone pulled out of the &lt;a href=&#34;https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Model Context Protocol (MCP) 2026-07-28 Release Candidate&lt;/a&gt;&#xA; is that MCP is going &lt;strong&gt;stateless&lt;/strong&gt;. Fair enough — it&amp;rsquo;s a genuine architectural improvement. Stateless protocols scale horizontally without sticky sessions, they cut operational complexity, and they make the infrastructure easier to deploy and reason about.&lt;/p&gt;&#xA;&lt;p&gt;But I don&amp;rsquo;t think statelessness is the change that will matter most for enterprise adoption. I think &lt;strong&gt;traceability&lt;/strong&gt; is.&lt;/p&gt;&#xA;&lt;p&gt;When I gave a conference talk on building MCP servers earlier this year, the hallway questions afterward were rarely about what a server could do. They were about what it takes to run one: how the traffic shows up in gateway logs, what a trace looks like when a tool call fails, whether any of it can be audited later. So when the release candidate landed, I read it with those questions in mind.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;The headline everyone pulled out of the &lt;a href=&#34;https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Model Context Protocol (MCP) 2026-07-28 Release Candidate&lt;/a&gt;&#xA; is that MCP is going &lt;strong&gt;stateless&lt;/strong&gt;. Fair enough — it&amp;rsquo;s a genuine architectural improvement. Stateless protocols scale horizontally without sticky sessions, they cut operational complexity, and they make the infrastructure easier to deploy and reason about.&lt;/p&gt;&#xA;&lt;p&gt;But I don&amp;rsquo;t think statelessness is the change that will matter most for enterprise adoption. I think &lt;strong&gt;traceability&lt;/strong&gt; is.&lt;/p&gt;&#xA;&lt;p&gt;When I gave a conference talk on building MCP servers earlier this year, the hallway questions afterward were rarely about what a server could do. They were about what it takes to run one: how the traffic shows up in gateway logs, what a trace looks like when a tool call fails, whether any of it can be audited later. So when the release candidate landed, I read it with those questions in mind.&lt;/p&gt;&#xA;&lt;p&gt;Two changes stood out to me, and they work as a pair.&lt;/p&gt;&#xA;&lt;p&gt;The first is &lt;a href=&#34;https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2243&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SEP-2243&lt;/a&gt;&#xA;, which makes two headers, &lt;code&gt;Mcp-Method&lt;/code&gt; and &lt;code&gt;Mcp-Name&lt;/code&gt;, required on the Streamable HTTP transport. The spec is clear about their job: they exist so load balancers, gateways, and rate limiters can route on the operation without inspecting the JSON-RPC body. What interests me is the side effect. Every layer of the stack now gets a piece of standardized, protocol-level metadata — and standardized metadata is exactly the raw material enterprise observability and audit tooling is built on.&lt;/p&gt;&#xA;&lt;p&gt;The second is &lt;a href=&#34;https://modelcontextprotocol.io/seps/414-request-meta&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SEP-414&lt;/a&gt;&#xA;, which locks the &lt;strong&gt;W3C Trace Context&lt;/strong&gt; keys — &lt;code&gt;traceparent&lt;/code&gt;, &lt;code&gt;tracestate&lt;/code&gt;, and &lt;code&gt;baggage&lt;/code&gt; — into the spec as reserved keys inside &lt;code&gt;params._meta&lt;/code&gt; of every JSON-RPC request. Note where they live: in the message, not in HTTP headers. That&amp;rsquo;s deliberate. MCP is transport-agnostic and stdio has no headers, and a single Streamable HTTP connection can multiplex many JSON-RPC messages, so trace context has to belong to the individual request rather than the connection. A trace that starts in the host application can now follow a tool call through the client SDK, the MCP server, and whatever the server calls downstream, and land in an OpenTelemetry-compatible backend as one span tree:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;jsonrpc&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;method&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tools/call&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;params&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;get_weather&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;arguments&amp;#34;&lt;/span&gt;: { &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;New York&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_meta&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;traceparent&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;00-0af7651916cd43dd8448eb211c80319c-00f067aa0ba902b7-01&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Several SDKs were already doing this — the release candidate fixes the key names so traces correlate across implementations instead of by convention. And in the same release, MCP&amp;rsquo;s own logging capability is deprecated, with OpenTelemetry named as the path for structured observability. Read those together and the direction is unambiguous: the protocol didn&amp;rsquo;t invent its own tracing story, it adopted the one enterprises already run.&lt;/p&gt;&#xA;&lt;p&gt;That matters because enterprises are not building greenfield. They already have API gateways, OpenTelemetry, centralized logging, SIEM platforms, operational dashboards, and distributed tracing — and years of trust invested in all of it. A new protocol gets adopted when it slots into that existing machinery, not when it asks to be operated as a special case beside it. Routing headers at the transport layer, W3C Trace Context in the message — small design decisions with a large consequence, because together they mean MCP can be operated alongside everything else instead of babysat beside it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-enterprise-traceability-looks-like&#34;&gt;What Enterprise Traceability Looks Like&lt;/h2&gt;&#xA;&lt;p&gt;The important property is that the new metadata enriches an existing trace without changing how distributed tracing works.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;                    End User&#xA;                       │&#xA;                       ▼&#xA;                  API Gateway ────────────────┐&#xA;                       │                      │&#xA;                       ▼                      │&#xA;            Spring Boot / Spring AI           │&#xA;                       │                      │&#xA;                       ▼                      ▼&#xA;                  MCP Client         Logs · Metrics · SIEM&#xA;                       │                      ▲&#xA;    Mcp-Method         │                      │&#xA;    Mcp-Name    ──────►│ ─────────────────────┤&#xA;    (HTTP headers)     │                      │&#xA;                       │                      │&#xA;    traceparent        │                      │&#xA;    tracestate  ──────►│                      │&#xA;    (in _meta)         │                      │&#xA;                       ▼                      │&#xA;                  MCP Server ─────────────────┤&#xA;                       │                      │&#xA;                       ▼                      │&#xA;                      Tool ───────────────────┘&#xA;&#xA;  W3C Trace Context propagates through every hop above — over HTTP&#xA;  headers on ordinary hops, inside _meta on the MCP hop. The routing&#xA;  headers add protocol-specific metadata to that same trace.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The distributed trace flows exactly as it does today. The routing headers give the infrastructure something to key on, and the &lt;code&gt;_meta&lt;/code&gt; trace keys keep the MCP hop stitched into the trace you&amp;rsquo;re already collecting.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-questions-a-platform-team-asks-first&#34;&gt;The Questions a Platform Team Asks First&lt;/h2&gt;&#xA;&lt;p&gt;Enterprise engineering organizations rarely get stuck because they can&amp;rsquo;t scale a service. They get stuck because they can&amp;rsquo;t answer questions after the fact:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Which MCP method executed, on which server, running which tool?&lt;/li&gt;&#xA;&lt;li&gt;Which distributed trace contains this interaction, and how does it line up with the gateway logs?&lt;/li&gt;&#xA;&lt;li&gt;Which agent initiated the request, and why did it fail?&lt;/li&gt;&#xA;&lt;li&gt;Can we reproduce it — and can we audit it six months from now?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These aren&amp;rsquo;t exotic questions. They&amp;rsquo;re the ones a platform team asks before it agrees to support new infrastructure in production, and standardized protocol metadata is what makes them answerable. With &lt;code&gt;Mcp-Method&lt;/code&gt; and &lt;code&gt;Mcp-Name&lt;/code&gt; riding alongside the trace context, requests correlate across services and gateways without custom parsing, dashboards and rate limits key off the operation instead of the payload, and the telemetry looks the same across different MCP implementations. That&amp;rsquo;s the difference between something a platform team can confidently run in production and something that stays a proof of concept.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fan-out-is-where-this-gets-expensive&#34;&gt;Fan-Out Is Where This Gets Expensive&lt;/h2&gt;&#xA;&lt;p&gt;The stakes go up as organizations move toward agentic software. A single user request can fan out across multiple agents, several MCP servers, and dozens of tool invocations before anything comes back. Without standardized metadata, reconstructing what actually happened in that fan-out is slow and often guesswork.&lt;/p&gt;&#xA;&lt;p&gt;With the routing headers and trace-context keys in place, each MCP interaction correlates cleanly with the telemetry you already collect, and the whole system gets easier to operate and troubleshoot. This is the same argument I keep coming back to: agentic systems only become &lt;em&gt;enterprise&lt;/em&gt; systems when they&amp;rsquo;re as observable, governable, and auditable as every other critical application in the estate. This release moves MCP another step toward that bar.&lt;/p&gt;&#xA;&lt;h2 id=&#34;more-than-stateless&#34;&gt;More Than Stateless&lt;/h2&gt;&#xA;&lt;p&gt;Statelessness earns its headlines. Simpler deployments, better scalability, and lower operational complexity are real wins, and the &lt;a href=&#34;https://modelcontextprotocol.io/specification/draft/changelog&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;changelog&lt;/a&gt;&#xA; is worth reading in full. But the larger enterprise story is the standardized metadata that integrates naturally with the observability and tracing ecosystems organizations already trust.&lt;/p&gt;&#xA;&lt;p&gt;Platform teams want a protocol that fits the infrastructure they already run, and the technologies that win in the enterprise are rarely the ones with the longest feature lists.&lt;/p&gt;&#xA;&lt;p&gt;The claim I&amp;rsquo;ll defend is narrower than &amp;ldquo;MCP is enterprise-ready&amp;rdquo;: two required routing headers and three reserved trace-context keys quietly gave every gateway, trace, and audit log a common vocabulary for MCP traffic. In my experience, that&amp;rsquo;s the kind of unglamorous change that decides whether a protocol makes it out of the proof-of-concept stage.&lt;/p&gt;&#xA;</content:encoded>
    </item>
    <item>
      <title>☕ Java at Thirty: Still One of the Strongest Bets in the Enterprise</title>
      <link>https://davidparry.com/blog/2026/07/18/java-at-thirty-still-one-of-the-strongest-bets-in-the-enterprise/</link>
      <pubDate>Sat, 18 Jul 2026 11:00:00 -0500</pubDate>
      <guid>https://davidparry.com/blog/2026/07/18/java-at-thirty-still-one-of-the-strongest-bets-in-the-enterprise/</guid>
      <description>&lt;p&gt;Three decades after its release, Java is still solving the problems that matter most to enterprise software. That staying power is easy to dismiss as inertia. I don&amp;rsquo;t think it is. I think it&amp;rsquo;s the predictable result of a platform that optimized for the things large organizations actually care about — and kept investing in them long after the hype cycle moved on.&lt;/p&gt;&#xA;&lt;p&gt;Let me be careful about the claim I&amp;rsquo;m making, though.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Three decades after its release, Java is still solving the problems that matter most to enterprise software. That staying power is easy to dismiss as inertia. I don&amp;rsquo;t think it is. I think it&amp;rsquo;s the predictable result of a platform that optimized for the things large organizations actually care about — and kept investing in them long after the hype cycle moved on.&lt;/p&gt;&#xA;&lt;p&gt;Let me be careful about the claim I&amp;rsquo;m making, though.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-honest-version-of-the-claim&#34;&gt;The honest version of the claim&lt;/h3&gt;&#xA;&lt;p&gt;I&amp;rsquo;m not going to tell you Java is &lt;em&gt;the optimal language&lt;/em&gt;. That&amp;rsquo;s an opinion dressed up as a fact, and it falls apart the moment you change the context — Java is not my first reach for a data-science notebook, a systems kernel, or a quick shell script.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the claim I&amp;rsquo;ll actually defend: &lt;strong&gt;Java remains one of the strongest choices for enterprise software where long-term maintainability, stability, and operational reliability are the dominant concerns.&lt;/strong&gt; That&amp;rsquo;s a narrower statement, and it&amp;rsquo;s a stronger one, because it names the conditions under which it&amp;rsquo;s true.&lt;/p&gt;&#xA;&lt;p&gt;For most organizations, success is rarely about using the newest language. It&amp;rsquo;s about delivering reliable systems, controlling operational risk, hiring engineers at scale, and maintaining software for a decade or more. Judge Java against &lt;em&gt;those&lt;/em&gt; goals and its longevity stops looking like nostalgia and starts looking like fit.&lt;/p&gt;&#xA;&lt;h3 id=&#34;backward-compatibility-is-a-feature-not-a-limitation&#34;&gt;Backward compatibility is a feature, not a limitation&lt;/h3&gt;&#xA;&lt;p&gt;The thing developers complain about — Java&amp;rsquo;s conservatism — is exactly what enterprises are buying.&lt;/p&gt;&#xA;&lt;p&gt;Code written years ago still compiles and runs. Upgrades are usually boring, and boring is the point. When a platform breaks compatibility casually, every upgrade becomes a migration project, and migration projects are where budgets and timelines go to die. Java&amp;rsquo;s discipline here means a large codebase can move forward without being rewritten, and that compounds over the lifespan of a system.&lt;/p&gt;&#xA;&lt;h3 id=&#34;predictable-releases-you-can-plan-around&#34;&gt;Predictable releases you can plan around&lt;/h3&gt;&#xA;&lt;p&gt;Since the six-month release cadence and the Long-Term Support (LTS) model, Java gives organizations something they can actually build a roadmap on. LTS releases give you a stable target with years of support; the interim releases let the language keep evolving without forcing everyone onto the treadmill. You choose your pace. For a business planning multi-year investments, predictability like that is worth more than raw novelty.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-platform-is-still-being-invested-in&#34;&gt;The platform is still being invested in&lt;/h3&gt;&#xA;&lt;p&gt;Java isn&amp;rsquo;t coasting. Recent years have brought genuinely significant work to the platform — virtual threads reshaping how the JVM handles concurrency at scale, ongoing improvements to startup time and memory footprint, pattern matching and records modernizing the language itself, and continued GC advances. This is a thirty-year-old platform still receiving serious, well-funded engineering. That matters when you&amp;rsquo;re betting a decade of software on it.&lt;/p&gt;&#xA;&lt;h3 id=&#34;a-mature-ecosystem-and-a-deep-talent-pool&#34;&gt;A mature ecosystem and a deep talent pool&lt;/h3&gt;&#xA;&lt;p&gt;Two of the most underrated enterprise concerns are &amp;ldquo;what do I build on?&amp;rdquo; and &amp;ldquo;who will maintain it?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;On the first, the JVM ecosystem is vast and battle-tested — Spring and Spring Boot alone cover an enormous surface of what enterprises need, with libraries, tooling, observability, and integration patterns refined over many years of production use.&lt;/p&gt;&#xA;&lt;p&gt;On the second, the Java talent pool is one of the largest in the industry. You can hire for it, you can staff teams at scale, and you can find engineers who&amp;rsquo;ve operated Java systems in production for years. That&amp;rsquo;s not a glamorous advantage, but it&amp;rsquo;s a decisive one when you&amp;rsquo;re maintaining critical systems over a long horizon.&lt;/p&gt;&#xA;&lt;h3 id=&#34;operational-reliability-is-where-it-earns-its-keep&#34;&gt;Operational reliability is where it earns its keep&lt;/h3&gt;&#xA;&lt;p&gt;None of the above would matter if the runtime fell over under load. It doesn&amp;rsquo;t. The JVM&amp;rsquo;s observability, profiling, and tuning story is deep, and the operational patterns for running Java in production are extremely well understood. When something goes wrong at 2 a.m., &amp;ldquo;well understood&amp;rdquo; is exactly the property you want.&lt;/p&gt;&#xA;&lt;h3 id=&#34;where-java-isnt-the-answer&#34;&gt;Where Java isn&amp;rsquo;t the answer&lt;/h3&gt;&#xA;&lt;p&gt;Being honest about the boundaries is what makes the rest credible. If your problem is a small script, a latency-critical systems component, data science and ML research, or a lean startup optimizing for the fastest possible time-to-first-feature, Java is often not the best tool — and you should reach for something that fits. The claim is about a &lt;em&gt;context&lt;/em&gt;, not a coronation.&lt;/p&gt;&#xA;&lt;h3 id=&#34;why-this-is-on-my-mind&#34;&gt;Why this is on my mind&lt;/h3&gt;&#xA;&lt;p&gt;I spend most of my time now building agentic systems on the JVM, and this is precisely why. The interesting, fast-moving part — the reasoning, the model calls, the orchestration — sits on top of a platform I can trust to still be maintainable, staffable, and operable years from now. New capability on a stable foundation is a good trade. It lets me chase what&amp;rsquo;s genuinely new without gambling the boring, load-bearing parts of the system.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-takeaway&#34;&gt;The takeaway&lt;/h3&gt;&#xA;&lt;p&gt;Thirty years in, Java&amp;rsquo;s relevance isn&amp;rsquo;t an accident and it isn&amp;rsquo;t sentiment. It&amp;rsquo;s the payoff of a platform that consistently optimized for maintainability, stability, backward compatibility, predictable evolution, a deep ecosystem, and a large talent pool — the exact concerns that dominate enterprise software.&lt;/p&gt;&#xA;&lt;p&gt;That doesn&amp;rsquo;t make it the best language for everything. It makes it one of the strongest bets you can place when you need systems to run, and keep running, for a very long time.&lt;/p&gt;&#xA;</content:encoded>
    </item>
  </channel>
</rss>
