<?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: Omaima Ameen</title>
    <description>The latest articles on DEV Community by Omaima Ameen (@heytechomaima).</description>
    <link>https://dev.to/heytechomaima</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3585602%2Ff9e9406e-a430-499d-aca1-8bf472ab81cb.png</url>
      <title>DEV Community: Omaima Ameen</title>
      <link>https://dev.to/heytechomaima</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/heytechomaima"/>
    <language>en</language>
    <item>
      <title>what i learned intentionally breaking hydration in next.js</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Tue, 30 Jun 2026 03:40:14 +0000</pubDate>
      <link>https://dev.to/heytechomaima/what-i-learned-intentionally-breaking-hydration-in-nextjs-1l6h</link>
      <guid>https://dev.to/heytechomaima/what-i-learned-intentionally-breaking-hydration-in-nextjs-1l6h</guid>
      <description>&lt;p&gt;i did something dumb last month. on purpose.&lt;/p&gt;

&lt;p&gt;i sat down, opened a next.js app, and tried to make hydration fail in every way i could think of. not because a bug forced me to. not because i was debugging something. just because i wanted to see it. understand it from the inside.&lt;/p&gt;

&lt;p&gt;and honestly? best few hours i've spent learning anything in a while.&lt;/p&gt;

&lt;p&gt;why i even did this&lt;/p&gt;

&lt;p&gt;you know how you use something for months and you think you get it, but you don't really get it? hydration was that for me. i knew the surface-level thing: server renders HTML, client takes over, they gotta match. cool. got it. moving on.&lt;/p&gt;

&lt;p&gt;except i didn't get it. i just got the vibe of it.&lt;/p&gt;

&lt;p&gt;every time i saw hydration mismatch, i'd ask claude, fix the immediate thing, feel vaguely annoyed, and move on. i never stopped to ask why that specific thing broke it. i was treating symptoms, not understanding the actual disease.&lt;/p&gt;

&lt;p&gt;so i decided to break it deliberately. if i caused the errors myself, i'd actually have to understand what i was doing.&lt;/p&gt;

&lt;p&gt;the setup&lt;/p&gt;

&lt;p&gt;basic next.js app. app router. a few pages. nothing fancy.&lt;/p&gt;

&lt;p&gt;i wasn't trying to build anything. i was trying to destroy something, carefully, so i could see what fell apart and why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #1: the obvious one - new Date() on render&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;this is the classic. everyone's seen it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&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;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;server renders this at, say, 14:00:00. by the time react runs on the client and tries to reconcile, it's 14:00:01. the strings don't match. react screams.&lt;/p&gt;

&lt;p&gt;thing is, i knew this would happen. what i didn't think about was why react cares.&lt;/p&gt;

&lt;p&gt;here's the thing: react isn't doing a full diff on the entire DOM after hydration. it's trusting that the server HTML is a valid starting point and it's just attaching event listeners and state to it. but if the content doesn't match, it doesn't know what to trust. it can't partially hydrate "mostly correct" HTML. it either matches or it doesn't.&lt;/p&gt;

&lt;p&gt;so it throws the warning, and in some cases actually re-renders the whole thing client-side. you just wasted your server render.&lt;/p&gt;

&lt;p&gt;what i actually learned: hydration isn't "react rechecks everything." it's react skipping the DOM creation step entirely and just walking the existing DOM to attach fiber nodes. mismatch breaks that walk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #2: typeof window !== 'undefined' used wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;this one's sneaky. i see this pattern everywhere.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;undefined&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isClient&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;server: window doesn't exist -&amp;gt; renders "server"&lt;/p&gt;

&lt;p&gt;client: window exists -&amp;gt; renders "client"&lt;/p&gt;

&lt;p&gt;mismatch. every time.&lt;/p&gt;

&lt;p&gt;the fix people reach for is useEffect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsClient&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setIsClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&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;but here's what clicked for me when i broke it intentionally: the reason useEffect fixes it is that the first render on the client still returns false. it matches the server. then after hydration completes, useEffect fires, state updates, component re-renders. by that point, react is done hydrating and owns the DOM. it can do whatever.&lt;/p&gt;

