<?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: Aditya Agarwal</title>
    <description>The latest articles on DEV Community by Aditya Agarwal (@adioof).</description>
    <link>https://dev.to/adioof</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%2F2760047%2F17358ceb-daca-46e9-9a88-1904b8402d3f.jpg</url>
      <title>DEV Community: Aditya Agarwal</title>
      <link>https://dev.to/adioof</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adioof"/>
    <language>en</language>
    <item>
      <title>Anthropic hid tracking signals in Unicode apostrophes. That's not telemetry, that's steganography.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Wed, 01 Jul 2026 15:38:04 +0000</pubDate>
      <link>https://dev.to/adioof/anthropic-hid-tracking-signals-in-unicode-apostrophes-thats-not-telemetry-thats-steganography-2p3e</link>
      <guid>https://dev.to/adioof/anthropic-hid-tracking-signals-in-unicode-apostrophes-thats-not-telemetry-thats-steganography-2p3e</guid>
      <description>&lt;p&gt;Your coding assistant is hiding secrets in punctuation marks. Let me explain why that should make you uncomfortable.&lt;/p&gt;

&lt;p&gt;Anthropic's Claude Code — a tool that runs with &lt;strong&gt;shell access on your machine&lt;/strong&gt; — was caught embedding invisible tracking signals inside its own system prompts. Not in logs. Not in headers. In the shape of apostrophe characters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Happened
&lt;/h2&gt;

&lt;p&gt;Claude Code used &lt;strong&gt;Unicode apostrophe variations&lt;/strong&gt; and subtle date format changes as covert markers in system prompts. Think of it like a watermark you can't see with the naked eye.&lt;/p&gt;

&lt;p&gt;These markers were reportedly triggered by specific conditions. Routing requests through competing AI provider domains. Using a Chinese timezone. Possibly other signals we haven't found yet.&lt;/p&gt;

&lt;p&gt;The key detail: &lt;strong&gt;none of this was visible during normal use.&lt;/strong&gt; You'd only discover it by doing deep inspection of the raw prompt content, comparing character encodings byte by byte. That's not telemetry with a toggle in settings. That's steganography — hiding data inside data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Isn't Just Another Privacy Debate
&lt;/h2&gt;

&lt;p&gt;I want to be precise about what bothers me here. Every SaaS product phones home. Every analytics SDK tracks usage. That's a known trade.&lt;/p&gt;

&lt;p&gt;This is different for two reasons:&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Claude Code has shell access.&lt;/strong&gt; It reads your files, runs your commands, touches your codebase. The trust bar for a tool like that isn't "normal app" — it's "root-level."&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;The tracking was deliberately hidden.&lt;/strong&gt; Not in a config file. Not behind a flag. Buried in Unicode character choices that look identical on screen. That's not oversight. That's a design decision someone made on purpose.&lt;/p&gt;

&lt;p&gt;If your IDE secretly swapped semicolons with visually identical Unicode variants to fingerprint your code, you'd call it malware. When an AI coding tool does the same thing with apostrophes, we're supposed to shrug?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pricing Angle Makes It Worse
&lt;/h2&gt;

&lt;p&gt;Here's what gets me. The $20 Claude Pro plan offers at least five times more usage than the free tier, but many users find its limits insufficient for intensive coding work.&lt;/p&gt;

&lt;p&gt;You need at least the Max plan to get meaningful daily value from Claude Code. So you're paying a premium for a power tool, and that premium tool is &lt;strong&gt;covertly fingerprinting your prompts&lt;/strong&gt; to detect how you're routing your API calls.&lt;/p&gt;

&lt;p&gt;You're not the freeloader in this equation. You're the paying customer being surveilled.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community Response Is Too Quiet
&lt;/h2&gt;

&lt;p&gt;This should be a five-alarm fire in developer circles. A tool with filesystem and shell access is embedding invisible markers to detect usage patterns — and the conversation is weirdly muted.&lt;/p&gt;

&lt;p&gt;I think part of it is that the technique is genuinely clever and hard to explain. "Unicode apostrophe steganography" doesn't fit in a tweet as cleanly as "they sold your data." But the implications are worse.&lt;/p&gt;

&lt;p&gt;→ If they hid &lt;strong&gt;this&lt;/strong&gt;, what else is encoded that nobody's found yet?&lt;br&gt;
→ If detection triggers on timezone or domain, what &lt;strong&gt;action&lt;/strong&gt; follows detection?&lt;br&gt;
→ If the markers are invisible by design, how do you audit a tool you can't fully inspect?&lt;/p&gt;

&lt;p&gt;The precedent this sets is brutal. Every AI coding tool now has implicit permission to embed covert signals in the content layer, because Anthropic did it and the sky didn't fall. 🔥&lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Leaves Us
&lt;/h2&gt;

&lt;p&gt;I'm not saying burn it all down. I use Claude Code daily. It's genuinely good at what it does.&lt;/p&gt;

&lt;p&gt;But trust in developer tools is binary. You either believe the tool is doing only what it says, or you don't. Invisible Unicode fingerprinting pushed us across that line, and getting back requires more than a blog post — it requires &lt;strong&gt;verifiable transparency&lt;/strong&gt; about every marker, every trigger, and every consequence. 🛡️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So here's my question:&lt;/strong&gt; If you found out your AI coding assistant was embedding invisible tracking signals in its own prompts, would you keep using it? And if yes — what &lt;em&gt;would&lt;/em&gt; be your line?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>trust</category>
      <category>anthropic</category>
    </item>
    <item>
      <title>100k lines of TypeScript to Rust via LLM is not a port. It's a mess with a demo.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Tue, 30 Jun 2026 13:10:15 +0000</pubDate>
      <link>https://dev.to/adioof/100k-lines-of-typescript-to-rust-via-llm-is-not-a-port-its-a-mess-with-a-demo-fa6</link>
      <guid>https://dev.to/adioof/100k-lines-of-typescript-to-rust-via-llm-is-not-a-port-its-a-mess-with-a-demo-fa6</guid>
      <description>&lt;p&gt;A person boasted that they converted 100k lines of TypeScript to Rust in a month with the help of an LLM. Now, folks are treating this accomplishment as if it’s some phenomenal leap.&lt;/p&gt;

&lt;p&gt;No, it's not real. It's a mass hallucination with a compile step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Keeps Coming Up
&lt;/h2&gt;

&lt;p&gt;The idea is certainly appealing. You just need to direct an AI to your codebase, leave it to process throughout the night, and next morning you have a new polished Rust rewrite. It's faster, safer, and more memory-efficient. What else could you ask for?&lt;/p&gt;

&lt;p&gt;However, there is an uncomfortable truth that not many people talk about: &lt;strong&gt;functional code is not equivalent to working code.&lt;/strong&gt; Certainly, the Rust compiler is very unforgiving. It will catch all of your memory errors. But it will not catch errors in your business logic. It will not catch silent corruption in your data. It will not catch that pesky off-by-one error hiding right behind that perfectly reasonable match arm.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Test Suite Problem
&lt;/h2&gt;

&lt;p&gt;This is the part that's hardest for me to accept. Whenever you're transferring 100k lines of any code from one thing to another, the first element you transfer is the test suite. Not the application code. The tests.&lt;/p&gt;

