<?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: Moinul Islam</title>
    <description>The latest articles on DEV Community by Moinul Islam (@moinulislam7).</description>
    <link>https://dev.to/moinulislam7</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%2F1680090%2Fc8c11f80-d110-4e0f-bc41-bcdf47d67268.jpg</url>
      <title>DEV Community: Moinul Islam</title>
      <link>https://dev.to/moinulislam7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moinulislam7"/>
    <language>en</language>
    <item>
      <title>Stateless vs Stateful Web Architecture</title>
      <dc:creator>Moinul Islam</dc:creator>
      <pubDate>Thu, 21 May 2026 10:55:30 +0000</pubDate>
      <link>https://dev.to/moinulislam7/stateless-vs-stateful-web-architecture-4e4k</link>
      <guid>https://dev.to/moinulislam7/stateless-vs-stateful-web-architecture-4e4k</guid>
      <description>&lt;p&gt;what &lt;strong&gt;ACTUALLY happens&lt;/strong&gt; at each step. Let me break it down completely:&lt;/p&gt;

&lt;h2&gt;
  
  
  🔴 WHAT IS "STATE"?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"State"&lt;/strong&gt; is simply information a server needs to &lt;strong&gt;remember about you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you log into a website, the server needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who are you?&lt;/li&gt;
&lt;li&gt;Are you authenticated?&lt;/li&gt;
&lt;li&gt;What's in your cart?&lt;/li&gt;
&lt;li&gt;What are your preferences?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That remembered data = &lt;strong&gt;state.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simply think of it like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👨‍🍳 &lt;strong&gt;Stateful server&lt;/strong&gt; === A waiter who remembers your usual order&lt;br&gt;
🏧 &lt;strong&gt;Stateless server&lt;/strong&gt; === An ATM that needs your card every single time&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🔴 STATEFUL ARCHITECTURE — The Problem
&lt;/h2&gt;

&lt;p&gt;In a stateful system, each server stores session data for &lt;strong&gt;specific users.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User A  →  always Server 1
User B  →  always Server 2
User C  →  always Server 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now watch what happens in &lt;strong&gt;REAL scenarios:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ Scenario 1: Wrong Server
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;User A's request accidentally gets routed to Server 2.&lt;br&gt;
Server 2 has &lt;strong&gt;NO idea&lt;/strong&gt; who User A is.&lt;br&gt;
&lt;strong&gt;Result?&lt;/strong&gt; Authentication fails. User gets logged out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ❌ Scenario 2: Adding a New Server
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Traffic is growing. You spin up Server 4.&lt;br&gt;
But wait, you now have to &lt;strong&gt;migrate sessions.&lt;/strong&gt;&lt;br&gt;
Some users get logged out mid-session during migration.&lt;br&gt;
The load balancer needs sticky session rules for the new server.&lt;br&gt;
What should be a 5-minute task becomes an &lt;strong&gt;operational nightmare.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ❌ Scenario 3: Server Crash
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Server 1 goes down at 2am.&lt;br&gt;
Every user whose session was on Server 1?&lt;br&gt;
&lt;strong&gt;Logged out instantly. Session data? Gone forever.&lt;/strong&gt;&lt;br&gt;
They wake up and have to start over.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Root cause:&lt;/strong&gt; State is &lt;strong&gt;trapped&lt;/strong&gt; inside individual servers.&lt;/p&gt;

&lt;p&gt;This is called &lt;strong&gt;"Sticky Sessions"&lt;/strong&gt; — forcing every request from one user to always hit the same server. Load balancers support it, but it adds overhead, complexity, and fragility.&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%2Fa695vprlpj1n44mhbh6q.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%2Fa695vprlpj1n44mhbh6q.png" alt=" " width="740" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🟢 STATELESS ARCHITECTURE — The Fix
&lt;/h2&gt;