&lt;p&gt;that timing is doing a lot of work. it's not a hack. it's actually the intended mental model - first render matches server, then client takes over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #3: rendering random values&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&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;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;data-id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;i expected the hydration warning. i got it. but what surprised me was opening the react devtools and watching what actually happened.&lt;/p&gt;

&lt;p&gt;react renders the component on the client. it walks the server-rendered DOM. it finds the div. the text content doesn't match. instead of partially fixing it, it flags the whole subtree.&lt;/p&gt;

&lt;p&gt;in dev mode you get the warning. in production? react just silently fixes it by replacing the server content with the client render. no error. no nothing. you'd never know unless you were watching the network tab and noticed your carefully SSR'd HTML was being thrown away immediately.&lt;/p&gt;

&lt;p&gt;that was kind of unsettling actually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #4: reading from localStorage on first render&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`theme-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;hello&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this one doesn't just mismatches - it crashes. localStorage doesn't exist on the server. you get a reference error before react even gets a chance to complain about hydration.&lt;/p&gt;

&lt;p&gt;but the lesson here was different. it made me think about what "server" actually means in this context. people say "the server doesn't have localStorage" like it's a gotcha fact. but why? because the server is node. node doesn't implement browser APIs. it's not a browser. it's just a JavaScript runtime that can render react components to a string.&lt;/p&gt;

&lt;p&gt;when you think about it that way, the rule becomes obvious instead of arbitrary. don't use browser APIs in code that runs on the server. window, document, localStorage, navigator - all of these are browser things. next.js might be doing SSR but the "S" is still a server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #5: conditional rendering based on props that differ server/client&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;this one was more subtle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// some parent component&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;UserCard&lt;/span&gt; &lt;span class="na"&gt;showEmail&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the prop itself is random. so the server might render the email field, the client might not (or vice versa). the child component is "correct" in isolation but the inputs it's receiving are inconsistent.&lt;/p&gt;

&lt;p&gt;i'd never thought about hydration errors being caused outside the component that shows the error. react points at the component that rendered the mismatched output, but the actual bug is in the parent.&lt;/p&gt;

&lt;p&gt;this one burns people in the wild when they're doing things like passing Date.now() as a prop, or any calculation that produces different values between server and client execution.&lt;/p&gt;

&lt;p&gt;the part that actually messed with my head&lt;/p&gt;

&lt;p&gt;at some point i started reading through how react's hydration works internally. like actually reading the source, not just blog posts.&lt;/p&gt;

&lt;p&gt;react has this function hydrateRoot. when you call it, react starts a "hydration pass" where instead of creating new DOM nodes, it reads existing ones. it's walking your real DOM and building its fiber tree from the DOM, not to the DOM.&lt;/p&gt;

&lt;p&gt;but here's the thing - it still runs your component functions. it still calls useState, useEffect setup (well, in terms of registering effects), all of it. it just doesn't write any DOM.&lt;/p&gt;

&lt;p&gt;except when there's a mismatch. then it has to write DOM. and it has to figure out what to write, because the existing DOM is wrong. which means in a bad case, hydration is actually more expensive than a fresh client render because it tries the fast path first, fails, and then falls back to the slow path anyway.&lt;/p&gt;

&lt;p&gt;i genuinely did not know this before i started breaking things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;break #6: using suppressHydrationWarning everywhere&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;okay this one was me being chaotic.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;suppressHydrationWarning&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this is a real prop. it tells react "i know this might not match, don't warn me." it's meant for timestamps, dynamic ids, things like that.&lt;/p&gt;

&lt;p&gt;i started slapping it everywhere to see what would happen. and the answer is: everything looks fine. no warnings. but the content is still wrong. react silently accepts the server content for those nodes and doesn't re-render them from the client. so if you're using this as a way to "fix" hydration mismatches on important content, you're not fixing anything. you're just hiding it.&lt;/p&gt;

&lt;p&gt;the actual content on screen is whatever the server rendered. if that's stale, it stays stale until something triggers a re-render.&lt;/p&gt;

&lt;p&gt;what breaking things taught me that reading docs didn't&lt;/p&gt;

&lt;p&gt;docs tell you the what. "hydration mismatch occurs when server and client render different content." yeah, i knew that.&lt;/p&gt;