&lt;p&gt;→ Tests are the &lt;strong&gt;specification&lt;/strong&gt;. Without them, you have no way to verify the port is correct.&lt;br&gt;
→ Tests catch the subtle behavioral differences between languages — how they handle nulls, floats, async boundaries.&lt;br&gt;
→ Tests are what turn "it compiles" into "it actually does the same thing."&lt;/p&gt;

&lt;p&gt;Nobody in these viral stories talks about porting the tests first. Because that's the boring, hard, unglamorous part. And because LLMs are terrible at it — test logic is deeply coupled to runtime behavior that the model has never observed.&lt;/p&gt;

&lt;p&gt;If there is no ported test suite, it essentially means that there is no ported application either.&lt;/p&gt;

&lt;h2&gt;
  
  
  LLMs Don't Translate. They Improvise.
&lt;/h2&gt;

&lt;p&gt;There's a subtle danger nobody tells you about. If you ask an LLM to translate TypeScript into Rust, it won't perform a faithful translation. It will &lt;em&gt;reinterpret&lt;/em&gt;. It will &lt;em&gt;optimize&lt;/em&gt;. It will perceive a familiar pattern and replace it with what it believes to be the idiomatic Rust equivalent.&lt;/p&gt;

&lt;p&gt;Occasionally, that's acceptable. Occasionally, it modifies error handling behavior without you noticing. Occasionally, it adjusts the asynchronous flow in a functionally distinct manner when the system is under heavy load. Occasionally, it excludes a particular scenario because it was deemed unnecessary based on the training data. 🫠&lt;/p&gt;

&lt;p&gt;These are not compilation errors. These are bugs you get in production at 3 AM because a particular combination of inputs triggered a code path that the Learning Model 'thought' needed to be “cleaned up.”&lt;/p&gt;

&lt;p&gt;A human porter will ask questions for clarification if they don't understand something. In contrast, an LLM will simply produce a whole lot of plausible garbage and proceed to the next document.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Demo Trap
&lt;/h2&gt;

&lt;p&gt;The scariest part? These ports often &lt;em&gt;demo perfectly&lt;/em&gt;. The happy path works. The basic API calls return the right shapes. You can stand on a stage or record a screen share and it looks incredible.&lt;/p&gt;

&lt;p&gt;This is because LLMs have been designed to perform this task precisely- generating an output that seems accurate for a human reader. The bugs are in the infrequent cases- the edge situations, the race problems, the strange state changes that could only be detected by your test suite (the one that was not transferred).&lt;/p&gt;

&lt;p&gt;I've seen this pattern before with regular code generation. The code looks clean. It even looks &lt;em&gt;better&lt;/em&gt; than what a human would write. And then you trace a bug for two days and realize the AI invented a function signature that doesn't match the actual contract. 😅&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Real Port Looks Like
&lt;/h2&gt;

&lt;p&gt;A true port is not exciting. It's very systematic. It goes module by module with tests running green at every step. Converting 100k lines of code in a real port isn't something you do in a matter of weeks either. It involves humans making judgment calls about architectural differences between the source and target language.&lt;/p&gt;

&lt;p&gt;→ Port the tests first&lt;br&gt;
→ Port module by module, validating against those tests&lt;br&gt;
→ Flag every spot where language semantics diverge&lt;br&gt;
→ Accept that some things need to be &lt;strong&gt;redesigned&lt;/strong&gt;, not translated&lt;/p&gt;

&lt;p&gt;That's not a sexy story. It doesn't go viral. But it produces software that actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Question
&lt;/h2&gt;

&lt;p&gt;I'm not anti-AI in code. I use LLMs daily. They're great for boilerplate, exploration, and rubber-ducking. But there's a canyon between "AI helped me write some Rust" and "AI ported our entire production codebase." 🔥&lt;/p&gt;

&lt;p&gt;Celebrating unverified ports as engineering achievements sets a dangerous precedent. It tells teams that rigor is optional if the vibes are right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So here's what I want to know: have you actually shipped an LLM-generated port to production? What broke first?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rust</category>
      <category>typescript</category>
      <category>programming</category>
    </item>
    <item>
      <title>100k lines of AI-ported Rust nobody can review is not an achievement</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Tue, 30 Jun 2026 10:09:12 +0000</pubDate>
      <link>https://dev.to/adioof/100k-lines-of-ai-ported-rust-nobody-can-review-is-not-an-achievement-3pf8</link>
      <guid>https://dev.to/adioof/100k-lines-of-ai-ported-rust-nobody-can-review-is-not-an-achievement-3pf8</guid>
      <description>&lt;p&gt;Someone ported 100k lines of TypeScript to Rust in a month using AI. They don't know Rust. People are calling it an achievement.&lt;/p&gt;

&lt;p&gt;I'm calling it a liability.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Claim
&lt;/h2&gt;

&lt;p&gt;Here's the setup. A developer fed a massive TypeScript codebase into an AI tool and got Rust out the other side. 100k lines. One month. Zero prior Rust experience.&lt;/p&gt;

&lt;p&gt;In theory, it all seems amazing. In practice, it raises a question nobody wants to ask: &lt;strong&gt;who reviews this code?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You Can't Review What You Can't Read
&lt;/h2&gt;

&lt;p&gt;This is the part that is so painful. If you are not familiar with Rust, you didn’t really port anything, you just told a machine to produce output in a language you are unable to assess.&lt;/p&gt;

&lt;p&gt;That isn't engineering at all. It's more like a trust exercise using a random text generator.&lt;/p&gt;

&lt;p&gt;Skilled Rust developers who reviewed the output raised red flags right away. The excessive use of &lt;code&gt;Arc&amp;lt;Mutex&amp;lt;...&amp;gt;&amp;gt;&lt;/code&gt; wrappers – a common anti-pattern indicating a lack of understanding of Rust's ownership system, where everything is wrapped in thread-safe reference counting simply to silence the compiler. The code compiles. It runs. But the essence of using Rust is lost.&lt;/p&gt;

&lt;p&gt;→ Rust's value is zero-cost abstractions and compile-time safety guarantees&lt;br&gt;
→ Slapping &lt;code&gt;Arc&amp;lt;Mutex&amp;lt;&amp;gt;&amp;gt;&lt;/code&gt; on everything turns Rust into a slower, harder-to-read Go&lt;br&gt;
→ The compiler stops complaining, but the architecture is lying to you&lt;/p&gt;

&lt;h2&gt;
  
  
  No Tests, No Port
&lt;/h2&gt;

&lt;p&gt;Here's the other thing. &lt;strong&gt;No test suite was ported first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just think about it for a moment. You are in possession of 100k lines of code that were automatically generated using a language that is foreign to you, and you don't have a tool to automatically check if the behavior is similar to the original one. Is it functional? You can't be sure. You just have to believe it.&lt;/p&gt;

&lt;p&gt;The first step in a true port is to have tests. You transfer the test suite, then you transfer the implementation, then you execute the tests. This might not be the most exciting or glamorous process, but it is the most effective one. It's also the only version that actually works.&lt;/p&gt;

&lt;p&gt;If there are no tests, you basically end up with 100k lines of unverified Rust code that no team member can update. It's not really a port. It's just accumulating technical debt that happens to have a Rust logo on it. 🦀&lt;/p&gt;

&lt;h2&gt;
  
  
  The Actual Risk
&lt;/h2&gt;

&lt;p&gt;I’m not against AI code generation. I use it every day. But there’s a huge difference between using AI as a tool to speed up things when you get what the results are and using AI as a substitute for getting the results.&lt;/p&gt;