&lt;p&gt;The solution is elegant:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Move &lt;strong&gt;ALL session data&lt;/strong&gt; out of the servers and into a &lt;strong&gt;Shared Data Store&lt;/strong&gt; (Redis, Memcached, SQL, or NoSQL)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now watch the &lt;strong&gt;same scenarios&lt;/strong&gt; play out:&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Scenario 1: Wrong Server
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;User A's request hits Server 2 instead of Server 1.&lt;br&gt;
Server 2 simply fetches User A's session from &lt;strong&gt;Redis in ~1ms.&lt;/strong&gt;&lt;br&gt;
Authentication passes. Page loads. &lt;strong&gt;User notices nothing.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ✅ Scenario 2: Adding a New Server
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Spin up Server 4.&lt;br&gt;
It &lt;strong&gt;immediately&lt;/strong&gt; starts handling traffic.&lt;br&gt;
No session migration. No sticky rules. No downtime.&lt;br&gt;
This is &lt;strong&gt;Auto-Scaling&lt;/strong&gt; — adding/removing servers based on traffic automatically.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  ✅ Scenario 3: Server Crash
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Server 1 crashes at 2am.&lt;br&gt;
Load balancer stops routing to it instantly.&lt;br&gt;
Servers 2, 3, 4 continue serving all users.&lt;br&gt;
Sessions are still safe in the shared store.&lt;br&gt;
Users experience... &lt;strong&gt;absolutely nothing.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fp7havpcgs0s51lmub362.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%2Fp7havpcgs0s51lmub362.png" alt=" " width="754" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗️ THE FULL MODERN SYSTEM — Step by Step
&lt;/h2&gt;

&lt;p&gt;A production-ready stateless system works like this:&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%2Fdjk0q1h4vh3yvvw5rtzi.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%2Fdjk0q1h4vh3yvvw5rtzi.png" alt=" " width="769" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ User Makes a Request
&lt;/h3&gt;

&lt;p&gt;The browser hits &lt;strong&gt;DNS&lt;/strong&gt; to find the server address.&lt;br&gt;
Static files (images, CSS, JS) are served from a &lt;strong&gt;CDN&lt;/strong&gt; — a network of servers located close to the user geographically, so content loads fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  2️⃣ Load Balancer
&lt;/h3&gt;

&lt;p&gt;Distributes incoming requests &lt;strong&gt;evenly&lt;/strong&gt; across all available web servers.&lt;br&gt;
Because servers are stateless, it &lt;strong&gt;doesn't matter&lt;/strong&gt; which server gets the request.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Web Servers Fetch Session from Shared Storage
&lt;/h3&gt;

&lt;p&gt;The server checks the &lt;strong&gt;Cache (Redis/Memcached)&lt;/strong&gt; first — blazing fast.&lt;br&gt;
If not cached, it queries the &lt;strong&gt;database.&lt;/strong&gt;&lt;br&gt;
Session data is always available, always consistent.&lt;/p&gt;

&lt;h3&gt;
  
  
  4️⃣ Auto-Scaling
&lt;/h3&gt;

&lt;p&gt;| Situation | Action |&lt;br&gt;
| Traffic spikes | New servers spin up automatically |&lt;br&gt;
| Traffic drops | Servers scale down to save cost |&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ This is &lt;strong&gt;ONLY&lt;/strong&gt; possible because servers hold no state.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  5️⃣ Master / Slave Database Replication
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Writes  →  Master DB
Reads   →  Slave DB 1  |  Slave DB 2  |  Slave DB 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Slaves &lt;strong&gt;replicate&lt;/strong&gt; data from the Master continuously.&lt;br&gt;
This separates read and write load — dramatically improving performance at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  6️⃣ Cache Layer (Redis / Memcached)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cache hit&lt;/td&gt;
&lt;td&gt;~1ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database query&lt;/td&gt;
&lt;td&gt;~10–100ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;A good cache strategy can reduce DB load by &lt;strong&gt;80%+.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  💡 KEY TAKEAWAY
&lt;/h2&gt;

&lt;p&gt;Stateless architecture isn't just a "best practice."&lt;/p&gt;

