<?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: saida lachgar</title>
    <description>The latest articles on DEV Community by saida lachgar (@saida_lachgar).</description>
    <link>https://dev.to/saida_lachgar</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%2F2897021%2F7f140543-9e78-4f65-a383-c5709cd17860.jpg</url>
      <title>DEV Community: saida lachgar</title>
      <link>https://dev.to/saida_lachgar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saida_lachgar"/>
    <language>en</language>
    <item>
      <title>WTF Is Everyone Talking About? A developer dictionary that doesn’t suck</title>
      <dc:creator>saida lachgar</dc:creator>
      <pubDate>Fri, 11 Apr 2025 21:53:26 +0000</pubDate>
      <link>https://dev.to/saida_lachgar/-2omg</link>
      <guid>https://dev.to/saida_lachgar/-2omg</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/saida_lachgar/dev-terms-explained-with-memes-1d0" class="crayons-story__hidden-navigation-link"&gt;Dev Terms Explained with Memes 😎&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="/saida_lachgar" 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%2F2897021%2F7f140543-9e78-4f65-a383-c5709cd17860.jpg" alt="saida_lachgar profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/saida_lachgar" class="crayons-story__secondary fw-medium m:hidden"&gt;
              saida lachgar
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                saida lachgar
                
              
              &lt;div id="story-author-preview-content-2390028" 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="/saida_lachgar" 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%2F2897021%2F7f140543-9e78-4f65-a383-c5709cd17860.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;saida lachgar&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/saida_lachgar/dev-terms-explained-with-memes-1d0" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 8 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/saida_lachgar/dev-terms-explained-with-memes-1d0" id="article-link-2390028"&gt;
          Dev Terms Explained with Memes 😎
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&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;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/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/saida_lachgar/dev-terms-explained-with-memes-1d0" 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="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&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/saida_lachgar/dev-terms-explained-with-memes-1d0#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;
            6 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>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Dev Terms Explained with Memes 😎</title>
      <dc:creator>saida lachgar</dc:creator>
      <pubDate>Tue, 08 Apr 2025 02:22:45 +0000</pubDate>
      <link>https://dev.to/saida_lachgar/dev-terms-explained-with-memes-1d0</link>
      <guid>https://dev.to/saida_lachgar/dev-terms-explained-with-memes-1d0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey folks!&lt;/strong&gt; 👋&lt;/p&gt;

&lt;p&gt;Back when I first started coding, I felt like everyone was speaking &lt;em&gt;a secret language&lt;/em&gt;. Meetings were full of words like &lt;em&gt;"Agile," "SEO," "Tech Debt,"&lt;/em&gt; and I’d just nod like 😃 &lt;em&gt;"Yep, totally get it…"&lt;/em&gt; (Spoiler: I didn’t.)&lt;/p&gt;