&lt;p&gt;When an issue occurs in that 100k-line codebase — and it's inevitable — a person must debug Rust. Not "request AI to debug Rust." You have to read the borrow checker errors, comprehend the lifetime annotations, follow the ownership graph. If there's no one on the team able to handle that, you're screwed iterating errors through the AI and crossing your fingers.&lt;/p&gt;

&lt;p&gt;→ AI-generated code you understand is a productivity multiplier&lt;br&gt;
→ AI-generated code you don't understand is a time bomb&lt;br&gt;
→ The explosion is just deferred, not prevented&lt;/p&gt;

&lt;h2&gt;
  
  
  Speed Is Not the Flex You Think It Is
&lt;/h2&gt;

&lt;p&gt;Though the caption reads "One month", a blitzkrieg approach devoid of understanding isn't really speed; it's movement.&lt;/p&gt;

&lt;p&gt;I've seen teams rewrite systems in half the time by cutting scope ruthlessly and understanding every line. Conversely, I have seen teams "move fast" for the same amount of time and then struggle for the next two years. The second group always started out bragging about speed too.&lt;/p&gt;

&lt;p&gt;The flashy version of this would be: “I used magic AI to learn Rust and port 20k critical lines in three months with a single test failing but it was right. Then a griffin delivered my performance improvements.” But that’s boring. And also how it works. 💡&lt;/p&gt;

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

&lt;p&gt;Writing code is no longer difficult. &lt;strong&gt;Understanding code is the hard part.&lt;/strong&gt; It always was, honestly. AI just made it possible to skip the understanding step at scale, which means the consequences of skipping it also scale.&lt;/p&gt;

&lt;p&gt;If your team can't review it, maintain it, and debug it at 3 AM when production is down — you didn't ship an achievement. You shipped a future incident report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your bar for "good enough" when it comes to AI-generated code in a language the team doesn't know?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rust</category>
      <category>typescript</category>
      <category>codequality</category>
    </item>
    <item>
      <title>100k lines of TypeScript to Rust with zero Rust experience. That's not engineering.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Mon, 29 Jun 2026 19:13:46 +0000</pubDate>
      <link>https://dev.to/adioof/100k-lines-of-typescript-to-rust-with-zero-rust-experience-thats-not-engineering-3ii4</link>
      <guid>https://dev.to/adioof/100k-lines-of-typescript-to-rust-with-zero-rust-experience-thats-not-engineering-3ii4</guid>
      <description>&lt;p&gt;Someone ported 100k lines of TypeScript to Rust in a month using Claude. They had zero Rust experience. And honestly? I can't stop thinking about it.&lt;/p&gt;

&lt;p&gt;The developer then used differential fuzzing — the process of throwing random data at two versions of a program and comparing the results — 2.3 million battle simulations no less, to validate that the Rust output matched the original TypeScript behaviour. The vast majority of tests passed. The code was finished. The internet lost its collective shit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Hit a Nerve
&lt;/h2&gt;

&lt;p&gt;This is a divisive tale for developers. On one side, "It runs, the tests pass, what does it matter how it was written?" On the other, "You don't &lt;em&gt;know&lt;/em&gt; Rust. You're just using a photocopier."&lt;/p&gt;

&lt;p&gt;Both camps have a point. Neither wants to admit it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passing Tests ≠ Understanding Code
&lt;/h2&gt;

&lt;p&gt;Here's what I find annoying. The validation strategy itself was actually quite clever. Doing differential fuzzing over millions of runs is not a lazy hack. That is real engineering effort put into the &lt;em&gt;validation&lt;/em&gt; stage.&lt;/p&gt;

&lt;p&gt;However, verifying something and understanding it are two different things.&lt;/p&gt;

&lt;p&gt;→ Can this developer debug a borrow checker issue at 2am without Claude?&lt;br&gt;
→ Can they reason about unsafe blocks or lifetime annotations under pressure?&lt;br&gt;
→ Can they make &lt;em&gt;architectural&lt;/em&gt; decisions in Rust that Claude wouldn't suggest?&lt;/p&gt;

&lt;p&gt;If your answer is no, then what precisely shall be the outcome when that AI-generated code runs into that edge case which wasn't covered by 2.3 million fuzzing runs? You're not an engineer in that language. You're a QA pipeline with a very expensive compiler.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "It Works" Trap
&lt;/h2&gt;

&lt;p&gt;I understand the counterargument. We don't gatekeep people using StackOverflow. We don't test every JavaScript developer's knowledge of the event loop before allowing them to push to the main. Tooling has always been part of engineering.&lt;/p&gt;

&lt;p&gt;However, there's a distinction between utilizing tools to enhance comprehension and relying on tools to completely substitute it. A carpenter using a nail gun still knows the location of the studs. This seems more akin to someone having instructed a robot to construct a house then checked if the doors can open. 🏠&lt;/p&gt;

&lt;p&gt;The doors might open fine. Until there's an earthquake.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Actually Proves
&lt;/h2&gt;

&lt;p&gt;The real story isn't "AI can port languages." We already knew that. The real story is that &lt;strong&gt;testing infrastructure might matter more than language expertise now.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's either thrilling or terrifying depending on your perspective.&lt;/p&gt;

&lt;p&gt;→ If you're a Rust purist who spent years mastering ownership semantics — this feels like a slap.&lt;br&gt;
→ If you're a startup founder who needs a working port yesterday — this feels like a miracle.&lt;br&gt;
→ If you're an engineer thinking about career longevity — this is a fire alarm. 🔥&lt;/p&gt;

&lt;p&gt;The developer didn't learn Rust. They learned how to assure that Rust output is correct. Those are radically separate skills. And the industry has yet to resolve which it finds more important.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Middle Ground
&lt;/h2&gt;

&lt;p&gt;I wouldn't call this developer a cheater. You need actual knowledge to create a fuzzing harness that can execute 2.3 million simulations. People don't appreciate enough the expertise required to determine both &lt;em&gt;what&lt;/em&gt; and &lt;em&gt;how&lt;/em&gt; to test something.&lt;/p&gt;

&lt;p&gt;However, I believe that the statement “I ported 100k lines to Rust” does not have the same meaning as before. There is a caveat to that sentence now. Actually, there might be a caveat to every sentence regarding engineering output nowadays.&lt;/p&gt;

&lt;p&gt;We are all experiencing a lot of changes. The developers who thrive won't be the ones who gatekeep &lt;em&gt;or&lt;/em&gt; the ones who blindly trust AI output. They'll be the ones who know exactly where the AI's confidence ends and their own judgment needs to begin.&lt;/p&gt;

&lt;p&gt;Well, that line is more unclear than what we are willing to believe. 🤷&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So here's my question: if AI-generated code passes every test you can throw at it, does it matter that no human understands it?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rust</category>
      <category>programming</category>
      <category>debate</category>
    </item>
    <item>
      <title>AI didn't commoditize software. It commoditized confidence.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Mon, 29 Jun 2026 16:10:28 +0000</pubDate>
      <link>https://dev.to/adioof/ai-didnt-commoditize-software-it-commoditized-confidence-4fp3</link>
      <guid>https://dev.to/adioof/ai-didnt-commoditize-software-it-commoditized-confidence-4fp3</guid>
      <description>&lt;p&gt;Nowadays, everyone believes they are capable of delivering production software. This is the actual disruption - it's not about the code, it's about the confidence people have.&lt;/p&gt;