&lt;p&gt;breaking things showed me the how and why:&lt;/p&gt;

&lt;p&gt;hydration is a read-then-attach operation, not a render-then-replace&lt;br&gt;
the first client render must match the server render, always, no exceptions&lt;br&gt;
useEffect is specifically useful here because it runs after hydration completes&lt;br&gt;
production hides a lot of pain that dev mode surfaces as warnings&lt;br&gt;
the error often points to the symptom, not the cause&lt;/p&gt;

&lt;p&gt;i think there's something genuinely underrated about intentionally making things break. not finding bugs by accident. deliberately causing failures to understand what the system's failure modes are.&lt;/p&gt;

&lt;p&gt;it's a different kind of learning. you're not reading about edge cases. you're creating them.&lt;/p&gt;

&lt;p&gt;one thing i'd try next&lt;/p&gt;

&lt;p&gt;i want to do the same thing with suspense + streaming SSR. intentionally break the boundary conditions, see when react flushes what, figure out the actual mental model instead of the "here's when you'd use " tutorial version.&lt;/p&gt;

&lt;p&gt;probably gonna do it this week if i stop getting distracted by other things.&lt;/p&gt;

&lt;p&gt;(okkay i won't stop getting distracted,  but i'll try.)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>learning</category>
      <category>nextjs</category>
      <category>react</category>
    </item>
    <item>
      <title>A beginner-friendly mental model of HTTP, HTTPS and how the web communicates</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Thu, 14 May 2026 04:11:36 +0000</pubDate>
      <link>https://dev.to/heytechomaima/a-beginner-friendly-mental-model-of-http-https-and-how-the-web-communicates-1b9p</link>
      <guid>https://dev.to/heytechomaima/a-beginner-friendly-mental-model-of-http-https-and-how-the-web-communicates-1b9p</guid>
      <description>&lt;p&gt;Hiee🥂!!&lt;br&gt;
Lately I’ve been diving deep into web internals and honestly the deeper I go, the crazier it feels.&lt;/p&gt;

&lt;p&gt;So I thought of documenting whatever I’m learning and understanding along the way , not as an expert, but as a curious developer trying to connect the dots.&lt;br&gt;
This is one of those notes. &lt;/p&gt;

&lt;p&gt;I know there’s already a lot of content on HTTP and web architecture out there, but I still wanted to write this because writing things in my own words helps me understand them better&lt;/p&gt;

&lt;p&gt;Will probably keep writing more about web internals, React internals and low-level web stuff as I learn :) &lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note that Networking goes wayyy deeper than this ,this is just me trying to understand and explain the core ideas in simple human language while learning)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So here we goo, &lt;/p&gt;

&lt;p&gt;Every time we open a website, click a button or log into an app, there’s a silent conversation happening between the client and the server.&lt;/p&gt;

&lt;p&gt;HTTP is basically the medium that makes this conversation possible.&lt;/p&gt;

&lt;p&gt;Its through which client and server talks to each other as a means of request , as the name suggests already that request means asking something from someone , and response again as the name suggests its giving an answer to someone’s call (in this case the request’s call) &lt;/p&gt;

&lt;p&gt;So a request is basically asking something from the server , and the response is what the server gives us (client) in the form of whatever we intend to see on the internet. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;I hope you get the idea right..don't you?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now what exactly is HTTP?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s a protocol , basically a defined set of rules for how requests and responses should happen between the client and the server.&lt;br&gt;
And a request message usually looks something like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Request Line&lt;br&gt;
Headers&lt;br&gt;
Optional Message Body&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;alright?&lt;/p&gt;

&lt;p&gt;Now obviously every request to the server cannot mean the same thing :}&lt;/p&gt;

&lt;p&gt;Sometimes you want to fetch data.&lt;br&gt;
Sometimes you want to create something.&lt;br&gt;
Sometimes, update it.&lt;br&gt;
Sometimes delete it.&lt;br&gt;
So for that, HTTP provides different methods to tell the server what action the client actually wants to perform.&lt;/p&gt;

