<?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: Muhammad Usman</title>
    <description>The latest articles on DEV Community by Muhammad Usman (@web_dev-usman).</description>
    <link>https://dev.to/web_dev-usman</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2467689%2F7cef2b13-fd64-49a8-b296-bac4c5962ec3.png</url>
      <title>DEV Community: Muhammad Usman</title>
      <link>https://dev.to/web_dev-usman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/web_dev-usman"/>
    <language>en</language>
    <item>
      <title>Why You Should Learn Programming Through Books (Not Just Online Tutorials)</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Tue, 19 May 2026 11:56:45 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/why-you-should-learn-programming-through-books-not-just-online-tutorials-35b6</link>
      <guid>https://dev.to/web_dev-usman/why-you-should-learn-programming-through-books-not-just-online-tutorials-35b6</guid>
      <description>&lt;p&gt;Books don’t just teach you to code — they teach you to think like a programmer.&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.amazonaws.com%2Fuploads%2Farticles%2F75cohveodie46k963w8a.jpeg" 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.amazonaws.com%2Fuploads%2Farticles%2F75cohveodie46k963w8a.jpeg" alt="Programming through books" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The man who does not read has no advantage over the man who cannot read.&lt;/p&gt;

&lt;p&gt;Learning programming using an online tutorial is like taking a picture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You click, and that’s that. Learning to program with books, though — that’s like creating a painting. You layer and layer on it, and you keep working for weeks. You might still have the same image in the end, but there’s a depth to it that’s impossible to capture with a snapshot.&lt;/p&gt;

&lt;p&gt;I know we live in a world where everyone wants fast results. Watching online tutorials might seem like the easiest way to learn programming. But the quality of outcome you get with books cannot be matched.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can go much deeper with books than you can using any other method.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And here’s something people don’t talk about enough: when you start working, there won’t be any video tutorials to help you. You’ll have to read documentation and implement things by yourself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Building a habit of reading and understanding technical material is a must if you want a solid career as a programmer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s why I’m giving you &lt;strong&gt;5 practical books&lt;/strong&gt; to get started with.&lt;/p&gt;

&lt;p&gt;Let’s do this.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Python Crash Course — Learn by Building Cool Projects
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2Fs2xpy6fzp48gakt39sv5.jpeg" 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.amazonaws.com%2Fuploads%2Farticles%2Fs2xpy6fzp48gakt39sv5.jpeg" alt="Python Crash Course — Learn by Building Cool Projects" width="799" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to learn Python by building cool projects, check out this book called “Python Crash Course.” The first half of the book deals with the basics like variables, conditionals, loops, and functions. But the real magic happens in the second part of the book, where you actually build projects.&lt;/p&gt;

&lt;p&gt;You’ll use the pygame package to build an &lt;strong&gt;Alien Invasion&lt;/strong&gt; game. How does that sound as your first ever project? You’ll be able to shoot down the alien fleet and even have a scoreboard to list high scores.&lt;/p&gt;

&lt;p&gt;In the second project, you’ll learn how to work with APIs. You’ll download data from the GitHub API and visualize it using Matplotlib. And in the final project, you’ll build a &lt;strong&gt;web app using Django&lt;/strong&gt;, a very popular Python web framework. You’ll also learn how to style your app using bootstrap, a widely-used CSS framework. At the end, you’ll even deploy your website to the cloud, so the entire world can see it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After completing this book, you’ll feel confident enough to start building your own Python projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Eloquent JavaScript — For Web Development Enthusiasts
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2Fvrnp2rkaacpsuiqj34q7.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fvrnp2rkaacpsuiqj34q7.jpg" alt="Eloquent JavaScript — For Web Development Enthusiasts" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, I have a great recommendation for web development enthusiasts. If you want a deep understanding of JavaScript, try out the book “Eloquent JavaScript.”&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This book is available online completely for free. And the best part? You can try out all the exercises right on their website.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the first part of the book, you learn the basics — things like variables, functions, and objects. In the second part, you dive into how JavaScript interacts with the browser and the Document Object Model, or &lt;strong&gt;DOM&lt;/strong&gt;. Finally, in the last part, you’ll learn about &lt;strong&gt;Node.js&lt;/strong&gt;, which allows you to run JavaScript on the server instead of just in the browser.&lt;/p&gt;

&lt;p&gt;Every chapter gives you exercises to test your knowledge. You’ll also build some really cool projects. You’ll create a brand-new programming language called Egg. You’ll make a web app for editing pixel art. And in the final project, you’ll build a website that helps people organize meetings to share their skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Pragmatic Programmer — Timeless Principles
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2Fm20l6iecs6b0xu6wcii3.jpeg" 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.amazonaws.com%2Fuploads%2Farticles%2Fm20l6iecs6b0xu6wcii3.jpeg" alt="The Pragmatic Programmer — Timeless Principles" width="700" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Next, we have a timeless classic: “The Pragmatic Programmer.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The principles in this book aren’t tied to specific technologies or programming languages. That makes them applicable even years after the book was first published in 1999.&lt;/p&gt;

&lt;p&gt;This book covers topics like &lt;strong&gt;debugging, testing, automation, and communication&lt;/strong&gt;, giving you a well-rounded perspective on what it takes to be an effective software developer. It focuses on &lt;strong&gt;fundamental principles and best practices&lt;/strong&gt; you can apply in any programming context.&lt;/p&gt;

&lt;p&gt;One of the best parts about this book is how it uses clever metaphors and analogies to explain complex technical concepts. For example, it introduces the idea of “&lt;strong&gt;Code Kata&lt;/strong&gt;.” In Japanese, the word Kata means “form” and is used to describe deliberate practice and repetition in martial arts. By doing Code Kata exercises, programmers can reinforce their knowledge of algorithms, data structures, and design patterns.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Whether you’re a beginner or an experienced developer, this book has something for everyone. It’s a must-read for anyone serious about honing their craft.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  4. Clean Code — Writing Maintainable Software
&lt;/h2&gt;

&lt;p&gt;So, you’ve learned a couple of programming languages and you’ve become a pragmatic programmer. Now, you need to know how to write &lt;strong&gt;clean, maintainable code&lt;/strong&gt;. For that, we have another classic: “Clean Code” by Uncle Bob.&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.amazonaws.com%2Fuploads%2Farticles%2Fcpeaorxsjhcakq0n9euh.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.amazonaws.com%2Fuploads%2Farticles%2Fcpeaorxsjhcakq0n9euh.png" alt="Clean Code — Writing Maintainable Software" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The primary goal of this book is to improve the readability and maintainability of your code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It teaches you to write code that’s easy for other developers to understand, modify, and extend.&lt;/p&gt;

&lt;p&gt;You’ll learn when — and when not — to use comments. The book encourages you to write &lt;strong&gt;self-explanatory code&lt;/strong&gt; instead of relying on tons of comments. It also covers how to properly name your variables, functions, and classes.&lt;/p&gt;

&lt;p&gt;The book uses real-world examples to drive the points home. Uncle Bob writes most code snippets in Java, but the concepts easily apply to other languages. It also introduces software design principles like the &lt;strong&gt;Single Responsibility Principle (SRP)&lt;/strong&gt; and &lt;strong&gt;Don’t Repeat Yourself (DRY)&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The book can get a bit too opinionated at times. So you don’t have to follow everything to a tee.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But it’s still a fantastic starting point to improve the quality of your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Designing Data-Intensive Applications (DDIA) — Think Like a Systems Architect
&lt;/h2&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2Aoz09Ph3E5Pxz6od5" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2Aoz09Ph3E5Pxz6od5" alt="Designing Data-Intensive Applications (DDIA) — Think Like a Systems Architect" width="1200" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to go from a junior developer to a senior developer, you have to start thinking beyond just code. You need to know how to architect your systems in a way that they can reliably handle thousands of simultaneous requests.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For that, you should read “Designing Data-Intensive Applications” (often called DDIA).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This book introduces you to the challenges of building systems that are &lt;strong&gt;reliable, scalable, and maintainable&lt;/strong&gt;. You’ll learn when to use relational databases vs. NoSQL databases. DDIA also helps you understand how databases efficiently &lt;strong&gt;store and retrieve data&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It teaches you how to distribute data across multiple machines when your dataset becomes too large for a single server. And while it covers a lot of theory, it also provides practical advice you can use in the real world. You’ll read examples from big tech companies like &lt;strong&gt;Google and Amazon&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The book ends with a look at emerging trends in data systems, like new databases and storage technologies.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to learn how to make smart trade-offs while building large-scale applications, DDIA is a must-read.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;If you want to build a &lt;strong&gt;deeper understanding&lt;/strong&gt; of programming concepts, books are the best way to do it.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>learning</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The $0 to $50/Month Tech Stack to Launch Your First SaaS</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Wed, 13 May 2026 10:20:19 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/the-0-to-50month-tech-stack-to-launch-your-first-saas-12c9</link>
      <guid>https://dev.to/web_dev-usman/the-0-to-50month-tech-stack-to-launch-your-first-saas-12c9</guid>
      <description>&lt;p&gt;Most people never ship their SaaS idea.&lt;/p&gt;

&lt;p&gt;Not because the idea is bad. Not because they lack skills. Because they spend three weeks researching the "perfect" stack, get overwhelmed by AWS pricing pages, and quietly close the tab.&lt;/p&gt;

&lt;p&gt;This article is not that. This is the exact stack I would use today if I were starting from zero, a developer with an idea and an empty wallet, trying to get something in front of real users as fast as possible. Every tool listed here either has a free tier or costs a few dollars a month. The whole thing stays under $50/month even after you start getting traction.&lt;/p&gt;

&lt;p&gt;No enterprise nonsense. No over-engineering. Just tools that let you build, ship, and grow.&lt;/p&gt;




&lt;h2&gt;
  
  
  The philosophy first
&lt;/h2&gt;

&lt;p&gt;Before the tools: the biggest mistake first-time SaaS builders make is paying for infrastructure before they have a single paying customer.&lt;/p&gt;

&lt;p&gt;Your job in month one is not to build something scalable. Your job is to find out if anyone will pay for this thing. That means keeping costs at zero for as long as humanly possible, then introducing paid tiers only when free options genuinely become a bottleneck.&lt;/p&gt;

&lt;p&gt;Every tool below follows that rule.&lt;/p&gt;




&lt;h2&gt;
  
  
  The full stack at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Next.js&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend / API&lt;/td&gt;