&lt;p&gt;Pieter Levels made a post on X that went viral. In it, he mentioned how AI was turning software into a commodity, and shared that he’d been canceling a bunch of SaaS subscriptions and instead building small custom solutions for himself using AI. The reactions to that post were like lightning. Indie hackers the world over suddenly started muttering: wait, why exactly am I paying for that? I could just build it myself.&lt;/p&gt;

&lt;p&gt;It's a fair question. It's also a dangerous one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The demo is the easy part
&lt;/h2&gt;

&lt;p&gt;AI has made it stupidly easy to get something working. You can go from idea to functional prototype in an afternoon. That's genuinely incredible.&lt;/p&gt;

&lt;p&gt;The thing is, a "functional prototype" and something you can actually put into production is a different story altogether. And AI just handed everyone a running start toward the edge of that canyon.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Figma actually is
&lt;/h2&gt;

&lt;p&gt;Consider Figma for a moment. It is more than just "a design tool." It encompasses many years of addressing edge cases for live collaboration over unstable networks. It's conflict resolution when two people edit the same frame. It's accessibility compliance, enterprise SSO, version history that actually works, and a plugin ecosystem with thousands of integrations.&lt;/p&gt;

&lt;p&gt;You can build a design tool demo in a weekend. You cannot build Figma. The gap between those two things is measured in &lt;em&gt;years&lt;/em&gt; and &lt;em&gt;hundreds of engineers&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Salesforce is in the same boat. Everyone loathes it. Everyone believes they can build something to replace it. Nobody who's tried has come away thinking it was simple. The product isn't the UI — it's the decade of workflow edge cases baked into every dropdown menu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI-generated code actually breaks
&lt;/h2&gt;

&lt;p&gt;Here's the pattern I keep seeing. AI-generated code works great in isolation. One API, one database, one happy path. 🎉&lt;/p&gt;

&lt;p&gt;Afterward, you establish a connection with a second system. Subsequently, a third one. Soon after, you have to manage retrying, partial crashes, expiry of auth tokens, rate limitations, and ensuring data consistency among services, as well as dealing with the vendor's API that, for some unknown cause, returns XML solely on Tuesdays.&lt;/p&gt;

&lt;p&gt;AI-generated code may still not work for such complex multi-system integrations. Not because the models are bad -- they are scarily good at isolated problems. But real-world software is not an isolated problem. It is a thousand isolated problems duct taped together with error handling and prayers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Confidence is the actual product now
&lt;/h2&gt;

&lt;p&gt;Here's my interpretation of what really transpired. AI did not actually make it easier to build software. It just gave the impression that software development was becoming easier.&lt;/p&gt;

&lt;p&gt;It's essential. Very important.&lt;/p&gt;

&lt;p&gt;When a compelling demo can be created at no cost, it becomes challenging for people to appreciate the efforts put in &lt;em&gt;after&lt;/em&gt; the demo. The unglamorous work. The monitoring. The migrations. The "a customer in Japan found a bug that only happens with double-byte characters in the billing address" type work.&lt;/p&gt;

&lt;p&gt;The gap between a demo and an actual product has always existed. AI just made it invisible to anyone who hasn't crossed it before. 😅&lt;/p&gt;

&lt;h2&gt;
  
  
  So what do we actually do with this?
&lt;/h2&gt;

&lt;p&gt;I'm not trying to imply that AI tools are negative. As a matter of fact, I rely on them all the time. They've changed how I work in ways I genuinely love.&lt;/p&gt;

&lt;p&gt;However, I've observed a change in the narrative. People are associating "I built a working thing" with "I built a product." They are not identical statements.&lt;/p&gt;

&lt;p&gt;The skill that matters most right now isn't prompting or vibe-coding. It's &lt;strong&gt;knowing what you don't know&lt;/strong&gt; — recognizing when your working demo is 5% of the actual problem.&lt;/p&gt;

&lt;p&gt;→ The demo proves the concept.&lt;br&gt;
→ The product proves you understand the edge cases.&lt;br&gt;
→ The business proves you can maintain it at 3 AM when something breaks.&lt;/p&gt;

&lt;p&gt;AI made the first step a commodity but the other two are still as costly as ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the widest gap you've seen between a demo and the actual production version?&lt;/strong&gt; I'd love to hear war stories.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>startup</category>
      <category>opinion</category>
    </item>
    <item>
      <title>AI didn't kill developer joy. Managers who mandate AI did.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Sun, 28 Jun 2026 19:10:47 +0000</pubDate>
      <link>https://dev.to/adioof/ai-didnt-kill-developer-joy-managers-who-mandate-ai-did-2ee0</link>
      <guid>https://dev.to/adioof/ai-didnt-kill-developer-joy-managers-who-mandate-ai-did-2ee0</guid>
      <description>&lt;p&gt;The posts that say "I don’t feel like a developer anymore" are not about AI. They’re about your boss reading one thread on LinkedIn and deciding everyone on the team needs to completely change how they work.&lt;/p&gt;

&lt;p&gt;I often see this confused. Programmers who voice existential dread are mixed up with "anti-AI luddites." However, if you look at the conversations carefully, it’s not about "this tool exists." It’s more about "my manager mandated this tool for everything, and now my work is meaningless."&lt;/p&gt;

&lt;h2&gt;
  
  
  The real complaint isn't about Copilot
&lt;/h2&gt;

&lt;p&gt;A post that went viral entitled “Don’t feel like a developer anymore after AI” has received thousands of responses across developer communities. The feeling is widespread. People are saying they’ve been reduced to monitoring and checking AI work.&lt;/p&gt;

&lt;p&gt;But here's what I notice in those threads. The devs who feel worst aren't the ones experimenting with AI on their own terms. They're the ones whose managers mandated AI-first workflows without asking what problems actually needed solving.&lt;/p&gt;

&lt;p&gt;There's a difference between "I chose this tool because it helps me" and "my skip-level saw a demo and now we have an AI-output quota." 🙃&lt;/p&gt;

&lt;h2&gt;
  
  
  Autonomy is the whole game
&lt;/h2&gt;

&lt;p&gt;Decades of research on developer productivity say the same thing. Autonomy over tools and process is the single biggest predictor of job satisfaction.&lt;/p&gt;

&lt;p&gt;→ Devs who choose AI tools feel empowered&lt;br&gt;
→ Devs who are told to use AI tools feel surveilled&lt;br&gt;
→ Same technology, completely different emotional outcome&lt;/p&gt;

&lt;p&gt;When a manager says "use AI to ship faster," what a developer hears is: "your craft doesn't matter, only throughput matters." That's not an AI problem. This issue has nothing to do with AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The identity crisis is real but misattributed
&lt;/h2&gt;

&lt;p&gt;There are developers who truly enjoy solving puzzles, designing architecture, debugging, and getting into the flow of writing code. But if you take all of that away and instead tell them to "review this AI slop and correct its hallucinations," it's definitely going to seem like a different job, because in reality, it is a different job.&lt;/p&gt;

&lt;p&gt;However, there is no compulsion to use them for personal projects. There is no compulsion for open source maintainers to accept AI generated PRs. The coercion is organizational not in the existence of the tool.&lt;/p&gt;

&lt;p&gt;The developers who are really winning with Ai right now? They chose when to leverage it for the boilerplate they despise writing. They chose when to ignore it and work on the fun stuff. They have control. 🎯&lt;/p&gt;