&lt;p&gt;Some common HTTP methods are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GET&lt;/li&gt;
&lt;li&gt;POST&lt;/li&gt;
&lt;li&gt;PUT&lt;/li&gt;
&lt;li&gt;PATCH&lt;/li&gt;
&lt;li&gt;DELETE&lt;/li&gt;
&lt;li&gt;HEAD&lt;/li&gt;
&lt;li&gt;OPTIONS&lt;/li&gt;
&lt;li&gt;TRACE&lt;/li&gt;
&lt;li&gt;CONNECT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, the most fascinating (and honestly crazy) thing was knowing that HTTP is a stateless protocol.&lt;/p&gt;

&lt;p&gt;Meaning?&lt;/p&gt;

&lt;p&gt;You send a request.&lt;br&gt;
The server processes it.&lt;br&gt;
Give a response.&lt;br&gt;
And then suddenly…&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Who are you again?&lt;/em&gt;” &lt;/p&gt;

&lt;p&gt;So in this case, you’d basically have to log in on every single page again and again because somehow the server has to remember the context of YOU, right? 😭&lt;/p&gt;

&lt;p&gt;Like imagine opening Amazon.com, logging in, doing your shopping, ordering earpods, paying for them and everything is done,&lt;/p&gt;

&lt;p&gt;then 2 hours later  or maybe the next day , you open the app again and the website suddenly goes:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Who are you babe?&lt;/em&gt;” 💀&lt;/p&gt;

&lt;p&gt;Wouldn’t that be complete chaos?&lt;/p&gt;

&lt;p&gt;There had to be something which could tell the server:&lt;br&gt;
“ this is the same person, don’t you dare forget them ”&lt;/p&gt;

&lt;p&gt;And that “noble job” is basically being done by Cookies and Session Storage.&lt;/p&gt;

&lt;p&gt;Cookies: a small piece of text stored in the user’s device by the browser , which consists of name-value pairs containing bits of information about the user, so the web experience doesn’t reset every five seconds. &lt;/p&gt;

&lt;p&gt;But remembering the user wasn’t the only challenge with HTTP &lt;br&gt;
There was another problem too, speed and connection efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pipelining, Multiplexing and the emergence of HTTPS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTTP/1.0 was pretty straightforward:&lt;/p&gt;

&lt;p&gt;One request.&lt;br&gt;
One response.&lt;br&gt;
Connection closed.&lt;/p&gt;

&lt;p&gt;and then again,&lt;br&gt;
new request = new connection setup every single time!! &lt;/p&gt;

&lt;p&gt;which was obviously kinda slow and tiring.&lt;/p&gt;

&lt;p&gt;So HTTP/1.1 introduced something called &lt;strong&gt;Pipelining&lt;/strong&gt;.&lt;br&gt;
Meaning?&lt;br&gt;
The client could send multiple requests together without waiting for the previous response to arrive first.&lt;br&gt;
Sounds cool, right?&lt;/p&gt;

&lt;p&gt;but there was still a problem.&lt;/p&gt;

&lt;p&gt;The server still had to return responses in order:&lt;br&gt;
response 1 -&amp;gt; response 2 -&amp;gt; response 3 ...&lt;br&gt;
So if request 1 became slow for some reason, the further requests had to wait too.&lt;/p&gt;

&lt;p&gt;This problem was called &lt;strong&gt;HOL Blocking (Head Of Line Blocking)&lt;/strong&gt;.&lt;br&gt;
and that’s where &lt;strong&gt;Multiplexing&lt;/strong&gt; entered the chat !!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiplexing&lt;/strong&gt; basically means sending and receiving multiple requests and responses simultaneously over the same connection.&lt;/p&gt;

&lt;p&gt;Then came &lt;strong&gt;HTTP/2&lt;/strong&gt; which introduced proper multiplexing over a single connection along with header compression.&lt;/p&gt;

&lt;p&gt;And later &lt;strong&gt;HTTP/3&lt;/strong&gt; came into the picture, running over UDP with faster connection setup and better performance during packet loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then comes HTTPS (Secure HTTP)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now obviously sending sensitive stuff like passwords, payment details and tokens in plain text over the internet would be a terrible idea💀&lt;/p&gt;