&lt;p&gt;It's what allows companies like &lt;strong&gt;Netflix, Uber, and Amazon&lt;/strong&gt; to handle millions of requests per second without crashing — because no single server holds anything irreplaceable.&lt;/p&gt;

&lt;p&gt;The rule is dead simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 &lt;strong&gt;Keep your web servers dumb. Let the data layer be smart.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;#SystemDesign&lt;/code&gt; &lt;code&gt;#SoftwareEngineering&lt;/code&gt; &lt;code&gt;#BackendDevelopment&lt;/code&gt; &lt;code&gt;#WebDevelopment&lt;/code&gt; &lt;code&gt;#LearningInPublic&lt;/code&gt; &lt;code&gt;#TechEducation&lt;/code&gt; &lt;code&gt;#CodingJourney&lt;/code&gt; &lt;code&gt;#SystemDesignInterview&lt;/code&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>systemdesign</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Understanding Message Queue in a Simple Way</title>
      <dc:creator>Moinul Islam</dc:creator>
      <pubDate>Tue, 19 May 2026 08:55:50 +0000</pubDate>
      <link>https://dev.to/moinulislam7/understanding-message-queue-in-a-simple-way-4m0e</link>
      <guid>https://dev.to/moinulislam7/understanding-message-queue-in-a-simple-way-4m0e</guid>
      <description>&lt;p&gt;A Message Queue basically works as an intermediate storage between a Producer and a Consumer. It enables asynchronous communication, meaning two services do not need to be online at the same time for the system to work properly.  &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;## 📌 Figure 1 — Basic Message Queue Architecture:&lt;br&gt;
*&lt;/em&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%2Fbodlturh1tmjtl9k0buv.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%2Fbodlturh1tmjtl9k0buv.png" alt="Message Queue" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Here, the Producer publishes messages to the queue.&lt;br&gt;&lt;br&gt;
Then the Consumer takes messages from the queue and processes them.  &lt;/p&gt;

&lt;p&gt;Let’s take a Food Delivery App as an example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; A customer places an order&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; The app instantly saves the order in the database and sends a message to the queue&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; The restaurant service later takes the order from the queue and starts processing it  &lt;/p&gt;

&lt;p&gt;Even if the restaurant server becomes busy or temporarily down, the order will not be lost. Because the message queue safely stores the messages until they are processed.&lt;/p&gt;

&lt;p&gt;This is what makes the system scalable and reliable.  &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;## 📌 Figure 2 — Real-Life Example&lt;br&gt;
*&lt;/em&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%2Fbodlturh1tmjtl9k0buv.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%2Fbodlturh1tmjtl9k0buv.png" alt="Message Queue" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, Web Servers are publishing photo processing jobs to the queue.Then Photo Processing Workers consume those jobs asynchronously from the queue.  &lt;/p&gt;

&lt;p&gt;For example, when you upload a photo on Facebook or Instagram:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image resizing
&lt;/li&gt;
&lt;li&gt;Blur effects
&lt;/li&gt;
&lt;li&gt;Sharpening
&lt;/li&gt;
&lt;li&gt;Applying filters
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks are not processed instantly. The web server receives the user request and pushes the job into the queue.&lt;br&gt;&lt;br&gt;
Background workers then take the jobs from the queue and process them asynchronously.  &lt;/p&gt;

&lt;p&gt;One of the biggest advantages here is scalability.  &lt;/p&gt;

&lt;p&gt;When image uploads increase:&lt;br&gt;&lt;br&gt;
→ More workers can be added  &lt;/p&gt;

&lt;p&gt;When traffic decreases:&lt;br&gt;&lt;br&gt;
→ Workers can be reduced to save resources  &lt;/p&gt;

&lt;p&gt;That’s why Message Queue is such an important concept in modern microservices architecture.  &lt;/p&gt;