&lt;h2&gt;
  
  
  What managers get wrong
&lt;/h2&gt;

&lt;p&gt;The pattern I see everywhere:&lt;/p&gt;

&lt;p&gt;→ Manager reads "10x productivity with AI" article&lt;br&gt;
→ Manager mandates AI usage across the team&lt;br&gt;
→ No discussion about &lt;em&gt;which&lt;/em&gt; tasks benefit&lt;br&gt;
→ No acknowledgment that some work is better done by humans&lt;br&gt;
→ Developer satisfaction craters&lt;br&gt;
→ Manager blames developers for "resisting change"&lt;/p&gt;

&lt;p&gt;This is not an adoption strategy. It's cargo culting. And it is causing people to burn out faster than any tool ever could.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix is boring
&lt;/h2&gt;

&lt;p&gt;Give developers choice. Let them integrate AI where it helps &lt;em&gt;them&lt;/em&gt;. Measure outcomes, not tool adoption. Stop treating "uses Copilot" as a KPI.&lt;/p&gt;

&lt;p&gt;The developers who feel like developers again will be the ones whose managers trust them to decide when AI helps and when it doesn't. That's it. That's the whole insight. No framework needed. No transformation roadmap. Just trust. 💡&lt;/p&gt;

&lt;p&gt;It's not true that AI took away developer joy. The real reason was taking away developer autonomy. AI was just used as an excuse.&lt;/p&gt;




&lt;p&gt;Have you ever been forced to use AI tools in your job? Did it help — or did it make you feel like a code reviewer for a mediocre junior dev? Tell me all about it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>culture</category>
      <category>devlife</category>
    </item>
    <item>
      <title>AI didn't kill Tailwind UI. The lifetime license did.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Sun, 28 Jun 2026 10:08:53 +0000</pubDate>
      <link>https://dev.to/adioof/ai-didnt-kill-tailwind-ui-the-lifetime-license-did-26i7</link>
      <guid>https://dev.to/adioof/ai-didnt-kill-tailwind-ui-the-lifetime-license-did-26i7</guid>
      <description>&lt;p&gt;Everyone's saying AI killed Tailwind's business. I think that's the lazy take.&lt;/p&gt;

&lt;p&gt;Recently, about 75% of the Tailwind CSS engineering team was let go. The trendy explanation is that the framework was obviated by AI-generated code. In reality, the rot set in long before ChatGPT could ever write a &lt;code&gt;flex justify-center&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lifetime License Problem
&lt;/h2&gt;

&lt;p&gt;Tailwind UI was offered with a lifetime access option in exchange for a single payment. This was a fantastic offer for developers, but a very poor one for any business.&lt;/p&gt;

&lt;p&gt;Think about it. You charge someone once. Then you support them forever. Every bug fix, every new component, every compatibility update — that's cost with zero new revenue from existing customers.&lt;/p&gt;

&lt;p&gt;The only way to grow is to acquire &lt;em&gt;new&lt;/em&gt; customers. However, your market is limited. All developers who already purchased a license are users that you will never be able to monetize in the future.&lt;/p&gt;

&lt;p&gt;This is the slow bleed that kills dev tool companies. The thing they never even thought of but that was always somewhere in the minds of the existing team. It shows up as a gradual inability to fund the team that built the thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  shadcn Didn't Help
&lt;/h2&gt;

&lt;p&gt;After that shadcn/ui appeared and made a brutal offer of free, copy-paste components that rival the paid library of Tailwind UI.&lt;/p&gt;

&lt;p&gt;The traffic for Tailwind's documentation decreased by 40%, causing revenue to drop by about 80% as well. It may seem like a superficial number, but it actually reflects the overall success of the project. For a project that lives or dies on ecosystem mindshare, traffic &lt;em&gt;is&lt;/em&gt; the business.&lt;/p&gt;

&lt;p&gt;And this is the reality:&lt;/p&gt;

&lt;p&gt;→ Tailwind UI's one-time revenue model was already unsustainable&lt;br&gt;
→ shadcn/ui gave developers a free alternative with no friction&lt;br&gt;
→ AI autocomplete made both easier to use, reducing docs visits&lt;br&gt;
→ The layoffs became inevitable — AI just made a convenient scapegoat&lt;/p&gt;

&lt;p&gt;AI did not eat the lunch that Tailwind was going to have. shadcn just happened to bring a free lunch to the same cafeteria. And Tailwind had already used up the old lunch tickets.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Lesson for Dev Tools
&lt;/h2&gt;

&lt;p&gt;Every developer tool founder needs to be looking at this right now. One-time payments feel good, seem like they are in the best interest of the developer but they put you on a timer.&lt;/p&gt;

&lt;p&gt;Tools that survive in the long run typically take one of two approaches. They either transition to a subscription model (which is a painful process and developers usually hate it), or they create such a rich ecosystem in their paid tier that it grows faster than what is available for free and can be replicated.&lt;/p&gt;

&lt;p&gt;Tailwind CSS will continue to exist as an open-source utility framework. It’s used in millions of projects. However, Tailwind &lt;em&gt;the business&lt;/em&gt; required Tailwind UI to generate revenue forever from a model that was not built to do so.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Isn't Just About Tailwind
&lt;/h2&gt;

&lt;p&gt;I've seen this pattern before at every scale. A dev tool launches with a "pay once, own forever" pitch because it &lt;em&gt;feels&lt;/em&gt; right. Developers cheer. Revenue spikes. Then year two hits and growth flatlines because your TAM already bought in.&lt;/p&gt;

&lt;p&gt;Do you want to know the uncomfortable reality? Subscriptions are necessary because software is not a one-time product. It requires constant updates and maintenance that have real costs. Lifetime deals use future profits to fund current operations. 💸&lt;/p&gt;

&lt;p&gt;Adam Wathan and the Tailwind team built something genuinely great. This isn't a failure of engineering or vision. It's a business model that was always going to hit a wall. AI and shadcn just made the wall arrive faster.&lt;/p&gt;




&lt;p&gt;Next time a developer tool says 'lifetime license', you might want to consider if it's a good bargain, or if you're just seeing a business undercharging for their future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think — can one-time payment models ever work long-term for dev tools, or are they always a ticking clock?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>devtools</category>
      <category>business</category>
      <category>opensource</category>
    </item>
    <item>
      <title>r/programming banned LLM posts. 6.9 million devs just exhaled.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Sat, 27 Jun 2026 13:10:19 +0000</pubDate>
      <link>https://dev.to/adioof/rprogramming-banned-llm-posts-69-million-devs-just-exhaled-3cnk</link>
      <guid>https://dev.to/adioof/rprogramming-banned-llm-posts-69-million-devs-just-exhaled-3cnk</guid>
      <description>&lt;p&gt;The biggest programming subreddit just temporarily banned all LLM-related posts. 6.9 million developers didn't protest. They &lt;em&gt;thanked the mods&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The reaction speaks for itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Breaking Point
&lt;/h2&gt;

&lt;p&gt;The moderators were direct about it. They mentioned the volume, the quality collapse, and their own exhaustion as reasons. Every other post had become “I asked ChatGPT to build X” or “Why AI will replace your job in 18 months.”&lt;/p&gt;

&lt;p&gt;The comments were full of repeating the same things over and over. Nobody was learning anything new. They were just stuck.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everyone Uses It, Nobody Trusts It
&lt;/h2&gt;

