<?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: Jatniel Guzmán</title>
    <description>The latest articles on DEV Community by Jatniel Guzmán (@jatniel).</description>
    <link>https://dev.to/jatniel</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%2F24778%2Ff76aef47-767a-4aa3-a7b2-37a9e02510d5.png</url>
      <title>DEV Community: Jatniel Guzmán</title>
      <link>https://dev.to/jatniel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jatniel"/>
    <language>en</language>
    <item>
      <title>Markdown Is Everywhere, and It All Started with a README</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Wed, 07 Oct 2026 05:33:43 +0000</pubDate>
      <link>https://dev.to/jatniel/markdown-is-everywhere-and-it-all-started-with-a-readme-3f6g</link>
      <guid>https://dev.to/jatniel/markdown-is-everywhere-and-it-all-started-with-a-readme-3f6g</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Original article:&lt;/strong&gt; &lt;a href="https://jatniel.dev/en/bytes/markdown-is-everywhere-and-it-all-started-with-a-readme" rel="noopener noreferrer"&gt;Markdown Is Everywhere, and It All Started with a README&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have you noticed that Markdown has slowly become the de facto document format?&lt;/p&gt;

&lt;p&gt;I noticed it somewhat by accident. A coworker who doesn't write a single line of code asked me why his text was full of hash signs. He'd copied an answer from an AI assistant into an email. Markdown had found its way to him without him knowing what it was.&lt;/p&gt;

&lt;p&gt;For a long time, Markdown meant one thing to me: the README.md at the root of a repo. Now I run into it everywhere, even with people who've never opened a terminal. I wanted to trace it back and understand how we got here.&lt;/p&gt;

&lt;h2&gt;
  
  
  2004: A format meant to be read as-is
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/John_Gruber" rel="noopener noreferrer"&gt;John Gruber&lt;/a&gt; introduced &lt;a href="https://en.wikipedia.org/wiki/Markdown" rel="noopener noreferrer"&gt;Markdown&lt;/a&gt; on March 15, 2004, on his blog Daring Fireball. &lt;a href="https://en.wikipedia.org/wiki/Aaron_Swartz" rel="noopener noreferrer"&gt;Aaron Swartz&lt;/a&gt;, who was 17 at the time, helped him as a beta tester. The original idea was modest: write for the web without typing HTML.&lt;/p&gt;

&lt;p&gt;In practice, Markdown was a Perl script built as a plugin for Movable Type, the blogging tool Gruber used. Michel Fortin ported it to PHP within the first year, and Gruber himself recommended that port on the official page. As a PHP developer, I like that detail: Markdown spoke our language almost from day one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The principle that shaped everything is that a Markdown file should stay readable even if it's never converted.&lt;/strong&gt; A heading with a hash sign, a list with dashes, bold between asterisks. It borrowed habits people already had from plain-text email and forums.&lt;/p&gt;

&lt;p&gt;That choice is why it has lasted. Open a .md file in Notepad, in vim or in a terminal, and you can still follow it. Few formats can say the same.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fact&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Public introduction&lt;/td&gt;
&lt;td&gt;March 15, 2004, on Daring Fireball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creator&lt;/td&gt;
&lt;td&gt;John Gruber&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beta tester&lt;/td&gt;
&lt;td&gt;Aaron Swartz, 17 at the time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First implementation&lt;/td&gt;
&lt;td&gt;Perl script, Movable Type plugin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First port&lt;/td&gt;
&lt;td&gt;PHP, by Michel Fortin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main inspiration&lt;/td&gt;
&lt;td&gt;Plain-text email&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2008–2014: The developers' language
&lt;/h2&gt;

&lt;p&gt;Between 2008 and 2014, Markdown became the default writing tool for developers, almost without anyone choosing it.&lt;/p&gt;

&lt;p&gt;Stack Overflow adopted it at launch in 2008. GitHub made it the basis for READMEs, then for issues, pull requests and wikis, with its own variant: GitHub Flavored Markdown. Static site generators followed, and IPython notebooks (later Jupyter) used it for their text cells.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it brought&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;MkDocs&lt;/td&gt;
&lt;td&gt;Technical documentation written entirely in .md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014&lt;/td&gt;
&lt;td&gt;CommonMark&lt;/td&gt;
&lt;td&gt;A spec to unify the dialects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2013&lt;/td&gt;
&lt;td&gt;Hugo&lt;/td&gt;
&lt;td&gt;Static sites built in Go, content in Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2011&lt;/td&gt;
&lt;td&gt;IPython Notebook&lt;/td&gt;
&lt;td&gt;Markdown text between code cells&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2008&lt;/td&gt;
&lt;td&gt;Jekyll&lt;/td&gt;
&lt;td&gt;The developer blog as .md files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2008&lt;/td&gt;
&lt;td&gt;Stack Overflow&lt;/td&gt;
&lt;td&gt;Questions and answers written in Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2008&lt;/td&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;READMEs, issues, PRs, wikis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In a repo, it never stopped at the README. There's CHANGELOG.md, CONTRIBUTING.md, SECURITY.md, and that hidden .github folder holding the issue and pull request templates. &lt;strong&gt;Everything around the code gets written in Markdown.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The downside is that everyone adds their own extensions. Tables, checkboxes, syntax-highlighted code blocks: none of that was in the 2004 version. CommonMark was born in 2014 precisely because the same file didn't render the same way from one tool to the next. That problem never fully went away.&lt;/p&gt;

&lt;h2&gt;
  
  
  2015–2022: One foot out the door
&lt;/h2&gt;

&lt;p&gt;During those years, Markdown started to leave the repo, a little at a time.&lt;/p&gt;

&lt;p&gt;Slack and Discord accepted part of the syntax: bold, italics, code. Notion and other editors turned a hash sign typed at the start of a line into a heading. Obsidian, launched in 2020, built its whole approach on .md files stored locally, and drew in plenty of people who aren't developers.&lt;/p&gt;

&lt;p&gt;In 2022, Google Docs started detecting Markdown syntax automatically as you type. That was a sign &lt;strong&gt;the format wasn't just for technical people anymore&lt;/strong&gt;. But most people used it without knowing it had a name.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does with Markdown&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Slack, Discord&lt;/td&gt;
&lt;td&gt;Part of the syntax: bold, italics, code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion&lt;/td&gt;
&lt;td&gt;Turns typed syntax into formatting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Obsidian (2020)&lt;/td&gt;
&lt;td&gt;Notes stored as local .md files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Docs (2022)&lt;/td&gt;
&lt;td&gt;Automatic detection as you type&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2023 onward: AI does the rest
&lt;/h2&gt;

&lt;p&gt;What really sped things up was AI assistants. They answer in Markdown by default: headings, lists, bold, tables, code blocks. Millions of people started reading Markdown every day, often without realizing it.&lt;/p&gt;

