<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Choubari&#39;s Newsletter</title>
    <description>The One Place to Learn, Laugh, and Level Up Your Coding Skills.</description>
    
    <link>https://choubari.beehiiv.com/</link>
    <atom:link href="https://rss.beehiiv.com/feeds/zUQw6owdiT.xml" rel="self"/>
    
    <lastBuildDate>Thu, 14 May 2026 23:27:31 +0000</lastBuildDate>
    <pubDate>Fri, 09 Feb 2024 20:55:05 +0000</pubDate>
    <atom:published>2024-02-09T20:55:05Z</atom:published>
    <atom:updated>2026-05-14T23:27:31Z</atom:updated>
    
      <category>Productivity</category>
      <category>Programming</category>
      <category>Software Engineering</category>
    <copyright>Copyright 2026, Choubari&#39;s Newsletter</copyright>
    
    <image>
      <url>https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/publication/logo/fbeffd92-0ec8-40ad-bf4a-f302c31d8931/FB_IMG_1745568249014.jpg</url>
      <title>Choubari&#39;s Newsletter</title>
      <link>https://choubari.beehiiv.com/</link>
    </image>
    
    <docs>https://www.rssboard.org/rss-specification</docs>
    <generator>beehiiv</generator>
    <language>en-us</language>
    <webMaster>support@beehiiv.com (Beehiiv Support)</webMaster>

      <item>
  <title>My Speaking Journey at Devoxx Morocco 2023 ☀️</title>
  <description>a 3min VLOG sharing my experience 🎤</description>
  <link>https://choubari.beehiiv.com/p/my-speaking-journey-at-devoxx-morocco-conference-2023</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/my-speaking-journey-at-devoxx-morocco-conference-2023</guid>
  <pubDate>Fri, 09 Feb 2024 20:55:05 +0000</pubDate>
  <atom:published>2024-02-09T20:55:05Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey there, tech enthusiasts! 🌟</p><p class="paragraph" style="text-align:start;">I&#39;m super excited to share with you my latest vlog: <b>&#39;My Speaking Journey at Devoxx Morocco Conference 2023&#39;</b> 🎥✈️. This video is not just a vlog; it shows a special vibe in my home country Morocco, and a recap of my second time speaking 🎤 at this amazing conference.</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/zwDKEd2cmb0" width="100%"></iframe><p class="paragraph" style="text-align:start;">👩‍🏫<b> My Talks:</b></p><ul><li><p class="paragraph" style="text-align:left;"><b>Learn Modern Web Development with Next.js 13:</b> A comprehensive 2-hour workshop into the latest features of Next.js 13 App directory and best practices for building web applications.</p></li><li><p class="paragraph" style="text-align:left;"><b>React Server Components:</b> A 25-minute session following the workshop, where I explored the benefits and implementations of React Server Components, enhancing SSR capabilities for React applications.</p></li></ul><p class="paragraph" style="text-align:start;">These sessions were a marathon for me, they were consecutive in the same day.</p><p class="paragraph" style="text-align:start;">Though we don&#39;t have recordings, I&#39;m planning to bring these talks to YouTube 🤞, so stay tuned for a chance to catch up on what you missed!</p><p class="paragraph" style="text-align:start;"></p><p class="paragraph" style="text-align:start;">🌞<b> From Paris to Sunny Taghazout:</b> Switching from the cold in Paris to the sunny climes of Taghazout (34°c) <span style="text-decoration:underline;"><b>in October</b></span> was a breath of fresh air. This conference was more than just an event; it was a 3-day tech retreat that allowed me to reconnect with the community, meet enthusiastic students, and share invaluable advice on kickstarting their careers in tech.</p><p class="paragraph" style="text-align:start;"></p><p class="paragraph" style="text-align:start;"><b>🎬 The Backstage of my Creative Process :</b> You might wonder, how long does it take to produce a 3-minute vlog? Well, between capturing the essence of my speaking journey and ensuring each moment is perfectly shared, it takes from October to February! Yes, that&#39;s the life of a<b> YouTube procrastinator</b> like me. But hey, quality takes time, right? Indeed, for every video I made I have a checklist of minimum requirements to respect!</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4a4adad0-3bda-46ea-94c4-f3232b06f521/image.png?t=1707511259"/></div><p class="paragraph" style="text-align:start;">📅<b> Looking Ahead to Devoxx 2024:</b> While talking about the 2023 conference, let&#39;s not forget the next one. Devoxx Morocco 2024 is on the horizon with dates set for 2-4 October 2024. Make sure to follow their page for updates on the call for papers. Sadly, high chances I won&#39;t be able to join due to my packed schedule, I’ll do my best to make it, wish me luck 🤞!</p><blockquote align="center" class="twitter-tweet"><a href="https://twitter.com/DevoxxMA/status/1755539782740869396?s=20&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=my-speaking-journey-at-devoxx-morocco-2023"><p> Twitter tweet </p></a></blockquote><p class="paragraph" style="text-align:start;">Thanks for reading till the end. Your support means everything.</p><p class="paragraph" style="text-align:start;">If you enjoyed this do me a favor and share it with your friends!</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=73009f9f-5413-4268-8ff4-93306c48e810&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Personal Updates and Reflections on My Content Creation Journey</title>
  <description>10 months no updates, here is what happened...</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5fb85615-9882-4499-8a3a-c1977b9bb147/personal_updates.png" length="304840" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/personal-updates-and-reflections-on-my-content-creation-journey</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/personal-updates-and-reflections-on-my-content-creation-journey</guid>
  <pubDate>Sat, 27 Jan 2024 16:12:00 +0000</pubDate>
  <atom:published>2024-01-27T16:12:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Personal]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey friends 👋,</p><p class="paragraph" style="text-align:left;">I wanted to touch base with you all about my journey since you subscribed to my &quot;<i>DecodingTheWeb</i>&quot; series last Ramadan. </p><p class="paragraph" style="text-align:left;">Remember how I picked a web development topic every day? I shared 3-minute YouTube videos, newsletters, and repurposed content into threads and carousels across various social platforms.</p><h3 class="heading" style="text-align:start;" id="the-challenge-of-daily-content"><b>🎬 The Challenge of Daily Content</b></h3><p class="paragraph" style="text-align:left;">I started the &quot;<i>DecodingTheWeb</i>&quot; series as a challenge to motivate myself to <b>learn new concepts</b> and <b>revisit the basics every day</b>. However, I ended up spending all my time <b>creating content</b> and <b>not learning enough</b>. </p><p class="paragraph" style="text-align:left;">Producing a YouTube video every day was challenging and <b>didn&#39;t align</b> with my preferred style. <i>Without prior preparation</i>, I found myself rushing through videos, leading to <b>monotone scripts</b> and <b>repetitive content</b>. </p><p class="paragraph" style="text-align:left;">This approach didn&#39;t resonate well with my perspectives, reflecting in lower views and traction.</p><h3 class="heading" style="text-align:start;" id="taking-a-step-back">📉<b> Taking a Step Back</b></h3><p class="paragraph" style="text-align:start;">I decided to stop and think about what I really wanted from making content. This break turned into a <span style="background-color:#fff200;"><b>10-month pause</b></span>. </p><p class="paragraph" style="text-align:start;">During this time, I had a hard time both physically and mentally. Everything in my life was going in a different direction than I planned.</p><h3 class="heading" style="text-align:start;" id="a-fresh-start">🌱<b> A Fresh Start</b></h3><p class="paragraph" style="text-align:start;">Now, I&#39;m back! I&#39;m creating content at my own pace, focusing on making good content, <span style="background-color:#fff200;">the kind I&#39;d want to watch myself</span>. I&#39;m taking it slow, focusing on quality and quantity. </p><p class="paragraph" style="text-align:start;">I&#39;m exploring the shades of part-time content creation and learning how to effectively leverage AI and automation.</p><h3 class="heading" style="text-align:start;" id="whats-new">🎉<b> What&#39;s New?</b></h3><p class="paragraph" style="text-align:start;">Here&#39;s what you&#39;ve missed during my break:</p><ul><li><p class="paragraph" style="text-align:start;"><b>Moved to Paris</b> (Again): After my internship, I got a full-time job offer in Paris. The journey was tough, but I learned a lot. I&#39;ll share more about this later.</p></li><li><p class="paragraph" style="text-align:start;"><b>Launched My Open Source Portfolio</b>: Using Next.js App Router, TypeScript, TailwindCSS, MDX, Contentlayer, and learning SEO along the way. <a class="link" href="https://choubari.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow">Check it out!</a></p></li><li><p class="paragraph" style="text-align:start;"><b>New Camera</b>: No more phone recordings. But editing on my old laptop especially <a class="link" href="https://x.com/choubari_/status/1728791796111552552?s=20&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow">my GPU issues</a> is a struggle...</p></li><li><p class="paragraph" style="text-align:left;"><b>React Live Conference in Amsterdam</b>: Had a great time attending this conference, met new friends, and even made a <a class="link" href="https://youtu.be/SPfbKKe7S2U?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow">vlog about it on my channel</a>.</p></li><li><p class="paragraph" style="text-align:left;"><b>Spoke at Devoxx Morocco 2023</b>: <a class="link" href="https://choubari.com/talks?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow">Delivered two talks</a>; a 20-minute session on React server components and a 2-hour Next.js 13 lab.</p></li><li><p class="paragraph" style="text-align:left;"><b>Featured at the Next.js Conference</b>: This was an amazing surprise! <a class="link" href="https://choubari.com/blog/nextjs-conf-announcing-nextjs14-and-a-surprise-for-me?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow">Check out my blog post for more</a>.</p></li><li><p class="paragraph" style="text-align:left;"><b>Will Talk at React Paris</b>, March 22nd, 2024: It&#39;s during Ramadan, and with a <a class="link" href="https://react.paris/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey#speakers" target="_blank" rel="noopener noreferrer nofollow">great speakers line-up</a> so wish me luck!</p></li><li><p class="paragraph" style="text-align:left;"><b>Released two </b><a class="link" href="https://www.youtube.com/@choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow"><b>new YouTube videos</b></a><b>, </b>and <b>couple of </b><a class="link" href="https://choubari.com/blog?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=personal-updates-and-reflections-on-my-content-creation-journey" target="_blank" rel="noopener noreferrer nofollow"><b>blog posts</b></a></p></li></ul><h3 class="heading" style="text-align:start;" id="the-future-of-this-newsletter">💌<b> The Future of This Newsletter</b></h3><p class="paragraph" style="text-align:left;">What&#39;s next for this newsletter? I plan to keep you in the loop with updates on my content across different platforms. </p><p class="paragraph" style="text-align:left;">Expect to hear about tech discoveries, new tools I&#39;m adopting, and insights from my journey. While some of this content might also appear on my blog, I&#39;m figuring out the best way to use this newsletter effectively.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;">Thank you for sticking with me till the end. </p><p class="paragraph" style="text-align:left;">Your support means the world to me! </p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=bae4f1fe-bb44-49b8-9178-e06b7d500589&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #13: Style Your React Components</title>
  <description>Styling React components is an essential skill for creating beautiful and responsive web applications. There are several methods to choose from</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/98d98250-1125-42fa-a166-ee5f659fc3dc/EP13.png" length="648447" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-style-your-react-components</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-style-your-react-components</guid>
  <pubDate>Wed, 05 Apr 2023 14:00:00 +0000</pubDate>
  <atom:published>2023-04-05T14:00:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey There! </p><p class="paragraph" style="text-align:left;">Welcome to #Day13 of our 30-day &quot;<b>Decoding the Web</b>&quot; series. Today, we&#39;ll embark on our journey by exploring advanced HTML techniques. Let&#39;s dive in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 Styling React Components</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 Styling React Components</h1><p class="paragraph" style="text-align:start;">Styling React components is an essential skill for creating beautiful and responsive web applications. There are several methods to choose from, each with its pros and cons.</p><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>CSS Modules</b>: CSS Modules are locally scoped CSS files that allow you to write modular and reusable CSS without the risk of global namespace collisions. They enable you to use standard CSS syntax with added benefits like local scoping and simple class composition.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"><i>Advantages</i>: Local scoping, easy to use, and familiar CSS syntax. <i>Disadvantages</i>: Limited dynamic styling and no built-in theming support.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><b>Inline Styling</b>: Inline styling involves adding style attributes directly to your React components using JavaScript objects. It&#39;s a simple method that enables dynamic styling, but it can become unwieldy for complex applications.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"><i>Advantages</i>: Dynamic styling and easy to implement. </p><p class="paragraph" style="text-align:left;"><i>Disadvantages</i>: Limited styling capabilities, no media queries or pseudo-classes, and potential performance issues.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><b>CSS-in-JS Libraries</b>: CSS-in-JS libraries (e.g., Emotion, Aphrodite) allow you to write your styles as JavaScript objects or template literals. These libraries provide powerful features like dynamic styling, theming, and auto-prefixing.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"><i>Advantages</i>: Dynamic styling, theming support, and scoped styles. <i>Disadvantages</i>: Different syntax, potential performance concerns, and a higher learning curve.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><b>Styled Components</b>: Styled Components is a popular CSS-in-JS library that enables you to write CSS within JavaScript template literals. It supports dynamic styling, theming, and scoped styles, making it a popular choice for many React developers.</p><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;"><i>Advantages</i>: Familiar CSS syntax, dynamic styling, theming support, and scoped styles. </p><p class="paragraph" style="text-align:left;"><i>Disadvantages</i>: Additional library dependency and potential performance concerns.</p></li></ol><p class="paragraph" style="text-align:left;"></p><p class="paragraph" style="text-align:left;">Need some examples for these methods? Checkout my recent YouTube video where I built a simple Hello World Interface with all these styling methods!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/Ijwwm3wSnmY" width="100%"></iframe><p class="paragraph" style="text-align:left;">There are some other styling methods for React components like TailwindCSS <i>(will be discussed in Tomorrow’s email)</i> and using CSS Pre-Processors (Sass or Less), which can then be imported and used in your React components just like plain CSS.</p><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://stylelint.io/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-13-style-your-react-components" target="_blank" rel="noopener noreferrer nofollow">StyleLint</a></b></span>: A modern linter for CSS and CSS-in-JS that helps you enforce consistent conventions and avoid errors in your stylesheets. It can be easily integrated with popular code editors like VSCode.</p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://marketplace.visualstudio.com/items?itemName=clinyong.vscode-css-modules&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-13-style-your-react-components" target="_blank" rel="noopener noreferrer nofollow">CSS Modules Syntax Highlighter</a></b></span>: A VSCode extension that adds syntax highlighting for CSS Modules, making it easier to work with locally scoped CSS in your React components.</p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://marketplace.visualstudio.com/items?itemName=pnp.polacode&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-13-style-your-react-components" target="_blank" rel="noopener noreferrer nofollow">Polacode</a></b></span>: A VSCode extension that lets you create beautiful, shareable code snippets directly from your editor. It&#39;s particularly helpful for sharing styled React components with your team or showcasing your work on social media.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">The ideal styling method for your React components largely depends on your project&#39;s requirements and personal preferences.</p></li><li><p class="paragraph" style="text-align:left;">Familiarize yourself with various styling methods to make informed decisions on which approach best suits your needs.</p></li><li><p class="paragraph" style="text-align:left;">Experimenting with different styling methods can help you grow as a developer and discover new techniques that work for your unique projects.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Can you create a simple React app in CodeSandbox that showcases different styling methods? <i>(like I did in my </i><span style="text-decoration:underline;"><i><a class="link" href="https://youtu.be/Ijwwm3wSnmY?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-13-style-your-react-components" target="_blank" rel="noopener noreferrer nofollow">YouTube Video</a></i></span><i>)</i></p><p class="paragraph" style="text-align:start;">However, this time create a single functional component and apply each styling method (CSS Modules, inline styling, CSS-in-JS, and Styled Components) to different elements within the same component.</p><h1 class="heading" style="text-align:left;">💭 Shower Thought</h1><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">When it comes to styling React components, we&#39;re like artists with a variety of brushes and techniques at our disposal, each with its unique flair and effect. The beauty of web development lies in our ability to mix and match these methods to create our masterpiece.</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay tuned for tomorrow&#39;s episode, where we&#39;ll dive into another styling method Tailwind CSS!</p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-13-style-your-react-components" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=0a25cbac-e286-46a3-a2c5-dacd99da5167&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #12: React Hooks</title>
  <description>React Hooks are functions that let you &quot;hook into&quot; React state and lifecycle features from functional components. They provide two key benefits for developers</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/24c8c7b7-1b4e-4605-8466-c4b362b72c54/EP12.png" length="682545" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-react-hooks</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-react-hooks</guid>
  <pubDate>Tue, 04 Apr 2023 18:56:03 +0000</pubDate>
  <atom:published>2023-04-04T18:56:03Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hello, Web Enthusiasts! 🚀</p><p class="paragraph" style="text-align:start;">Welcome to Day 12 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;ll be exploring React Hooks, introduced in React 16.8, which have empowered functional components over class components. Hooks have fundamentally changed the way we write React code, enabling cleaner and more efficient solutions. Let&#39;s dive in and learn more about hooks and their benefits.</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 React Hooks</p></li><li><p class="paragraph" style="text-align:left;">🛠️ The Power of Hooks</p></li><li><p class="paragraph" style="text-align:left;">🧪 Creating Custom Hooks</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">🎁 Bonus Quizzes</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;"><b>🔍 React Hooks</b></h1><p class="paragraph" style="text-align:start;">React Hooks are functions that let you &quot;hook into&quot; React state and lifecycle features from functional components. They provide two key benefits for developers:</p><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Clean Code</b>: Hooks allow you to reuse stateful logic without changing your component hierarchy, resulting in cleaner and more maintainable code.</p></li><li><p class="paragraph" style="text-align:left;"><b>Less Code</b>: With hooks, you can achieve similar functionality to class-based components using less code, making it easier to read and understand.</p></li></ol><h2 class="heading" style="text-align:start;"><b>🛠️ The Power of Hooks</b></h2><p class="paragraph" style="text-align:start;">There are 15 hooks in total (new ones may be added in future releases, like in React 18), each serving a specific purpose. Here are some popular hooks and their uses:</p><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>useState</b>: Allows you to add local state to functional components.</p></li><li><p class="paragraph" style="text-align:left;"><b>useEffect</b>: Enables side effects, such as data fetching and subscriptions, in functional components.</p></li><li><p class="paragraph" style="text-align:left;"><b>useContext</b>: Provides a way to access the value of a context without using the <code>Context.Consumer</code> component.</p></li><li><p class="paragraph" style="text-align:left;"><b>useReducer</b>: Offers a more robust solution for managing complex state logic.</p></li><li><p class="paragraph" style="text-align:left;"><b>useRef</b>: Creates a mutable reference object that can be used to access DOM elements or store values across renders.</p></li><li><p class="paragraph" style="text-align:left;"><b>useMemo</b>: Helps optimize performance by memoizing the result of a function.</p></li><li><p class="paragraph" style="text-align:left;"><b>useCallback</b>: Prevents unnecessary re-renders by memoizing a callback function.</p></li></ol><p class="paragraph" style="text-align:left;">Check out my <span style="text-decoration:underline;">YouTube video</span> to see in-depth explanations and best practices for popular hooks. <b>We have also covered how to create your own custom hooks!</b> </p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/cTrqH6f8K18" width="100%"></iframe><p class="paragraph" style="text-align:left;">Master the power of hooks and elevate your React skills!</p><h2 class="heading" style="text-align:start;">🧪<b> Creating Custom Hooks</b></h2><p class="paragraph" style="text-align:start;">Custom hooks are a powerful feature in React that allows you to create reusable, composable logic for your components. A custom hook is simply a JavaScript function with a unique naming convention that starts with &quot;use&quot;. Here&#39;s a simple example of creating a custom hook:</p><div class="codeblock"><pre><code>function useCounter(initialValue) &#123;
  const [count, setCount] = useState(initialValue);

  const increment = () =&gt; &#123;
    setCount(count + 1);
  &#125;;

  return [count, increment];