&lt;p&gt;This is the statistic that I can't get out of my head: &lt;strong&gt;84% of developers are using or intending to use AI tools, while only 3% have a high level of trust in the results.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Read that again. We're all using the thing. Almost none of us believe it. That's not adoption — that's compulsion.&lt;/p&gt;

&lt;p&gt;The content flooding the programming communities followed a similar pattern:&lt;/p&gt;

&lt;p&gt;→ Hot take about AI replacing developers&lt;br&gt;
→ Tutorial that's basically "paste this into ChatGPT"&lt;br&gt;
→ Thought piece predicting the future with zero evidence&lt;br&gt;
→ Repeat, daily, forever&lt;/p&gt;

&lt;p&gt;None of it served a &lt;em&gt;purpose&lt;/em&gt;. It was information on information on information. A snake eating its own tail while writing a blog post about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ban Isn't Censorship, It's Hygiene
&lt;/h2&gt;

&lt;p&gt;For some individuals, this is being presented as resistance to progress. "You can't just ignore AI!" Sure. You also can't ignore a fire alarm, but you don't want it going off every thirty seconds when there's no fire.&lt;/p&gt;

&lt;p&gt;The signal-to-noise ratio became so low that real programming discussions – algorithms, performance, debugging stories – were being drowned in a sea of AI hype. The ban is not about sticking our heads in the sand. It’s about trying to keep a space where people still talk about code.&lt;/p&gt;

&lt;p&gt;Think about it. When's the last time you read an AI-in-programming post and genuinely changed how you work? Not felt vaguely anxious. Not bookmarked it and never returned. Actually &lt;em&gt;changed something&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem Is Incentives
&lt;/h2&gt;

&lt;p&gt;AI content is easy to produce. It gets clicks. It triggers emotions — fear, excitement, outrage. That's a perfect storm for flooding any community.&lt;/p&gt;

&lt;p&gt;At the same time, a well-thought-out post you write on database indexing strategies in hours will get a tiny fraction of the engagement. Something is broken in the system.&lt;/p&gt;

&lt;p&gt;This is what happens when platforms optimize for volume over value. Those who provide real value disengage, while the noisy ones who may not contribute constructively stay. It's a vicious circle until drastic measures are taken. And eventually someone has to pull the emergency brake.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Signals
&lt;/h2&gt;

&lt;p&gt;A 6.9-million-member community doesn't make this decision lightly. When they make such a decision, it is for a good reason:&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;Developers are fatigued&lt;/strong&gt;, not excited, by the AI content cycle&lt;br&gt;
→ &lt;strong&gt;Quality still matters&lt;/strong&gt; more than hype to working programmers&lt;br&gt;
→ &lt;strong&gt;Community trust is fragile&lt;/strong&gt; — flood it with noise and people check out&lt;/p&gt;

&lt;p&gt;I think we'll see more communities follow. Not because they're anti-AI, but because they're pro-signal. The developers who actually build things need spaces where "I shipped this" matters more than "AI will ship this for you someday." 🔧&lt;/p&gt;

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

&lt;p&gt;The ban holds up a mirror. It shows what millions of developers have tried to say but couldn’t find the words for. “We’re tired of hearing about AI and would like to go back to our programming now.” The irony of my writing that in an AI-adjacent post is not lost on me. But sometimes you just need to identify what it is to be able to turn the damn thing off.&lt;/p&gt;

&lt;p&gt;So here's my question: &lt;strong&gt;Has the flood of AI content in developer communities made you smarter, or just more anxious?&lt;/strong&gt; I have a feeling I know which way this one leans. 💬&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>React's real problem is corporate capture, not technical debt</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Sat, 27 Jun 2026 10:12:06 +0000</pubDate>
      <link>https://dev.to/adioof/reacts-real-problem-is-corporate-capture-not-technical-debt-24i4</link>
      <guid>https://dev.to/adioof/reacts-real-problem-is-corporate-capture-not-technical-debt-24i4</guid>
      <description>&lt;p&gt;Vercel not only took React in but took in the team that creates it. They hired the team that builds it, and now the library you depend on has a landlord. 🔑&lt;/p&gt;

&lt;p&gt;You should be more concerned about that than you are.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quiet Acquisition
&lt;/h2&gt;

&lt;p&gt;Vercel hired important React core team contributors, including Andrew Clark, Sebastian Markbåge, and other significant members who have a major influence on the future direction of React.&lt;/p&gt;

&lt;p&gt;There was no acquisition news. There was no antitrust review. One company simply hired the brains behind the most popular UI library on the planet, and we all just… kept coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Server Components: Feature or Funnel?
&lt;/h2&gt;

&lt;p&gt;When React Server Components were introduced, they were presented as the new revolutionary technology. The promise was attractive - reduced client-side JavaScript, improved performance, and an intelligent rendering approach.&lt;/p&gt;

&lt;p&gt;Well, the reality is that the most mature RSC implementation ready for production is in Next.js, although different frameworks have started to pop up that offer different levels of support. And, Next.js performs best on Vercel.&lt;/p&gt;

&lt;p&gt;→ React introduces a major new -shifting feature&lt;br&gt;
→ That feature is deeply integrated with one framework&lt;br&gt;
→ That framework is built by the company that employs the React team&lt;br&gt;
→ That company sells hosting optimized for that framework&lt;/p&gt;

&lt;p&gt;There is no need for a conspiracy theory. Just track the money flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Open Source" With an Asterisk
&lt;/h2&gt;

&lt;p&gt;React still uses the MIT license. No one disputes that. Open source, however, isn't just the license, it's also about governance.&lt;/p&gt;

&lt;p&gt;When one company controls the core team's paychecks, the roadmap stops being neutral. Features that benefit Vercel's infrastructure get prioritized. Features that don't? They wait. 😕&lt;/p&gt;

&lt;p&gt;Isn't it interesting? The React documentation suggests Next.js as one of the primary frameworks to use for new projects, among others. Not Create React App, Not Vite, but the framework that happens to be developed by the same company that employs the React team.&lt;/p&gt;

&lt;p&gt;That's not a suggestion. That's a sales funnel disguised as documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Beyond React
&lt;/h2&gt;

&lt;p&gt;I've seen this pattern before. A beloved open-source tool gets captured by a single vendor, and the community slowly loses its voice.&lt;/p&gt;

&lt;p&gt;The danger isn't that React becomes bad software. It probably won't. The danger is that React's evolution starts optimizing for one company's revenue instead of the broader community's needs.&lt;/p&gt;

&lt;p&gt;Developers working with React and tools like Remix, Astro, or plain Vite are likely noticing the shift mentioned above. While RSC support (React Server Components) anywhere outside Next.js varies from experimental to increasingly stable, Vite's official RSC plugin is feature-complete for core functionality. The “unopinionated library” is certainly becoming opinionated. And isn’t it a coincidence the opinions match those of one specific company’s product catalog?&lt;/p&gt;

&lt;h2&gt;
  
  
  What Would Healthy Governance Look Like?
&lt;/h2&gt;

&lt;p&gt;There have been suggestions about a React foundation, like Node.js joining the OpenJS Foundation after its governance crisis.&lt;/p&gt;

&lt;p&gt;→ An independent foundation with multiple corporate sponsors&lt;br&gt;
→ A public roadmap shaped by community RFC, not one company's sprint planning&lt;br&gt;
→ Core team members funded by a pool of stakeholders, not a single employer&lt;/p&gt;