&lt;p&gt;So &lt;strong&gt;HTTPS&lt;/strong&gt; adds encryption to the communication between the client and the server.&lt;br&gt;
Meaning?&lt;br&gt;
Even if someone somehow intercepts the data in between, they still won’t be able to understand it.&lt;/p&gt;

&lt;p&gt;Think of it like this &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;HTTP:&lt;br&gt;
Client -&amp;gt; “my password is 12345” -&amp;gt; Network&lt;br&gt;
HTTPS:&lt;br&gt;
Client -&amp;gt; encrypted unreadable gibberish -&amp;gt; Network&lt;br&gt;
Server -&amp;gt; decrypts -&amp;gt; “my password is 12345”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and behind the scenes, things like &lt;strong&gt;TLS&lt;/strong&gt; and digital certificates help establish this secure communication channel.&lt;/p&gt;

&lt;p&gt;That’s basically the core idea behind &lt;strong&gt;HTTPS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;the deeper I go into web internals, the crazier the internet starts feeling,&lt;/p&gt;

&lt;p&gt;Like imagine billions of devices continuously talking to servers through requests, responses, protocols, encryption, cookies, packets and what not !!!&lt;/p&gt;

&lt;p&gt;and somehow all of this works so smoothly that we casually open Instagram while eating chips :)&lt;/p&gt;

&lt;p&gt;Just curious hat was the first web/internet concept that completely blew your mind?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(If I misunderstood something anywhere, I’d genuinely love corrections or deeper insights from y’all🙌)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>web</category>
      <category>http</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Sat, 09 May 2026 08:28:27 +0000</pubDate>
      <link>https://dev.to/heytechomaima/-kfd</link>
      <guid>https://dev.to/heytechomaima/-kfd</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb" class="crayons-story__hidden-navigation-link"&gt;Welcome to the DEVengers Organization! A group of extraordinary individuals who have shaped Dev.to like no other! 🚀&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Unofficial invite-only group for creators&lt;/p&gt;

&lt;/a&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 class="crayons-logo crayons-logo--l" href="/devengers"&gt;
            &lt;img alt="The DEVengers logo" 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%2Forganization%2Fprofile_image%2F12483%2Fb3a03d2d-fbb6-4355-9593-dff0f92638e9.webp" class="crayons-logo__image" width="800" height="800"&gt;
          &lt;/a&gt;

          &lt;a href="/francistrdev" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&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%2F3711376%2F033bd8c0-e583-42ce-9865-056a9e75e3f8.webp" alt="francistrdev profile" class="crayons-avatar__image" width="320" height="320"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/francistrdev" class="crayons-story__secondary fw-medium m:hidden"&gt;
              FrancisTRᴅᴇᴠ (っ◔◡◔)っ
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                FrancisTRᴅᴇᴠ (っ◔◡◔)っ
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3635100" 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="/francistrdev" 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%2F3711376%2F033bd8c0-e583-42ce-9865-056a9e75e3f8.webp" class="crayons-avatar__image" alt="" width="320" height="320"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;FrancisTRᴅᴇᴠ (っ◔◡◔)っ&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;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/devengers" class="crayons-story__secondary fw-medium"&gt;The DEVengers&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 8&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/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb" id="article-link-3635100"&gt;
          Welcome to the DEVengers Organization! A group of extraordinary individuals who have shaped Dev.to like no other! 🚀
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/community"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;community&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/meta"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;meta&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&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/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb" 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/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;62&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/devengers/welcome-to-the-devengers-organization-a-group-of-extraordinary-individuals-that-influenced-devto-4ifb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              14&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&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>(Avengers Already Warned You) CS Isn’t Dead. You’re Just Watching It Mutate</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Wed, 01 Apr 2026 13:54:58 +0000</pubDate>
      <link>https://dev.to/heytechomaima/avengers-already-warned-you-cs-isnt-dead-youre-just-watching-it-mutate-424g</link>
      <guid>https://dev.to/heytechomaima/avengers-already-warned-you-cs-isnt-dead-youre-just-watching-it-mutate-424g</guid>
      <description>&lt;p&gt;Okay so let’s drop the fake motivation for a second.&lt;/p&gt;

&lt;p&gt;The shift is real and yeah - it’s uncomfortable (as hell).&lt;/p&gt;