&lt;p&gt;In July 2024, Google Docs added .md import and export, plus pasting from Markdown (&lt;a href="https://workspaceupdates.googleblog.com/2024/07/import-and-export-markdown-in-google-docs.html" rel="noopener noreferrer"&gt;Google Workspace announcement&lt;/a&gt;). Google mostly mentions technical writers, but everyone benefits.&lt;/p&gt;

&lt;p&gt;On the code side, Markdown even changed readers. We now write files meant for AI agents rather than for people. Every tool had its own (CLAUDE.md, .cursorrules, GEMINI.md…), until OpenAI released AGENTS.md in August 2025 as a shared format. By December 2025, more than 60,000 open-source projects were using it according to OpenAI, which handed it over to the Linux Foundation (&lt;a href="https://openai.com/blog/agentic-ai-foundation" rel="noopener noreferrer"&gt;announcement&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The README was written for a person discovering a project. AGENTS.md is written for a machine that's about to work on it.&lt;/strong&gt; Same format.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;README.md&lt;/th&gt;
&lt;th&gt;AGENTS.md&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reader&lt;/td&gt;
&lt;td&gt;A person&lt;/td&gt;
&lt;td&gt;An AI agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;Introduce the project&lt;/td&gt;
&lt;td&gt;Give instructions for working on it: setup, tests, conventions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Went mainstream&lt;/td&gt;
&lt;td&gt;With GitHub, from 2008&lt;/td&gt;
&lt;td&gt;Released by OpenAI in August 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adoption&lt;/td&gt;
&lt;td&gt;Nearly every GitHub repo&lt;/td&gt;
&lt;td&gt;60,000+ open-source projects by late 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Native support isn't keeping up
&lt;/h2&gt;

&lt;p&gt;Markdown is everywhere, but it isn't understood everywhere. That's where things get stuck.&lt;/p&gt;

&lt;p&gt;I paste a Markdown table into one tool and it looks clean. In another, I get a mess of pipes and dashes. An email drafted with an AI assistant lands in someone's inbox full of asterisks. The same .md file doesn't look the same on GitHub, in VS Code and in Obsidian, because each one handles its own extensions.&lt;/p&gt;

&lt;p&gt;LinkedIn, for example, doesn't render it at all. If you want bold text in a post, you have to use Unicode characters, which creates accessibility problems of its own.&lt;/p&gt;

&lt;p&gt;The dialect problem isn't new. In 2014, Jeff Atwood, cofounder of Stack Overflow, and John MacFarlane, the creator of Pandoc, published a spec called "Standard Markdown." Gruber objected to the word Markdown being in the name, and the project became CommonMark. &lt;strong&gt;A final 1.0 version of that spec still hasn't shipped.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The format has become universal for writing. When it comes to displaying it, every tool still does its own thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  2025: Windows Notepad and Apple Notes adopt Markdown
&lt;/h2&gt;

&lt;p&gt;This is the clearest sign that Markdown has left the developer world: &lt;strong&gt;the two most basic text editors, installed on hundreds of millions of machines, picked it up in the same year.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows Notepad reads and writes Markdown
&lt;/h3&gt;

&lt;p&gt;In late May 2025, Microsoft started rolling out a Notepad update to Windows Insiders with lightweight formatting: bold, italics, links, lists, headings. Notepad accepts Markdown input and opens .md files. A button in the status bar switches between the formatted view and the syntax view, and you can turn the feature off in settings.&lt;/p&gt;

&lt;p&gt;In November 2025, a new preview added tables, which you can insert from the toolbar or type directly in Markdown syntax.&lt;/p&gt;

&lt;p&gt;For a tool that stayed a plain text editor for decades, that's a big change. It didn't go unnoticed either: some users pushed back, attached to a no-frills Notepad.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apple Notes imports and exports Markdown
&lt;/h3&gt;

&lt;p&gt;Apple took a different approach. With iOS 26, iPadOS 26 and macOS Tahoe 26, Notes can import a .md file and export a note as Markdown. Headings, lists, links, bold and italics are converted to rich text on import. Apple's current documentation also mentions copying a note as Markdown and pasting Markdown into Notes.&lt;/p&gt;

&lt;p&gt;You still don't write Markdown in Notes, though. The conversion happens on the way in and on the way out, and in between the note stays in Apple's own format.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Notepad (Windows)&lt;/th&gt;
&lt;th&gt;Apple Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Write directly in Markdown syntax&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toggle between formatted and syntax view&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.md files&lt;/td&gt;
&lt;td&gt;Opened and edited as-is&lt;/td&gt;
&lt;td&gt;Imported, converted, exportable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tables&lt;/td&gt;
&lt;td&gt;Yes, in preview since November 2025&lt;/td&gt;
&lt;td&gt;Not specified&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Where mainstream tools stand
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does with Markdown&lt;/th&gt;
&lt;th&gt;Since&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Notepad (Windows 11)&lt;/td&gt;
&lt;td&gt;Renders and edits Markdown, toggles formatted / syntax view, tables&lt;/td&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Notes (iOS 26, macOS Tahoe)&lt;/td&gt;
&lt;td&gt;.md import and export, conversion to rich text&lt;/td&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Docs&lt;/td&gt;
&lt;td&gt;Detection as you type, then import, export and paste&lt;/td&gt;
&lt;td&gt;2022, then 2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LinkedIn&lt;/td&gt;
&lt;td&gt;No rendering&lt;/td&gt;
&lt;td&gt;Never&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My takeaway: &lt;strong&gt;Microsoft made Markdown a native format in its simplest editor, while Apple treats it as an exchange format.&lt;/strong&gt; Two visions, and still no shared behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what now?
&lt;/h2&gt;

&lt;p&gt;I don't think we'll ever see a single Markdown that renders identically everywhere. The format won precisely because it was simple and anyone could extend it. &lt;strong&gt;That freedom comes at a cost, and we pay it every time we copy and paste.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What strikes me is how far it's come. Twenty years ago, it was a trick to avoid writing HTML. Ten years ago, it was our format, the one living in our repos. Today my clients receive it without knowing it, and I write .md files to explain my projects to AI agents.&lt;/p&gt;

&lt;p&gt;Until the tools catch up, I write in Markdown pretty much everywhere. Even in places where nobody will read it as Markdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world/" rel="noopener noreferrer"&gt;How Markdown took over the world&lt;/a&gt;, Anil Dash, January 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://daringfireball.net/projects/markdown/" rel="noopener noreferrer"&gt;Markdown&lt;/a&gt;, official page on Daring Fireball, John Gruber&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://lwn.net/Articles/610884" rel="noopener noreferrer"&gt;Standard Markdown becomes CommonMark&lt;/a&gt;, LWN.net, September 2014&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blogs.windows.com/windows-insider/2025/05/30/text-formatting-in-notepad-begin-rolling-out-to-windows-insiders/" rel="noopener noreferrer"&gt;Text formatting in Notepad begins rolling out to Windows Insiders&lt;/a&gt;, Windows Insider Blog, May 2025&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blogs.windows.com/windows-insider/2025/11/21/notepad-update-begins-rolling-out-to-windows-insiders/" rel="noopener noreferrer"&gt;Notepad update begins rolling out to Windows Insiders&lt;/a&gt;, Windows Insider Blog, November 2025&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.apple.com/guide/notes/not201900c07/mac" rel="noopener noreferrer"&gt;Import, export, and print notes on Mac&lt;/a&gt;, Apple Support&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://appleinsider.com/inside/ios-26/tips/how-to-import-and-export-markdown-with-apple-notes-in-ios-26" rel="noopener noreferrer"&gt;How to import and export Markdown with Apple Notes in iOS 26&lt;/a&gt;, AppleInsider&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://workspaceupdates.googleblog.com/2024/07/import-and-export-markdown-in-google-docs.html" rel="noopener noreferrer"&gt;Import and export Markdown in Google Docs&lt;/a&gt;, Google Workspace Updates, July 2024&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://openai.com/blog/agentic-ai-foundation" rel="noopener noreferrer"&gt;OpenAI co-founds the Agentic AI Foundation&lt;/a&gt;, OpenAI, December 2025&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;a href="https://infoq.com/news/2025/08/agents-md/" rel="noopener noreferrer"&gt;AGENTS.md Emerges as Open Standard for AI Coding Agents&lt;/a&gt;, InfoQ, August 2025
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Original article:&lt;/strong&gt; &lt;a href="https://jatniel.dev/en/bytes/markdown-is-everywhere-and-it-all-started-with-a-readme" rel="noopener noreferrer"&gt;Markdown Is Everywhere, and It All Started with a README&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>markdown</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>How Uber exposes existing APIs to AI agents through its MCP Gateway</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:13:00 +0000</pubDate>
      <link>https://dev.to/jatniel/how-uber-exposes-existing-apis-to-ai-agents-through-its-mcp-gateway-2a2c</link>
      <guid>https://dev.to/jatniel/how-uber-exposes-existing-apis-to-ai-agents-through-its-mcp-gateway-2a2c</guid>
      <description>&lt;p&gt;onnecting an AI agent to one backend service is manageable. Doing it across hundreds of teams raises questions about ownership, permissions, protocol compatibility, and how agents find the right tools.&lt;/p&gt;

&lt;p&gt;Uber Engineering describes its approach in &lt;a href="https://www.uber.com/pr/en/blog/designing-mcp-gateway/" rel="noopener noreferrer"&gt;Designing MCP Gateway: Uber's MCP Management Platform&lt;/a&gt;. At the time of publication, the platform hosted more than 800 MCP servers and 5,000 tools.&lt;/p&gt;

&lt;p&gt;This article summarizes the design choices that caught my attention as a backend developer. The implementation and diagrams are Uber's.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Put existing APIs behind a shared gateway
&lt;/h2&gt;

&lt;p&gt;Uber already has internal services using HTTP, gRPC, and TChannel. Its gateway makes those APIs accessible through the Model Context Protocol (MCP), without requiring changes to the downstream services.&lt;/p&gt;

&lt;p&gt;The architecture separates two responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;MCP Registry&lt;/strong&gt;, or control plane, stores tool definitions, ownership, and enablement settings.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Proxy Gateway&lt;/strong&gt;, or data plane, handles requests and translates between MCP and downstream protocols.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For each virtual MCP server, the gateway exposes a &lt;code&gt;/&amp;lt;service-name&amp;gt;/mcp&lt;/code&gt; endpoint. Handlers translate requests into the downstream format and convert responses back into MCP-compatible results. Native MCP servers can also sit behind the gateway.&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%2Fnyfbdv5zmawxsplrytea.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%2Fnyfbdv5zmawxsplrytea.png" alt="Uber's MCP Gateway routes calls from agents and other clients to backend services using different protocols." width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1 from &lt;a href="https://www.uber.com/pr/en/blog/designing-mcp-gateway/" rel="noopener noreferrer"&gt;Uber Engineering's original article&lt;/a&gt;: MCP Gateway, APIs as tools.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The part I find useful here is API reuse. Teams can expose capabilities they already maintain, while the shared gateway handles MCP integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Generate tool definitions from service contracts
&lt;/h2&gt;

&lt;p&gt;Manually maintaining thousands of tool definitions would create a substantial maintenance burden. Uber uses AutoCrawler, a discovery system built on Cadence workflows.&lt;/p&gt;

&lt;p&gt;For services defined with Protobuf or Thrift, it reads the interface definitions, extracts methods and schemas, and generates MCP tool definitions. An LLM helps write descriptions using the schemas and documentation comments.&lt;/p&gt;

&lt;p&gt;Native MCP servers follow a different path: AutoCrawler detects their heartbeat signals and calls &lt;code&gt;listTools&lt;/code&gt; to retrieve their tools and schemas.&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%2Fnjtcrevdefzye5fr34uh.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%2Fnjtcrevdefzye5fr34uh.png" alt="Uber's AutoCrawler workflow connects service discovery, tool generation, owner review, and the MCP Registry." width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2 from &lt;a href="https://www.uber.com/pr/en/blog/designing-mcp-gateway/" rel="noopener noreferrer"&gt;Uber Engineering's original article&lt;/a&gt;: AutoCrawler.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Service contracts provide a starting point for the integration. Owners can then review the generated descriptions before agents use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Require owner approval before enabling tools
&lt;/h2&gt;

&lt;p&gt;Every discovered server and tool starts disabled. The team responsible for the service must review and explicitly enable it.&lt;/p&gt;

&lt;p&gt;Changes to tool descriptions produce configuration diffs that require owner approval. Previous configurations remain available for rollback.&lt;/p&gt;

&lt;p&gt;At execution time, the gateway applies authorization policies with tool-level granularity and redacts sensitive data from responses. Its runtime periodically refreshes configuration in memory, so configuration changes can take effect without a service restart.&lt;/p&gt;

&lt;p&gt;This is a detail I would carry into a smaller implementation: generating a tool definition and granting access to that tool should be separate operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Discover tools progressively and keep responses small
&lt;/h2&gt;

&lt;p&gt;Thousands of tools create another problem: their descriptions and schemas can consume the model's context window.&lt;/p&gt;

&lt;p&gt;Uber addresses this with Omni MCP, a single proxy server that supports progressive discovery through four tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;discover_server&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;discover_tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_tool_schema&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;invoke_tool&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An agent can search for a relevant server, inspect its tools, and retrieve a schema when needed.&lt;/p&gt;

&lt;p&gt;The gateway also supports response projection. A caller specifies the fields it needs, and the gateway trims the response accordingly. That distinction matters: the article describes filtering at the gateway, so this should not be assumed to reduce the downstream service's work.&lt;/p&gt;

&lt;p&gt;For coding agents, Uber offers Code Mode through its &lt;code&gt;aifx&lt;/code&gt; CLI. Agents can discover and call tools, write results to files, and inspect selected content before bringing it into model context. Uber reports that this is its default approach for MCP use in coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would take into a smaller project
&lt;/h2&gt;

&lt;p&gt;I would start with a few existing APIs, explicit tool ownership, and a review step before enablement. I would also measure how much context the tool schemas and responses consume before expanding the catalog.&lt;/p&gt;

&lt;p&gt;Uber's scale explains the investment in automated discovery and a centralized platform. For a smaller backend, these individual design choices are still useful to evaluate.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.uber.com/pr/en/blog/designing-mcp-gateway/" rel="noopener noreferrer"&gt;full Uber Engineering article&lt;/a&gt; for the runtime diagrams, registry screenshots, and third-party integration details.&lt;/p&gt;




&lt;p&gt;Jatniel - Full-stack Developer&lt;br&gt;
&lt;a href="https://jatniel.dev/" rel="noopener noreferrer"&gt;jatniel.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>architecture</category>
      <category>backend</category>
    </item>
    <item>
      <title>Symfony and PHP 8.4: Modernizing Without Rewriting Everything</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Fri, 14 Aug 2026 21:30:40 +0000</pubDate>
      <link>https://dev.to/jatniel/symfony-and-php-84-modernizing-without-rewriting-everything-4mj6</link>
      <guid>https://dev.to/jatniel/symfony-and-php-84-modernizing-without-rewriting-everything-4mj6</guid>
      <description>&lt;p&gt;Upgrading a &lt;strong&gt;Symfony&lt;/strong&gt; application to &lt;strong&gt;PHP 8.4&lt;/strong&gt; doesn't have to mean rewriting half the codebase.&lt;/p&gt;

&lt;p&gt;For applications that have been running in production for years, the real challenge is deciding what to modernize, what to keep, and how to move forward without turning a technical upgrade into a long and risky project.&lt;/p&gt;

&lt;p&gt;PHP 8.4 brings useful features such as property hooks, asymmetric visibility, native lazy objects, and the #[Deprecated] attribute. It also integrates particularly well with recent Symfony versions.&lt;/p&gt;

&lt;p&gt;But a successful migration is less about adopting every new language feature and more about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking dependencies and platform requirements&lt;/li&gt;
&lt;li&gt;addressing deprecations&lt;/li&gt;
&lt;li&gt;running automated tests&lt;/li&gt;
&lt;li&gt;validating workers and scheduled tasks&lt;/li&gt;
&lt;li&gt;reviewing logs after deployment&lt;/li&gt;
&lt;li&gt;modernizing the parts of the codebase where it actually adds value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the full article, I look at PHP 8.4 from a Symfony perspective and explain why a gradual migration is often a better strategy than a complete rewrite.&lt;/p&gt;

&lt;p&gt;Read the full article on my blog: &lt;a href="https://jatniel.dev/en/bytes/symfony-and-php-84-modernizing-without-rewriting-everything" rel="noopener noreferrer"&gt;jatniel.dev/en/bytes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>symfony</category>
      <category>php</category>
      <category>refactoring</category>
      <category>development</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Thu, 23 Jul 2026 08:48:04 +0000</pubDate>
      <link>https://dev.to/jatniel/-19lj</link>
      <guid>https://dev.to/jatniel/-19lj</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i" class="crayons-story__hidden-navigation-link"&gt;New in EasyAdmin 5.3: A Modernized Sidebar, Symfony Reprise, and More Theming Groundwork&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/javiereguiluz" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F149151%2F680f65e7-3fa6-45ee-a2c9-769d1f2472dc.png" alt="javiereguiluz profile" class="crayons-avatar__image" width="400" height="400"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/javiereguiluz" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Javier Eguiluz
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Javier Eguiluz
                
                
              
              &lt;div id="story-author-preview-content-4203443" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/javiereguiluz" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F149151%2F680f65e7-3fa6-45ee-a2c9-769d1f2472dc.png" class="crayons-avatar__image" alt="" width="400" height="400"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Javier Eguiluz&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i" id="article-link-4203443"&gt;
          New in EasyAdmin 5.3: A Modernized Sidebar, Symfony Reprise, and More Theming Groundwork
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/easyadmin"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;easyadmin&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/symfony"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;symfony&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>TypeScript 7.0 Is Here: The Compiler Is Much Faster</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Sun, 12 Jul 2026 06:00:44 +0000</pubDate>
      <link>https://dev.to/jatniel/typescript-70-is-here-the-compiler-is-much-faster-30n</link>
      <guid>https://dev.to/jatniel/typescript-70-is-here-the-compiler-is-much-faster-30n</guid>
      <description>&lt;p&gt;TypeScript 7.0 is now officially available as a stable release, and this is one worth paying attention to.&lt;/p&gt;

&lt;p&gt;Not because it introduces a flashy new syntax feature or another configuration option, but because it improves something developers feel every day: waiting.&lt;/p&gt;

&lt;p&gt;The TypeScript compiler has been rewritten in Go. The goal is clear: take advantage of native code, multithreading, and better parallelization to make builds, type checking, and the editor experience much faster.&lt;/p&gt;

&lt;p&gt;Microsoft says TypeScript 7 is usually between 8x and 12x faster on large projects. In some cases, with more parallelization, the results go even higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers Are Pretty Clear
&lt;/h2&gt;

&lt;p&gt;Microsoft published benchmarks on several well-known open-source projects using TypeScript 7’s default configuration:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;TypeScript 6&lt;/th&gt;
&lt;th&gt;TypeScript 7&lt;/th&gt;
&lt;th&gt;Speedup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;vscode&lt;/td&gt;
&lt;td&gt;125.7s&lt;/td&gt;
&lt;td&gt;10.6s&lt;/td&gt;
&lt;td&gt;11.9x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sentry&lt;/td&gt;
&lt;td&gt;139.8s&lt;/td&gt;
&lt;td&gt;15.7s&lt;/td&gt;
&lt;td&gt;8.9x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bluesky&lt;/td&gt;
&lt;td&gt;24.3s&lt;/td&gt;
&lt;td&gt;2.8s&lt;/td&gt;
&lt;td&gt;8.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;playwright&lt;/td&gt;
&lt;td&gt;12.8s&lt;/td&gt;
&lt;td&gt;1.47s&lt;/td&gt;
&lt;td&gt;8.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tldraw&lt;/td&gt;
&lt;td&gt;11.2s&lt;/td&gt;
&lt;td&gt;1.46s&lt;/td&gt;
&lt;td&gt;7.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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%2Fw2wpxdqz526sexbpksal.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%2Fw2wpxdqz526sexbpksal.png" alt=" " width="799" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The VS Code result is especially impressive: a build that took more than two minutes now takes just over ten seconds.&lt;/p&gt;

&lt;p&gt;And when increasing the number of workers with &lt;code&gt;--checkers 8&lt;/code&gt;, VS Code goes down to 7.51 seconds, which is 16.7x faster than TypeScript 6.&lt;/p&gt;

&lt;p&gt;Another interesting point is that this speedup does not seem to come with higher memory usage. In the projects Microsoft measured, memory usage actually went down, between 6% and 26% depending on the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Difference May Be in the Editor
&lt;/h2&gt;

&lt;p&gt;For me, the most important part is not just faster builds.&lt;/p&gt;

&lt;p&gt;The real improvement is the feedback loop while coding.&lt;/p&gt;

&lt;p&gt;TypeScript 7 also comes with a new language server based on LSP. In practice, the things we use all day should feel faster: autocomplete, real-time errors, type hovers, code navigation, find references, and more.&lt;/p&gt;

&lt;p&gt;Microsoft gives a good example: in the VS Code repository, opening a file with an error used to take about 17.5 seconds before showing the first diagnostic. With TypeScript 7, it takes less than 1.3 seconds.&lt;/p&gt;

&lt;p&gt;On a small project, that is nice.&lt;/p&gt;

&lt;p&gt;On a large codebase or a monorepo, that can really change the way you work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Teams Are Seeing on Real Projects
&lt;/h2&gt;

&lt;p&gt;TypeScript 7 is not only coming with internal benchmarks. Microsoft says this version has been tested for more than a year on large codebases, both inside and outside Microsoft.&lt;/p&gt;

&lt;p&gt;Some of the companies mentioned include Slack, Canva, Figma, Vercel, Notion, Sentry, and Bloomberg, as well as Microsoft teams working on Teams, Office, PowerBI, and Xbox.&lt;/p&gt;

&lt;p&gt;A few numbers stand out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slack reportedly reduced type checking in CI from 7.5 minutes to 1.25 minutes.&lt;/li&gt;
&lt;li&gt;Canva went from 58 seconds to 4.8 seconds before seeing the first error in the editor.&lt;/li&gt;
&lt;li&gt;One Microsoft team reported saving around 400 hours of CI time per month.&lt;/li&gt;
&lt;li&gt;The new language server reduced failing commands by more than 80% and crashes by more than 60% compared to TypeScript 6.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These numbers matter most when you work on large projects. When type checking gets too slow, teams often push it to CI or run it less often. If TypeScript 7 makes it practical again during local development, that is a real productivity win.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;To install TypeScript 7:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bash id="g4p2wc"&lt;br&gt;
npm install -D typescript&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bash id="fkg78d"&lt;br&gt;
npx tsc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;By default, TypeScript 7 uses 4 workers for type checking. You can adjust this with &lt;code&gt;--checkers&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bash id="kz618u"&lt;br&gt;
npx tsc --checkers 8&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Of course, this should be tested depending on your machine and your project. More workers can make builds faster, but they can also increase memory usage. On a powerful development machine, it is worth trying. On a limited CI runner, it is better to measure before changing anything globally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Main Thing to Watch
&lt;/h2&gt;

&lt;p&gt;Not every part of the ecosystem can move to TypeScript 7 immediately.&lt;/p&gt;

&lt;p&gt;TypeScript 7.0 does not yet expose a stable programmatic API. That API is expected in TypeScript 7.1.&lt;/p&gt;

&lt;p&gt;This affects tools and frameworks that depend directly on TypeScript, such as Vue, Astro, Svelte, MDX, some Angular workflows, Volar, and typescript-eslint.&lt;/p&gt;

&lt;p&gt;For those cases, Microsoft recommends running TypeScript 6 and TypeScript 7 side by side for now.&lt;/p&gt;

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

&lt;p&gt;&lt;code&gt;json id="nmbg7p"&lt;br&gt;
{&lt;br&gt;
  "devDependencies": {&lt;br&gt;
    "@typescript/native": "npm:typescript@^7.0.2",&lt;br&gt;
    "typescript": "npm:@typescript/typescript6@^6.0.2"&lt;br&gt;
  }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: keep TypeScript 6 for tools that still need its API, and use TypeScript 7 where possible to benefit from the performance improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Take as a Developer
&lt;/h2&gt;

&lt;p&gt;I find this release really interesting because it does not try to get attention with visible new features. Instead, it solves a very real problem: waiting.&lt;/p&gt;

&lt;p&gt;Waiting for type checking to finish, waiting for the editor to show errors, waiting for CI to confirm something we would rather know locally… these small delays add up quickly on large projects.&lt;/p&gt;

&lt;p&gt;TypeScript 7 does not change the way we write TypeScript overnight. But it can change how fast we work with TypeScript.&lt;/p&gt;

&lt;p&gt;And for a tool that is so widely used in modern development, that is a big deal.&lt;/p&gt;

&lt;p&gt;Congratulations to the TypeScript team for this work. Rewriting such a central compiler in Go is impressive, and I would not be surprised if it inspires other languages and development tools.&lt;/p&gt;

&lt;p&gt;Source: Microsoft’s official announcement, “&lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/" rel="noopener noreferrer"&gt;Announcing TypeScript 7.0&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://jatniel.dev/en/bytes/typescript-70-is-here-the-compiler-is-much-faster" rel="noopener noreferrer"&gt;jatniel.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>development</category>
      <category>rust</category>
      <category>webdev</category>
    </item>
    <item>
      <title>TypeScript 7 RC: the compiler rewritten in Go, around 10x faster</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Sun, 21 Jun 2026 11:39:50 +0000</pubDate>
      <link>https://dev.to/jatniel/typescript-7-rc-the-compiler-rewritten-in-go-around-10x-faster-1mfg</link>
      <guid>https://dev.to/jatniel/typescript-7-rc-the-compiler-rewritten-in-go-around-10x-faster-1mfg</guid>
      <description>&lt;p&gt;Microsoft just shipped the Release Candidate for TypeScript 7, with the stable release expected next month. And the big deal, for once, isn't a new syntax or yet another config flag. It's that the entire compiler has been rewritten in Go.&lt;/p&gt;

&lt;p&gt;Over the past year, the team ported the existing codebase (until now, TypeScript that compiled to JavaScript) to Go. It was done methodically from the current implementation, not rewritten from scratch, so the type-checking logic stays structurally identical to TypeScript 6. You don't change how you write TypeScript, you just get more speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it's so fast
&lt;/h2&gt;

&lt;p&gt;The speedup isn't magic, it comes from the language. Go compiles to native code and takes advantage of parallelism through shared memory. The result Microsoft reports: builds that are often around 10 times faster than TypeScript 6. That number comes from their own measurements and from companies like Figma, Bloomberg, Vercel, Notion, and Slack, which have been testing pre-release builds for over a year and report similar gains.&lt;/p&gt;

&lt;p&gt;And it doesn't stop at the &lt;code&gt;tsc&lt;/code&gt; command line. The Language Server Protocol (LSP), the thing that powers autocomplete, type hovers, and real-time errors in your editor, runs on the same foundation. So the editor responds much faster, and that's probably what you'll feel most day to day on a large project.&lt;/p&gt;

&lt;p&gt;The repo is open source (Apache 2.0, more than 25,000 stars on GitHub) and about 85% Go. For a project this size, and coming from Microsoft, betting on Go was not the obvious choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript 6, the step you shouldn't skip
&lt;/h2&gt;

&lt;p&gt;TypeScript 7 inherits TypeScript 6's defaults, and anything deprecated in 6 now turns into a hard error. Since 6 is still recent, plenty of projects will need to adapt.&lt;/p&gt;

&lt;p&gt;That's exactly what 6 is for: it doesn't bring big new features, it sets the stage. It warns you about the options and syntax that go away in 7. The team's advice, and mine: move to 6 first, clear those warnings, and the jump to 7 happens without surprises.&lt;/p&gt;

&lt;p&gt;A few examples of what becomes a hard error in 7: &lt;code&gt;target: es5&lt;/code&gt;, &lt;code&gt;moduleResolution: node&lt;/code&gt;, &lt;code&gt;baseUrl&lt;/code&gt;, or &lt;code&gt;module: amd/umd/systemjs&lt;/code&gt;. On the defaults side, &lt;code&gt;strict&lt;/code&gt; is now &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;module&lt;/code&gt; is &lt;code&gt;esnext&lt;/code&gt;. Two changes catch people off guard and are worth a look: &lt;code&gt;rootDir&lt;/code&gt; now defaults to &lt;code&gt;./&lt;/code&gt; (you'll often need to point it back to &lt;code&gt;./src&lt;/code&gt;), and &lt;code&gt;types&lt;/code&gt; defaults to &lt;code&gt;[]&lt;/code&gt;, so you have to list your &lt;code&gt;@types&lt;/code&gt; packages explicitly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running 6 and 7 side by side
&lt;/h2&gt;

&lt;p&gt;Not all of your tools will be compatible with 7 overnight. typescript-eslint, for example, imports the &lt;code&gt;typescript&lt;/code&gt; package directly, and the stable programmatic API won't land until TypeScript 7.1, a few months from now.&lt;/p&gt;

&lt;p&gt;Microsoft set this up so the two versions can live together without stepping on each other. A compatibility package, &lt;code&gt;@typescript/typescript6&lt;/code&gt;, ships a &lt;code&gt;tsc6&lt;/code&gt; binary and re-exports the 6 API. The trick is to use npm aliases in your &lt;code&gt;package.json&lt;/code&gt;:&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;"devDependencies"&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;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npm:@typescript/typescript6@^6.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript-7"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npm:typescript@rc"&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;The &lt;code&gt;typescript&lt;/code&gt; package your linter looks for actually points to 6, which is stable and what the tools expect, while &lt;code&gt;npx tsc&lt;/code&gt; uses 7 for the rest of the project. It's a textbook parallel change: 6 keeps things tidy on linting, and 7 makes everything else faster. Tooling compatibility should settle down around 7.1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parallelization, checkers, and watch mode
&lt;/h2&gt;

&lt;p&gt;TypeScript 7 parallelizes several steps: parsing, type-checking, and emit. Parsing and emit split easily across files. Type-checking is trickier because of dependencies between files, so the team spins up a fixed number of workers that share the work deterministically: same input files, same output results.&lt;/p&gt;

&lt;p&gt;By default you get 4 workers, adjustable with &lt;code&gt;--checkers&lt;/code&gt;. If you have more cores you can raise it, at the cost of more memory. On a tight CI runner, lower it instead.&lt;/p&gt;

&lt;p&gt;There's also &lt;code&gt;--builders&lt;/code&gt;, to build several projects in a monorepo at once. Watch out, the effect multiplies with &lt;code&gt;--checkers&lt;/code&gt;: with &lt;code&gt;--checkers 4 --builders 4&lt;/code&gt; you can have up to 16 type-checkers running. And &lt;code&gt;--singleThreaded&lt;/code&gt; forces a single thread, handy for debugging or for comparing 6 with 7.&lt;/p&gt;

&lt;p&gt;Watch mode was rebuilt on top of Parcel's file watcher, also ported to Go. No more expensive polling over big &lt;code&gt;node_modules&lt;/code&gt; folders, and file watching is much lighter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands to try it
&lt;/h2&gt;

&lt;p&gt;Install the RC:&lt;br&gt;
&lt;/p&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; &lt;span class="nt"&gt;-D&lt;/span&gt; typescript@rc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="c"&gt;# Version 7.0.1-rc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compile like always, just faster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tune the number of type-checking workers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="nt"&gt;--checkers&lt;/span&gt; 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Force a single thread to compare with 6:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tsc &lt;span class="nt"&gt;--singleThreaded&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install 6 and 7 at the same time with aliases:&lt;br&gt;
&lt;/p&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; &lt;span class="nt"&gt;-D&lt;/span&gt; typescript@npm:@typescript/typescript6
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; typescript-7@npm:typescript@rc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to live on the nightlies:&lt;br&gt;
&lt;/p&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; &lt;span class="nt"&gt;-D&lt;/span&gt; @typescript/native-preview
npx tsgo &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The nightly binary is still called &lt;code&gt;tsgo&lt;/code&gt;. Once 7 ships stable, everything moves back to the &lt;code&gt;typescript&lt;/code&gt; package.&lt;/p&gt;

&lt;h2&gt;
  
  
  In short
&lt;/h2&gt;

&lt;p&gt;TypeScript 7 doesn't touch your code or the typing rules, it goes after speed, both in the build and in the editor. The sensible plan: move to TypeScript 6 now to clear the warnings, test the RC in parallel on a real project, and report bugs on the &lt;a href="https://github.com/microsoft/typescript-go" rel="noopener noreferrer"&gt;microsoft/typescript-go&lt;/a&gt; repo. Stable lands next month.&lt;/p&gt;

&lt;p&gt;Official announcement: &lt;a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-rc/" rel="noopener noreferrer"&gt;Announcing TypeScript 7.0 RC&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://jatniel.dev/en/bytes/typescript-7-rc-the-compiler-rewritten-in-go-around-10x-faster?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=ts7-rc" rel="noopener noreferrer"&gt;jatniel.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>go</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Cursor Launches Origin, a GitHub Rival, Right Before SpaceX Buys the Company</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Wed, 17 Jun 2026 15:19:16 +0000</pubDate>
      <link>https://dev.to/jatniel/cursor-launches-origin-a-github-rival-right-before-spacex-buys-the-company-1d9b</link>
      <guid>https://dev.to/jatniel/cursor-launches-origin-a-github-rival-right-before-spacex-buys-the-company-1d9b</guid>
      <description>&lt;p&gt;Cursor just announced Origin, a code storage and Git hosting platform. In one line: a direct competitor to GitHub. It ships this fall, and for now there's only a waitlist. So far, nothing wild in a market where everyone wants a piece. What makes it interesting isn't the what. It's the when.&lt;/p&gt;

&lt;h2&gt;
  
  
  From editor to platform
&lt;/h2&gt;

&lt;p&gt;Some context first. Cursor, made by Anysphere, started as a fork of VS Code with AI built in. In a few years it went from a toy to the editor a lot of us open every morning.&lt;/p&gt;

&lt;p&gt;In December 2025, Cursor bought Graphite, a startup focused on code review: stacked pull requests, merge queues, structured reviews. With Origin, the last piece falls into place, which is hosting. Cursor doesn't just want to be the place where you write code. It wants to be the place where it's stored, reviewed, and merged.&lt;/p&gt;

&lt;p&gt;They're blunt about the pitch. GitHub was built for humans: one developer, a few commits a day, a pull request, a coworker who reviews it. Origin starts from a different assumption. Soon, Cursor says, it won't be one person pushing code. It'll be dozens of agents at once, cloning, branching, merging, and fixing their own mistakes in parallel. Origin is built to handle that load, and it throws in AI-powered automatic merge conflict resolution on top.&lt;/p&gt;

&lt;p&gt;The numbers they showed on stage make the point: about 22 commits per second in a single repo, close to 300,000 clones and tens of thousands of pushes an hour. Numbers that make no sense at human scale, and all the sense in the world if you point an army of agents at the same repo.&lt;/p&gt;

&lt;p&gt;You could call the bet early. Most of us don't have fifty agents running around the same project. But the idea isn't crazy, and it explains why Cursor dropped so much money on Graphite six months ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  The detail that changes everything
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. Just a few days before Origin, SpaceX signed a deal to buy Cursor for $60 billion, all in stock. Cursor becomes a wholly owned part of SpaceX once the deal closes, which is expected this fall. And it's worth remembering that SpaceX absorbed xAI, Musk's AI company, earlier this year.&lt;/p&gt;

&lt;p&gt;So by the time Origin ships, it'll belong to the same group as xAI. A group that already trains its own models: Cursor and xAI have confirmed they're working together on one that's coming soon, described as trained from scratch on more than a hundred thousand GPUs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question all this raises
&lt;/h2&gt;

&lt;p&gt;Line up the pieces. You write your code in Cursor. You host it on Origin. And the whole thing belongs to a company that trains top-tier AI models.&lt;/p&gt;

&lt;p&gt;I'm not saying it's a trap, and I'm not assuming anyone has bad intentions. But the question is worth asking plainly: where does my code live, and who gets to use it? We already ask it about GitHub and Copilot, and the answers aren't always reassuring. The difference with Origin is that the whole chain ends up under one roof: the tool that writes, the place that stores, and the model that learns.&lt;/p&gt;

&lt;p&gt;When one company controls all three links, the line between "hosting your code" and "learning from your code" comes down to the terms of service. And terms of service get rewritten.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for a freelancer
&lt;/h2&gt;

&lt;p&gt;On the practical side, I mostly work on client projects: Symfony, Laravel, PrestaShop, APIs. Not all the repos are mine, and several clients have strict rules about where the code can live. Switching platforms isn't a technical tweak you knock out on a Friday afternoon. It's a decision that touches confidentiality, compliance, and sometimes the contract itself.&lt;/p&gt;

&lt;p&gt;For now I'm staying on GitHub. Not out of loyalty: GitHub has its own problems, and its recent outages made that clear. But trading a dependency on Microsoft for one on SpaceX isn't a win. It's just another giant, with its own priorities.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do in your shoes
&lt;/h2&gt;

&lt;p&gt;Origin is worth a look, especially if you're starting to run agents in production and GitHub is choking at scale. I'll probably join the waitlist, if only to see how it actually works. There's still a lot we don't know: pricing, importing and exporting repos, how it plays with GitHub and GitLab, what it offers companies. What's up right now is a landing page, not documentation.&lt;/p&gt;

&lt;p&gt;But before I move a single serious repo, I want to read those terms, know what happens to the data, and wait for the deal to actually close. You don't get control of your code back after the fact. You protect it before you click "migrate."&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on my blog. Read more of my writing on PHP, freelancing, and dev tooling at &lt;a href="https://jatniel.dev/en/bytes/cursor-launches-origin-a-github-rival?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;jatniel.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cursor</category>
      <category>github</category>
      <category>devtool</category>
    </item>
    <item>
      <title>Claude Fable 5 and Mythos 5 are here.</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Tue, 09 Jun 2026 19:55:09 +0000</pubDate>
      <link>https://dev.to/jatniel/claude-fable-5-and-mythos-5-are-here-22fe</link>
      <guid>https://dev.to/jatniel/claude-fable-5-and-mythos-5-are-here-22fe</guid>
      <description>&lt;p&gt;Claude Fable 5 and Mythos 5 are here.&lt;/p&gt;

&lt;p&gt;Same model, two names. What sets them apart isn’t capability, but guardrails.&lt;/p&gt;

&lt;p&gt;Fable 5 is available to everyone. Mythos 5 remains restricted to Project Glasswing partners, with some safeguards removed in specific domains.&lt;/p&gt;

&lt;p&gt;The detail that matters for developers: this isn’t a model that burns through tokens. Quite the opposite.&lt;/p&gt;

&lt;p&gt;On a spreadsheet benchmark suite, it outperforms Opus 4.8 at every effort level, using fewer turns and completing tasks 25–30% faster.&lt;/p&gt;

&lt;p&gt;It’s included at no extra cost for Pro, Max, Team, and Enterprise users until June 22. After that, it switches to usage-based pricing.&lt;/p&gt;

&lt;p&gt;They’re giving you the most powerful model they’ve ever released… for two weeks. Enjoy it while it lasts—on June 23, the free ride is over.&lt;/p&gt;

&lt;p&gt;Definitely worth testing properly before forming an opinion. 🧐&lt;/p&gt;

&lt;p&gt;Original post : &lt;a href="https://www.anthropic.com/news/claude-fable-5-mythos-5" rel="noopener noreferrer"&gt;Claude Fable 5 and Claude Mythos 5&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Jatniel&lt;br&gt;
Senior freelance PHP developer. Symfony, Laravel, PrestaShop.&lt;br&gt;
Web applications, REST APIs, and e-commerce.&lt;br&gt;
&lt;a href="https://jatniel.dev" rel="noopener noreferrer"&gt;jatniel.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Six months of AI in 2026, and a whole lot of noise</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Sun, 07 Jun 2026 20:51:35 +0000</pubDate>
      <link>https://dev.to/jatniel/six-months-of-ai-in-2026-and-a-whole-lot-of-noise-23lg</link>
      <guid>https://dev.to/jatniel/six-months-of-ai-in-2026-and-a-whole-lot-of-noise-23lg</guid>
      <description>&lt;p&gt;This week, two major players also hit the brakes and changed their tune.&lt;/p&gt;

&lt;p&gt;Six months of AI in 2026, and honestly, things went off in every direction. Almost every week, a new model promising to "change everything": GPT-5.4 and 5.5, Claude Opus 4.6 through 4.8, Gemini 3.5 Flash, Kimi, DeepSeek V4, MiniMax M3, Gemma 4.&lt;/p&gt;

&lt;p&gt;But under the marketing, the real shift is somewhere else: we moved from the chatbot that answers to the agent that actually does things. And it comes with a bill. GitHub Copilot just switched to usage-based pricing, and part of the community is freaking out over the prices.&lt;/p&gt;

&lt;p&gt;The part that stuck with me, though, is the turn this week. Anthropic is now calling for an industry-wide pause, and Sam Altman, who warned a year ago that AI would wipe out junior jobs, now admits he was "pretty wrong." &lt;br&gt;
The idea taking hold isn't "AI is going to take your job." It's more uncomfortable: AI is going to change which parts of your job actually have value.&lt;/p&gt;

&lt;p&gt;I broke down the full six months, the dates, the sources, and what it actually means for us as devs, in the full article.&lt;/p&gt;

&lt;p&gt;Read the whole thing here: &lt;a href="https://jatniel.dev/en/bytes/six-months-of-ai-in-2026-and-a-whole-lot-of-noise?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=six-months-ai-2026" rel="noopener noreferrer"&gt;https://jatniel.dev/en/bytes/six-months-of-ai-in-2026-and-a-whole-lot-of-noise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If it resonates, feel free to share it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>news</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Claude Opus 4.8: what actually changes when you code for real</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Thu, 28 May 2026 21:33:13 +0000</pubDate>
      <link>https://dev.to/jatniel/claude-opus-48-what-actually-changes-when-you-code-for-real-2ap4</link>
      <guid>https://dev.to/jatniel/claude-opus-48-what-actually-changes-when-you-code-for-real-2ap4</guid>
      <description>&lt;p&gt;&lt;a href="https://jatniel.dev/en/bytes/claude-opus-48-what-actually-changes-when-you-code-for-real" rel="noopener noreferrer"&gt;Anthropic has just released Claude Opus 4.8.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The price stays the same, Claude Code gets a few new features, and the overall message is pretty clear: better coding reliability, stronger support for long-running tasks, and more useful agents for complex workflows.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I would not call it a revolution.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But as a developer, there are a few things here that are definitely worth looking at.&lt;/p&gt;

&lt;p&gt;Reliability is becoming the real topic&lt;/p&gt;

&lt;p&gt;The part that caught my attention the most is this: according to Anthropic, Opus 4.8 is about 4 times less likely to miss a bug in code it has just written.&lt;/p&gt;

&lt;p&gt;There is another point I find even more important: the model seems better at saying when it is unsure, instead of confidently telling you that everything is fine.&lt;/p&gt;

&lt;p&gt;When you work with AI-generated code on a regular basis, that matters.&lt;/p&gt;

&lt;p&gt;I would much rather have a model say “this needs review” than one that is wrong with perfect confidence.&lt;/p&gt;

&lt;p&gt;Effort control&lt;/p&gt;

&lt;p&gt;Another interesting addition is effort control.&lt;/p&gt;

&lt;p&gt;Next to the model selector, you can now choose how deeply you want Claude to work on a task. By default, &lt;a href="https://www.anthropic.com/news/claude-opus-4-8?utm_content=hero_cta&amp;amp;utm_source=it&amp;amp;utm_medium=email&amp;amp;utm_campaign=2026_Q2_PMM_MKTG_Claude_Code_Newsletter_May_2026&amp;amp;utm_term=claude_code&amp;amp;utm_campaignId=18319166" rel="noopener noreferrer"&gt;Opus 4.8&lt;/a&gt; runs in high mode, but you can push it to extra or max for more complex work.&lt;/p&gt;

&lt;p&gt;The idea is practical: not every task needs the same level of reasoning.&lt;/p&gt;

&lt;p&gt;For a small fix, you do not need to bring out the heavy machinery.&lt;/p&gt;

&lt;p&gt;For a delicate refactor, a technical migration, or an agent working for a long time across a codebase, asking for more depth can make sense.&lt;/p&gt;

&lt;p&gt;That said, it is important not to confuse things: this setting does not replace choosing the right model. It changes how Opus approaches a specific task.&lt;/p&gt;

&lt;p&gt;React more : &lt;a href="https://jatniel.dev/en/bytes/claude-opus-48-what-actually-changes-when-you-code-for-real" rel="noopener noreferrer"&gt;Claude Opus 4.8: what actually changes when you code for real&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Mon, 22 Sep 2025 15:01:53 +0000</pubDate>
      <link>https://dev.to/jatniel/-5dp9</link>
      <guid>https://dev.to/jatniel/-5dp9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-custom-admin-routes-1176" class="crayons-story__hidden-navigation-link"&gt;New in EasyAdmin: Custom Admin Routes&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/javiereguiluz" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F149151%2F680f65e7-3fa6-45ee-a2c9-769d1f2472dc.png" alt="javiereguiluz profile" class="crayons-avatar__image" width="400" height="400"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/javiereguiluz" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Javier Eguiluz
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Javier Eguiluz
                
                
              
              &lt;div id="story-author-preview-content-2858959" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/javiereguiluz" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F149151%2F680f65e7-3fa6-45ee-a2c9-769d1f2472dc.png" class="crayons-avatar__image" alt="" width="400" height="400"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Javier Eguiluz&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-custom-admin-routes-1176" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 22 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-custom-admin-routes-1176" id="article-link-2858959"&gt;
          New in EasyAdmin: Custom Admin Routes
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/easyadmin"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;easyadmin&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/symfony"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;symfony&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/php"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;php&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-custom-admin-routes-1176" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;18&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/javiereguiluz/new-in-easyadmin-custom-admin-routes-1176#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>easyadmin</category>
      <category>symfony</category>
      <category>php</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jatniel Guzmán</dc:creator>
      <pubDate>Mon, 22 Sep 2025 14:54:33 +0000</pubDate>
      <link>https://dev.to/jatniel/-2emo</link>
      <guid>https://dev.to/jatniel/-2emo</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/arasosman/php-developer-salary-guide-2025-3d2e" class="crayons-story__hidden-navigation-link"&gt;PHP Developer Salary Guide 2025&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/arasosman" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F235373%2F4a6213e5-520e-4812-9d24-7f613c0c64b1.png" alt="arasosman profile" class="crayons-avatar__image" width="420" height="420"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/arasosman" class="crayons-story__secondary fw-medium m:hidden"&gt;
              arasosman
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                arasosman
                
                
              
              &lt;div id="story-author-preview-content-2776228" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/arasosman" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F235373%2F4a6213e5-520e-4812-9d24-7f613c0c64b1.png" class="crayons-avatar__image" alt="" width="420" height="420"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;arasosman&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/arasosman/php-developer-salary-guide-2025-3d2e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 15 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/arasosman/php-developer-salary-guide-2025-3d2e" id="article-link-2776228"&gt;
          PHP Developer Salary Guide 2025
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/php"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;php&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/arasosman/php-developer-salary-guide-2025-3d2e" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;21&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/arasosman/php-developer-salary-guide-2025-3d2e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            9 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>php</category>
    </item>
  </channel>
</rss>