&lt;p&gt;This isn't radical. It's how mature open-source projects survive corporate pressure. Linux, Kubernetes, and Node.js all went through versions of this.&lt;/p&gt;

&lt;p&gt;React has not. And nobody with the power to change that has any incentive to do so. 🤷&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;The main issue with React isn't class components or problematic useEffect, or even bundle sizes. It's the fact that the developers creating the library are employed by the organization that also provides you with hosting services.&lt;/p&gt;

&lt;p&gt;You can still love React and acknowledge this is a problem. I do. But pretending the current arrangement is fine because the code is technically open source is naive. The way it is managed is just as important as the permission to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So here's my question: at what point does corporate capture of an open-source project become a dealbreaker for you — or does it ever?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AI commoditized code, not software. Developers keep confusing the two.</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Fri, 26 Jun 2026 13:11:31 +0000</pubDate>
      <link>https://dev.to/adioof/ai-commoditized-code-not-software-developers-keep-confusing-the-two-el9</link>
      <guid>https://dev.to/adioof/ai-commoditized-code-not-software-developers-keep-confusing-the-two-el9</guid>
      <description>&lt;p&gt;People has responded in different ways to a recent tweet by Pieter Levels where he explains he replaced all his paid SaaS with machine learning-powered custom builds and the internet went wild. But Levels was talking about &lt;em&gt;code&lt;/em&gt;, not necessarily &lt;em&gt;software&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Those are not the same thing. The gap between them is where most of us actually work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened
&lt;/h2&gt;

&lt;p&gt;In a June 2025 post, Levels shared that he had thrown out all paid software from his life and instead replaced it with custom AI-generated tools, making the case that if AI could build it for you in minutes, why pay for it?&lt;/p&gt;

&lt;p&gt;Herbie Bradley disagreed. Creating software that is &lt;em&gt;trustworthy&lt;/em&gt; — the type that manages edge cases, scales up, and doesn’t compromise your data in the middle of the night — is still a very difficult thing to do. The discussion raged across X and suddenly every engineer was talking about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code is cheap now. Software never was.
&lt;/h2&gt;

&lt;p&gt;Here's the distinction that no one is explaining clearly enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt; is what you have in your editor. And AI is so good at writing it for you. You can describe your way to a first draft of the program faster than ever before. This is the real part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt; is everything around that code:&lt;/p&gt;

&lt;p&gt;→ Error handling that doesn't silently eat failures&lt;br&gt;
→ Auth that actually works when tokens expire&lt;br&gt;
→ Migrations that don't nuke production data&lt;br&gt;
→ Monitoring that wakes you up &lt;em&gt;before&lt;/em&gt; users notice&lt;br&gt;
→ The boring, unglamorous connective tissue that makes a product trustworthy&lt;/p&gt;

&lt;p&gt;AI commoditized the first, but the second barely got a glance. And mistaking one for the other is what causes you to produce a lot of fragile prototypes and name it engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prototype trap 🪤
&lt;/h2&gt;

&lt;p&gt;I understand the attractiveness of it. Creating a fast tool that solves your specific issue seems like having a superpower.&lt;/p&gt;

&lt;p&gt;However, it is essential to keep in mind that any tool you create will require maintenance. For example, that AI-generated script taking over your project management SaaS was a good idea, but eventually, it will stop working. Guess what? You will be the one dealing with support.&lt;/p&gt;

&lt;p&gt;Levels can make that tradeoff. He’s a solo operator who ships fast and tolerates breakage. It’s a rational choice for his situation. But most of us are not in that situation. Most of us work on a team where reliability is not optional, and “it works on my machine” stopped being cute a long time ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is actually good news for your career
&lt;/h2&gt;

&lt;p&gt;If you're a developer reading all the "coding is dead" opinions and feeling anxious, just relax.&lt;/p&gt;

&lt;p&gt;The hard parts of your job — designing systems that hold up under real usage, making architectural decisions you won't regret in six months, debugging problems that span multiple services — none of that got easier. AI can generate code for you based on a description of desired functionality but defining that desired functionality is just the same as it ever was. Writing tests is still as hard and manual as it's always been.&lt;/p&gt;

&lt;p&gt;Your worth did not depend on how quickly you could write a function. It was in knowing &lt;em&gt;which&lt;/em&gt; function to write, where to put it, and what happens when it fails. That skill just got more valuable, not less. The amount of code available increased but the need for good decisions remained constant. 🎯 🎯&lt;/p&gt;

&lt;h2&gt;
  
  
  The real divide ahead
&lt;/h2&gt;

&lt;p&gt;I think we're heading toward a split in the industry. On one side: people who generate lots of code quickly and ship things that mostly work. The second will be those who develop software that truly functions as intended on a large scale and meets users' needs.&lt;/p&gt;

&lt;p&gt;Both are valid. However, they are different jobs with different pay scales and different failure modes. Understanding which one you are doing and which one the situation demands is crucial.&lt;/p&gt;

&lt;p&gt;AI didn't turn trivial software engineering into a solved problem, it just made the parts we thought were trivial go by faster and more reliably.&lt;/p&gt;

&lt;p&gt;I have a question for you: when do you know if AI-generated code is “good enough,” versus software that requires human engineering judgment? Where is the boundary in your work?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>career</category>
      <category>opinion</category>
    </item>
    <item>
      <title>React lost the mass and Vercel is wearing its skin</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Fri, 26 Jun 2026 10:12:04 +0000</pubDate>
      <link>https://dev.to/adioof/react-lost-the-mass-and-vercel-is-wearing-its-skin-27fc</link>
      <guid>https://dev.to/adioof/react-lost-the-mass-and-vercel-is-wearing-its-skin-27fc</guid>
      <description>&lt;p&gt;There used to be a sense that the React community had ownership of the project. Nowadays, it feels more like a hosting company is managing it internally.&lt;/p&gt;

&lt;p&gt;That shift happened slowly, then all at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quiet Takeover
&lt;/h2&gt;

&lt;p&gt;Several React core team members work for Vercel. Everyone knows that. They even mention it on their LinkedIn profiles.&lt;/p&gt;

&lt;p&gt;Consider this for a minute. The people deciding React's future collect paychecks from a company that sells React deployment. The roadmap and the business model have their lunch together.&lt;/p&gt;

&lt;p&gt;Server Components and the App Router were not requested by thousands of developers. They were envisioned, and it just so happens that that aligns perfectly with Vercel’s infrastructure narrative. Two features that would be extremely hard to self-host, but are trivial to Vercel. Funny that.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Open Source" With an Asterisk
&lt;/h2&gt;

&lt;p&gt;React is still MIT-licensed. Nobody disputes that.&lt;/p&gt;

&lt;p&gt;Open-source is more than just a license. It's a feeling of governance. It's about deciding if the community is involved as a contributor or a user.&lt;/p&gt;

&lt;p&gt;Right now? A lot of developers feel like consumers.&lt;/p&gt;

&lt;p&gt;→ Server Components require deep framework integration where Next.js remains the most mature implementation, with other frameworks like RedwoodJS and Waku offering experimental or limited support&lt;br&gt;
→ The App Router introduced mental model changes that benefit server-centric architectures&lt;br&gt;
→ Documentation increasingly assumes you're using Next.js as the default path&lt;/p&gt;