&lt;p&gt;People are getting laid off.&lt;br&gt;
Tools are evolving faster than we can even process.&lt;br&gt;
Stuff that took weeks now takes hours.&lt;/p&gt;

&lt;p&gt;and then someone casually says: just understand problems deeply bro&lt;/p&gt;

&lt;p&gt;like that explains anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zoom out for a second&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;10–15 years ago?&lt;/p&gt;

&lt;p&gt;one smartphone per family, one computer in the whole locality, internet felt like a luxury&lt;/p&gt;

&lt;p&gt;and still, the software industry was growing.&lt;/p&gt;

&lt;p&gt;NOW?&lt;/p&gt;

&lt;p&gt;Every person has a device&lt;br&gt;
Every business runs on software&lt;br&gt;
Entire economies are digital&lt;/p&gt;

&lt;p&gt;and some people are saying:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“CS is dead”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;that’s not just wrong ,that’s lazy thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What’s actually happening?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Computer Science and technology is mutating into something we don’t fully have a name for (yet) and no this is not a “new tool” phase.&lt;br&gt;
this is a &lt;strong&gt;new layer of reality&lt;/strong&gt; being added.&lt;/p&gt;

&lt;p&gt;Like avengers, it’s no longer just humans, it’s AI ,enhanced beings, agentic stuff , old rules stop applying&lt;/p&gt;

&lt;p&gt;That’s where we are !!&lt;/p&gt;

&lt;p&gt;The old definition of a “developer” is breaking.&lt;/p&gt;

&lt;p&gt;Not slowly. Rapidly.&lt;/p&gt;

&lt;p&gt;Earlier:&lt;/p&gt;

&lt;p&gt;I can code = value&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;I can prompt, glue APIs, ship fast, leverage AI = &lt;em&gt;baseline&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;and even that baseline is shifting every few months.&lt;/p&gt;

&lt;p&gt;So yeah - if someone built their entire identity around:&lt;/p&gt;

&lt;p&gt;syntax&lt;br&gt;
frameworks&lt;br&gt;
memorizing patterns&lt;/p&gt;

&lt;p&gt;They will feel like the ground is disappearing.&lt;/p&gt;

&lt;p&gt;because IT IS !!&lt;/p&gt;

&lt;p&gt;People keep calling it “evolution”.&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;This feels more like when Tony discovered JARVIS.&lt;/p&gt;

&lt;p&gt;We’re not just improving workflows.&lt;/p&gt;

&lt;p&gt;We’re changing:&lt;/p&gt;

&lt;p&gt;how software is built&lt;br&gt;
who can build it&lt;br&gt;
how fast things move&lt;br&gt;
what &lt;strong&gt;skill&lt;/strong&gt; even means&lt;br&gt;
Why the usual advice feels boring now&lt;/p&gt;

&lt;p&gt;so now you need to:&lt;/p&gt;

&lt;p&gt;adapt faster than tools change , unlearn aggressively , build with things you barely understand yet , stay calm when nothing feels stable&lt;/p&gt;

&lt;p&gt;This wasn’t required before at &lt;strong&gt;this level.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;basically you’re closer to Tony Stark in a lab than a traditional coder.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Not “grind harder”.&lt;/p&gt;

&lt;p&gt;Not “just learn DSA”.&lt;/p&gt;

&lt;p&gt;Not “just build projects”.&lt;/p&gt;

&lt;p&gt;That advice alone won’t cut it anymore.&lt;/p&gt;

&lt;p&gt;What actually matters now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can you move with uncertainty without freezing?&lt;/li&gt;
&lt;li&gt;Can you learn tools faster than they become obsolete?&lt;/li&gt;
&lt;li&gt;Can you ship even when you don’t feel ready?&lt;/li&gt;
&lt;li&gt;Can you stay in the game while others quit out of confusion?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because that’s what’s filtering people right now.&lt;/p&gt;

&lt;p&gt;Not intelligence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Adaptability.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This phase is  messy &amp;amp; undefined and bit scary ,exactly like every major shift ever.&lt;/p&gt;

&lt;p&gt;but calling it “the death of CS” is just people panicking because:&lt;/p&gt;