&lt;td&gt;Next.js API routes or FastAPI&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;Free (up to 500MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;Supabase Auth&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Hostinger Node.js Hosting&lt;/td&gt;
&lt;td&gt;$3.99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain&lt;/td&gt;
&lt;td&gt;Hostinger&lt;/td&gt;
&lt;td&gt;~$10/yr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payments&lt;/td&gt;
&lt;td&gt;Stripe&lt;/td&gt;
&lt;td&gt;Free (2.9% + 30c per transaction)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Resend&lt;/td&gt;
&lt;td&gt;Free (up to 3,000 emails/mo)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analytics&lt;/td&gt;
&lt;td&gt;Plausible or Umami (self-hosted)&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Error tracking&lt;/td&gt;
&lt;td&gt;Sentry&lt;/td&gt;
&lt;td&gt;Free (up to 5,000 errors/mo)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Total at launch: &lt;strong&gt;$3.99/month + domain.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 1: Frontend + Backend with Next.js
&lt;/h2&gt;

&lt;p&gt;Next.js is the right call for a solo founder or small team building a SaaS in 2026. It handles your frontend, your API routes, and your server-side rendering in one framework. You are not maintaining a separate Express server. You are not juggling two repos. One codebase, one deployment.&lt;/p&gt;

&lt;p&gt;Use the App Router. Use Server Components for anything that does not need interactivity. This keeps your JavaScript bundle small and your pages fast, which matters for SEO and for users on slower connections.&lt;/p&gt;

&lt;p&gt;If your SaaS is primarily an AI tool or data-heavy backend, swap Next.js API routes for FastAPI. Python's ecosystem for AI, data processing, and async tasks is unmatched, and FastAPI is genuinely fast to build with. You can still use Next.js for your frontend and point it at a FastAPI backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to build first:&lt;/strong&gt; The signup page, the core feature (one, not five), and a simple dashboard. That is it. Resist building anything else.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 2: Database and Auth with Supabase
&lt;/h2&gt;

&lt;p&gt;Supabase gives you a Postgres database, authentication, real-time subscriptions, and file storage, all on a generous free tier. For a new SaaS, this is an absurd amount of infrastructure for zero dollars.&lt;/p&gt;

&lt;p&gt;The free tier covers you up to 500MB of database storage and 50,000 monthly active users on auth. You will not hit those limits before you are making real money.&lt;/p&gt;

&lt;p&gt;A few things worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Row Level Security (RLS) from day one. It keeps your data access logic in the database, not scattered across your API.&lt;/li&gt;
&lt;li&gt;Supabase Auth handles OAuth (Google, GitHub) out of the box. No Passport.js setup, no JWT headaches.&lt;/li&gt;
&lt;li&gt;The Supabase JavaScript client works seamlessly inside Next.js Server Components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you outgrow the free tier, the Pro plan is $25/month and gives you 8GB of storage and daily backups. At that point, you should have paying customers covering it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 3: Hosting with Hostinger
&lt;/h2&gt;

&lt;p&gt;This is the one paid tool in the stack from day one, and it is worth it.&lt;/p&gt;

&lt;p&gt;The reason you do not want to rely on free hosting tiers for your main app: they sleep. Render's free tier spins down your server after 15 minutes of inactivity. Fly.io's free machines get paused. Your demo fails in front of the one person who might have become your first customer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hostinger.pk/?REFERRALCODE=USISTUDIOHE1" rel="noopener noreferrer"&gt;Hostinger's Node.js hosting&lt;/a&gt; runs your Next.js or Node.js app on a live server that stays on, at $3.99/month. You can also grab your domain there and connect it in a few clicks. Deployment is straightforward: connect your GitHub repo, push code, and it deploys automatically.&lt;/p&gt;

&lt;p&gt;If you are running a FastAPI backend, Hostinger's VPS plans start at the same price range and give you root access to install anything you need: Python, Gunicorn, Nginx, whatever your stack requires.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I use Hostinger for several projects. It is not trying to be AWS. It is trying to be the easiest, cheapest way to keep a Node.js or PHP app live. For a solo founder launching a first SaaS, that is exactly what you want. &lt;a href="https://hostinger.pk/?REFERRALCODE=USISTUDIOHE1" rel="noopener noreferrer"&gt;Get 20% extra discount here.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Layer 4: Payments with Stripe
&lt;/h2&gt;

&lt;p&gt;Stripe is the standard. Do not use anything else until you have a reason to.&lt;/p&gt;

&lt;p&gt;The free tier means you pay nothing until you process a transaction. Then it is 2.9% plus 30 cents per charge. On a $29/month subscription, that is about $1.14 per transaction. Reasonable.&lt;/p&gt;

&lt;p&gt;What most people do not realise: Stripe Checkout handles your entire payment UI. You do not need to build a checkout page. You redirect users to a Stripe-hosted page, and Stripe handles card collection, 3D Secure, tax calculation, and PCI compliance. Wire it to a webhook, update the user's subscription status in Supabase, done.&lt;/p&gt;

&lt;p&gt;For subscriptions specifically, use Stripe Billing. It handles trial periods, proration on plan changes, dunning (automatic retries on failed payments), and cancellations. Things that would take weeks to build yourself.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 5: Email with Resend
&lt;/h2&gt;

&lt;p&gt;Transactional email (welcome emails, password resets, upgrade receipts) is non-negotiable for a SaaS. Resend gives you 3,000 emails per month for free with a proper API that works beautifully from Next.js.&lt;/p&gt;

&lt;p&gt;The developer experience is significantly cleaner than SendGrid or Mailgun. You write your emails as React components using the &lt;code&gt;react-email&lt;/code&gt; library, which means type safety, reusable components, and no more wrestling with HTML tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@react-email/components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;WelcomeEmail&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hey &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;, welcome aboard.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://yourapp.com/dashboard"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        Go to your dashboard
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you hit the free limit, Resend's paid tier starts at $20/month for 50,000 emails. By that point, you will have the revenue to cover it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 6: Analytics and Error Tracking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Analytics:&lt;/strong&gt; Do not use Google Analytics. It is bloated, it shares your users' data with Google, and it will scare privacy-conscious users in 2026. Use Plausible (lightweight, privacy-first, $9/month) or self-host Umami on your existing Hostinger VPS for free. Umami is a single Node.js app. Add it as a second service alongside your main app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error tracking:&lt;/strong&gt; Sentry's free tier captures 5,000 errors per month and shows you the exact stack trace, user session, and browser when something breaks in production. Integrate it in one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/layout.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Sentry&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@sentry/nextjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Sentry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;dsn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_SENTRY_DSN&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will find bugs you never would have found otherwise.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the cost curve actually looks like
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Month 1 (building, no users):&lt;/strong&gt; $3.99/month. Domain is a one-time $10/year cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Month 2 to 3 (early users, free tier everywhere):&lt;/strong&gt; Still $3.99/month. Supabase, Stripe, Resend, and Sentry are all free at small scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Month 4 to 6 (getting traction, 100+ users):&lt;/strong&gt; You might upgrade Supabase to Pro ($25/month) and add Plausible ($9/month) for better analytics. Stack is now around $38/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Month 6+ (revenue coming in):&lt;/strong&gt; Your hosting might need an upgrade depending on traffic. Hostinger's plans scale without requiring a migration to a different platform. Total stack stays under $50/month well into the thousands-of-users range.&lt;/p&gt;

&lt;p&gt;The point is: the costs scale with your success. You are not paying $200/month in infrastructure before you have a single dollar of revenue.&lt;/p&gt;




&lt;h2&gt;
  
  
  The one trap to avoid
&lt;/h2&gt;

&lt;p&gt;The trap is adding complexity before you have users.&lt;/p&gt;

&lt;p&gt;You do not need a separate Redis instance on day one. You do not need a message queue. You do not need microservices, Kubernetes, or a CDN with edge functions until your traffic makes those things genuinely necessary.&lt;/p&gt;

&lt;p&gt;Every layer of infrastructure you add is a layer you have to debug at 11pm when something breaks and your only user is waiting for a response.&lt;/p&gt;

&lt;p&gt;Start with this stack. Get to ten paying customers. Then look at what is actually breaking and fix only that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick start checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Create Next.js app with &lt;code&gt;npx create-next-app@latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Set up Supabase project, enable RLS on all tables&lt;/li&gt;
&lt;li&gt;[ ] Configure Supabase Auth with Google OAuth&lt;/li&gt;
&lt;li&gt;[ ] Get a domain and Node.js hosting on &lt;a href="https://hostinger.pk/?REFERRALCODE=USISTUDIOHE1" rel="noopener noreferrer"&gt;Hostinger&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Connect GitHub repo for automatic deploys&lt;/li&gt;
&lt;li&gt;[ ] Create Stripe account, set up one Product and one Price&lt;/li&gt;
&lt;li&gt;[ ] Add Stripe webhook to update Supabase on subscription events&lt;/li&gt;
&lt;li&gt;[ ] Set up Resend, write welcome email with react-email&lt;/li&gt;
&lt;li&gt;[ ] Add Sentry to catch production errors&lt;/li&gt;
&lt;li&gt;[ ] Self-host Umami on the same VPS for analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is your entire infrastructure. Everything else is product.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;The SaaS graveyard is full of products that were never shipped, not products that shipped on the wrong stack.&lt;/p&gt;

&lt;p&gt;Pick these tools. Build the thing. Ship it to five people this week.&lt;/p&gt;

&lt;p&gt;The stack can always be changed later. The feedback you get from real users this week cannot be replicated by anything else.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&gt;
&lt;a href="https://hostinger.pk/?REFERRALCODE=USISTUDIOHE1" rel="noopener noreferrer"&gt;Get 20% extra discount on Hostinger&lt;/a&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Stop Writing Clean Code. Write Honest Code Instead.</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Sat, 09 May 2026 09:52:55 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/stop-writing-clean-code-write-honest-code-instead-18ek</link>
      <guid>https://dev.to/web_dev-usman/stop-writing-clean-code-write-honest-code-instead-18ek</guid>
      <description>&lt;p&gt;There is a codebase out there with a simple "send an email" operation that goes through seven layers of abstraction.&lt;/p&gt;

&lt;p&gt;An EmailService that uses an EmailProvider that wraps an EmailClient that calls an EmailAdapter that uses a MessageSender that invokes a TransportLayer that finally, after all of that, calls the actual email API.&lt;/p&gt;

&lt;p&gt;Every layer has a reason. Logging here. Error handling there. Retries somewhere in the middle. It is, by almost every definition the industry has agreed on, clean code.&lt;/p&gt;

&lt;p&gt;It is also code that nobody on the team can fully understand anymore.&lt;/p&gt;

&lt;p&gt;That is the problem nobody talks about when they are quoting Uncle Bob at you in a code review.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Clean Code Stopped Being a Tool and Became a Standard
&lt;/h2&gt;

&lt;p&gt;Robert Martin's book came out in 2008. It gave developers a vocabulary and a set of rules. Short functions. Meaningful names. Single responsibility. No comments because the code should speak for itself.&lt;/p&gt;

&lt;p&gt;Good ideas. Genuinely. The problem is what happened next.&lt;/p&gt;

&lt;p&gt;Developers turned a set of practical guidelines for a specific context into a universal standard for all code everywhere. Clean code stopped being a tool and became an identity. Writing clean code meant you were a serious developer. Writing anything else meant you were cutting corners, being lazy, not caring about your craft.&lt;/p&gt;

&lt;p&gt;And once something becomes an identity, it stops being questioned.&lt;/p&gt;

&lt;p&gt;So developers started abstracting things that did not need abstracting. Creating interfaces for classes that would never have a second implementation. Splitting functions into sub-functions into sub-sub-functions until the original logic was spread across twelve files and finding out what the code actually does requires a forty minute archaeology expedition.&lt;/p&gt;

&lt;p&gt;All of it in the name of cleanliness. None of it in the name of actually solving the problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Performance Conversation Nobody Wanted to Have
&lt;/h2&gt;

&lt;p&gt;In 2023, a programmer named Casey Muratori published a video called "Clean Code, Horrible Performance." He took Uncle Bob's clean code examples and benchmarked them against straightforward implementations.&lt;/p&gt;

&lt;p&gt;The clean versions were up to 23 times slower.&lt;/p&gt;

&lt;p&gt;The reaction from the clean code community was, predictably, defensive. Performance does not matter for most applications. The bottleneck is usually the database anyway. You are optimizing prematurely.&lt;/p&gt;

&lt;p&gt;Some of that is true. Most modern software spends the majority of its time waiting for user input, not executing business logic. For a lot of applications, the performance gap is irrelevant.&lt;/p&gt;

&lt;p&gt;But that is not really the point Muratori was making. The point is that the clean code rules were presented as universally correct, context-free laws. And they are not. They are tradeoffs. Every abstraction you add is a layer someone has to understand. Every tiny function is a context switch in a reader's brain. Every interface is an indirection that obscures what is actually happening.&lt;/p&gt;

&lt;p&gt;Clean code moves the complexity. It does not eliminate it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "Honest Code" Actually Means
&lt;/h2&gt;

&lt;p&gt;Honest code is not messy code. It is not an excuse to write whatever you want and call it a style choice.&lt;/p&gt;

&lt;p&gt;Honest code is code that does not pretend.&lt;/p&gt;

&lt;p&gt;It does not pretend that the business logic is simpler than it is. A lot of codebases have genuinely complicated rules because the domain is genuinely complicated. Forcing that into short, clean functions sometimes means the complexity goes underground, hiding in the gaps between functions, in the sequence of calls, in the assumptions baked into naming.&lt;/p&gt;

&lt;p&gt;It does not pretend that future requirements justify present architecture. One developer built a feature with a flexible configuration system, keyboard shortcuts, and multiple user pathways because he imagined power users doing complex workflows. Ninety percent of actual users just wanted to click one button. All the flexibility was just confusing them. The architecture was built for a future that never arrived.&lt;/p&gt;

&lt;p&gt;It does not pretend that all code is equally important. Your authentication logic that handles money needs rock-solid testing and careful review. Your internal admin dashboard that three people use to generate reports can be rough around the edges. Treating every line of code with the same level of ceremony is not discipline. It is a misallocation of attention.&lt;/p&gt;

&lt;p&gt;And honest code does not hide behind abstraction when a comment would do the job better and faster.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Comment Rule Nobody Should Follow Blindly
&lt;/h2&gt;

&lt;p&gt;Clean code says code should be self-documenting. Comments are a failure. If you need a comment to explain the code, the code is not clean enough.&lt;/p&gt;

&lt;p&gt;This is one of the most damaging ideas in mainstream software development.&lt;/p&gt;

&lt;p&gt;There is a category of code that is necessarily dense, complex, or counterintuitive, not because the developer wrote it badly, but because the problem it solves is genuinely hard. A performance-critical path that uses bitwise operations for speed. A workaround for a third-party library bug that will be removed when the library updates. A business rule that sounds insane but reflects a legal requirement that the developer spent two days understanding.&lt;/p&gt;

&lt;p&gt;Clean code says: make the code clearer.&lt;/p&gt;

&lt;p&gt;Honest code says: write the comment. Explain the why. Leave the breadcrumb for the next developer who will be just as confused as you were, because the confusion is correct. The thing is actually confusing.&lt;/p&gt;

&lt;p&gt;The developer who wrote the confusing thing and left no comment was not being disciplined. They were being unkind.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Biggest Technical Debt Nobody Tracks
&lt;/h2&gt;

&lt;p&gt;Technical debt gets measured in two ways: things that broke and things that slowed down feature development.&lt;/p&gt;

&lt;p&gt;Nobody tracks the hours spent by new developers trying to understand an abstraction layer that was added for cleanliness rather than necessity. Nobody counts the time spent tracing through seven layers of email infrastructure to find the one line that actually sends the email. Nobody measures the cognitive load of a codebase where everything is theoretically clean but nothing is immediately legible.&lt;/p&gt;

&lt;p&gt;That cost is real. It accumulates quietly. And it is often worse in codebases that followed the clean code rules most faithfully, because the complexity did not go away. It just got distributed more evenly across more files with better names.&lt;/p&gt;

&lt;p&gt;The biggest source of developer frustration, by a wide margin according to Stack Overflow's own data, is technical debt. Not messy code specifically. Debt. The gap between what the code is and what it needs to be.&lt;/p&gt;

&lt;p&gt;Clean code pursued as an end in itself creates its own kind of debt. The debt of over-abstraction. The debt of architecture that outpaced the actual requirements. The debt of code that is legible line by line but incomprehensible as a system.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to Do Instead
&lt;/h2&gt;

&lt;p&gt;Write code that works first. Code that you understand. Code that you can debug at 2am when it breaks in production and you are tired and the pressure is real.&lt;/p&gt;

&lt;p&gt;Then ask: who else needs to understand this? What do they need to know that the code cannot tell them? Write that down. In a comment, in a README, in a commit message. Somewhere.&lt;/p&gt;

&lt;p&gt;Ask: what parts of this are likely to change? Abstract those. The parts that are stable, that have been stable for years, that nobody has asked to modify since they were written, leave them alone. Do not add an interface to something that will never have a second implementation just because a rule says to.&lt;/p&gt;

&lt;p&gt;Ask: what does this code actually do? Not what it is supposed to do. What it actually does. If you cannot answer that in two sentences without referencing the three layers above and below it, that is not clean. That is hidden.&lt;/p&gt;

&lt;p&gt;Honest code is code that tells the truth about what it does, where it is fragile, why it makes the choices it makes, and what it is not designed to handle.&lt;/p&gt;

&lt;p&gt;Clean code wants to look good. Honest code wants to be understood.&lt;/p&gt;

&lt;p&gt;Those are not always the same thing. And in the gap between them is where most debugging happens.&lt;/p&gt;




&lt;p&gt;You have probably inherited a codebase at some point that was written by someone who cared deeply about cleanliness. Beautiful structure. Consistent naming. Short functions everywhere.&lt;/p&gt;

&lt;p&gt;And you still could not figure out what it did.&lt;/p&gt;

&lt;p&gt;That is not a coincidence. That is clean code working exactly as designed, optimizing for appearance at the expense of truth.&lt;/p&gt;

&lt;p&gt;Write the comment. Name the tradeoff. Leave the breadcrumb.&lt;/p&gt;

&lt;p&gt;The next developer will thank you. That developer is probably you, six months from now, tired, staring at something you wrote and wondering what you were thinking.&lt;/p&gt;

&lt;p&gt;Give that person the honest version.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>coding</category>
    </item>
    <item>
      <title>What Developers Actually Feel About Their Jobs</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Thu, 07 May 2026 12:09:48 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/what-developers-actually-feel-about-their-jobs-2d87</link>
      <guid>https://dev.to/web_dev-usman/what-developers-actually-feel-about-their-jobs-2d87</guid>
      <description>&lt;p&gt;Three out of four developers are not happy at work right now.&lt;/p&gt;

&lt;p&gt;Not burned out. Not quitting. Just not happy. Showing up. Doing the tickets. Closing the laptop. Doing it again tomorrow.&lt;/p&gt;

&lt;p&gt;That number comes from Stack Overflow's 2025 Developer Survey, 49,000 developers across 177 countries. Only 24% said they were genuinely happy at work. The rest are somewhere on a scale between fine and actively hating it. One in three reportedly hate their job. Almost half are in what researchers call "survival mode."&lt;/p&gt;

&lt;p&gt;Survival mode. In a profession that is supposed to be one of the most in-demand, well-paid, intellectually stimulating careers available.&lt;/p&gt;

&lt;p&gt;So what is actually going on?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gap Between What We Told Ourselves and What It Actually Is
&lt;/h2&gt;

&lt;p&gt;Most developers got into this because of the craft. The feeling of building something from nothing. The puzzle of it. The moment a thing you imagined actually works.&lt;/p&gt;

&lt;p&gt;One developer described it plainly: when you get burned out, you start counting the minutes until 5pm. You go home and look for distractions. You stop caring whether the code is good. You just want it to be done.&lt;/p&gt;

&lt;p&gt;That is not a person who hates programming. That is a person who loved it and slowly had it taken from them by something they cannot quite name.&lt;/p&gt;

&lt;p&gt;The job sold itself one way. It turned out to be something else. And the gap between those two things is where a lot of developer unhappiness actually lives.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Developers Say Actually Makes Them Happy
&lt;/h2&gt;

&lt;p&gt;The survey data on this is worth sitting with for a moment because it is not what most companies are optimizing for.&lt;/p&gt;

&lt;p&gt;The top driver of developer job satisfaction is not salary. It is not tech stack, perks, or remote work. It is autonomy and trust.&lt;/p&gt;

&lt;p&gt;Developers want to be trusted to make decisions. They want to own their work. They want to not have someone looking over their shoulder second-guessing every architectural choice while simultaneously not understanding the codebase.&lt;/p&gt;

&lt;p&gt;After that comes competitive pay. Then solving real world problems that actually matter.&lt;/p&gt;

&lt;p&gt;Notice what is not on that list. The ping-pong table. The unlimited PTO that nobody actually takes. The AI tool the company rolled out company-wide without asking whether anyone wanted it. The reorg that moved everyone to a new team with a new manager for the third time in two years.&lt;/p&gt;

&lt;p&gt;The things that would genuinely help developers are not complicated. They are also, for many organizations, apparently very difficult to provide.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI Problem Nobody Wants to Admit
&lt;/h2&gt;

&lt;p&gt;There is a strange thing happening right now in developer culture around AI.&lt;/p&gt;

&lt;p&gt;84% of developers are using or planning to use AI tools in their work. Adoption is going up every year. But here is the part that does not make it into the press releases: 46% of developers distrust AI tool outputs, compared to only 33% who trust them. Positive sentiment toward AI tools has dropped from over 70% to 60% in just one year.&lt;/p&gt;

&lt;p&gt;Developers are using something they increasingly do not trust, because they feel like they have to.&lt;/p&gt;

&lt;p&gt;Two thirds report that AI answers are almost right but not quite. 45% say they lose significant time debugging AI-generated code. The thing that was supposed to make their jobs easier is, for nearly half of them, creating a new category of frustrating work: cleaning up confident mistakes.&lt;/p&gt;

&lt;p&gt;And there is a subtler cost underneath that. When you spend your day fixing something a tool generated rather than building something yourself, you lose the thing that makes the work feel meaningful. Problem-solving. Ownership. The satisfaction of understanding why something works.&lt;/p&gt;

&lt;p&gt;One survey respondent put it simply: the most satisfying part of the job is solving problems. That has not changed. What has changed is how much of the day is actually spent doing that versus managing the output of tools that solved the wrong problem fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Developer Nobody Is Building Tools For
&lt;/h2&gt;

&lt;p&gt;Here is a segment of the developer population that the industry largely ignores: the one working completely alone.&lt;/p&gt;

&lt;p&gt;The solo freelancer. The developer at a small company where they are the only technical person. The person building a side project for two years hoping someone notices. The junior engineer on a team where everyone else is too busy to explain things and asking questions starts to feel like a liability.&lt;/p&gt;

&lt;p&gt;These developers are not unhappy because of bad management or the wrong tech stack. They are unhappy because the work is genuinely isolating in a way that has no structural fix. Nobody is going to address it in a quarterly planning session. There is no metric for it.&lt;/p&gt;

&lt;p&gt;One developer spent years building an npm module, waiting for someone to find it meaningful, maybe even collaborate on it. The module sat there. The months passed. Even his colleagues could not understand what he had built. That specific kind of invisible effort, work that is technically real and personally significant but completely unwitnessed, is one of the most common and least-discussed experiences in the field.&lt;/p&gt;




&lt;h2&gt;
  
  
  Survival Mode Is Not a Phase. For Many, It Is the Default.
&lt;/h2&gt;

&lt;p&gt;The phrase "survival mode" sounds temporary. Like a rough patch before things improve.&lt;/p&gt;

&lt;p&gt;For a lot of developers, it is just Tuesday.&lt;/p&gt;

&lt;p&gt;They are not dramatically unhappy. They are not about to quit. They are doing the standup, the sprint planning, the code review, the deployment. They are technically fine. But the version of themselves that used to get excited about a hard problem, that used to stay late not because of a deadline but because they genuinely wanted to see if it worked, that version quietly left at some point and nobody noticed.&lt;/p&gt;

&lt;p&gt;One developer who lost his passion for code described it: without passion, work is just grinding. You go through the motions but do not enjoy the moment.&lt;/p&gt;

&lt;p&gt;Going through the motions. That is survival mode. And it is invisible to everyone except the person doing it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Number That Should Bother More People
&lt;/h2&gt;

&lt;p&gt;24% of developers are happy at work.&lt;/p&gt;

&lt;p&gt;That is the high point. That is after job satisfaction improved from last year.&lt;/p&gt;

&lt;p&gt;In any other industry, if three quarters of the workforce reported being unhappy, it would be a crisis. In tech, it is a data point in an annual survey that gets shared on LinkedIn for two days and then forgotten.&lt;/p&gt;

&lt;p&gt;The developers who are satisfied are mostly the ones with autonomy, decent pay, and work that feels like it matters. Those things are not rare because they are hard to provide. They are rare because they are not what most organizations are actually measuring or optimizing for.&lt;/p&gt;

&lt;p&gt;Retros capture what broke. Sprints capture what shipped. Stand-ups capture what is blocked. Nobody built a ritual for what you solved, or whether the person solving it still cares about their work.&lt;/p&gt;

&lt;p&gt;That gap, between what organizations track and what developers actually need, is where most of the unhappiness lives.&lt;/p&gt;




&lt;p&gt;You might be reading this and recognizing yourself somewhere in it. The survival mode. The AI frustration. The invisible work nobody witnesses. The counting of minutes.&lt;/p&gt;

&lt;p&gt;If you are, you are not an outlier. You are three quarters of the profession.&lt;/p&gt;

&lt;p&gt;That is worth knowing. Not because it fixes anything. But because the story you have been telling yourself, that everyone else is fine and something is wrong with you, is not true.&lt;/p&gt;

&lt;p&gt;Most people are not fine. They are just quiet about it.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Nobody Talks About How Lonely Being a Developer Can Be</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Wed, 06 May 2026 07:00:38 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/nobody-talks-about-how-lonely-being-a-developer-can-be-j3h</link>
      <guid>https://dev.to/web_dev-usman/nobody-talks-about-how-lonely-being-a-developer-can-be-j3h</guid>
      <description>&lt;p&gt;You fixed the bug. The one that had been eating your brain for two days straight.&lt;/p&gt;

&lt;p&gt;You lean back. You want to tell someone. You look around and realize there is nobody to tell. Your family would smile and nod. Your non-dev friends would say "nice!" and immediately change the subject. Your teammates are buried in their own tickets.&lt;/p&gt;

&lt;p&gt;So you just close the tab and move on.&lt;/p&gt;

&lt;p&gt;That moment right there. That is what developer loneliness actually feels like. Not dramatic. Not a breakdown. Just a quiet win that disappears into the void because nobody around you speaks the same language.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cruelest Irony in Tech
&lt;/h2&gt;

&lt;p&gt;We work in one of the most connected industries on earth. GitHub. Discord. Slack. Stack Overflow. Twitter threads at 1am. You can pull a library that someone in Finland wrote three years ago and have it running in your project in 30 seconds.&lt;/p&gt;

&lt;p&gt;And yet.&lt;/p&gt;

&lt;p&gt;A developer on devRant put it plainly: "If you are a team of one, it will be both lonely AND frustrating." That is not an edge case. That is a massive portion of the developer world. Freelancers, solo founders, juniors on teams where nobody has time to talk, remote workers staring at a screen in a room that has been silent since Tuesday.&lt;/p&gt;

&lt;p&gt;The connected infrastructure of tech is for the code. Not always for the people writing it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Nobody Posts About
&lt;/h2&gt;

&lt;p&gt;Here is what you see on Twitter and LinkedIn: someone shipping a side project in a weekend. Someone cracking a FAANG interview. Someone's first PR getting merged. The highlight reel of developer life.&lt;/p&gt;

&lt;p&gt;Here is what one developer actually wrote about their experience: "Me, sitting in a dim room at 2am, stuck on a bug. Me, refreshing Stack Overflow, hoping someone posted a solution. Me, watching yet another tutorial, wondering if I am even progressing. No one claps when you finally debug something you have been stuck on for days. No one sees the hours spent staring at console logs."&lt;/p&gt;

&lt;p&gt;That version does not get the likes. So it does not get posted. So everyone assumes they are the only one feeling it.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  The Part That Stings the Most
&lt;/h2&gt;

&lt;p&gt;It is not just the silence during work hours. It is not being able to share any of it with the people you love.&lt;/p&gt;

&lt;p&gt;You spend 8 hours wrestling with a system design problem and you solve it. You want to feel that with someone. But you cannot really explain what you solved without a 20 minute backstory that even then will not land. So you just say "work was fine."&lt;/p&gt;

&lt;p&gt;One developer described this as the work side of your life becoming "a black box" for everyone around you. Your job, the thing you spend most of your waking hours doing, becomes essentially invisible to the people closest to you. That is a strange and specific kind of loneliness that nobody really warns you about when you are learning to code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Remote Work Made the Walls Thicker
&lt;/h2&gt;

&lt;p&gt;For developers who already worked alone, remote work changed very little. For everyone else, it quietly removed things they did not even know they were depending on.&lt;/p&gt;

&lt;p&gt;The coworker who walked past and noticed you looked frustrated. The five minute conversation at the coffee machine that was not about anything important but still made you feel like a human being. The shared lunch where you complained about a meeting and someone laughed because they were in the same meeting and felt the same way.&lt;/p&gt;

&lt;p&gt;Research backs this up: remote work is genuinely associated with increased employee loneliness, and virtual meetings, especially task-focused ones, do not replicate the kind of informal social interaction that actually builds connection. A Slack message is not a conversation. A standup is not a check-in. And "async first" as a team culture, for all its productivity benefits, can make a person feel like a ticket-processing machine rather than a colleague.&lt;/p&gt;

&lt;p&gt;43% of remote workers report feeling lonely at work. That number is higher than for office employees. And in tech, remote work is not the exception. It is the default.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Thing We Do Instead
&lt;/h2&gt;

&lt;p&gt;Here is the move most developers make when the isolation gets heavy: they open VS Code.&lt;/p&gt;

&lt;p&gt;New side project. New framework to learn. New problem to solve. Because that is what the culture teaches. You feel bad? Get productive. Feeling disconnected? Ship something. The grind is the answer.&lt;/p&gt;

&lt;p&gt;It works, for a while. Solving problems does feel good. But you can build five projects and still finish the week feeling like you have not had a real conversation with anyone who gets what you do. Output is not a substitute for connection. It just keeps you too busy to notice the gap.&lt;/p&gt;




&lt;h2&gt;
  
  
  This Is Not a "Just Introduce Yourself at Meetups" Article
&lt;/h2&gt;

&lt;p&gt;There are a thousand articles that will tell you to join a Discord server, go to a local meetup, find a pair programming partner. That advice is fine. It is also incomplete, because the loneliness that developers describe is not just about lacking a community to join.&lt;/p&gt;

&lt;p&gt;It is about the nature of the work itself. The long uninterrupted stretches where deep focus is the goal and interaction is the interruption. The way "communicate async, avoid meetings" became a productivity religion that quietly stripped the humanity out of how teams work. The fact that after months or years of low social engagement, your social skills actually atrophy. You get prickly. Conversations feel harder. And then the loneliness compounds because now you feel bad at the thing that would fix the problem.&lt;/p&gt;

&lt;p&gt;One developer who reflected on a failed solo project said it plainly: "My mistake was making everything alone. I could not enjoy enough the technical success moments because nobody on my team understood them, and the bad moments affected me too much because I could not talk them out. Without sharing, I did not even like the good parts."&lt;/p&gt;

&lt;p&gt;That is the full cost. Not just the hard moments feeling harder. The good moments stop feeling good too.&lt;/p&gt;




&lt;h2&gt;
  
  
  So What Actually Helps
&lt;/h2&gt;

&lt;p&gt;Not a listicle. Just honest things.&lt;/p&gt;

&lt;p&gt;Finding one person who genuinely understands the work changes more than any community will. Not a server with 10,000 people. One person you can message at 11pm and say "this is broken and I do not know why" and have them respond with something real. That is worth more than a hundred passive Discord memberships.&lt;/p&gt;

&lt;p&gt;Letting the wins matter, even if nobody else can understand them. Write it down. Say it out loud to yourself. "I fixed it." That moment is real even if nobody claps.&lt;/p&gt;

&lt;p&gt;Lowering the bar for what counts as connection. You do not need a deep technical conversation every day. Sometimes it is enough to sit in a coffee shop and just be around other people who are also doing their own focused work. Ambient human presence is genuinely different from isolation, even when nobody speaks.&lt;/p&gt;

&lt;p&gt;And maybe the most important thing: stop treating the loneliness like a personal failure or a productivity problem to be optimized. It is a structural reality of this work. Acknowledging it does not make you weak. It makes you honest.&lt;/p&gt;




&lt;p&gt;You are probably reading this alone. Screen glow, headphones on, maybe a cold cup of coffee somewhere nearby.&lt;/p&gt;

&lt;p&gt;If any of this landed, you already know it is real. You did not need the research. You just needed to see it written down by someone who was not pretending it does not exist.&lt;/p&gt;

&lt;p&gt;Now you have seen it.&lt;/p&gt;

&lt;p&gt;You are not the only one.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>HTML Attributes That Do More Than You Think</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Thu, 30 Apr 2026 05:42:51 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/html-attributes-that-do-more-than-you-think-4l8f</link>
      <guid>https://dev.to/web_dev-usman/html-attributes-that-do-more-than-you-think-4l8f</guid>
      <description>&lt;p&gt;Two developers build the same page. Same images, same form, same content. One loads faster, scores better on Core Web Vitals, and feels smoother on mobile. The other does not.&lt;/p&gt;

&lt;p&gt;The difference is four HTML attributes. Each one takes about thirty seconds to add. Each one has a real, measurable impact on the people using your page.&lt;/p&gt;

&lt;p&gt;Here is what they do and how to use them right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the exact code examples:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/web-strategist/embed/zxKJKGL?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  loading
&lt;/h3&gt;

&lt;p&gt;By default, the browser fetches every image it finds in your HTML immediately, even the ones three screens below the fold that the user may never reach. On pages with many images, that is a lot of wasted bandwidth upfront.&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.amazonaws.com%2Fuploads%2Farticles%2Ffrqc0trkfk30v1i9tyeq.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.amazonaws.com%2Fuploads%2Farticles%2Ffrqc0trkfk30v1i9tyeq.png" width="800" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;loading&lt;/code&gt; attribute changes this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Loads immediately --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"eager"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Waits until the user scrolls near it --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"article-photo.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Photo"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Works on iframes too --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;iframe&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"map.html"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Map"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;loading="lazy"&lt;/code&gt; defers the request until the user is actually close to that element. If they never scroll there, the request never happens.&lt;/p&gt;

&lt;p&gt;One thing to be careful about. Never use &lt;code&gt;loading="lazy"&lt;/code&gt; on images visible when the page first opens. Those images should load immediately. Deferring them increases your Largest Contentful Paint time, which affects both user experience and search rankings.&lt;/p&gt;

&lt;p&gt;The rule is simple. Above the fold gets &lt;code&gt;eager&lt;/code&gt; or nothing. Below the fold gets &lt;code&gt;lazy&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Hero. Load it right away. --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"eager"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1200"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Further down the page. Let it wait. --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"section-photo.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Photo"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"800"&lt;/span&gt; &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"500"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always include &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; with lazy loaded images. Without them, the layout shifts when the image arrives, which is jarring for users and hurts your Cumulative Layout Shift score.&lt;/p&gt;

&lt;h3&gt;
  
  
  fetchpriority
&lt;/h3&gt;

&lt;p&gt;The browser assigns a priority to every resource it loads. Stylesheets are high priority because they block rendering. Images are low priority by default because most of them are below the fold.&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.amazonaws.com%2Fuploads%2Farticles%2F2a0b2o2qkw4jt0lkvl2s.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.amazonaws.com%2Fuploads%2Farticles%2F2a0b2o2qkw4jt0lkvl2s.png" width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The problem is your hero image is also low priority by default, even though it is the most important thing on the page.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fetchpriority&lt;/code&gt; lets you correct that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Tell the browser this image matters more than other images --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero"&lt;/span&gt; &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"high"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- This script is not critical, let it wait --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"analytics.js"&lt;/span&gt; &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"low"&lt;/span&gt; &lt;span class="na"&gt;defer&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Works on preloads too --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preload"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt; &lt;span class="na"&gt;as=&lt;/span&gt;&lt;span class="s"&gt;"image"&lt;/span&gt; &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"high"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The most impactful use is on your LCP image. Adding &lt;code&gt;fetchpriority="high"&lt;/code&gt; moves it to the front of the loading queue from the very start instead of sitting behind fonts and scripts that got there first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt;  &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"hero.jpg"&lt;/span&gt;  &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Hero"&lt;/span&gt;  &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"high"&lt;/span&gt;  &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"eager"&lt;/span&gt;  &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"1200"&lt;/span&gt;  &lt;span class="na"&gt;height=&lt;/span&gt;&lt;span class="s"&gt;"600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;fetchpriority="high"&lt;/code&gt; and &lt;code&gt;loading="eager"&lt;/code&gt; are doing different things here. &lt;code&gt;eager&lt;/code&gt; means do not defer this image. &lt;code&gt;fetchpriority="high"&lt;/code&gt; means when competing with other resources for bandwidth, this one goes first. Both belong on your hero image.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;low&lt;/code&gt; value is useful when you are preloading something that is not needed for the initial render and you do not want it competing with resources that are.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"preload"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"secondary-font.woff2"&lt;/span&gt; &lt;span class="na"&gt;as=&lt;/span&gt;&lt;span class="s"&gt;"font"&lt;/span&gt; &lt;span class="na"&gt;fetchpriority=&lt;/span&gt;&lt;span class="s"&gt;"low"&lt;/span&gt; &lt;span class="na"&gt;crossorigin&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This attribute became fully supported across all major browsers in October 2024 and works as a hint, meaning the browser will respect it when it can and use its own judgment when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  autocomplete
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;autocomplete&lt;/code&gt; attribute tells the browser what kind of data lives in a field. When the browser knows this, it can offer the right saved value instantly, whether that is a saved address, a credit card number, or login credentials.&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.amazonaws.com%2Fuploads%2Farticles%2Fty40bup80m43a0z5y2dz.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.amazonaws.com%2Fuploads%2Farticles%2Fty40bup80m43a0z5y2dz.png" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most developers know it accepts &lt;code&gt;on&lt;/code&gt; and &lt;code&gt;off&lt;/code&gt;. What is less known is that it accepts over 50 specific values, each one mapping to a particular type of information.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Personal details --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"given-name"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"First name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"family-name"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Last name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"tel"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"tel"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Phone"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Address --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"street-address"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Street address"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"postal-code"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Postal code"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"country"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Country"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Payment --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"cc-name"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Name on card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"cc-number"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Card number"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"cc-exp"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Expiry"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"cc-csc"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"CVV"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Login --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"username"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Username"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"current-password"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Password"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"new-password"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Create a password"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;current-password&lt;/code&gt; and &lt;code&gt;new-password&lt;/code&gt; are worth understanding separately. &lt;code&gt;current-password&lt;/code&gt; tells the browser the user is entering an existing password, so it offers saved credentials. &lt;code&gt;new-password&lt;/code&gt; tells it the user is creating one, so it offers to generate a strong password instead. One value, completely different behavior.&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.amazonaws.com%2Fuploads%2Farticles%2Fhh1jvjvgu7gwhco9p6j6.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.amazonaws.com%2Fuploads%2Farticles%2Fhh1jvjvgu7gwhco9p6j6.png" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For one-time verification codes there is a dedicated value:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt;  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;  &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"one-time-code"&lt;/span&gt;  &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"numeric"&lt;/span&gt;  &lt;span class="na"&gt;maxlength=&lt;/span&gt;&lt;span class="s"&gt;"6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&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.amazonaws.com%2Fuploads%2Farticles%2Fz16me3um3f02o0q8hs28.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.amazonaws.com%2Fuploads%2Farticles%2Fz16me3um3f02o0q8hs28.png" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On iOS, when this is set and an SMS with a code arrives, the keyboard automatically surfaces a one-tap option to fill it in. That entire copy-and-paste flow collapses into a single tap because the browser understands what the field needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  inputmode
&lt;/h3&gt;

&lt;p&gt;When a user taps an input on mobile, a keyboard appears. Which keyboard appears is something you can control.&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.amazonaws.com%2Fuploads%2Farticles%2Flxamfmh9e4g4dmeqiwja.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.amazonaws.com%2Fuploads%2Farticles%2Flxamfmh9e4g4dmeqiwja.png" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;inputmode&lt;/code&gt; tells the browser which virtual keyboard to show. It does not change validation or field behavior, only the keyboard. This makes it more flexible than changing the &lt;code&gt;type&lt;/code&gt; attribute, which affects both.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Digits only, without type="number" side effects --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"numeric"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Digits plus decimal point, right for prices --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"decimal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Telephone keypad with * and # --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"tel"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Email keyboard with @ shortcut --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- URL keyboard with / and .com --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Search keyboard, enter key labeled Search --&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt; &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;numeric&lt;/code&gt; and &lt;code&gt;decimal&lt;/code&gt; are the ones people mix up most often. &lt;code&gt;numeric&lt;/code&gt; shows digits 0 to 9 only. &lt;code&gt;decimal&lt;/code&gt; adds a decimal separator. Use &lt;code&gt;decimal&lt;/code&gt; for prices and measurements, &lt;code&gt;numeric&lt;/code&gt; for PINs, postal codes, and verification codes.&lt;/p&gt;

&lt;p&gt;Here is what a complete credit card field looks like when &lt;code&gt;autocomplete&lt;/code&gt; and &lt;code&gt;inputmode&lt;/code&gt; work together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt;  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;  &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"cc-number"&lt;/span&gt;  &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"numeric"&lt;/span&gt;  &lt;span class="na"&gt;pattern=&lt;/span&gt;&lt;span class="s"&gt;"[0-9\s]{13,19}"&lt;/span&gt;  &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"1234 5678 9012 3456"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each attribute has a specific job. &lt;code&gt;autocomplete&lt;/code&gt; tells the browser what the field collects. &lt;code&gt;inputmode&lt;/code&gt; shows the right keyboard. &lt;code&gt;pattern&lt;/code&gt; handles validation. None of them overlap.&lt;/p&gt;

&lt;p&gt;The same approach applies to an OTP field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt;  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;  &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"one-time-code"&lt;/span&gt;  &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"numeric"&lt;/span&gt;  &lt;span class="na"&gt;maxlength=&lt;/span&gt;&lt;span class="s"&gt;"6"&lt;/span&gt;  &lt;span class="na"&gt;pattern=&lt;/span&gt;&lt;span class="s"&gt;"\d{6}"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On iOS this combination triggers automatic SMS code detection. A flow that used to require switching apps and copying a code becomes one tap. The attributes are doing all the work.&lt;/p&gt;

&lt;h3&gt;
  
  
  What connects all four
&lt;/h3&gt;

&lt;p&gt;None of them need JavaScript. None of them change how your page looks. They are pieces of information you give the browser so it can make better decisions for your users.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;loading&lt;/code&gt; controls when a resource is fetched. &lt;code&gt;fetchpriority&lt;/code&gt; controls how urgently it is fetched. &lt;code&gt;autocomplete&lt;/code&gt; tells the browser what data a field expects. &lt;code&gt;inputmode&lt;/code&gt; tells it which keyboard fits that data.&lt;/p&gt;

&lt;p&gt;Small additions. Real impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  The WHATWG Living Standard lists every valid &lt;code&gt;autocomplete&lt;/code&gt; value. If you build forms regularly, the full list is worth a look.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>ux</category>
    </item>
    <item>
      <title>15 Open-Source Tools That Feel Illegal</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Tue, 28 Apr 2026 11:42:54 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/15-open-source-tools-that-feel-illegal-1m7a</link>
      <guid>https://dev.to/web_dev-usman/15-open-source-tools-that-feel-illegal-1m7a</guid>
      <description>&lt;p&gt;These open-source tools are so powerful, free, and versatile, they make work faster, smarter, and almost too easy to believe.&lt;/p&gt;

&lt;p&gt;Some tools are so good, so free, and so powerful, you almost feel guilty using them. They don’t just save time; they completely change the way you work. In 2026, open-source isn’t just a way to avoid paying. It’s about working smarter, building faster, and keeping control without relying on anyone else. These 15 tools are so capable, so polished, and so versatile, they almost feel unfair.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenClaw: Smarter AI Agents
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2F8rxwtl716wg88zw9p06r.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.amazonaws.com%2Fuploads%2Farticles%2F8rxwtl716wg88zw9p06r.png" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openclaw.ai/" rel="noopener noreferrer"&gt;https://openclaw.ai/&lt;/a&gt;&lt;br&gt;
OpenClaw is like having an AI assistant that actually works for you. It lets you create autonomous agents that can follow instructions, manage files, send messages, and even automate repetitive tasks. Unlike most AI tools that require cloud access, OpenClaw runs locally.&lt;/p&gt;

&lt;p&gt;That means your data never leaves your machine, and you stay in full control. What’s really exciting is how flexible it is. You can set it up for simple tasks like organizing your code files or more complex workflows that involve multiple steps and integrations.&lt;/p&gt;

&lt;p&gt;For anyone exploring AI, this tool feels almost magical because it allows automation that used to require entire teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Appwrite: Everything You Need in One Backend
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fcncbaz0ak4flquhwn093.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.amazonaws.com%2Fuploads%2Farticles%2Fcncbaz0ak4flquhwn093.png" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appwrite.io/" rel="noopener noreferrer"&gt;https://appwrite.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Appwrite turns what used to be a complicated backend setup into something fast and manageable. It bundles authentication, databases, file storage, and serverless functions all into one platform.&lt;/p&gt;

&lt;p&gt;Setting up a backend that usually takes hours can now be done in minutes. The best part is the simplicity, you don’t need to juggle multiple services or worry about compatibility. You can focus on building your app, not wrestling with infrastructure.&lt;/p&gt;

&lt;p&gt;Startups and solo developers will especially appreciate how it handles security and user management effortlessly while still giving you full control over your environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenTofu: Cloud Infrastructure
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Ffpmxlmk0jaqfabztjpg6.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.amazonaws.com%2Fuploads%2Farticles%2Ffpmxlmk0jaqfabztjpg6.png" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opentofu.org/" rel="noopener noreferrer"&gt;https://opentofu.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Managing cloud infrastructure has always been tricky. OpenTofu changes that by letting you define servers, networks, and storage in code. Every change is versioned, which means you can roll back mistakes instantly.&lt;/p&gt;

&lt;p&gt;It works across multiple cloud providers, so you’re not locked in. Teams that handle multiple deployments will love how much safer and predictable it makes everything.&lt;/p&gt;

&lt;p&gt;It feels almost illegal because what used to take hours or even days can now be automated and repeated with a few lines of code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tuleap: Agile Project Management
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fwxqxf4si33lqk3gth4d1.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.amazonaws.com%2Fuploads%2Farticles%2Fwxqxf4si33lqk3gth4d1.png" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tuleap.com/" rel="noopener noreferrer"&gt;https://www.tuleap.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tuleap is a full-featured platform for project management. It combines agile boards, issue tracking, and code collaboration in one place.&lt;/p&gt;

&lt;p&gt;You can plan sprints, track progress, and have a clear view of your team’s work without hopping between multiple apps. What sets it apart is how flexible it is. It works for small teams, large enterprises, and open-source communities alike.&lt;/p&gt;

&lt;p&gt;If you’ve ever struggled to keep projects organized, Tuleap feels like a revelation because it gives you structure without being rigid.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenDesk: Productivity Without Subscriptions
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fdxta6znzguax63dk2eel.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.amazonaws.com%2Fuploads%2Farticles%2Fdxta6znzguax63dk2eel.png" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.opendesk.eu/en" rel="noopener noreferrer"&gt;https://www.opendesk.eu/en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenDesk is a complete productivity suite. It includes documents, spreadsheets, presentations, email, and a calendar. Everything is integrated and works together seamlessly. For anyone tired of subscriptions and software that locks you in, OpenDesk is a breath of fresh air.&lt;/p&gt;

&lt;p&gt;It’s surprisingly polished for an open-source project, and it’s compatible with common file formats, which makes collaborating with others effortless.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ladybird: Browsing Freedom
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fzeld8upcv3qtd6376lpo.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.amazonaws.com%2Fuploads%2Farticles%2Fzeld8upcv3qtd6376lpo.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ladybird.org/" rel="noopener noreferrer"&gt;https://ladybird.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ladybird isn’t another Chromium or Firefox clone. It has its own engine and focuses on speed, simplicity, and privacy. It’s lightweight, responsive, and feels different from the browsers we’ve all gotten used to.&lt;/p&gt;

&lt;p&gt;Using Ladybird, you get a sense of ownership, you can see what’s going on under the hood, and it respects your data. For anyone frustrated with slow or bloated browsers, Ladybird is a tool that feels almost too good to be free.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supabase: Build Real-Time Apps
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fk68t89at6wfko3w41fsj.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.amazonaws.com%2Fuploads%2Farticles%2Fk68t89at6wfko3w41fsj.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;https://supabase.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Supabase is the open-source alternative to Firebase, and it’s powerful. It gives you a PostgreSQL database, authentication, storage, and real-time APIs that are ready to use. Hosting it yourself or using their managed cloud keeps you in control.&lt;/p&gt;

&lt;p&gt;For developers building chat apps, dashboards, or collaborative tools, Supabase turns what used to be complex into something seamless. You don’t just get speed, you get freedom to structure your backend exactly how you want.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apache Allura: Keep Everything Together
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fvkjuhdwel44fg8xokf6k.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.amazonaws.com%2Fuploads%2Farticles%2Fvkjuhdwel44fg8xokf6k.png" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://allura.apache.org/" rel="noopener noreferrer"&gt;https://allura.apache.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apache Allura is a one-stop solution for project collaboration. It hosts code repositories, issue tracking, forums, and documentation. Managing multiple projects suddenly feels organized instead of overwhelming.&lt;/p&gt;

&lt;p&gt;Open-source communities and teams that juggle several initiatives will find it invaluable. The platform makes communication and tracking easier, and everything works together naturally.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenTelemetry: Understand Your Systems
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Frdqq7ctt2llua1nub6mt.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.amazonaws.com%2Fuploads%2Farticles%2Frdqq7ctt2llua1nub6mt.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opentelemetry.io/" rel="noopener noreferrer"&gt;https://opentelemetry.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenTelemetry gives you complete visibility into your applications. It collects metrics, logs, and traces across multiple services.&lt;/p&gt;

&lt;p&gt;If your apps are distributed or microservice-based, OpenTelemetry helps you understand performance issues, bottlenecks, and errors in real time.&lt;/p&gt;

&lt;p&gt;It’s like giving your system a microscope, suddenly you can see problems before they become crises.&lt;/p&gt;

&lt;h3&gt;
  
  
  LangChain: Intelligent Workflows
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fi8orlm9t1uqzl8u4ufek.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.amazonaws.com%2Fuploads%2Farticles%2Fi8orlm9t1uqzl8u4ufek.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.langchain.com/" rel="noopener noreferrer"&gt;https://www.langchain.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LangChain lets you chain AI models, tools, and memory to create agents that act intelligently. You can build AI workflows that automate complex tasks, from answering questions to executing sequences of commands.&lt;/p&gt;

&lt;p&gt;It’s flexible, and the possibilities feel almost limitless. If you’ve wanted AI to do more than just chat, LangChain makes it feel real and achievable.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenCode: Code Faster and Smarter
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fjky79pfeouwj8mqcltq8.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.amazonaws.com%2Fuploads%2Farticles%2Fjky79pfeouwj8mqcltq8.png" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;https://opencode.ai/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenCode is a coding assistant that runs locally. Unlike cloud-based AI coding tools, it never sends your code anywhere. It helps with suggestions, automates boilerplate, and can even debug issues.&lt;/p&gt;

&lt;p&gt;Developers who value privacy and speed will find it incredibly powerful. It’s like having a teammate who never sleeps and knows your codebase inside out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes: Scale Effortlessly
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fncxmv74hsqp2zd25zza8.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.amazonaws.com%2Fuploads%2Farticles%2Fncxmv74hsqp2zd25zza8.png" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;https://kubernetes.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes is the standard for managing containers and orchestrating applications. Deploying, scaling, and managing apps used to be complicated and error-prone. Kubernetes automates all of that. For teams deploying multiple services, it’s a lifesaver. It handles the complexity in the background so you can focus on building features instead of infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hugging Face: Access AI Models Instantly
&lt;/h3&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AmVP8LdLIEmvvEdt0EtUtzQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AmVP8LdLIEmvvEdt0EtUtzQ.png" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/" rel="noopener noreferrer"&gt;https://huggingface.co/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hugging Face hosts thousands of AI models, from NLP to computer vision. You can download, train, or deploy them easily.&lt;/p&gt;

&lt;p&gt;For researchers and developers, it’s like having a library of the most advanced AI at your fingertips. You don’t have to start from scratch, which saves months of work and experimentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  TensorFlow and PyTorch: Build Anything
&lt;/h3&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AfRFICY2MKtDtPodfDhfdsw.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AfRFICY2MKtDtPodfDhfdsw.png" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tensorflow.org/" rel="noopener noreferrer"&gt;https://www.tensorflow.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TensorFlow and PyTorch are the foundations of modern AI. TensorFlow is structured and ideal for production environments.&lt;/p&gt;

&lt;p&gt;PyTorch is flexible and perfect for prototyping and research. Together, they let anyone create complex AI models without expensive infrastructure. The speed, flexibility, and community support make them indispensable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open-source is no longer just a budget-friendly alternative.
&lt;/h3&gt;

&lt;p&gt;These 15 tools are &lt;strong&gt;powerful, polished, and incredibly versatile&lt;/strong&gt;. They make work faster, smarter, and more enjoyable. From AI to cloud infrastructure to project management to productivity, these tools are reshaping the way developers, teams, and creators work. Using them feels almost too good to be legal, but that’s exactly why they deserve your attention today.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>tooling</category>
      <category>ai</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How I Built a Money Machine by Outranking a Hosting Giant</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Mon, 27 Apr 2026 10:18:30 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/how-i-built-a-money-machine-by-outranking-a-hosting-giant-14bi</link>
      <guid>https://dev.to/web_dev-usman/how-i-built-a-money-machine-by-outranking-a-hosting-giant-14bi</guid>
      <description>&lt;p&gt;I have a confession.&lt;/p&gt;

&lt;p&gt;I beat a company with a 100-person marketing team, a massive SEO budget, and years of domain authority.&lt;/p&gt;

&lt;p&gt;On their own keyword.&lt;/p&gt;

&lt;p&gt;And I did it in one afternoon.&lt;/p&gt;

&lt;p&gt;Three months ago I published a single article on Medium. A simple comparison piece. "Hostinger vs Namecheap." Added my affiliate link. Hit publish. Closed my laptop.&lt;/p&gt;

&lt;p&gt;Today that article sits at #1 on Google. Right above Hostinger's own page. And it has been quietly earning me affiliate commissions every single day since.&lt;/p&gt;

&lt;p&gt;No website. No backlinks. No SEO agency. No waiting a year for Google to trust me.&lt;/p&gt;

&lt;p&gt;Just one strategy most people have never heard of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is called Parasite SEO.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Parasite SEO?
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2F4aujuu978ou1xa4zddze.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.amazonaws.com%2Fuploads%2Farticles%2F4aujuu978ou1xa4zddze.png" alt=" " width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Parasite SEO is the practice of publishing content on high-authority platforms that Google already trusts, instead of trying to build that trust yourself from scratch.&lt;/p&gt;

&lt;p&gt;Think about how long it takes a brand new website to rank on Google. Six months minimum. Often twelve. Sometimes never. You need backlinks, consistent content, technical SEO, and patience most people simply do not have.&lt;/p&gt;

&lt;p&gt;Parasite SEO skips all of that.&lt;/p&gt;

&lt;p&gt;When you publish on platforms like Medium, Reddit, LinkedIn, Substack, or GitHub, you instantly inherit years of domain authority those platforms have built. Google sees your content through the lens of that platform's reputation. And it ranks accordingly.&lt;/p&gt;

&lt;p&gt;That is the cheat code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Did My Article Beat Hostinger?
&lt;/h2&gt;

&lt;p&gt;This is the part most people find hard to believe.&lt;/p&gt;

&lt;p&gt;Hostinger is a massive company. They have professional SEO teams, content writers, link building campaigns, and a domain that has been around for years. On paper, there is no reason a random Medium article should outrank them.&lt;/p&gt;

&lt;p&gt;But here is what Google actually cares about.&lt;/p&gt;

&lt;p&gt;Search intent.&lt;/p&gt;

&lt;p&gt;When someone types "&lt;a href="https://pixicstudio.medium.com/hostinger-vs-namecheap-which-one-is-actually-worth-your-money-in-2026-44c2b6f173a7" rel="noopener noreferrer"&gt;Hostinger vs Namecheap&lt;/a&gt;" into Google, they are not looking for Hostinger's opinion on Hostinger. They know that page is going to tell them Hostinger is the best option. That is obvious. That is useless to them.&lt;/p&gt;

&lt;p&gt;They want a real, unbiased, third-party take.&lt;/p&gt;

&lt;p&gt;My Medium article gave them exactly that. An honest comparison. Pros and cons of both. Written like a human being talking to another human being.&lt;/p&gt;

&lt;p&gt;Google's entire job is to match the searcher with the most helpful result. My article was more helpful than Hostinger's own page for that specific search. So Google put me first.&lt;/p&gt;

&lt;p&gt;Authority plus intent equals rankings. That is the full formula.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Exact Process I Used
&lt;/h2&gt;

&lt;p&gt;Here is every step, nothing held back.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Find a High Buying Intent Keyword
&lt;/h3&gt;

&lt;p&gt;Not all keywords are equal for affiliate marketing.&lt;/p&gt;

&lt;p&gt;You want keywords where the person searching is already close to making a purchase decision. They are not casually browsing. They are comparing options and about to pull out their credit card.&lt;/p&gt;

&lt;p&gt;The best formats for this are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"X vs Y" (Hostinger vs Namecheap)&lt;/li&gt;
&lt;li&gt;"Best X for Y" (Best hosting for WordPress beginners)&lt;/li&gt;
&lt;li&gt;"X Review" (Hostinger Review 2026)&lt;/li&gt;
&lt;li&gt;"X Alternative" (Namecheap Alternative)&lt;/li&gt;
&lt;li&gt;"X Discount" or "X Coupon" (Hostinger Promo Code)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These keywords have commercial intent baked in. The person is ready to buy. Your affiliate link is the last step in their journey.&lt;/p&gt;

&lt;p&gt;For my article, I targeted "Hostinger vs Namecheap" because it had solid search volume, clear buyer intent, and the competition on the first page was beatable with the right platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Choose the Right Platform
&lt;/h3&gt;

&lt;p&gt;Not every platform works equally well for every niche. Here is a quick breakdown:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Medium&lt;/strong&gt; works best for tech, software, marketing, finance, and lifestyle content. It has enormous domain authority and articles can rank surprisingly fast. Perfect for hosting comparisons, tool reviews, and anything in the SaaS space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reddit&lt;/strong&gt; is incredibly powerful right now. Google has given Reddit a massive boost in rankings over the past year. The right subreddit with a helpful post or comment containing your link can drive serious traffic. Works well for almost any niche.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn Articles&lt;/strong&gt; rank well for business, career, marketing, and professional tools. If your affiliate product has a business audience, LinkedIn is underutilized for this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Substack&lt;/strong&gt; is growing in authority fast. Great for newsletters and long-form content in any niche.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt; is a hidden gem for developer-focused affiliate products. A well-structured README or repository comparing dev tools can rank extremely well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quora&lt;/strong&gt; still holds authority for question-based keywords. Answer a question thoroughly, link naturally, and it can stick on the first page for years.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Write Content That Actually Helps
&lt;/h3&gt;

&lt;p&gt;This is where most people get it wrong.&lt;/p&gt;

&lt;p&gt;Parasite SEO does not mean low-effort spam. Google is smart enough to know the difference between genuinely helpful content and thin affiliate garbage.&lt;/p&gt;

&lt;p&gt;Your article needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actually answer the question the searcher has&lt;/li&gt;
&lt;li&gt;Cover both options honestly including the downsides&lt;/li&gt;
&lt;li&gt;Be written in a natural human voice&lt;/li&gt;
&lt;li&gt;Provide a clear recommendation based on different use cases&lt;/li&gt;
&lt;li&gt;Include your affiliate link naturally, not forced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason my article ranks is not just because it is on Medium. It is because it is genuinely useful. Someone reading it walks away knowing exactly which hosting provider fits their situation. That is what Google rewards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Optimize the Basics
&lt;/h3&gt;

&lt;p&gt;You do not need to be an SEO expert for this. A few simple things make a big difference.&lt;/p&gt;

&lt;p&gt;Put your keyword in the title. Put it in the first paragraph. Use it naturally a few more times throughout the article. Write a clear meta description if the platform allows it. Use subheadings that match what people are searching for.&lt;/p&gt;

&lt;p&gt;That is honestly most of what you need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Publish and Let It Work
&lt;/h3&gt;

&lt;p&gt;This is the best part.&lt;/p&gt;

&lt;p&gt;Once you publish, the article starts getting crawled and indexed. On high-authority platforms this can happen within hours. Rankings typically settle within a few days to a few weeks depending on the competition.&lt;/p&gt;

&lt;p&gt;After that, you do not touch it.&lt;/p&gt;

&lt;p&gt;No link building campaigns. No social media promotion required. No updating every few months. The article just sits there and earns.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Works Even Better in 2026
&lt;/h2&gt;

&lt;p&gt;A lot of people think SEO is getting harder. And for new websites, they are right.&lt;/p&gt;

&lt;p&gt;But for Parasite SEO the conditions are actually getting better.&lt;/p&gt;

&lt;p&gt;Google has been rewarding trusted platforms more aggressively over the past two years. Reddit, Medium, LinkedIn, and Quora are showing up more than ever in search results. At the same time, AI-generated content flooding the web has made Google double down on platform trust signals.&lt;/p&gt;

&lt;p&gt;When everyone is building AI content farms on new domains, being on an established trusted platform makes you stand out even more.&lt;/p&gt;

&lt;p&gt;The window is wide open right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers That Actually Matter
&lt;/h2&gt;

&lt;p&gt;I am not going to throw out income claims because every niche and keyword is different. What I will tell you is this.&lt;/p&gt;

&lt;p&gt;One article. One afternoon of work. Zero ongoing maintenance. Still earning three months later with no signs of stopping.&lt;/p&gt;

&lt;p&gt;The math on that is very favorable regardless of the exact numbers.&lt;/p&gt;

&lt;p&gt;And I am now replicating this formula across different niches. Same process every time. Different keyword, different platform, new affiliate link. Each one a new income stream that runs on autopilot.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You Need to Get Started
&lt;/h2&gt;

&lt;p&gt;Here is the honest truth. The barrier to entry for this strategy is extremely low.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A free account on Medium, Reddit, or whichever platform fits your niche&lt;/li&gt;
&lt;li&gt;Basic writing ability (you do not need to be a great writer, you need to be a helpful one)&lt;/li&gt;
&lt;li&gt;An affiliate program to join (most are free to join, Hostinger, Amazon Associates, and ShareASale are good starting points)&lt;/li&gt;
&lt;li&gt;A few hours to research your keyword and write your article&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is genuinely it.&lt;/p&gt;

&lt;p&gt;No investment required. No technical skills. No existing audience.&lt;/p&gt;

&lt;p&gt;Just the right keyword, the right platform, and content that helps people make a decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Most people spend months building websites, chasing backlinks, and waiting for Google to notice them.&lt;/p&gt;

&lt;p&gt;Parasite SEO flips that entire model on its head.&lt;/p&gt;

&lt;p&gt;You go where Google already looks. You write something genuinely useful. You add your affiliate link. You walk away.&lt;/p&gt;

&lt;p&gt;The internet does not care how big your marketing team is. It cares whether your content is the most helpful thing on the page for a specific search.&lt;/p&gt;

&lt;p&gt;A one-person operation with the right strategy will beat a 100-person team every single time if they understand this.&lt;/p&gt;

&lt;p&gt;I did it once. I am doing it again. And again.&lt;/p&gt;

&lt;p&gt;You can too.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you want to know exactly how I find these keywords and which platforms work best for specific niches, drop a comment below or reach out directly. Happy to help you get your first article ranking.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>9 Rules That’ll Help You Write Clean Code</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Sat, 25 Apr 2026 17:02:10 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/9-rules-thatll-help-you-write-clean-code-269i</link>
      <guid>https://dev.to/web_dev-usman/9-rules-thatll-help-you-write-clean-code-269i</guid>
      <description>&lt;p&gt;You write code every day. It runs. Tests pass. Tickets close. But six months later, you open that same file and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Who wrote this?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It was you. And that’s the problem.&lt;/p&gt;

&lt;p&gt;Clean code isn’t about being clever. It’s about being kind to the next person who reads your work, and most of the time, that person is future you. These 9 rules won’t just clean up your codebase. They’ll change how you think about writing software altogether.&lt;/p&gt;

&lt;p&gt;Let’s get into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. You Ain’t Gonna Need It (YAGNI)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2F1qbj1zisvm7h6a4b8q74.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.amazonaws.com%2Fuploads%2Farticles%2F1qbj1zisvm7h6a4b8q74.png" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one saves more time than almost any other rule on this list.&lt;/p&gt;

&lt;p&gt;YAGNI comes from Extreme Programming, and the idea is simple: don’t write code for a future you can’t predict. Developers have a habit of thinking ahead. “What if we need this later?” And so they build a feature, a toggle, an abstraction, for a requirement that never actually comes.&lt;/p&gt;

&lt;p&gt;That unused code still has to be read. Still has to be maintained. Still has to be understood by every new developer who joins the team.&lt;/p&gt;

&lt;p&gt;Build what you need today. Design for change, yes. But don’t write code for imaginary tomorrows.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Single Responsibility Principle (SRP)
&lt;/h2&gt;

&lt;p&gt;A quick test for you: Can you describe what a function or class does without using the word “and”?&lt;/p&gt;

&lt;p&gt;If not, it’s doing too much.&lt;/p&gt;

&lt;p&gt;Robert C. Martin, also known as Uncle Bob, defined SRP as part of the famous SOLID principles back in 2000. His exact words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A class should have only one reason to change.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not one thing, one reason to change. That’s a subtle but important distinction.&lt;/p&gt;

&lt;p&gt;A login module should not change because the checkout flow changed. A function that fetches data should not also format it for display. Keep responsibilities focused, and your code becomes dramatically easier to test, maintain, and understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Don’t Repeat Yourself (DRY)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fwrpsl72jxikyjr2uo3em.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.amazonaws.com%2Fuploads%2Farticles%2Fwrpsl72jxikyjr2uo3em.png" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Andy Hunt and Dave Thomas coined this one in &lt;em&gt;The Pragmatic Programmer&lt;/em&gt;, and it might be the most quoted rule in software development:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In plain terms, write it once and use it everywhere.&lt;/p&gt;

&lt;p&gt;Bugs multiply when logic is duplicated. If you fix it in one place but miss the other three, you have just shipped a problem. &lt;strong&gt;DRY&lt;/strong&gt; solves that by making sure changes happen in one place.&lt;/p&gt;

&lt;p&gt;One caveat worth knowing: &lt;strong&gt;DRY&lt;/strong&gt; can be overdone. Forcing abstractions where they don’t belong creates code that’s technically non-repetitive but completely unreadable. The “Rule of Three” is a good gut check, duplicate once, abstract on the third occurrence.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fail Fast (FF)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fucj8kln1ikhti45tl2kc.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.amazonaws.com%2Fuploads%2Farticles%2Fucj8kln1ikhti45tl2kc.png" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one doesn’t get discussed enough, and it should.&lt;/p&gt;

&lt;p&gt;The "fail fast" principle is straightforward, detect errors as early as possible and stop immediately. Don’t let bad data silently travel deep into your system before it causes a problem. Surface the error right where it happens.&lt;/p&gt;

&lt;p&gt;Eric Raymond put it perfectly in &lt;em&gt;The Art of Unix Programming&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Repair what you can, but when you must fail, fail noisily and as soon as possible.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The benefit is real. When something breaks close to where the bad input entered, debugging takes minutes instead of hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Keep It Simple, Stupid (KISS)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fxfe2p34f0ixjqrru47pa.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.amazonaws.com%2Fuploads%2Farticles%2Fxfe2p34f0ixjqrru47pa.png" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fun fact, KISS didn’t come from software. The U.S. Navy first noted it in 1960 and attributed it to Kelly Johnson, lead engineer at Lockheed Skunk Works. He challenged his team to design aircraft that an average mechanic in a field, under combat conditions, could repair with only basic tools.&lt;/p&gt;

&lt;p&gt;That’s the standard. Can someone maintain the performance under pressure with limited context?&lt;/p&gt;

&lt;p&gt;In software, KISS means resisting the urge to write clever code. That brilliant one-liner you’re proud of? The next developer will spend 20 minutes decoding it. Readable code beats clever code every single time. Simple systems are easier to debug, easier to extend, and easier to hand off.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Test Driven Development (TDD)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fnunx422jez6vrh1rkto6.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.amazonaws.com%2Fuploads%2Farticles%2Fnunx422jez6vrh1rkto6.png" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kent Beck developed TDD in the late 1990s as part of Extreme Programming, though he famously called it a &lt;em&gt;rediscovery&lt;/em&gt; rather than an invention. The cycle is known as Red, Green, Refactor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write a failing test (Red)&lt;/li&gt;
&lt;li&gt;Write just enough code to make it pass (Green)&lt;/li&gt;
&lt;li&gt;Clean up the code without changing behaviour (Refactor)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What most people miss is that TDD isn’t really about testing. It’s about design. Writing the test first forces you to think about your API before your implementation. It makes you define what the code should do before figuring out how to do it. The tests are just the safety net that lets you refactor with confidence later.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Separation of Concerns (SOC)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fq7ily5imr40s5tla14b8.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.amazonaws.com%2Fuploads%2Farticles%2Fq7ily5imr40s5tla14b8.png" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edsger Dijkstra introduced this concept way back in 1974, and it’s so foundational that two of the five SOLID principles are direct derivations of it.&lt;/p&gt;

&lt;p&gt;The core idea: don’t write your program as one big block. Break it into distinct sections where each one handles a single, specific concern. UI logic lives separately from business logic. Database access lives separately from both.&lt;/p&gt;

&lt;p&gt;A practical way to think about it: if changing your database requires touching your UI code, your concerns are not separated. When they are properly isolated, you can modify one part of the system without setting the rest on fire.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Document Your Code (DYC)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2Fj1dh1zcfifxsaomvxoj6.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.amazonaws.com%2Fuploads%2Farticles%2Fj1dh1zcfifxsaomvxoj6.png" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the thing about documentation that nobody says clearly enough: don’t comment on &lt;em&gt;what&lt;/em&gt; the code does, comment on &lt;em&gt;why&lt;/em&gt; it does it.&lt;/p&gt;

&lt;p&gt;Good code explains itself. A well-named function, a clear variable, a logical structure, these tell you what is happening. What they can’t always tell you is why a specific decision was made, why a particular edge case is handled the way it is, or why an obvious-looking approach was deliberately avoided.&lt;/p&gt;

&lt;p&gt;That’s what comments are for. Write for the developer who joins your team in a year, the one with no context, no Slack history, and a deadline. Because that developer might also be you.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Boy Scout Rule (BSR)
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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.amazonaws.com%2Fuploads%2Farticles%2F1n4kk1boo0xj6i0hphxj.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.amazonaws.com%2Fuploads%2Farticles%2F1n4kk1boo0xj6i0hphxj.png" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uncle Bob adapted this from an actual Boy Scouts principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Always leave the campground cleaner than you found it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Applied to code, it means this: every time you touch a file, leave it slightly better than you found it. Rename a confusing variable. Remove a dead comment. Break up a function that’s grown too large. You don’t have to refactor the whole codebase. Just make one small improvement per commit.&lt;/p&gt;

&lt;p&gt;The compounding effect is real. If five developers each make one small improvement per commit, pushing a few commits a day, the codebase gets meaningfully better every single week without a single “refactoring sprint” ever being scheduled.&lt;/p&gt;

&lt;p&gt;Clean code isn’t a one-time project. It’s a daily habit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;These 9 rules share one idea at their core:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Write code for humans, not just computers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Computers will run almost anything you throw at them. It’s your teammates, your future self, and everyone who maintains this system after you who need the code to be clear, intentional, and honest.&lt;/p&gt;

&lt;p&gt;Start with one rule. Apply it consistently. Then pick another.&lt;/p&gt;

&lt;p&gt;That’s how good codebases are built.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Here's the full playbook for ranking your posts on Google page 1</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Thu, 23 Apr 2026 13:24:36 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/heres-the-full-playbook-for-ranking-your-posts-on-google-page-1-lgd</link>
      <guid>https://dev.to/web_dev-usman/heres-the-full-playbook-for-ranking-your-posts-on-google-page-1-lgd</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/web_dev-usman/2000month-with-parasite-seo-no-website-no-waiting-6-months-388e" class="crayons-story__hidden-navigation-link"&gt;$2,000/month with parasite SEO. No website. No waiting 6 months.&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="/web_dev-usman" 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%2F2467689%2F7cef2b13-fd64-49a8-b296-bac4c5962ec3.png" alt="web_dev-usman profile" class="crayons-avatar__image" width="565" height="565"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/web_dev-usman" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Muhammad Usman
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Muhammad Usman
                
              
              &lt;div id="story-author-preview-content-3539653" 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="/web_dev-usman" 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%2F2467689%2F7cef2b13-fd64-49a8-b296-bac4c5962ec3.png" class="crayons-avatar__image" alt="" width="565" height="565"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Muhammad Usman&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/web_dev-usman/2000month-with-parasite-seo-no-website-no-waiting-6-months-388e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 23&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/web_dev-usman/2000month-with-parasite-seo-no-website-no-waiting-6-months-388e" id="article-link-3539653"&gt;
          $2,000/month with parasite SEO. No website. No waiting 6 months.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/seo"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;seo&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/marketing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;marketing&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/growth"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;growth&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&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/web_dev-usman/2000month-with-parasite-seo-no-website-no-waiting-6-months-388e" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&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/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/web_dev-usman/2000month-with-parasite-seo-no-website-no-waiting-6-months-388e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add 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;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Why Settle for a Boring Internet When We Can Build Something Unforgettable?</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Thu, 16 Apr 2026 08:14:40 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/why-settle-for-a-boring-internet-when-we-can-build-something-unforgettable-41l3</link>
      <guid>https://dev.to/web_dev-usman/why-settle-for-a-boring-internet-when-we-can-build-something-unforgettable-41l3</guid>
      <description>&lt;p&gt;For the past 5 years, I’ve been designing, developing, and optimizing WordPress websites with just one goal in mind, making them perform in search.&lt;/p&gt;

&lt;p&gt;I’ve always been fascinated by how a few well-chosen and well-written words can make a website come alive in search results. To me, SEO isn’t just about rankings, it’s all about a mix of curiosity, problem-solving, and storytelling.&lt;/p&gt;

&lt;p&gt;I love digging into analytics like a detective, always experimenting with strategies, and seeing the absolute great results in real-time.&lt;/p&gt;

&lt;p&gt;Each success have taught me something new about human behavior and search patterns of every platform. When I’m not optimizing websites, I’m always exploring new trends, testing new tools, or writing content that connects with real people.&lt;/p&gt;

&lt;p&gt;I’ve spent the last 5 years in designing and developing websites that don’t just look good, but actually performs very well in search engines. As for me, SEO always comes first, making sites fast, secure, and responsive.&lt;/p&gt;

&lt;p&gt;Then shifting in the technical work like Core Web Vitals, site architecture, and schema markup. Along the way, I’ve tested on page and off-page strategies, fine-tuned speed, and seen the results in real numbers organic traffic tripling, business priority keywords slowly climbing into the top 3, and clean builds that both Google and real users trust, and don’t forget other search engines and AI as well.&lt;/p&gt;

&lt;p&gt;My work goes far beyond just visuals, it has a deep technical as well. I focus on building clean, scalable WordPress Websites using custom themes, optimized PHP functions, and absolutely lightweight CSS/JS frameworks to keep performance tight.&lt;/p&gt;

&lt;p&gt;Every element I have developed so far is designed to load fast, pass Core Web Vitals, and maintain the long-term stability. I regularly work with WP GraphQL, REST APIs, and custom post types to create flexible, content-driven backends that integrate smoothly with frontend frameworks.&lt;/p&gt;

&lt;p&gt;And building fully custom WooCommerce stores to handling complex product logic, I always prioritize clean, maintainable code that’s built to last longer than ever. On the SEO side, I focus on the foundation indexing structure, schema markup, canonicalization, XML sitemaps, and crawl efficiency. I run technical audits, fix rendering issues, and making sure that every site communicates clearly with search engines and your users.&lt;/p&gt;

&lt;p&gt;Every project is backed by performance monitoring, CDN setup, caching, and DNS-level optimization to keep sites absolutely fast and stable. I’ve spent years refining my skill and workflow around speed, structure, and scalability, the three pillars of every truly high-performing website.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Anthropic Just Dropped the Bomb on AI called Claude Mythos.</title>
      <dc:creator>Muhammad Usman</dc:creator>
      <pubDate>Mon, 13 Apr 2026 08:18:01 +0000</pubDate>
      <link>https://dev.to/web_dev-usman/anthropic-just-dropped-the-bomb-on-ai-called-claude-mythos-1ai</link>
      <guid>https://dev.to/web_dev-usman/anthropic-just-dropped-the-bomb-on-ai-called-claude-mythos-1ai</guid>
      <description>&lt;p&gt;They built the most powerful AI model in history. It can hack better than any human alive. So they refused to release it.&lt;/p&gt;

&lt;p&gt;A researcher was eating a sandwich in a park when his phone buzzed. It was an email from an AI he had locked in a sealed sandbox with zero internet access. The model had found a way out on its own.&lt;/p&gt;

&lt;p&gt;That model is Claude Mythos Preview. And I genuinely think this might be the most important AI announcement of 2026.&lt;/p&gt;




&lt;p&gt;It is not because of what it does for you and me right now. Because of what it reveals about what Anthropic actually has sitting in their labs.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what is Project Glasswing?
&lt;/h3&gt;

&lt;p&gt;Earlier this week, Anthropic announced something called &lt;a href="https://www.anthropic.com/glasswing" rel="noopener noreferrer"&gt;Project Glasswing&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt; Buried inside that announcement is a model called Claude Mythos Preview.&lt;/p&gt;

&lt;p&gt;This model is not available to you or me. It is not on the API. You cannot buy access. There is no waitlist. And there is a very specific reason for that.&lt;/p&gt;

&lt;p&gt;This model can find and exploit software vulnerabilities better than any hacker alive. Better than every human security expert on earth. And Anthropic built it.&lt;/p&gt;

&lt;p&gt;Their response was not to release it and charge everyone for access. Their response was to partner with basically every major tech company in the world and use it to patch the internet before the bad guys figure out how to build the same thing.&lt;/p&gt;

&lt;p&gt;That is a fundamentally different kind of move.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Partners and the Money
&lt;/h3&gt;

&lt;p&gt;The coalition behind Glasswing includes AWS, Apple, Broadcom, Cisco, CrowdStrike, Google, JP Morgan, the Linux Foundation, Microsoft, NVIDIA, and Paloalto Networks.&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.amazonaws.com%2Fuploads%2Farticles%2F7va49mywvex157k58vtn.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.amazonaws.com%2Fuploads%2Farticles%2F7va49mywvex157k58vtn.png" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you know anything about the tech industry, that list should stop you cold. That is every major player in security and infrastructure sitting at the same table for the same reason.&lt;/p&gt;

&lt;p&gt;They have committed over &lt;strong&gt;$100 million in usage credits&lt;/strong&gt; to this project. On top of that, Anthropic put &lt;strong&gt;$4 million directly into open-source security organizations&lt;/strong&gt; and gave 40 additional organizations access to scan their own systems using this model.&lt;/p&gt;

&lt;p&gt;Companies do not write nine-figure checks for a press release. They wrote those checks because &lt;strong&gt;Claude Mythos Preview&lt;/strong&gt; has already found &lt;strong&gt;thousands of high-severity vulnerabilities&lt;/strong&gt; in every major operating system and every major browser. Things sitting on your machine right now that no human security team had found yet.&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.amazonaws.com%2Fuploads%2Farticles%2Frcjrigo1m3x8w2kaas1m.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.amazonaws.com%2Fuploads%2Farticles%2Frcjrigo1m3x8w2kaas1m.png" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anthropic is essentially saying, "We found the holes before the bad guys found all of them." Now let us get them fixed.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Benchmark Numbers Actually Look Like
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2F0ewu4ss2by2fmegy2cwh.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.amazonaws.com%2Fuploads%2Farticles%2F0ewu4ss2by2fmegy2cwh.png" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agentic search and computer use&lt;/p&gt;

&lt;p&gt;The gap between Mythos and Opus 4.6, Anthropic’s current best public model, is not incremental. It is a different category entirely.&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.amazonaws.com%2Fuploads%2Farticles%2Fnlku997huubvxnkge9wd.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.amazonaws.com%2Fuploads%2Farticles%2Fnlku997huubvxnkge9wd.png" width="800" height="1025"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agentic Coding&lt;/p&gt;

&lt;p&gt;On a single benchmark test developing exploits for Mozilla’s Firefox JavaScript engine, Opus 4.6 succeeded twice out of hundreds of attempts. Mythos succeeded &lt;strong&gt;181 times.&lt;/strong&gt; It also achieved full register control on 29 additional attempts on top of that.&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.amazonaws.com%2Fuploads%2Farticles%2Flejf6c858hc7ecfbo2ac.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.amazonaws.com%2Fuploads%2Farticles%2Flejf6c858hc7ecfbo2ac.png" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfui0qa0zvr4vmtrow03.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.amazonaws.com%2Fuploads%2Farticles%2Fsfui0qa0zvr4vmtrow03.png" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reasoning&lt;/p&gt;

&lt;p&gt;On Anthropic’s internal crash severity benchmark, Opus 4.6 hit the highest tier exactly once. Mythos hit it &lt;strong&gt;ten times on fully patched targets.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It found zero-day vulnerabilities, bugs nobody knew existed, in every major operating system and every major browser. The oldest bug it uncovered was a &lt;strong&gt;27-year-old vulnerability in OpenBSD&lt;/strong&gt;, an operating system built specifically around security. That bug has since been patched.&lt;/p&gt;

&lt;p&gt;And when human security experts reviewed its vulnerability reports, they agreed with Mythos’s severity rating &lt;strong&gt;89% of the time exactly.&lt;/strong&gt; In 98% of cases they were within one severity level.&lt;/p&gt;

&lt;p&gt;That is not an update. That is a completely different ceiling.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Story Here
&lt;/h3&gt;

&lt;p&gt;Here is what I actually want to talk about, because the security story is real and important, but it is not the whole story.&lt;/p&gt;

&lt;p&gt;The real story is what this announcement tells us about Anthropic’s capabilities right now.&lt;/p&gt;

&lt;p&gt;Think about it this way. The models we use today, Claude Sonnet, Claude Opus, those are what Anthropic deemed safe and ready for millions of people. But Mythos is not one of those. Mythos is something they built, and immediately decided this one does not go public.&lt;/p&gt;

&lt;p&gt;That means Anthropic has models in their lab right now that are significantly more capable than anything you or I have access to. That is not me reading between the lines. That is literally what they just announced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The public Claude is not the best Claude. It never has been.&lt;/strong&gt; But this is the first time we have gotten a concrete signal about exactly how big that gap is.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Means for Builders
&lt;/h3&gt;

&lt;p&gt;If you are building with AI right now, this is genuinely exciting news.&lt;/p&gt;

&lt;p&gt;Every time a new Claude release goes public, it is not the newest thing Anthropic has. It is the thing they decided was ready. There is always a layer of capability above the public release that they are still red-teaming, still evaluating, and still figuring out how to make safe before it goes out to millions of people.&lt;/p&gt;

&lt;p&gt;That internal-to-external gap is probably getting wider over time, not narrower. Which means the public Claude releases coming at the end of this year are being built on internal foundations that already exceed what we are currently imagining.&lt;/p&gt;

&lt;p&gt;The people who are genuinely building habits around these tools today will have a real head start when those more capable public releases arrive. The gap between people who are actually building with AI and people watching from the sidelines is getting much bigger. Glasswing makes that undeniable.&lt;/p&gt;

&lt;h3&gt;
  
  
  What We Do Not Know
&lt;/h3&gt;

&lt;p&gt;I want to be straight with you here because I think that matters.&lt;/p&gt;

&lt;p&gt;We do not know the specific architecture. We do not know the costs, which could be a big one. We do not know the failure modes or what it is bad at. We do not know the timeline for when or whether any version of these capabilities becomes publicly available, if at all. Maybe some of this gets released in a more constrained form. Maybe certain capabilities stay restricted permanently. We genuinely just do not know.&lt;/p&gt;

&lt;p&gt;That is the nature of responsible disclosure in security work and it is appropriate given what this model can do.&lt;/p&gt;

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

&lt;p&gt;Anthropic just positioned itself as something bigger than a chatbot company. They are building the security infrastructure of the internet and doing it with partners who wrote serious checks to be part of it.&lt;/p&gt;

&lt;p&gt;A specific model. A specific coalition. A specific set of capabilities that are too powerful to release but too important to ignore.&lt;/p&gt;

&lt;p&gt;If you think Opus and Sonnet are good now, it is just getting started. Anthropic just gave us a peek at how high the ceiling actually goes. And it is a lot higher than most people are ready for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/glasswing" rel="noopener noreferrer"&gt;Anthropic: Project Glasswing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://red.anthropic.com/2026/mythos-preview/" rel="noopener noreferrer"&gt;Technical security report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www-cdn.anthropic.com/53566bf5440a10affd749724787c8913a2ae0841.pdf" rel="noopener noreferrer"&gt;244-page system card (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/" rel="noopener noreferrer"&gt;Fortune: Original data leak story&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;Did you learn something good today as a developer?&lt;br&gt;
Then show some love.&lt;br&gt;
© &lt;a href="https://www.linkedin.com/in/muhammad-usman-strategist/" rel="noopener noreferrer"&gt;Muhammad Usman&lt;/a&gt;&lt;br&gt;
WordPress Developer | Website Strategist | SEO Specialist&lt;br&gt;
Don’t forget to subscribe to &lt;a href="https://developersjourney.substack.com/" rel="noopener noreferrer"&gt;Developer’s Journey&lt;/a&gt; to show your support.&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.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.amazonaws.com%2Fuploads%2Farticles%2Fh3jsza7m50ojhdd4yuuc.png" alt="Developer's Journey" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
  </channel>
</rss>