&#125;</code></pre></div><p class="paragraph" style="text-align:start;">In this example, we created a custom <code>useCounter</code> hook that encapsulates the logic of a counter. The hook can then be used in multiple components without duplicating the state and increment logic.</p><h2 class="heading" style="text-align:start;">💡<b> 3 Ideas to Think About</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;">Embracing React Hooks can lead to cleaner, more efficient code that adheres to modern best practices.</p></li><li><p class="paragraph" style="text-align:left;">Mastering hooks enables you to write powerful, stateful functional components that are easier to maintain and understand.</p></li><li><p class="paragraph" style="text-align:left;">Continuously exploring and learning new hooks can expand your skillset and improve your problem-solving abilities in React applications.</p></li></ol><h2 class="heading" style="text-align:start;">🧩<b> Quiz Time</b></h2><p class="paragraph" style="text-align:start;">Can you create a simple React app in CodeSandbox that demonstrates the power of <code>useRef</code>? </p><p class="paragraph" style="text-align:start;">Here&#39;s a challenge: Create a functional component that renders an input field and a button. When the button is clicked, the input field should be focused automatically. Use the <code>useRef</code> hook to achieve this functionality. </p><p class="paragraph" style="text-align:start;">Share your solution on Twitter with #<b>DecodingTheWeb</b>! </p><p class="paragraph" style="text-align:start;">Need a hint? Check out the <span style="text-decoration:underline;"><b><a class="link" href="https://react.dev/reference/react/useRef?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-12-react-hooks" target="_blank" rel="noopener noreferrer nofollow">React documentation</a></b></span> for more information on <code>useRef</code>.</p><h2 class="heading" style="text-align:left;">🎁 <b>Bonus Quizzes</b></h2><p class="paragraph" style="text-align:left;">Take the challenges in the <span style="text-decoration:underline;"><a class="link" href="https://react.dev/learn/reusing-logic-with-custom-hooks?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-12-react-hooks#challenges" target="_blank" rel="noopener noreferrer nofollow">React Documentation</a></span> on reusing logic with Custom Hooks. There are 5 challenges in Total, share with us in Twitter using #<b>DecodingTheWeb </b>how many one you have accomplished!</p><h2 class="heading" style="text-align:start;">💭<b> Shower Thought</b></h2><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">In the world of React components, hooks are like the unseen force that binds state and lifecycles, bringing balance and harmony to functional components across the universe.</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay curious, keep exploring, and join us again tomorrow for Day 13 of &quot;<b>Decoding the Web</b>.&quot;</p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-12-react-hooks" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=09a9f53e-b7a3-4ea9-b23f-3bb5d98daee9&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #11 : Component Lifecycles</title>
  <description>What you must know about!</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8545361e-7d8e-4a33-a9cc-c3cae2c03562/EP11.png" length="529304" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-react-component-lifecycles</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-react-component-lifecycles</guid>
  <pubDate>Mon, 03 Apr 2023 18:05:20 +0000</pubDate>
  <atom:published>2023-04-03T18:05:20Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey There, dear reader! </p><p class="paragraph" style="text-align:left;">Welcome to Day 11 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;ll be learning about React Component Lifecycles in both class and functional components. Understanding lifecycles is crucial for managing your components effectively. Let&#39;s explore the importance of lifecycles and how they work in both component types.</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 React Component Lifecycles</p></li><li><p class="paragraph" style="text-align:left;">🛠️ Lifecycles in Class Components (the old way)</p></li><li><p class="paragraph" style="text-align:left;">🎯 Lifecycles in Functional Components (recommended)</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><h2 class="heading" style="text-align:start;"><b>🔍 React Component Lifecycles</b></h2><p class="paragraph" style="text-align:start;">Component lifecycles describe the different stages a component goes through during its life in a React application. Knowing these stages allows you to optimize rendering and manage resources efficiently. There are three main phases in a component&#39;s lifecycle:</p><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Mounting</b>: When a component is created and inserted into the DOM.</p></li><li><p class="paragraph" style="text-align:left;"><b>Updating</b>: When a component&#39;s state or props change, causing a re-render.</p></li><li><p class="paragraph" style="text-align:left;"><b>Unmounting</b>: When a component is removed from the DOM.</p></li></ol><h2 class="heading" style="text-align:start;"><b>🛠️ Lifecycles in Class Components</b></h2><p class="paragraph" style="text-align:start;">In class components, there are several lifecycle methods that you can override to run your code at a particular time in the process. Lifecycle methods like <code>componentDidMount</code>, <code>componentDidUpdate</code>, and <code>componentWillUnmount</code> are used to manage component behavior during different lifecycle phases.</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c849bb65-d052-44b8-84a2-4556d07e5a07/C.PNG"/><div class="image__source"><span class="image__source_text"><p>Lifecycle Methods in Class Components</p></span></div></div><h2 class="heading" style="text-align:start;">🎯<b> Lifecycles in Functional Components</b></h2><p class="paragraph" style="text-align:start;">For functional components, the React team recommends using the <code>useEffect</code> hook to manage lifecycles. This hook allows you to perform side effects, such as data fetching and subscriptions, and can cover all lifecycle phases in a single, unified approach.</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/f435abe3-df24-4cd2-b47e-2bf91fe120c8/F.PNG"/><div class="image__source"><span class="image__source_text"><p>UseEffect Hook to manage Lifecycles in Functional Components </p></span></div></div><p class="paragraph" style="text-align:start;">To get a better understanding, watch this video, as you will understand in less than 5 minutes every lifecycle method and how they work with the 3 phases: <b>Mounting</b>, <b>Updating</b>, and <b>Unmounting.</b></p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/RZiHox0PCi8" width="100%"></iframe><p class="paragraph" style="text-align:start;">Get a better understanding of how to effectively manage your components throughout their lifecycle!</p><h2 class="heading" style="text-align:start;">💡<b> 3 Ideas to Think About</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;">Understanding component lifecycles is essential for effectively managing resources and optimizing rendering in your React applications.</p></li><li><p class="paragraph" style="text-align:left;">Although the React team recommends functional components with hooks, knowing the lifecycles in both class and functional components can provide valuable insights and a deeper understanding of React.</p></li><li><p class="paragraph" style="text-align:left;">Embracing the power of the <code>useEffect</code> hook in functional components can lead to cleaner, more maintainable code that adheres to current best practices.</p></li></ol><h2 class="heading" style="text-align:start;">🧩<b> Quiz Time!</b></h2><p class="paragraph" style="text-align:start;">There is no quiz today unfortunately, but it’s more a sort of recommendation to check the <span style="text-decoration:underline;"><a class="link" href="https://react.dev/reference/react/useEffect?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-11-component-lifecycles" target="_blank" rel="noopener noreferrer nofollow">React documentation</a></span> of the <code>useEffect</code> hook! With packed-examples and detailed steps, there is no better way to learn about <code>useEffect</code> hook. <span style="text-decoration:underline;">Super necessary to check!</span></p><h2 class="heading" style="text-align:start;">💭<b> Shower Thoughts</b></h2><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">If React components were like LEGO bricks, would building a UI be like constructing a masterpiece from a vast collection of colorful, interlocking pieces, each with its own unique purpose and place?</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay curious, keep exploring, and join us again tomorrow for another update of &quot;Decoding the Web.&quot; </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-11-component-lifecycles" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=ff87d606-e19f-4030-acf5-ffc0229e0518&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #10: State Management</title>
  <description>The Fundamentals!</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1270fb08-33e6-42ad-9ea0-e91b43fe36ad/EP10.png" length="675693" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-state-management</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-state-management</guid>
  <pubDate>Mon, 03 Apr 2023 01:02:57 +0000</pubDate>
  <atom:published>2023-04-03T01:02:57Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hello, Web Dev Adventurers! 🚀</p><p class="paragraph" style="text-align:left;">Welcome to Day 10 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;ll be diving into React state management, focusing on props, states, and the Context API. We&#39;ll briefly mention external libraries like Redux, MobX, and Zustand for complex applications, but our primary focus will be on the fundamentals. Let&#39;s keep it beginner-friendly!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 React State Management</p></li><li><p class="paragraph" style="text-align:left;">🛠️ External Libraries for Complex Apps</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><h2 class="heading" style="text-align:start;"><b>🔍 React State Management</b></h2><p class="paragraph" style="text-align:start;">In React, state management is all about efficiently handling data that changes over time. Props, states, and the Context API are essential building blocks for managing state in React applications.</p><ul><li><p class="paragraph" style="text-align:left;"><b>Props</b>: Short for &quot;properties,&quot; props are the mechanism through which data is passed from parent components to child components. Props are read-only, ensuring data flows in a single direction (down the component tree).</p></li><li><p class="paragraph" style="text-align:left;"><b>States</b>: States hold the dynamic data within a component that may change over time. State changes trigger component re-renders, ensuring the UI stays up-to-date with the latest data.</p></li><li><p class="paragraph" style="text-align:left;"><b>Context API</b>: The Context API allows you to share global state across your application without passing props down through multiple levels of components. This helps keep your code clean and maintainable.</p></li></ul><h2 class="heading" style="text-align:start;"><b>🛠️ External Libraries for Complex Apps</b></h2><p class="paragraph" style="text-align:start;">For more complex applications, you may consider using external libraries like Redux, MobX, or Zustand to handle state management more efficiently.</p><h2 class="heading" style="text-align:start;">🎯<b> 3 Helpful Tips/Techniques</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Keep Component State Minimal</b>: Only store what&#39;s necessary in your component state. Derive other data from the state and props when needed.</p></li><li><p class="paragraph" style="text-align:left;"><b>Lift State Up</b>: If two or more components need access to the same state, lift the state to a common ancestor component and pass it down via props.</p></li><li><p class="paragraph" style="text-align:left;"><b>Use the Context API Wisely</b>: Reserve the Context API for global state that needs to be accessed by multiple components throughout your application. Avoid overusing it, as it may lead to unnecessary complexity.</p></li></ol><h2 class="heading" style="text-align:start;">💡<b> 3 Ideas to Think About</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;">Mastering state management in React is crucial for building efficient, dynamic, and maintainable applications.</p></li><li><p class="paragraph" style="text-align:left;">Balancing the use of props, states, and the Context API helps ensure your application&#39;s data flow remains clean and easy to understand.</p></li><li><p class="paragraph" style="text-align:left;">Embrace the concept of &quot;thinking in React&quot; - this involves breaking down your application into reusable components, managing state, and efficiently passing data between components.</p></li></ol><h2 class="heading" style="text-align:start;">🧩<b> Quiz Time!</b></h2><p class="paragraph" style="text-align:start;">Can you create a simple React app in CodeSandbox that demonstrates the use of props, state, and the Context API? Share your solution on Twitter with #<b>DecodingTheWeb</b>! </p><p class="paragraph" style="text-align:start;"><i>Need a hint?</i></p><p class="paragraph" style="text-align:start;">Check out my <span style="text-decoration:underline;"><b><a class="link" href="https://youtu.be/mrLSJEsHRc4?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-10-state-management" target="_blank" rel="noopener noreferrer nofollow">YouTube video</a></b></span> to see examples of how to implement props, states, and the Context API in both class components and functional components. It&#39;s good to know both, even if the React team recommends functional components with hooks!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/mrLSJEsHRc4" width="100%"></iframe><h2 class="heading" style="text-align:left;">💭 <b>Shower Thought</b></h2><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">Are props and states like the dynamic duo of React, working together to create a harmonious dance of data that brings our applications to life?</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay curious, keep exploring, and join us again tomorrow for Day 11 of &quot;<b>Decoding the Web</b>.&quot; </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-10-state-management" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=470103b0-ad3d-40a6-9017-c3754aac370e&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #09: Class Components vs Functional Components</title>
  <description>Class components can have state and lifecycle methods. Before the introduction of hooks, functional components were stateless and couldn&#39;t have lifecycle method</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5f56878e-5980-47fb-a62c-587edf254fb9/EP9.png" length="545142" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-react-class-function-components</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-react-class-function-components</guid>
  <pubDate>Sat, 01 Apr 2023 17:56:37 +0000</pubDate>
  <atom:published>2023-04-01T17:56:37Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hello, Web Dev Adventurers! 🚀</p><p class="paragraph" style="text-align:left;">Welcome to Day 9 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;ll be comparing React class components and functional components, discussing their differences, and understanding why the React team recommends functional components. Let&#39;s keep this beginner-friendly as we&#39;ll explore states, hooks, and lifecycles in future episodes.</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 Class Components vs. Functional Components</p></li><li><p class="paragraph" style="text-align:left;">🛠️ React Team Recommendation</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 <b>Class Components vs. Functional Components</b></h1><p class="paragraph" style="text-align:start;">Class components are written using ES6 classes and extend <code>React.Component</code>. They can have state and lifecycle methods. Functional components, on the other hand, are simpler and written as plain JavaScript functions. Before the introduction of hooks, functional components were stateless and couldn&#39;t have lifecycle methods.</p><blockquote align="center" class="instagram-media"><a href="https://www.instagram.com/p/CqgKCt5K5Rw/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-09-class-components-vs-functional-components"><p dir="ltr" lang="en"> Instagram post </p></a></blockquote><h1 class="heading" style="text-align:left;">🛠️ <b>React Team Recommendation</b></h1><p class="paragraph" style="text-align:left;">The React team now recommends using functional components with hooks instead of class components. Hooks simplify state management and introduce lifecycle methods to functional components, leading to cleaner and more maintainable code.</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/372f67cd-cb6b-4063-84df-db8a4f6d38f8/image.png"/><div class="image__source"><span class="image__source_text"><p>React Recommendation on the new docs (<a class="link" href="http://react.dev?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-09-class-components-vs-functional-components" target="_blank" rel="noopener noreferrer nofollow">react.dev</a>)</p></span></div></div><p class="paragraph" style="text-align:left;">More about the topic in Today’s episode!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/txzEwHAQiUo" width="100%"></iframe><h1 class="heading" style="text-align:left;">🎯 <b>3 Helpful Tips/Techniques</b></h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Start with Functional Components</b> - As a beginner, focus on creating functional components to get familiar with React&#39;s basic concepts. As you progress, you can start exploring hooks to manage state and lifecycle methods within functional components.</p></li><li><p class="paragraph" style="text-align:left;"><b>Refactor Class Components</b> - If you encounter class components in legacy code or older projects, consider refactoring them into functional components with hooks. This will align your codebase with current best practices and make it easier to maintain.</p></li><li><p class="paragraph" style="text-align:left;"><b>Leverage Component Libraries</b> - Use component libraries like Material-UI or Ant Design to quickly build high-quality UIs. These libraries often provide both class and functional components, allowing you to learn and compare their implementation while building visually appealing applications.</p></li></ol><h1 class="heading" style="text-align:left;">💡 <b>3 Ideas to Think About</b></h1><ol start="1"><li><p class="paragraph" style="text-align:left;">The shift from class components to functional components demonstrates how the React community embraces innovation and continuously evolves to create better, more efficient ways of building user interfaces.</p></li><li><p class="paragraph" style="text-align:left;">By understanding the differences between class and functional components, you gain a deeper appreciation for React&#39;s flexibility and can make informed decisions about which component type best suits your needs.</p></li><li><p class="paragraph" style="text-align:left;">The journey from class components to functional components with hooks showcases the importance of adaptability in web development. As developers, we must stay up-to-date with the latest trends and technologies to ensure we&#39;re building efficient and modern applications.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 <b>Quiz Time!</b></h1><p class="paragraph" style="text-align:start;">Can you create a simple React app in CodeSandbox that includes both a class component and a functional component, each displaying a custom message? Share your solution on Twitter with #<b>DecodingTheWeb</b>! Need a hint? Check out the <span style="text-decoration:underline;"><b><a class="link" href="https://reactjs.org/docs/components-and-props.html?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-09-class-components-vs-functional-components" target="_blank" rel="noopener noreferrer nofollow">React documentation</a></b></span> for examples of both component types.</p><h1 class="heading" style="text-align:left;">💭 <b>Shower Thoughts</b></h1><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">As React evolves and functional components with hooks gain more prominence, will class components become a relic of the past, remembered fondly as the stepping stone that led to a more efficient and streamlined future?</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay tuned for future episodes, where we&#39;ll dive into states, hooks and component lifecycles! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-09-class-components-vs-functional-components" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=a965aa90-06a1-4a6f-b9c9-f08fe1be546a&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #08: REACT</title>
  <description>The library for web and native user interfaces</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c257e778-4e5d-48bd-b3dd-a40142c091bf/EP8.png" length="486641" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-react</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-react</guid>
  <pubDate>Thu, 30 Mar 2023 20:42:03 +0000</pubDate>
  <atom:published>2023-03-30T20:42:03Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey, dear reader! </p><p class="paragraph" style="text-align:left;">Welcome to Day 8 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;re exploring React, the popular JavaScript library for building user interfaces. Created by Facebook, React has become a go-to choice for developers aiming to create performant and maintainable UIs. Let&#39;s dive in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 What is React?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/dbb68fea-814b-4bce-9b00-327f8df8f4da/starttingtolearnreact.jpg"/><div class="image__source"><span class="image__source_text"><p>My Current Situation - it’s never too late to learn React!</p></span></div></div><h1 class="heading" style="text-align:left;">🔍 What is React?</h1><p class="paragraph" style="text-align:start;">React is a JavaScript library for building user interfaces, particularly for single-page applications. It focuses on a component-based architecture, which promotes reusability and modularity. React&#39;s virtual DOM optimizes rendering performance, ensuring a smooth user experience.</p><p class="paragraph" style="text-align:start;">Discover more about React&#39;s component-based architecture, Virtual DOM, JSX… in this video!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/PBn8c4Mw0wA" width="100%"></iframe><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://codesandbox.io/s/react-new?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow">CodeSandbox</a></b></span><span style="text-decoration:underline;"><a class="link" href="https://codesandbox.io/s/react-new?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow"> </a></span>- Get started with React development without any setup using CodeSandbox, an online code editor that supports various front-end frameworks, including React. Beginners can quickly experiment with React code, create projects, and share their work with others, all within their browser.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://react.dev/learn/react-developer-tools?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow">React Developer Tools</a></b></span> (Browser Extension) - Enhance your React development workflow with React Developer Tools, a browser extension that allows you to inspect, debug, and profile React components and their associated state and props, right in your browser.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://react-icons.github.io/react-icons/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow">React Icons</a></b></span> - Incorporate popular icons into your React projects with React Icons, a library that brings together popular icon sets like Font Awesome, Material Design, and Feather Icons as React components. This makes it simple for beginners to use and customize icons within their React applications.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Utilize JSX Syntax and Code Snippets </b>- Become familiar with JSX syntax, which allows you to write HTML-like structures within your JavaScript code. Use code snippets or extensions for your code editor (e.g., Visual Studio Code) to quickly scaffold React components, speeding up your development process.</p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><b>Debugging JSX </b>- When working with JSX, keep in mind that it&#39;s not plain HTML, and certain attributes may differ (e.g., className instead of class). Use the browser&#39;s developer tools to inspect elements and diagnose any rendering issues. Additionally, pay attention to any errors or warnings in the console that may arise from incorrect JSX syntax.</p><p class="paragraph" style="text-align:left;"></p></li><li><p class="paragraph" style="text-align:left;"><b>Organize Your React Project </b>- Maintain a clean and organized project structure by grouping related components into folders and separating styles, assets, and utility functions. This will make it easier to navigate your project, find files, and understand the relationships between components, especially as your project grows in complexity.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ul><li><p class="paragraph" style="text-align:left;">&quot;Simplicity is the ultimate sophistication.&quot; - Leonardo da Vinci. React&#39;s component-based architecture and simplicity enable you to build complex UIs with ease, turning simplicity into a powerful ally in web development.</p></li><li><p class="paragraph" style="text-align:left;">React&#39;s popularity is a testament to the power of community-driven innovation. By embracing open-source collaboration, developers worldwide have contributed to the growth and refinement of this remarkable library.</p></li><li><p class="paragraph" style="text-align:left;">When working with React, remember that it is just one tool in your web development arsenal. Always consider the unique requirements of your project and choose the right tools and frameworks that best serve your needs.</p></li></ul><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Can you create a React app in <span style="text-decoration:underline;"><a class="link" href="https://codesandbox.io/s/react-new?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow">CodeSandbox</a></span> that displays &quot;<b>Hello World, [Your Name]! Today is [current date]</b>&quot;? </p><p class="paragraph" style="text-align:start;">Use your own name and make sure the current date updates automatically. Share your solution on Twitter with <b>#DecodingTheWeb</b>! Need a hint? Check out the <span style="text-decoration:underline;"><a class="link" href="http://react.dev?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" target="_blank" rel="noopener noreferrer nofollow">React documentation</a></span> to get started.</p><h1 class="heading" style="text-align:left;">💭 Shower Thought</h1><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">In the world of React, the virtual DOM and the real DOM might be seen as the ultimate dynamic duo, working together seamlessly to create an efficient and performant user experience, proving that sometimes, two heads are better than one.</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay curious, keep exploring, and join us again tomorrow for Day 9 of &quot;Decoding the Web.&quot; </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-08-react" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=a867065f-e380-4835-96e7-7468424dcaa7&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #07: RESTful &amp; GraphQL APIs</title>
  <description>What&#39;s The Difference, When and Which To Use?</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/56a3e4d5-7045-4b6c-ba64-51e9b6ea71da/EP7.png" length="400999" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-rest-graphql-apis</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-rest-graphql-apis</guid>
  <pubDate>Wed, 29 Mar 2023 16:52:22 +0000</pubDate>
  <atom:published>2023-03-29T16:52:22Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hi there, Web Dev Adventurers! 🚀</p><p class="paragraph" style="text-align:left;">Welcome to #Day7 of our 30-day &quot;<b>Decoding the Web</b>&quot; series. Today, we&#39;ll dive in explaining RESTful API and GraphQL, two powerful paradigms for building and consuming APIs in web development. Let&#39;s get started!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 Revisiting APIs</p></li><li><p class="paragraph" style="text-align:left;">🆚 RESTful vs GraphQL</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 Revisiting APIs</h1><p class="paragraph" style="text-align:left;">An API <i>(Application Programming Interface)</i> is a set of rules and protocols that enables different software applications to communicate with each other. For web development, APIs are crucial as they allow your website or app to interact with third-party services and data, making it more dynamic and useful to users.</p><p class="paragraph" style="text-align:start;">If you are not familiar with APIs, how they work and their best practices, make sure to watch this YouTube video before diving to the content of<b> </b>this newsletter!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/Gu1tj3MKLcY" width="100%"></iframe><h1 class="heading" style="text-align:left;">🆚 RESTful vs GraphQL</h1><p class="paragraph" style="text-align:start;">RESTful API is an architectural style for designing networked applications, based on the principles of REST. It uses HTTP methods to access, create, and modify data. GraphQL, on the other hand, is a query language and runtime for APIs that enables clients to request only the data they need, reducing over-fetching and under-fetching.</p><p class="paragraph" style="text-align:left;">Discover more about REST and GraphQL APIs differences by watching this short YouTube episode of<b> #DecodingTheWeb</b></p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/_V2I07Qj96o" width="100%"></iframe><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://www.postman.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis" target="_blank" rel="noopener noreferrer nofollow">Postman</a></b></span><b>:</b> A popular browser extension and standalone app that makes testing and interacting with APIs a breeze. Create, save, and manage API requests while exploring endpoints and analyzing responses.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://www.apollographql.com/docs/react/v2/development-testing/developer-tooling/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis#apollo-client-devtools" target="_blank" rel="noopener noreferrer nofollow">Apollo Client Developer Tools</a></b></span> (Browser Extension) - Improve your GraphQL development experience with Apollo Client Developer Tools. This browser extension provides insights into your GraphQL queries, mutations, and cache, making it easier to debug and optimize your code.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://github.com/graphql/graphiql?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis" target="_blank" rel="noopener noreferrer nofollow">GraphiQL</a></b></span><span style="text-decoration:underline;"><a class="link" href="https://github.com/graphql/graphiql?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis" target="_blank" rel="noopener noreferrer nofollow"> </a></span>- Experiment with GraphQL queries in real-time using GraphiQL, an interactive in-browser IDE. Compose queries, explore schemas, and visualize query results to gain a deeper understanding of your GraphQL API.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Utilize Caching Mechanisms</b> - Improve your API&#39;s performance by implementing caching strategies, such as server-side caching or HTTP caching. This reduces latency and server load, leading to faster response times and an enhanced user experience.</p></li><li><p class="paragraph" style="text-align:left;"><b>Version Your API</b> - Use versioning to maintain backward compatibility and smoothly introduce changes to your API. By including a version number in the URL or header, you can deploy updates without breaking existing clients.</p></li><li><p class="paragraph" style="text-align:left;"><b>Document Your API Thoroughly</b> - Provide comprehensive documentation for your API, including detailed explanations of endpoints, request parameters, response formats, and possible errors. This helps developers understand and integrate your API effectively, leading to fewer issues and better collaboration.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;The best way to predict the future is to invent it.&quot; - Alan Kay. As you work with RESTful API and GraphQL, think of the impact your creations have on the digital landscape, shaping the future of web development and data exchange.</p></li><li><p class="paragraph" style="text-align:left;">Embrace the flexibility of GraphQL and the simplicity of RESTful API to build APIs that cater to diverse client needs, ensuring seamless integration and adaptability in the ever-evolving world of web development.</p></li><li><p class="paragraph" style="text-align:left;">When designing your API, keep in mind the balance between performance, security, and ease of use. Strive to create APIs that are not only efficient and secure but also easy to consume, fostering collaboration and innovation.</p></li></ol><blockquote align="center" class="instagram-media"><a href="https://www.instagram.com/p/CqYVKdQuKO3/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis"><p dir="ltr" lang="en"> Instagram post </p></a></blockquote><h1 class="heading" style="text-align:left;">💭 Shower Thought</h1><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">Not all heroes wear capes, APIs are the heroes of the digital world, quietly bridging gaps and forging connections, enabling the seamless experiences we often take for granted!</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay tuned for tomorrow&#39;s episode, where we&#39;ll dive into some interesting stuff! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-07-restful-graphql-apis" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=c008ac3f-adf8-4b4d-9cb9-e82a04136b10&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #06: APIs</title>
  <description>The bridge Between Isolated Applications and a Collaborative Web Ecosystem</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/b77b1922-64f2-4f40-b470-5db516c2d4c0/EP6.png" length="751822" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-api</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-api</guid>
  <pubDate>Tue, 28 Mar 2023 17:37:22 +0000</pubDate>
  <atom:published>2023-03-28T17:37:22Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hi there, Web Dev Enthusiast! 🌐</p><p class="paragraph" style="text-align:left;">Welcome to #Day6 of our 30-day &quot;<b>Decoding the Web</b>&quot; series. Today, we&#39;ll dive into must-know terms, share useful tools, helpful tips, intriguing ideas, and more about APIs. Let&#39;s dive in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 What is API?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">😂 Meme of The Day</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 What is an API?</h1><p class="paragraph" style="text-align:start;">An API <i>(Application Programming Interface)</i> is a set of rules and protocols that enables different software applications to communicate with each other. For web development, APIs are crucial as they allow your website or app to interact with third-party services and data, making it more dynamic and useful to users.</p><p class="paragraph" style="text-align:start;">Discover more about APIs, how they work, popular API types and their best practices by watching this 4 minutes YouTube episode of<b> #DecodingTheWeb</b></p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/Gu1tj3MKLcY" width="100%"></iframe><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://www.postman.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-06-apis" target="_blank" rel="noopener noreferrer nofollow">Postman</a></b></span><b>:</b> A popular browser extension and standalone app that makes testing and interacting with APIs a breeze. Create, save, and manage API requests while exploring endpoints and analyzing responses.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-06-apis" target="_blank" rel="noopener noreferrer nofollow">REST Client for VSCode</a></b></span>: A Visual Studio Code extension that allows you to send HTTP requests and view responses directly within your code editor, simplifying the debugging process.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-06-apis" target="_blank" rel="noopener noreferrer nofollow">JSON Viewer</a></b></span>: A handy browser extension that formats and highlights JSON data in your browser, making it easier to read and understand API responses.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Authentication</b> - Secure your API by implementing authentication methods like OAuth, JWT, or API keys. This ensures that only authorized users and applications can access your API&#39;s resources.</p></li><li><p class="paragraph" style="text-align:left;"><b>Rate Limiting</b> - Prevent abuse and ensure fair usage of your API by setting rate limits. This allows you to control the number of requests a client can make within a specific time frame, reducing the risk of overloading your server.</p></li><li><p class="paragraph" style="text-align:left;"><b>Error Handling</b> - Provide clear and informative error messages in your API responses. This helps developers understand and resolve issues faster, improving the overall user experience.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;APIs are the glue that binds the digital world together.&quot; - Embrace the power of APIs in connecting disparate systems and services, fostering seamless communication and collaboration.</p></li><li><p class="paragraph" style="text-align:left;">Always consider the user experience when designing APIs. A well-designed, intuitive API enables developers to create better applications, ultimately benefiting the end-users.</p></li><li><p class="paragraph" style="text-align:left;">Think of APIs as a contract between your application and third-party services. Establish clear expectations and maintain backward compatibility to minimize disruptions and maintain trust with your users</p></li></ol><h1 class="heading" style="text-align:left;">😂 Meme of The Day</h1><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/61a9e31a-4203-4852-afbe-2dd56f5d5d9a/FsPQkBNXwAIVljX.jpg"/><div class="image__source"><span class="image__source_text"><p>AI Startups in 2023 are just calls to ChatGPT API - meme of the day</p></span></div></div><h1 class="heading" style="text-align:left;">💭 Shower Thought</h1><div class="blockquote"><blockquote class="blockquote__quote"><p class="paragraph" style="text-align:left;">In a world without APIs, would each application be like a lonely island, unable to communicate or share resources with others?</p><figcaption class="blockquote__byline"></figcaption></blockquote></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay tuned for tomorrow&#39;s episode, where we&#39;ll dive into the differences between REST and GraphQL APIs! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-06-apis" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=0ae3cf38-bed1-442f-b33e-3919266f1fdd&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #05: Media Queries</title>
  <description>Make your design responsive!</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/00fdc956-ef2a-4139-9db6-1364a63854a5/EP5.png" length="235558" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-media-queries</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-media-queries</guid>
  <pubDate>Mon, 27 Mar 2023 18:38:55 +0000</pubDate>
  <atom:published>2023-03-27T18:38:55Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hello, Web Dev Adventurers! 🚀</p><p class="paragraph" style="text-align:left;">Welcome to Day 5 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;re honing in on Media Queries, a powerful CSS tool that plays a vital role in responsive web design. Let&#39;s get started!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 Media Queries in a nutshell</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li></ul><hr class="content_break"><h2 class="heading" style="text-align:left;"><b>🔍 What are Media Queries?</b></h2><p class="paragraph" style="text-align:left;">Media Queries are a CSS technique that allows you to apply different styles based on the characteristics of a user&#39;s device or browser window, such as screen size, orientation, and resolution. They&#39;re essential for creating adaptable, responsive designs that cater to various devices and user preferences.</p><p class="paragraph" style="text-align:left;">I tried to explain Media Queries in depth in this short YouTube Video, make sure to check it out!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/rIoJ1uD4v3s" width="100%"></iframe><h2 class="heading" style="text-align:left;"><b>🛠️ 3 Useful Tools</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Responsively App</b> - Preview your responsive designs on multiple devices and screen sizes simultaneously with Responsively App. This handy tool helps you visualize and debug your media queries, speeding up your development workflow.</p></li><li><p class="paragraph" style="text-align:left;"><b>MQTest</b> - Quickly test your website&#39;s responsiveness against a set of predefined breakpoints using MQTest. This online tool provides real-time feedback on how your site adapts to different screen sizes, making it easier to fine-tune your media queries.</p></li><li><p class="paragraph" style="text-align:left;"><b>Window Resizer</b> (Browser Extension) - Resize your browser window to emulate different screen resolutions and test your media queries with ease using the Window Resizer extension. Customize presets for popular devices or create your own to ensure your designs look great on any screen.</p></li></ol><h2 class="heading" style="text-align:left;">🎯<b> 3 Helpful Tips/Techniques</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Start with Mobile-First Media Queries</b> - Design your base styles for mobile devices and progressively enhance the design for larger screens using <code>min-width</code> media queries. This approach keeps your CSS clean and ensures better performance on mobile devices.</p></li><li><p class="paragraph" style="text-align:left;"><b>Combine Multiple Conditions</b> - Use logical operators like <code>and</code>, <code>not</code>, and <code>only</code> to create more complex media query conditions that target specific devices or scenarios, giving you greater control over your responsive styles.</p></li><li><p class="paragraph" style="text-align:left;"><b>Use Relative Units</b> - When working with media queries, opt for relative units like <code>em</code> or <code>rem</code> instead of pixels. Relative units make your designs more accessible and adaptable to user preferences, such as font size adjustments.</p></li></ol><h2 class="heading" style="text-align:left;">💡<b> 3 Ideas to Think About</b></h2><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;Design is not just what it looks like and feels like. Design is how it works.&quot; - Steve Jobs. With media queries, create designs that not only look good but also function seamlessly across different devices, providing an optimal user experience.</p></li><li><p class="paragraph" style="text-align:left;">Media queries allow you to cater to the unique needs and preferences of your users. Embrace this adaptability and prioritize inclusivity, ensuring that your designs are accessible and user-friendly for all.</p></li><li><p class="paragraph" style="text-align:left;">Remember that responsiveness is not a one-size-fits-all solution. Continually refine and adapt your media queries to cater to the ever-evolving digital landscape and the diverse array of devices used by your audience.</p></li></ol><h2 class="heading" style="text-align:left;">🧩<b> Challenging Quiz</b></h2><p class="paragraph" style="text-align:left;">Can you create a responsive grid layout that adjusts the number of columns based on the screen size? Share your solution on Twitter with <b>#DecodingTheWeb</b>! Need a hint? Check out the <b><a class="link" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-05-media-queries" target="_blank" rel="noopener noreferrer nofollow">CSS Grid Layout</a></b> documentation.</p><h2 class="heading" style="text-align:left;">💭<b> Shower Thoughts</b></h2><ul><li><p class="paragraph" style="text-align:left;">If media queries were a tailor, would they be the ultimate fashionista, crafting custom-fit outfits for every screen size and ensuring that each design is a perfect fit?</p></li><li><p class="paragraph" style="text-align:left;">Do our websites appreciate the care and attention we give them through media queries, like a chameleon grateful for its ability to adapt and blend into any environment?</p></li><li><p class="paragraph" style="text-align:left;">What if the secret to harmonious web design lies in embracing the diverse array of devices and user preferences, using media queries to create an inclusive digital experience that welcomes everyone, regardless of their unique characteristics?</p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:left;">Keep exploring and decoding the web, and we&#39;ll see you tomorrow for Day 6! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-05-media-queries" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;"></p><p class="paragraph" style="text-align:left;">Happy coding! 🎉</p><p class="paragraph" style="text-align:left;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:left;"><i>Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=76625282-ff6f-4fc5-9da7-fcc671b117bf&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #04 : DOM</title>
  <description>From Code to User Interactions, Unlocking the Secrets of the DOM 🔓</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1a5b5450-b020-4d6d-8c2a-88c31a14ca79/EP4.png" length="264592" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-web-04-dom</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-web-04-dom</guid>
  <pubDate>Sun, 26 Mar 2023 16:00:00 +0000</pubDate>
  <atom:published>2023-03-26T16:00:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hello, Web Developers!</p><p class="paragraph" style="text-align:start;">It&#39;s #Day4 of our 30-day &quot;<b>Decoding the Web</b>&quot; series! Today, we&#39;ll be exploring the intricate world of the DOM (Document Object Model) and uncovering the ways it empowers web developers to create dynamic, interactive content. Let&#39;s jump right in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 DOM in a nutshell?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 What is the DOM?</h1><p class="paragraph" style="text-align:start;">The DOM <i>(Document Object Model)</i> is a structured, tree-like representation of an HTML or XML document, providing a platform for developers to manipulate and interact with the document&#39;s content, structure, and styling using JavaScript. It bridges the gap between your code and the browser, enabling you to create rich, dynamic web experiences.</p><p class="paragraph" style="text-align:start;">Read more about the DOM in <span style="text-decoration:underline;"><a class="link" href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-04-dom" target="_blank" rel="noopener noreferrer nofollow">MDN Web Docs</a></span>.</p><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>DOM Listener</b> (Browser Extension) - Get real-time insights into event listeners attached to DOM elements. This browser extension allows you to visualize, filter, and debug event listeners directly in the browser, simplifying your development process.</p></li><li><p class="paragraph" style="text-align:left;"><b>XPath Helper</b> (Browser Extension) - Navigate and query the DOM using XPath expressions with ease. XPath Helper helps you craft precise XPath queries, test them in real-time, and extract valuable information from complex web pages.</p></li><li><p class="paragraph" style="text-align:left;"><b>DOM Testing Library</b> - Improve the quality and resilience of your JavaScript tests by leveraging the DOM Testing Library. This utility encourages best practices, helping you write maintainable, user-centric tests that closely mimic real-world interactions.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Master Event Delegation</b> - Simplify event handling by leveraging event delegation. Instead of attaching event listeners to individual elements, delegate the responsibility to a parent element. This efficient technique reduces memory usage and ensures your event listeners remain functional when new elements are added to the DOM.</p></li><li><p class="paragraph" style="text-align:left;"><b>Use Document Fragments</b> - Optimize DOM manipulation by utilizing Document Fragments. Instead of updating the DOM directly, create a Document Fragment, modify it offscreen, and insert it into the DOM once all changes are complete. This reduces layout thrashing and improves performance.</p></li><li><p class="paragraph" style="text-align:left;"><b>Embrace Shadow DOM</b> - Isolate your component styles and markup using Shadow DOM. This encapsulation technique ensures that your components remain self-contained and less susceptible to conflicts with other styles or scripts on the page.</p></li></ol><p class="paragraph" style="text-align:left;">Checkout Today’s YouTube Videos where I explained in depth with code examples these techniques:</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/wcQBe6EtLWQ" width="100%"></iframe><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;Simplicity is the ultimate sophistication.&quot; - <i>Leonardo da Vinci.</i> When working with the DOM, strive for simplicity and elegance. Clean, straightforward code is easier to maintain, debug, and understand.</p></li><li><p class="paragraph" style="text-align:left;">Treat the DOM with respect. While it&#39;s tempting to wield the power of the DOM for quick fixes, always consider the potential consequences of your actions. Prioritize maintainability, performance, and user experience.</p></li><li><p class="paragraph" style="text-align:left;">Remember that the DOM is a living, breathing entity. As developers, we must be mindful of our interactions with it, ensuring that we create harmony between our code and the ever-evolving landscape of the web.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Can you traverse the DOM to find the closest ancestor of an element that matches a given selector? Share your solution on Twitter with #DecodingTheWeb! Need a hint? Check out the <span style="text-decoration:underline;"><b><a class="link" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/closest?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-04-dom" target="_blank" rel="noopener noreferrer nofollow">Element.closest()</a></b></span> method documentation.</p><h1 class="heading" style="text-align:left;">💭 Shower Thoughts</h1><ul><li><p class="paragraph" style="text-align:left;">If the DOM were a musical instrument, would it be an orchestra conductor, coordinating the harmony between HTML, CSS, and JavaScript?</p></li><li><p class="paragraph" style="text-align:left;">Do DOM elements secretly enjoy being styled and manipulated, like a plant that thrives when given the right care and attention?</p></li><li><p class="paragraph" style="text-align:left;">What makes the DOM wise? Perhaps it&#39;s its knack for balancing structure, style, and interactivity, while subtly reminding us that collaboration is key to crafting captivating digital experiences.</p></li></ul><hr class="content_break"><p class="paragraph" style="text-align:start;">Keep exploring and decoding the web, and we&#39;ll see you tomorrow for Day 5! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-04-dom" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Happy coding! 🎉</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=a5af93af-b5ab-4fe3-9bc4-95081e2e8e1a&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #03: JavaScript</title>
  <description>a Love/Hate Relationship</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/1bca7911-562e-458a-8a8b-a81ca3968893/EP3.png" length="208779" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-javascript</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-javascript</guid>
  <pubDate>Sat, 25 Mar 2023 17:10:00 +0000</pubDate>
  <atom:published>2023-03-25T17:10:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey there, Web Dev Explorers! 🚀</p><p class="paragraph" style="text-align:start;">Welcome to #Day3 of our 30-day &quot;<b>Decoding the Web</b>&quot; journey! Today, we&#39;re delving into the fascinating world of JavaScript, exploring its power and versatility in web development. Let&#39;s dive in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 What is JavaScript?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time - A MUST TAKE!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thought</p></li><li><p class="paragraph" style="text-align:left;">😂 Meme of The Day</p></li></ul><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 What is JavaScript?</h1><p class="paragraph" style="text-align:start;">JavaScript is a powerful, high-level programming language that adds interactivity and dynamic content to websites. It&#39;s the key to creating engaging, user-friendly web experiences, working hand-in-hand with HTML and CSS.</p><p class="paragraph" style="text-align:start;">JavaScript has come a long way since its inception. It was created in just 10 days by Brendan Eich back in 1995. Over the years, with the introduction of ECMAScript standards, it has evolved into a powerful language that runs on browsers, servers, and even IoT devices.</p><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://eslint.org/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">ESLint</a></b></span> - Keep your code clean, consistent, and error-free with ESLint, a pluggable linting utility for JavaScript. Easily customizable, ESLint helps you enforce best practices, identify potential issues, and maintain a high-quality codebase.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://babeljs.io/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">Babel</a></b></span> - A powerful JavaScript transpiler, allows you to write modern JavaScript (using the latest ECMAScript features) and convert it into a version compatible with older browsers. This ensures your code will work across different platforms and browsers without sacrificing the benefits of modern JavaScript syntax.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://webpack.js.org/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">Webpack</a></b></span> -: A popular JavaScript module bundler, takes your code and its dependencies, and bundles them together into one or more optimized files. Webpack comes with a variety of plugins and loaders that enable you to transform, optimize, and manage assets like CSS, images, and fonts. This improves the performance of your web application and simplifies your development workflow.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Master Async/Await</b> - Simplify your asynchronous JavaScript code by mastering async/await. This powerful syntax makes your code more readable, allowing you to write asynchronous operations that look and behave like synchronous code.</p></li><li><p class="paragraph" style="text-align:left;"><b>Use Destructuring Assignment</b> - Leverage destructuring assignment to unpack values from arrays or properties from objects into distinct variables. This concise and efficient technique improves code readability and reduces complexity.</p></li><li><p class="paragraph" style="text-align:left;"><b>Implement Array Methods</b> - Harness the power of built-in array methods like .map(), .filter(), and .reduce() to transform and manipulate data. These methods provide a functional and elegant way to work with arrays, without the need for loops or extra variables. <i>Checkout this cheat sheet to master Array Methods (</i><span style="text-decoration:underline;"><i><a class="link" href="https://array-methods.github.io/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">https://array-methods.github.io/</a></i></span><i>)</i></p></li></ol><p class="paragraph" style="text-align:left;">Make sure to check Today’s Episode on YouTube for further and exclusive tips!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/pgqECiUFYYk" width="100%"></iframe><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;Any fool can write code that a computer can understand. Good programmers write code that humans can understand.&quot; - Martin Fowler. Remember, writing clean, readable JavaScript is essential for effective collaboration and long-term maintainability.</p></li><li><p class="paragraph" style="text-align:left;">Embrace the power of modularity. Break your code into smaller, reusable functions and components to make it easier to understand, test, and maintain.</p></li><li><p class="paragraph" style="text-align:left;">Strive for balance between performance and readability. Optimize your JavaScript for efficiency, but never at the expense of clarity and maintainability.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Your quiz today is to pass The <b>JS is Weird</b> Test (<a class="link" href="https://jsisweird.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">https://jsisweird.com/</a>) . In this quiz, you&#39;ll be shown 25 quirky expressions and will have to guess the output. Trust me, even if you&#39;re a JS developer, you’ll find this one super challenging, revisit most of JavaScript syntax that is probably, and hopefully, not something you use in your daily life.</p><p class="paragraph" style="text-align:start;">I took this test and recorded a <b>Live Reaction</b> to it (<i>7 months ago before the author made updates to the questions</i>). </p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/sz4FANqmB38" width="100%"></iframe><p class="paragraph" style="text-align:start;">Make sure to do the quiz before watching it and let’s compare our scores on Twitter (<a class="link" href="http://twitter.com/choubari_?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" target="_blank" rel="noopener noreferrer nofollow">twitter.com/choubari_</a>) <b>#DecodingTheWeb #Day3</b></p><p class="paragraph" style="text-align:start;"></p><h1 class="heading" style="text-align:left;">💭 Shower Thought</h1><ul><li><p class="paragraph" style="text-align:left;">If JavaScript were an animal, would it be an octopus, because of its many &quot;tentacles&quot; reaching into various aspects of web development.</p></li></ul><h1 class="heading" style="text-align:left;">😂 Meme of The Day</h1><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/35fabf43-f816-4699-a94f-ac995bc5a0ee/image.png"/><div class="image__source"><span class="image__source_text"><p>Javascript - a Love/Hate Relationship</p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Keep exploring and decoding the web, and we&#39;ll see you tomorrow for Day 4! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-03-javascript" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Happy coding! 🎉 & Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=ca7e59aa-764e-4def-be76-7e484d850fa9&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #02: CSS</title>
  <description>a.k.a. Leonardo da Vinci of web development!</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/fcaab349-68c5-404f-b3fe-4617eb397a55/EP2.png" length="491434" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-css</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-css</guid>
  <pubDate>Fri, 24 Mar 2023 07:12:00 +0000</pubDate>
  <atom:published>2023-03-24T07:12:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey there, Web Dev Explorers! 🚀</p><p class="paragraph" style="text-align:start;">Welcome to #Day2 of our 30-day &quot;<b>Decoding the Web</b>&quot; journey! Today, we&#39;re diving into the world of CSS, unraveling its potential to transform your web development projects. Let&#39;s get started!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 What is CSS?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎁 Bonuses - Open Source</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li><li><p class="paragraph" style="text-align:left;">😂 Meme of The Day</p></li></ul><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/6456acdb-4fe6-4959-8ee6-a02e7a357dea/lets-party.gif"/><div class="image__source"><span class="image__source_text"><p>Get Ready!!</p></span></div></div><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 What is CSS?</h1><p class="paragraph" style="text-align:start;">CSS <i>(Cascading Style Sheets)</i> is the cornerstone of web design, responsible for controlling the presentation and styling of HTML elements. It dictates the colors, fonts, and overall layout of a webpage, elevating it from a dull structure to a visually captivating experience.</p><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://css-tricks.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">CSS-Tricks</a></b></span>: A must check for learning and mastering CSS concepts, best practices, and techniques.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://flexboxfroggy.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">Flexbox Froggy</a></b></span>: A fun and interactive game to help you master CSS Flexbox, a powerful layout tool.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://cssgridgarden.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">Grid Garden</a></b></span>: Another entertaining game that teaches you CSS Grid, another essential layout technique.</p></li></ol><p class="paragraph" style="text-align:left;">These two games will help you learn in practice the different thinking approaches between Grid Layout and Flexbox.</p><h1 class="heading" style="text-align:left;">🎁 Bonuses - Open Source</h1><ul><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://github.com/dzhavat/css-flexbox-cheatsheet?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">CSS Flexbox Cheatsheet</a></b></span> (VSCode Extension) - Confused by flexbox? The CSS Flexbox Cheatsheet extension for VSCode is here to help. It provides a handy reference guide for all flexbox properties and values, right within your editor.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://github.com/FullHuman/purgecss?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">PurgeCSS</a></b></span> - Minimize your CSS files by removing unused styles from your stylesheets. PurgeCSS analyzes your HTML files and identifies the used CSS classes, enabling you to optimize your stylesheets and improve your website&#39;s performance.</p></li><li><p class="paragraph" style="text-align:left;"> <span style="text-decoration:underline;"><a class="link" href="https://github.com/pagespeed-pro/css-art.com?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">Css-Art</a></span> - Not a tool but a beautiful gallery of pure CSS web art with their source code.</p></li></ul><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Use CSS Custom Properties (Variables)</b> - Streamline your development by utilizing CSS Custom Properties. Define reusable values in your stylesheets to maintain consistency and easily adjust global styles without repeating code.</p></li><li><p class="paragraph" style="text-align:left;"><b>Embrace CSS Grid</b> - Harness the power of CSS Grid to create complex, responsive layouts without relying on CSS frameworks or hacks. Grid layout simplifies two-dimensional layouts, offering more control and flexibility.</p></li><li><p class="paragraph" style="text-align:left;"><b>Master :nth-child()</b> - Take advantage of the :nth-child() pseudo-class to style elements based on their position in the DOM. This powerful selector enables you to apply styles conditionally, without the need for additional classes or IDs.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;Good design is obvious. Great design is transparent.&quot; - <i>Joe Sparano. </i>Remember that CSS is the silent partner of HTML. Its purpose is to enhance the user experience while maintaining an elegant, unobtrusive presence.</p></li><li><p class="paragraph" style="text-align:left;">Seek inspiration from nature and the world around you. The principles of design can be observed in everything from architecture to nature. Use these elements to create harmonious, visually appealing web designs.</p></li><li><p class="paragraph" style="text-align:left;">As developers, we must prioritize not only the aesthetics of our websites but also their accessibility and performance.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Can you create a CSS-only tooltip that appears below an element when hovering over it? Give it a try and tweet your solution with <b>#DecodingTheWeb #Day2</b>!</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cf14f884-730f-44a0-b0bf-4dec09f66871/css-hover.gif"/><div class="image__source"><span class="image__source_text"><p>Create CSS-only tooltip</p></span></div></div><p class="paragraph" style="text-align:left;">Curious to know the answer? Check this <a class="link" href="https://codepen.io/choubari/pen/YzOJLZG?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" target="_blank" rel="noopener noreferrer nofollow">CodePen</a>.</p><h1 class="heading" style="text-align:left;">💭 Shower Thoughts</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">In a world where everyone judges a book by its cover, CSS is the cover of the internet.</p></li><li><p class="paragraph" style="text-align:left;">CSS is like the fashion industry of the web - constantly evolving and setting new trends.</p></li><li><p class="paragraph" style="text-align:left;">If a webpage were a painting, HTML would provide the canvas, while CSS would supply the colors and brushes.</p></li></ol><h1 class="heading" style="text-align:left;">😂 Meme of The Day</h1><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/2c486c16-8164-4def-8edf-90e7245e4fc6/meme.PNG"/><div class="image__source"><span class="image__source_text"><p>Meme of the day - Source: Unknown</p></span></div></div><hr class="content_break"><p class="paragraph" style="text-align:start;">Keep exploring and decoding the web, and we&#39;ll see you tomorrow for Day 3! Happy coding! 🎉</p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-02-css" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Best regards,</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=b992bb69-2b98-4a7e-b418-398772b69916&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #01: HTML</title>
  <description>Revisit the backbone of Web Development</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/8dfa0690-a695-41da-9ae9-f4458187e9ab/EP1.png" length="434754" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-html</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-html</guid>
  <pubDate>Thu, 23 Mar 2023 14:26:00 +0000</pubDate>
  <atom:published>2023-03-23T14:26:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">As-salāmu ʿalaykum, dear reader! </p><p class="paragraph" style="text-align:left;">Welcome to #Day1 of our 30-day &quot;<b>Decoding the Web</b>&quot; series. Today, we&#39;ll embark on our journey by exploring advanced HTML techniques. Let&#39;s dive in!</p><h1 class="heading" style="text-align:left;">Email Summary</h1><ul><li><p class="paragraph" style="text-align:left;">🔍 What is HTML?</p></li><li><p class="paragraph" style="text-align:left;">🛠️ 3 Useful Tools</p></li><li><p class="paragraph" style="text-align:left;">🎯 3 Helpful Tips/Techniques</p></li><li><p class="paragraph" style="text-align:left;">💡 3 Ideas to Think About</p></li><li><p class="paragraph" style="text-align:left;">🧩 Quiz Time!</p></li><li><p class="paragraph" style="text-align:left;">💭 Shower Thoughts</p></li></ul><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/3639e80b-b15e-4d05-bb9a-40acc97348e2/bugs-bunny-race.gif"/><div class="image__source"><span class="image__source_text"><p>Let’s go!!!</p></span></div></div><hr class="content_break"><h1 class="heading" style="text-align:left;">🔍 What is HTML?</h1><p class="paragraph" style="text-align:start;">HTML <i>(HyperText Markup Language)</i> is the backbone of the web, allowing us to structure content on web pages. Despite its simplicity, mastering HTML is crucial for creating efficient and accessible websites. Revisiting HTML, even as an experienced developer, can lead to discovering best practices, new features, and better ways of structuring your content.</p><h1 class="heading" style="text-align:left;">🛠️ 3 Useful Tools</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://chrome.google.com/webstore/detail/emmet-review/epejoicbhllgiimigokgjdoijnpaphdp?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" target="_blank" rel="noopener noreferrer nofollow">Emmet Re:view</a></b></span>: A browser extension that shows your HTML pages at different screen sizes and resolutions simultaneously, making it easier to create responsive designs.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://htmlhint.com/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" target="_blank" rel="noopener noreferrer nofollow">HTMLHint</a></b></span>: A customizable static analysis tool for HTML that helps you follow best practices, improve accessibility, and catch common coding errors.</p></li><li><p class="paragraph" style="text-align:left;"><span style="text-decoration:underline;"><b><a class="link" href="https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" target="_blank" rel="noopener noreferrer nofollow">Web Developer</a></b></span>: A browser extension that offers a set of useful tools to debug and inspect HTML on any website.</p></li></ol><h1 class="heading" style="text-align:left;">🎯 3 Helpful Tips/Techniques</h1><ol start="1"><li><p class="paragraph" style="text-align:left;"><b>Leverage ARIA attributes</b>: Enhance accessibility by adding appropriate ARIA (Accessible Rich Internet Applications) attributes to your HTML elements. You can refer to the <span style="text-decoration:underline;"><b><a class="link" href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" target="_blank" rel="noopener noreferrer nofollow">ARIA documentation</a></b></span>.</p></li><li><p class="paragraph" style="text-align:left;"><b>Validate your HTML</b>: Use the <span style="text-decoration:underline;"><b><a class="link" href="https://validator.w3.org/?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" target="_blank" rel="noopener noreferrer nofollow">W3C Markup Validation Service</a></b></span> to ensure your HTML follows best practices.</p></li><li><p class="paragraph" style="text-align:left;"><b>Use template literals in JavaScript</b>: Dynamically create HTML strings in JavaScript with template literals, allowing for cleaner and more readable code.</p></li></ol><h1 class="heading" style="text-align:left;">💡 3 Ideas to Think About</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">&quot;To structure content is to give it meaning; to master HTML is to give the web meaning.&quot; - <i>Anonymous</i></p></li><li><p class="paragraph" style="text-align:left;">Embrace the evolution of HTML; as the web advances, so should our understanding and utilization of its fundamental language.</p></li><li><p class="paragraph" style="text-align:left;">The art of coding lies not only in creating functionality but also in crafting an experience that is accessible and meaningful to all users.</p></li></ol><h1 class="heading" style="text-align:left;">🧩 Quiz Time!</h1><p class="paragraph" style="text-align:start;">Can you refactor this HTML snippet with a series of <code>&lt;div&gt;&lt;/div&gt;</code> elements into a more semantic version and add appropriate ARIA attributes? </p><blockquote align="center" class="twitter-tweet"><a href="https://twitter.com/choubari_/status/1638844847191900160?s=20&utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html"><p> Twitter tweet </p></a></blockquote><p class="paragraph" style="text-align:start;">Share your answer on Twitter by replying to this tweet or using the hashtags #DecodingTheWeb #Day1. </p><p class="paragraph" style="text-align:start;">The answer of this quiz is revealed somewhere in this YouTube Video, so make sure to watch all of it ;)</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/iL6YOuIaXy0" width="100%"></iframe><h1 class="heading" style="text-align:left;">💭 Shower Thoughts</h1><ol start="1"><li><p class="paragraph" style="text-align:left;">If an alien species discovered Earth&#39;s internet, they&#39;d need to learn HTML to understand our digital culture.</p></li><li><p class="paragraph" style="text-align:left;">An HTML tag is like a digital word; alone, it has little meaning, but combined with others, it tells a compelling story.</p></li><li><p class="paragraph" style="text-align:left;">If life were a webpage, HTML would be the skeleton that holds everything together.</p></li></ol><hr class="content_break"><p class="paragraph" style="text-align:start;">Stay tuned for tomorrow&#39;s episode, where we&#39;ll dive into the world of advanced CSS! </p><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><p class="paragraph" style="text-align:start;">Enjoying my content? Fuel my creativity by buying me a coffee! ☕️ Your support helps me keep delivering great content.</p></div><div class="section" style="background-color:transparent;margin:0.0px 0.0px 0.0px 0.0px;padding:0.0px 0.0px 0.0px 0.0px;"><div class="image"><a class="image__link" href="https://www.buymeacoffee.com/choubari?utm_source=choubari.beehiiv.com&utm_medium=newsletter&utm_campaign=decoding-the-web-01-html" rel="noopener" target="_blank"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/d52c1e96-7532-4bbc-9b4d-35f7ab3ffc78/yellow-button.png"/></a><div class="image__source"><span class="image__source_text"><p>Thanks! ❤️</p></span></div></div></div><p class="paragraph" style="text-align:start;">Ramadan Mubarak! 🌙</p><p class="paragraph" style="text-align:start;"><i>Kawtar Choubari ;)</i></p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=6e141135-2b61-433c-bc63-e046ea20826c&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

      <item>
  <title>Decoding The Web #00 : Introduction</title>
  <description>30Days Voyage to revisit the fundamentals and learn advanced concepts in Web Development</description>
      <enclosure url="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/c18d5d60-d3f1-4e18-b730-20af5ddf84f1/EP0.png" length="220439" type="image/png"/>
  <link>https://choubari.beehiiv.com/p/decoding-the-web-introduction</link>
  <guid isPermaLink="true">https://choubari.beehiiv.com/p/decoding-the-web-introduction</guid>
  <pubDate>Wed, 22 Mar 2023 14:00:00 +0000</pubDate>
  <atom:published>2023-03-22T14:00:00Z</atom:published>
    <dc:creator>Kawtar CHOUBARI</dc:creator>
    <category><![CDATA[Decoding The Web]]></category>
  <content:encoded><![CDATA[
    <div class='beehiiv'><style>
  .bh__table, .bh__table_header, .bh__table_cell { border: 1px solid #C0C0C0; }
  .bh__table_cell { padding: 5px; background-color: #FFFFFF; }
  .bh__table_cell p { color: #2D2D2D; font-family: 'Helvetica',Arial,sans-serif !important; overflow-wrap: break-word; }
  .bh__table_header { padding: 5px; background-color:#F1F1F1; }
  .bh__table_header p { color: #2A2A2A; font-family:'Trebuchet MS','Lucida Grande',Tahoma,sans-serif !important; overflow-wrap: break-word; }
</style><div class='beehiiv__body'><p class="paragraph" style="text-align:left;">Hey there, Code Enthusiasts! 🚀</p><p class="paragraph" style="text-align:start;">🌟 This Ramadan, we&#39;re thrilled to introduce our special series, &quot;<b>Decoding the Web</b>&quot; - a 30-day expedition through the world of web development where you’ll nourish your mind with 30 must-know Web Dev Terms 🌙.</p><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/4e182fb0-828b-4bcd-8fd5-0aa01fea3d51/giphy.gif"/><div class="image__source"><span class="image__source_text"><p>Are you ready?</p></span></div></div><p class="paragraph" style="text-align:start;">From HTML to JavaScript and more, we&#39;ll dive into the digital world, uncovering the hidden secrets of web development.🕸️🔍</p><p class="paragraph" style="text-align:start;">📚 Each day, you&#39;ll learn new terms and concepts, starting with the basics and progressing to advanced levels. Get ready to supercharge your skills!</p><p class="paragraph" style="text-align:start;">🕌 Make the most of this holy month by nourishing your mind and soul with valuable insights. Join us on this transformative journey and become a Web Dev Pro!</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" class="youtube_embed" frameborder="0" height="100%" src="https://youtube.com/embed/1Rt7_D0Ulcg" width="100%"></iframe><div class="blockquote"><blockquote class="blockquote__quote"></blockquote></div><div class="image"><img alt="" class="image__image" style="" src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/94b236e0-ca64-4112-9d7b-a0c0d7da4a9f/mail.gif"/><div class="image__source"><span class="image__source_text"><p>You’ve got a mail!</p></span></div></div><p class="paragraph" style="text-align:start;">💌 So, buckle up and keep an eye on your inbox for our daily #DecodingTheWeb emails throughout Ramadan. Don&#39;t miss this chance to elevate your web development expertise!</p><p class="paragraph" style="text-align:start;">🌙 Happy Ramadan and see you soon on our WebVoyage adventure!</p><p class="paragraph" style="text-align:start;">Your Coding Pal, Choubari ;)</p></div><div class='beehiiv__footer'><br class='beehiiv__footer__break'><hr class='beehiiv__footer__line'><a target="_blank" class="beehiiv__footer_link" style="text-align: center;" href="https://www.beehiiv.com/?utm_campaign=fc237dc1-6b2c-41ff-a266-fa150a3430b4&utm_medium=post_rss&utm_source=choubari_s_newsletter">Powered by beehiiv</a></div></div>
  ]]></content:encoded>
</item>

  </channel>
</rss>