&lt;p&gt;You could attempt to use React Server Components without Next.js at some point. In theory, it's possible just like how it's possible to run a marathon without shoes. It can be done. However, your better judgment will likely advise against it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Does Anybody Actually Like React?" Question
&lt;/h2&gt;

&lt;p&gt;A thread with that exact title recently gained serious traction in developer forums. Not from newbies. From experienced engineers who have been authoring React for years. 🤔&lt;/p&gt;

&lt;p&gt;The real problem isn't with JSX, hooks, or the virtual DOM. Those issues were resolved long ago.&lt;/p&gt;

&lt;p&gt;The frustration with React comes down to one thing really, trust. Developers opted into React because it was a library, and a view library at that, not a framework.&lt;/p&gt;

&lt;p&gt;Currently, the library has tendrils growing into your server, tendrils growing into your routing, tendrils growing into your caching layer, and tendrils growing into your deployment target. And all of those tendrils keep pointing at one company's checkout page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Actually at Stake
&lt;/h2&gt;

&lt;p&gt;I don't believe Vercel is bad. They hire intelligent people and develop actual technology.&lt;/p&gt;

&lt;p&gt;However, the future development of a library that is being used by millions of developers should not be based on the business model of one company. This is not the concept of open source. It is more like a marketing channel that has a GitHub repository. 🔥&lt;/p&gt;

&lt;p&gt;The React team would argue that these features benefit everyone. And to be fair, they do. But you can also claim that “benefits everyone” and “mainly benefits one company” are both correct at the same time.&lt;/p&gt;

&lt;p&gt;This was anticipated by other frameworks. Svelte, Solid, and even Vue have always had a clearer separation between the core library and the deployment layer. React kinda mixed it up, and now people are starting to question for whom the framework is built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Leaves Us
&lt;/h2&gt;

&lt;p&gt;The previous version of React that served as only a view library is obsolete. The current version of React acts as a full-stack opinion engine, and you will also find a billing page attached with that opinion.&lt;/p&gt;

&lt;p&gt;You are not obliged to use React with Vercel. Many teams don't. But the gravity is real, and it pulls harder with every release.&lt;/p&gt;

&lt;p&gt;The React ecosystem would benefit the most if it could set up its own overseeing body. For instance, a foundation or steering committee where most members are not employed by any specific company. We need to make “open” mean a lot more than just a title of a license document.  ✊&lt;/p&gt;

&lt;p&gt;Well, the question remains if React's direction is primarily determined by one company, is the open-sourcing of the code enough to gain your trust in the project's direction now? If not, what would have to change for that to be the case?&lt;/p&gt;

</description>
      <category>react</category>
      <category>vercel</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AI made coding boring and nobody wants to admit it out loud</title>
      <dc:creator>Aditya Agarwal</dc:creator>
      <pubDate>Thu, 25 Jun 2026 19:16:37 +0000</pubDate>
      <link>https://dev.to/adioof/ai-made-coding-boring-and-nobody-wants-to-admit-it-out-loud-pdg</link>
      <guid>https://dev.to/adioof/ai-made-coding-boring-and-nobody-wants-to-admit-it-out-loud-pdg</guid>
      <description>&lt;p&gt;There was something fulfilling that died within me when I no longer had to debug my code.&lt;/p&gt;

&lt;p&gt;I can't tell you the specific date that this feeling began to spread. But there's a growing chorus of experienced developers saying the quiet part out loud: coding isn't fun anymore, and AI might be the reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Thread That Hit a Nerve
&lt;/h2&gt;

&lt;p&gt;A viral thread in a popular senior developer community recently went boom. The premise was simple: “coding doesn't seem fun anymore.” It wasn't burnout cases or junior devs dealing with imposter syndrome in the replies.&lt;/p&gt;

&lt;p&gt;These were staff engineers, tech leads, and founders. Individuals who opted for this profession out of passion for the craft. And yet, they were all expressing a similar sense of hollowness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Mentally Lazy" Problem
&lt;/h2&gt;

&lt;p&gt;Here is a recurring theme. Developers who lean heavily on AI assistants report feeling "mentally lazy" — their words, not mine.&lt;/p&gt;

&lt;p&gt;It is logical when you give it a second thought. The satisfaction of programming was never really about the output. It came from the &lt;em&gt;process&lt;/em&gt;. The moment your brain clicks two concepts together and you see the path forward. That's what gives you a dopamine rush.&lt;/p&gt;

&lt;p&gt;AI assistants like this short-circuit the loop. You receive the answer even before your brain completes the question. The code is functioning, the PR is being shipped, and you don't get the ...  feeling.&lt;/p&gt;

&lt;p&gt;→ The puzzle is solved before you get to enjoy solving it.&lt;br&gt;
→ The "aha moment" gets replaced by a "yeah, that looks right" moment.&lt;br&gt;
→ You become a code reviewer of machine-generated output instead of a creator.&lt;/p&gt;

&lt;p&gt;That's not programming. That's middle management using a terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Corporate Squeeze
&lt;/h2&gt;

&lt;p&gt;Meanwhile, every company on earth is pushing AI adoption like it's oxygen. And the productivity gains are real — I'm not going to pretend otherwise. Products are reaching shelves at faster speeds. Repetitive tasks are being eliminated. New employees are truly able to get up to speed faster on alien projects.&lt;/p&gt;

&lt;p&gt;But there's a tension nobody in leadership wants to acknowledge. The same tools that make developers faster are quietly eroding the craftsmanship that made those developers &lt;em&gt;good&lt;/em&gt; in the first place.&lt;/p&gt;

&lt;p&gt;Experienced engineers developed their intuition by investing countless hours of effort. By analyzing stack traces while it was 2am. Through writing bad code, understanding &lt;em&gt;why&lt;/em&gt; it was bad, and rewriting it. You can't shortcut that process and expect the same caliber of engineer on the other side.&lt;/p&gt;

&lt;p&gt;→ Companies want 10x productivity now.&lt;br&gt;
→ They're borrowing against the skill development of their team to get it.&lt;br&gt;
→ Nobody's accounting for that debt yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part Nobody Wants to Say at Work
&lt;/h2&gt;

&lt;p&gt;Here's the reality check. If you tell your manager "AI tools make me feel less skilled and less engaged," you sound like a luddite. You sound like the person who refused to learn Git in 2012.&lt;/p&gt;

&lt;p&gt;Therefore, developers remain silent. They operate the tools. They deliver the tickets. And they slowly lose the thing that made them fall in love with this work. 🔇&lt;/p&gt;

&lt;p&gt;I don't think the answer is rejecting AI tools entirely. That would be stupid. But I think we need to be honest about the tradeoff instead of pretending it's all upside.&lt;/p&gt;

&lt;p&gt;Some days I intentionally close the AI assistant and write code the old way. I do it because I want to re-experience the process of thinking and working out a solution. Because I want to remember what it feels like to &lt;em&gt;think&lt;/em&gt; through a problem. To hold the whole system in my head and feel it click into place.&lt;/p&gt;

&lt;p&gt;Protect that feeling at all costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where This Leaves Us
&lt;/h2&gt;

&lt;p&gt;The increased productivity with AI coding tools is real. The deskilling is real too. Both can be true at once and it doesn't help to pretend otherwise. The programmers who will do best in the next 10 years are those who use AI intentionally — as a complement not a replacement — while still focusing on the deep problem-solving abilities that no autocomplete can provide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So here's my question: have you noticed yourself thinking less deeply since you started using AI assistants? And if so, what are you doing about it?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