&lt;p&gt;the game they learned is not the game being played anymore.&lt;/p&gt;

&lt;p&gt;The industry didn’t die, it just turned into something &lt;strong&gt;more powerful&lt;/strong&gt; and harder to recognize.&lt;/p&gt;

&lt;p&gt;and yeah, it does feel like Avengers.&lt;/p&gt;

&lt;p&gt;not the calm parts.&lt;/p&gt;

&lt;p&gt;the chaotic ones where nobody knows what’s going on,&lt;br&gt;
but the people who stay in the fight end up shaping what comes next !!&lt;/p&gt;

&lt;p&gt;let me know in the comments how you see this whole thing ?&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>techtalks</category>
      <category>web</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Fri, 16 Jan 2026 09:43:13 +0000</pubDate>
      <link>https://dev.to/heytechomaima/-2e74</link>
      <guid>https://dev.to/heytechomaima/-2e74</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/thebitforge/stop-overengineering-how-to-write-clean-code-that-actually-ships-18ni" class="crayons-story__hidden-navigation-link"&gt;Stop Overengineering: How to Write Clean Code That Actually Ships 🚀&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="/thebitforge" 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%2F3581035%2F7a4e3e11-052c-4b61-9f45-e3f421e69147.png" alt="thebitforge profile" class="crayons-avatar__image" width="768" height="1344"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/thebitforge" class="crayons-story__secondary fw-medium m:hidden"&gt;
              TheBitForge
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                TheBitForge
                
              
              &lt;div id="story-author-preview-content-3162468" 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="/thebitforge" 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%2F3581035%2F7a4e3e11-052c-4b61-9f45-e3f421e69147.png" class="crayons-avatar__image" alt="" width="768" height="1344"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;TheBitForge&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/thebitforge/stop-overengineering-how-to-write-clean-code-that-actually-ships-18ni" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 10&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/thebitforge/stop-overengineering-how-to-write-clean-code-that-actually-ships-18ni" id="article-link-3162468"&gt;
          Stop Overengineering: How to Write Clean Code That Actually Ships 🚀
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&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/thebitforge/stop-overengineering-how-to-write-clean-code-that-actually-ships-18ni" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.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;96&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/thebitforge/stop-overengineering-how-to-write-clean-code-that-actually-ships-18ni#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              13&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            41 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

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

&lt;/div&gt;


</description>
      <category>discuss</category>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Freelancing was going fine… until</title>
      <dc:creator>Omaima Ameen</dc:creator>
      <pubDate>Mon, 05 Jan 2026 07:39:54 +0000</pubDate>
      <link>https://dev.to/heytechomaima/freelancing-was-going-fine-until-4ibo</link>
      <guid>https://dev.to/heytechomaima/freelancing-was-going-fine-until-4ibo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Heyy geniuses&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;(don’t know if that’s the right word, but hoping at least two people read this )&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So,&lt;br&gt;
I’ve been freelancing for the past few months, mostly building conversion-focused websites and animations, and getting clients through LinkedIn and Instagram.&lt;/p&gt;

&lt;p&gt;Everything was going fine… until curiosity kicked in.&lt;/p&gt;

&lt;p&gt;For the last month or so, I’ve been wanting to understand how things actually work internally - not just what works, but why it works.&lt;/p&gt;

&lt;p&gt;So alongside client work, I started digging into React internals, purely because it’s fun to know why things behave the way they do under the hood.&lt;br&gt;
and honestly… it’s been pretty fun.&lt;/p&gt;

&lt;p&gt;Just learning, building, breaking things, fixing them, and enjoying the process.&lt;/p&gt;

&lt;p&gt;This is my first post here on Dev Community - mostly to see if my kind of people are around.&lt;/p&gt;

&lt;p&gt;People who genuinely love &lt;strong&gt;code.&lt;/strong&gt;&lt;br&gt;
People who have something more interesting to say than “&lt;strong&gt;huhh AI will replace developers.&lt;/strong&gt;”&lt;/p&gt;

&lt;p&gt;Curious to know 👀&lt;br&gt;
What’s been the real reward for you of posting here and being present in this community?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>firstpost</category>
    </item>
  </channel>
</rss>