&lt;p&gt;So here’s &lt;strong&gt;my no-bs cheat sheet&lt;/strong&gt; for dev vocabulary that nobody bothered to explain to me. Bookmark this if you’re new—or just pretend you’ve known these all along (we’ve all been there).&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🤹 "We Work in Agile"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "We pretend to be organized, but chaos reigns.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agile&lt;/strong&gt; = A way to manage projects by breaking them into tiny chunks (called &lt;em&gt;sprints&lt;/em&gt;), so you can panic every 2 weeks instead of all at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scrum&lt;/strong&gt; = A subtype of Agile where you stand in daily meetings (&lt;em&gt;stand-ups&lt;/em&gt;) and say what you did yesterday (aka "I Googled errors for 4 hours").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kanban&lt;/strong&gt; = Fancy word for a to-do list with columns like &lt;em&gt;"Doing," "Done,"&lt;/em&gt; and &lt;em&gt;"Why Is This Still Here?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Fun fact: My first sprint felt like running a marathon… backwards.)&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🔍 "The SEO Needs Work"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Google hates our website.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO (Search Engine Optimization)&lt;/strong&gt; = The dark art of making your site show up on Google. Involves witchcraft (&lt;em&gt;meta tags&lt;/em&gt;, &lt;em&gt;keywords&lt;/em&gt;, and &lt;em&gt;backlinks&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic HTML&lt;/strong&gt; = Using &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; instead of &lt;code&gt;&amp;lt;div id="thingy"&amp;gt;&lt;/code&gt; so screen readers and Google don’t get confused.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Pro tip: If your site looks like a 1999 GeoCities page, SEO won’t save you.)&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;💸 "Let’s Avoid Tech Debt"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "We cut corners, and now we’re paying for it.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tech Debt&lt;/strong&gt; = When you write janky code to hit a deadline, and future-you &lt;em&gt;hates&lt;/em&gt; past-you for it. Like taking a loan… but the interest is &lt;em&gt;bugs&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactoring&lt;/strong&gt; = Rewriting code so it doesn’t look like a toddler’s finger-painting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Code&lt;/strong&gt; = Ancient code nobody understands, but it somehow &lt;em&gt;still runs&lt;/em&gt;. (&lt;em&gt;"Don’t touch it—it might explode."&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🎨 "The Design System is Broken"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "The CSS is a war zone.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design System&lt;/strong&gt; = A set of reusable UI components (&lt;em&gt;buttons, cards, etc.&lt;/em&gt;) so your app doesn’t look like 5 different devs styled it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BEM&lt;/strong&gt; = A CSS naming convention like &lt;code&gt;.block__element--modifier&lt;/code&gt;. Sounds weird, but it keeps your sanity intact.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;❤️ "We Use Open Source"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "We didn’t build this, but thanks, strangers on GitHub!")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open Source&lt;/strong&gt; = Code that’s free to use/modify. Like React, VS Code, or that random npm package you &lt;em&gt;definitely&lt;/em&gt; checked for malware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm/yarn&lt;/strong&gt; = Tool to install JavaScript packages. Also where &lt;code&gt;node_modules&lt;/code&gt; goes to eat your hard drive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MIT License&lt;/strong&gt; = "Do whatever, just don’t sue us."&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🚨 "It’s a P0 Bug!"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Drop your coffee—the site’s on fire.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;P0/P1/P2 Bugs&lt;/strong&gt; = Priority levels. P0 means &lt;em&gt;"fix this or we all lose our jobs."&lt;/em&gt; P2 means &lt;em&gt;"maybe next year… or never."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hotfix&lt;/strong&gt; =&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regression&lt;/strong&gt; = When you fix a bug but accidentally resurrect an older bug like a &lt;em&gt;zombie apocalypse&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🐳 "We Need to Dockerize This"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Let’s wrap our app in a digital burrito so it runs anywhere.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; = Tool to package apps with all their dependencies (so they work the same on your laptop &lt;em&gt;and&lt;/em&gt; a server).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes (k8s)&lt;/strong&gt; = Docker’s overachieving cousin—manages &lt;em&gt;containers&lt;/em&gt; at scale. (Also, a great way to make your resume sound fancy.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microservices&lt;/strong&gt; = When you break an app into tiny, independent pieces so &lt;em&gt;one crash doesn’t doom everything&lt;/em&gt;. (In theory.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;💀 "The API Is Down"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Our app is now a brick.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt; = A way for apps to talk to each other. Like a waiter taking orders between the kitchen (server) and your table (frontend).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REST&lt;/strong&gt; = A common API design style. GET, POST, PUT...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GraphQL&lt;/strong&gt; = REST’s hipster cousin. Only wants the data it needs, with zero extra calories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt; = A URL where an API "listens" (e.g., &lt;code&gt;https://api.cats.com/v1/meow&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rate Limiting&lt;/strong&gt; = When an API says &lt;em&gt;"slow down, buddy"&lt;/em&gt; after you spam it too much.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DDoS&lt;/strong&gt; = When so many requests hit your server that it collapses. Sometimes intentional. Always bad&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Websockets&lt;/strong&gt; = Real-time communication between browser and server. Used for chat apps, games...&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🔬 "Let’s A/B Test This"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "We’ll guilt-trip users into clicking the red button.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A/B Testing&lt;/strong&gt; = Showing 50% of users Version A and 50% Version B to see which one &lt;em&gt;doesn’t&lt;/em&gt; flop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CTA (Call to Action)&lt;/strong&gt; = The button you &lt;em&gt;really&lt;/em&gt; want users to click (&lt;em&gt;"Sign Up!"&lt;/em&gt;, &lt;em&gt;"Buy Now!"&lt;/em&gt;, &lt;em&gt;"Please, just click something!"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bounce Rate&lt;/strong&gt; = When users visit your site and leave faster than a bad date.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🐢 "Our CDN Is Slow"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "The internet is buffering like it’s 2005.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CDN (Content Delivery Network)&lt;/strong&gt; = Servers around the world that cache your site’s files so Australians don’t wait 10 seconds for your CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache&lt;/strong&gt; = Temporary storage (like your browser remembering a site so it loads faster next time).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache Invalidation&lt;/strong&gt; = The art of &lt;em&gt;clearing&lt;/em&gt; cached stuff when it’s outdated. (Often done by smashing keyboards.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🦄 "Just Polyfill It"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Make this work in IE, even if it kills us.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Polyfill&lt;/strong&gt; = Code that &lt;em&gt;fakes&lt;/em&gt; modern features for older browsers. Like giving IE11 a fake mustache to sneak into the club.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transpiler&lt;/strong&gt; = Converts modern code (ES6) into older JS so &lt;em&gt;grandpa browsers&lt;/em&gt; understand it. &lt;strong&gt;Babel&lt;/strong&gt; is the OG here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ponyfill&lt;/strong&gt; = A polyfill that &lt;em&gt;doesn’t&lt;/em&gt; pollute global scope. (Yes, this is a real term.)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🔫 "That’s a Footgun"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "This code lets you shoot yourself in the foot… easily.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Footgun&lt;/strong&gt; = A feature/tool that’s &lt;em&gt;dangerously easy to misuse&lt;/em&gt;. (Example: JavaScript’s &lt;code&gt;==&lt;/code&gt; vs &lt;code&gt;===&lt;/code&gt;.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yak Shaving&lt;/strong&gt; = Doing 10 pointless tasks to fix &lt;em&gt;one tiny thing&lt;/em&gt;. &lt;em&gt;(Example: Updating npm to fix a bug… but now Webpack won’t compile… and suddenly it’s 3 AM.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bikeshedding&lt;/strong&gt; = Arguing endlessly about trivial stuff (&lt;em&gt;"Should the button be #FF0000 or #CC0033?"&lt;/em&gt;) while ignoring big problems.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🚀 "We’re Going Headless"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "We’re fancy now.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Headless CMS&lt;/strong&gt; = A backend for content (like blog posts) that &lt;em&gt;doesn’t care&lt;/em&gt; how the frontend looks. Popular ones: Sanity, Contentful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headless Browser&lt;/strong&gt; = A browser without a UI (used for testing/scraping). &lt;strong&gt;Puppeteer&lt;/strong&gt; is the celeb here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JAMstack&lt;/strong&gt; = Building sites with &lt;strong&gt;J&lt;/strong&gt;avaScript, &lt;strong&gt;A&lt;/strong&gt;PIs, and &lt;strong&gt;M&lt;/strong&gt;arkup. (Basically, &lt;em&gt;"let’s make static sites dynamic."&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🍝 "It’s Just Spaghetti Code"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "The previous dev was a chaos gremlin.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spaghetti Code&lt;/strong&gt; = A tangled mess where changing &lt;em&gt;one line&lt;/em&gt; breaks 12 unrelated things.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lasagna Code&lt;/strong&gt; = Over-engineered layers of abstraction (the opposite problem).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rubber Duck Debugging&lt;/strong&gt; = Explaining your code to a rubber duck (or a patient coworker) to find the bug yourself. &lt;em&gt;(Works scarily well.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DRY&lt;/strong&gt; = (Don’t Repeat Yourself) A coding mantra to avoid writing the same thing twice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tree-Shaking&lt;/strong&gt; = The build process shakes out unused code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;☁️ "The Cloud Isn’t Magic" (DevOps &amp;amp; Infrastructure)"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "It’s just someone else’s computer.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS/GCP/Azure&lt;/strong&gt; = Cloud providers that rent you servers (and charge you $5,000 if you forget to turn them off).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Serverless&lt;/strong&gt; = A lie—there are still servers, but you don’t manage them. Like AWS Lambda ("run code without crying over Linux updates").&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Load Balancer&lt;/strong&gt; = Traffic cop for your servers, so one doesn’t get crushed while others nap.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🧮 "Big O, Big Problems" (Algorithms &amp;amp; Performance)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(Translation: "Your code is slow. Here’s why.")&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Big O Notation&lt;/strong&gt; = Measures how slow your algorithm gets as data grows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;O(1)&lt;/strong&gt; = Lightning fast (&lt;em&gt;"lookup by key in a dictionary"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O(n)&lt;/strong&gt; = &lt;em&gt;"Eh, not terrible"&lt;/em&gt; (looping through an array once).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O(n²)&lt;/strong&gt; = &lt;em&gt;"Why is my laptop smoking?"&lt;/em&gt; (nested loops).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O(n!)&lt;/strong&gt; = &lt;em&gt;"Burn it with fire"&lt;/em&gt; (traveling salesman brute force).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimization&lt;/strong&gt; = The art of making &lt;em&gt;O(n²)&lt;/em&gt; into &lt;em&gt;O(n log n)&lt;/em&gt; so your app doesn’t crash.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Premature Optimization&lt;/strong&gt; = Obsessing over speed &lt;em&gt;before&lt;/em&gt; your code even works. (Don’t be this person.)&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🤖 Bonus: Acronyms That Sound Like Sci-Fi&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CRUD&lt;/strong&gt; = Create, Read, Update, Delete (basic app functions). Pronounced "krud"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CORS&lt;/strong&gt; = Browser security rule that &lt;em&gt;loves&lt;/em&gt; to ruin your day. Pronounced "kors"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSR&lt;/strong&gt; = Server-Side Rendering (HTML built on the server). &lt;strong&gt;CSR&lt;/strong&gt; = Client-Side Rendering (HTML built in the browser). Pronounced "S-S-R" / "C-S-R"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TTFB&lt;/strong&gt; = Time To First Byte (how long your site takes to &lt;em&gt;start&lt;/em&gt; loading). Pronounced "T-T-F-B"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WYSIWYG&lt;/strong&gt; = "What You See Is What You Get" (like WordPress’s editor). Pronounced "wizzy-wig"&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Want this as a PDF cheat sheet?&lt;/em&gt; &lt;a href="https://saidalachgar.dev/dev-vocabulary-cheat-sheet.pdf" rel="noopener noreferrer"&gt;Download&lt;/a&gt; &lt;em&gt;900+ devs already stole it ;)&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🚀 Dev.to Exclusive: Your Requested Terms&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I &lt;em&gt;originally published this&lt;/em&gt; on &lt;a href="https://saidalachgar.dev/blog/a-developer-dictionary-that-doesnt-suck/" rel="noopener noreferrer"&gt;my portfolio&lt;/a&gt;, but y'all kept DMing me "OMG EXPLAIN __!" So here is the expanded edition :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability infrastructure&lt;/strong&gt; = Our server crashed because TikTok featured us&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fork&lt;/strong&gt; = Steal this GitHub repo and pretend you'll contribute later&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SAAS&lt;/strong&gt; = If you can’t explain it, just say "It’s like Salesforce but…" Pronounced "sass" (like a sassy cloud)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web3&lt;/strong&gt; = Decentralized, blockchain-powered internet paradigm, Pronounced "web-three"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX&lt;/strong&gt; = Human-centered design optimization, Pronounced "you-eye you-ex" &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Big Data&lt;/strong&gt; = We collect your search history to sell you worse ads, Pronounced "big day-ta"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM&lt;/strong&gt; = Fancy autocomplete that sometimes lies with confidence&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💬 Your Turn!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Got a term ?&lt;/strong&gt; Drop it below—I'll add it to the next update!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Essential React Hooks &amp; Practical Use Cases 🎣</title>
      <dc:creator>saida lachgar</dc:creator>
      <pubDate>Tue, 25 Feb 2025 22:46:23 +0000</pubDate>
      <link>https://dev.to/saida_lachgar/react-hooks-beginners-quick-guide-3f5a</link>
      <guid>https://dev.to/saida_lachgar/react-hooks-beginners-quick-guide-3f5a</guid>
      <description>&lt;h2&gt;
  
  
  What Are React Hooks?
&lt;/h2&gt;

&lt;p&gt;Functions that let you use React features in functional components without classes.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 Essential Hooks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. useState
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; keeps track of values that can change in your app&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;// e.g. 1: Basic state management&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCount&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="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// e.g. 2: Form inputs&lt;/span&gt;
&lt;span class="kd"&gt;const&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="nx"&gt;setName&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="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storing form input values&lt;/li&gt;
&lt;li&gt;Toggling UI states (open/closed)&lt;/li&gt;
&lt;li&gt;Tracking simple values (counters, flags)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. useEffect
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; helps us run code when things change (or when a component first loads)&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;// e.g. 1: Run once on mount (empty dependencies)&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="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Setup code&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* Cleanup code */&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

&lt;span class="c1"&gt;// e.g. 2: Run when dependencies change&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="p"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; new messages`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data fetching&lt;/li&gt;
&lt;li&gt;Subscriptions/event listeners&lt;/li&gt;
&lt;li&gt;DOM manipulation&lt;/li&gt;
&lt;li&gt;Syncing with external systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. useContext
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; allows multiple components to share the same data without passing it manually&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;// Access theme from anywhere in component tree&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="nf"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ThemeContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accessing global state (themes, user data)&lt;/li&gt;
&lt;li&gt;Avoiding prop drilling through many components&lt;/li&gt;
&lt;li&gt;When multiple components need the same data&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. useRef
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; helps reference an element without causing unnecessary re-renders&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;// e.g. 1: DOM element reference&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;inputRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;inputRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;focus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// e.g. 2: Value persistence between renders&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prevCountRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accessing DOM elements&lt;/li&gt;
&lt;li&gt;Storing previous values&lt;/li&gt;
&lt;li&gt;Holding values that shouldn't trigger re-renders&lt;/li&gt;
&lt;li&gt;Managing timers/intervals&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. useReducer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Manages complex state logic&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;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useReducer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;reducer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;initialState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex state with multiple sub-values&lt;/li&gt;
&lt;li&gt;When next state depends on previous state&lt;/li&gt;
&lt;li&gt;When state transitions have business logic&lt;/li&gt;
&lt;li&gt;When actions cause multiple state updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. useMemo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; expensive calculations to avoid recomputing them unnecessarily&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="nx"&gt;expensiveValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;computeExpensiveValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimizing performance-heavy calculations&lt;/li&gt;
&lt;li&gt;Preventing unnecessary computations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. useCallback
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Memoizes functions so they don’t get recreated every render&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="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Clicked!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&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;&lt;strong&gt;When to use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preventing unnecessary re-renders in child components&lt;/li&gt;
&lt;li&gt;Avoiding function recreation on every render&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Custom Hooks
&lt;/h2&gt;

&lt;p&gt;Create your own hooks to reuse logic between components:&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;// Extract reusable logic&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useWindowSize&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setSize&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="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHeight&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Event handling + cleanup in one hook&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="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleResize&lt;/span&gt; &lt;span class="o"&gt;=&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;setSize&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHeight&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;resize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleResize&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;resize&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleResize&lt;/span&gt;&lt;span class="p"&gt;);&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="nx"&gt;size&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;h2&gt;
  
  
  Rules of Hooks
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Only call at top level (no conditions/loops)&lt;/li&gt;
&lt;li&gt;Only call from React functions&lt;/li&gt;
&lt;li&gt;Name custom hooks with "use" prefix&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Quick Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;useState&lt;/code&gt; for simple state, &lt;code&gt;useReducer&lt;/code&gt; for complex state&lt;/li&gt;
&lt;li&gt;Don't forget cleanup functions in &lt;code&gt;useEffect&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Optimize renders with &lt;code&gt;useMemo&lt;/code&gt; and &lt;code&gt;useCallback&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create custom hooks to share logic, not just for reuse&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;useImperativeHandle&lt;/code&gt; to expose methods from child components to parents.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;useLayoutEffect&lt;/code&gt; when updates need to happen before the browser paints.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;useDebugValue&lt;/code&gt; to add labels to custom hooks for easier debugging in React DevTools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚀 Wrapping Up&lt;/p&gt;

&lt;p&gt;React Hooks are powerful and fun when you understand how they work! Here's a quick recap:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;useState&lt;/strong&gt; → Keeps track of changing values (&lt;em&gt;Think of useState as a small whiteboard where you can jot down notes «data» that might change over time&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useEffect&lt;/strong&gt; → Runs side effects (&lt;em&gt;like setting a reminder alarm. When certain things happen, you want to be reminded to do something&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useContext&lt;/strong&gt; → Shares values across components (&lt;em&gt;Imagine a family chalkboard in your house where everyone can read and write messages&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useRef&lt;/strong&gt; → References elements without re-rendering (&lt;em&gt;is like placing a bookmark in a book. It helps you keep track of a specific spot or element&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useReducer&lt;/strong&gt; → Handles complex state logic (&lt;em&gt;like a suggestion box for managing complex state changes&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useMemo&lt;/strong&gt; → Optimizes calculations (&lt;em&gt;like a chef who prepares ingredients in advance so they don’t have to chop them again for every order&lt;/em&gt;)&lt;br&gt;
✅ &lt;strong&gt;useCallback&lt;/strong&gt; → Optimizes functions (&lt;em&gt;like saving a shopping list so you don’t rewrite it every time you go shopping!&lt;/em&gt;)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Image Optimization in Astro: Boost Site Performance and SEO</title>
      <dc:creator>saida lachgar</dc:creator>
      <pubDate>Mon, 24 Feb 2025 22:50:39 +0000</pubDate>
      <link>https://dev.to/saida_lachgar/image-optimization-in-astro-boost-site-performance-and-seo-2k80</link>
      <guid>https://dev.to/saida_lachgar/image-optimization-in-astro-boost-site-performance-and-seo-2k80</guid>
      <description>&lt;p&gt;Images are crucial for engagement but can slow down your website. Proper optimization improves load times, SEO rankings, and accessibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage Options
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;src/ directory&lt;/strong&gt;: Use for automatic optimization (compression, resizing, format conversion)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;public/ directory&lt;/strong&gt;: Use for images that don't need processing or require direct URLs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Astro's Optimization Components
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The &lt;code&gt;&amp;lt;Image&amp;gt;&lt;/code&gt; Component
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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;Image&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;astro:assets&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;myImage&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;../src/images/my-image.jpg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Image&lt;/span&gt;
  &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;myImage&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Mountains at sunrise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic compression and WebP conversion&lt;/li&gt;
&lt;li&gt;Required alt text for accessibility&lt;/li&gt;
&lt;li&gt;Built-in lazy loading&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The &lt;code&gt;&amp;lt;Picture&amp;gt;&lt;/code&gt; Component
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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;Picture&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;astro:assets&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;myImage&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;../src/images/my-image.jpg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Picture&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="nx"&gt;srcset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;myImage&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image/webp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="nx"&gt;srcset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;myImage&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image/jpeg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;myImage&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Mountains at sunrise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Picture&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive design across devices&lt;/li&gt;
&lt;li&gt;Multiple format support for browser compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choose appropriate formats (JPEG for photos, PNG for transparency, WebP for best compression)&lt;/li&gt;
&lt;li&gt;Compress images to under 100KB when possible&lt;/li&gt;
&lt;li&gt;Use descriptive alt text for accessibility and SEO&lt;/li&gt;
&lt;li&gt;Take advantage of lazy loading&lt;/li&gt;
&lt;li&gt;Always specify image dimensions to prevent layout shifts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Implementing these optimization techniques in Astro will significantly improve your site's performance, user experience, and search engine rankings.&lt;/p&gt;

&lt;p&gt;For a deeper dive into optimizing Astro websites for SEO, including plugins and performance tips, check out my &lt;a href="https://saidalachgar.dev/blog/optimizing-astro-websites-for-seo-plugins-performance-and-best-practices/" rel="noopener noreferrer"&gt;comprehensive guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>seo</category>
      <category>astro</category>
    </item>
  </channel>
</rss>