&lt;h1&gt;
  
  
  SystemDesign #MessageQueue #Microservices #Scalability #SoftwareEngineering
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>beginners</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Understanding Hoisting in JavaScript</title>
      <dc:creator>Moinul Islam</dc:creator>
      <pubDate>Sun, 15 Jun 2025 11:52:06 +0000</pubDate>
      <link>https://dev.to/moinulislam7/understanding-hoisting-in-javascript-27ip</link>
      <guid>https://dev.to/moinulislam7/understanding-hoisting-in-javascript-27ip</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Hoisting?&lt;/strong&gt;&lt;br&gt;
Hoisting is JavaScript's default behavior of moving declarations (not initializations) to the top of their scope during the compile phase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Hoisting Works (Two Phases)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Compile Phase&lt;/strong&gt;&lt;br&gt;
Before executing your code, JavaScript scans the entire scope and sets up memory for all declared variables and functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;var&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Declaration is hoisted and initialized as &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You can access it before the line, but the value will be &lt;code&gt;undefined&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;let and const&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Declaration is hoisted, but not initialized&lt;/li&gt;
&lt;li&gt;They stay in a &lt;code&gt;Temporal Dead Zone (TDZ)&lt;/code&gt; until their actual line&lt;/li&gt;
&lt;li&gt;Accessing them before declaration throws a &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Function Declarations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;entire function (name + body)&lt;/code&gt; is hoisted&lt;/li&gt;
&lt;li&gt;You can safely call the function before its declaration&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Execution Phase&lt;/strong&gt;&lt;br&gt;
Now JavaScript executes your code line-by-line:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;var&lt;/code&gt; variables receive their assigned value&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt; / &lt;code&gt;const&lt;/code&gt; are initialized at their declaration line&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;let&lt;/code&gt; / &lt;code&gt;const&lt;/code&gt; before this point causes an error due to TDZ&lt;/li&gt;
&lt;li&gt;Hoisted functions (declared with &lt;code&gt;function&lt;/code&gt;) can be called anytime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TDZ (Temporal Dead Zone)&lt;/strong&gt;&lt;br&gt;
let and const are hoisted, so you can’t use them before the line they are declared or it gives an error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(a);        // undefined (var is hoisted)
console.log(b);        // ReferenceError (let is in TDZ)
console.log(greet());  // "Hello" (function is hoisted)

var a = 10;
let b = 20;

function greet() {
  return "Hello";
}

var sayHi = function () {
  return "Hi";
};

console.log(sayHi());  // "Hi" (works only after assignment)
sole.log("Bye!");
};
&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%2Fjqb8cmoxa0faw4wj8gli.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%2Fjqb8cmoxa0faw4wj8gli.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>HIDDEN WEBSITES FOR PROGRAMMERS</title>
      <dc:creator>Moinul Islam</dc:creator>
      <pubDate>Tue, 25 Jun 2024 09:12:49 +0000</pubDate>
      <link>https://dev.to/moinulislam7/hidden-websites-forprogrammers-2a3n</link>
      <guid>https://dev.to/moinulislam7/hidden-websites-forprogrammers-2a3n</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://devdocs.io/" rel="noopener noreferrer"&gt;devdocs.io&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevDocs brings together numerous API documentation in a single, searchable interface. You will find docs related to various programming languages and technologies in one place.&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%2Fn88af1no6qjjoygwr5i4.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%2Fn88af1no6qjjoygwr5i4.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;css-tricks.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
You can master your web development skills by learning everything about CSS from this website. If you didn't already know, CSS is what makes pages on the web look beautiful.&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%2Fppd1k4zdquunrk9hiqri.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%2Fppd1k4zdquunrk9hiqri.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://overapi.com/" rel="noopener noreferrer"&gt;overapi.com&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
OverAPI is one of the most beautiful and useful websites for all developers. This website has cheat sheets for the majority of programming languages. Please take a look at it right now.&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%2Fynyq6r7x47b9vi3b3gvo.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%2Fynyq6r7x47b9vi3b3gvo.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
