<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dani</title>
    <description>The latest articles on DEV Community by Dani (@lain).</description>
    <link>https://dev.to/lain</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2446754%2F401ab689-ac9f-420c-b296-b24a2c2a5722.png</url>
      <title>DEV Community: Dani</title>
      <link>https://dev.to/lain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lain"/>
    <language>en</language>
    <item>
      <title>Sell Yourself Without the BS: Honest Resume Advice for Code Newbies + Prompts That Worked for Me</title>
      <dc:creator>Dani</dc:creator>
      <pubDate>Wed, 22 Oct 2025 09:42:14 +0000</pubDate>
      <link>https://dev.to/lain/sell-yourself-without-the-bs-honest-resume-advice-for-code-newbies-prompts-that-worked-for-me-1296</link>
      <guid>https://dev.to/lain/sell-yourself-without-the-bs-honest-resume-advice-for-code-newbies-prompts-that-worked-for-me-1296</guid>
      <description>&lt;p&gt;Hey fellow code newbies and web devs! If you're like me—an #intern with zero real-world experience but a ton of projects under your belt—getting your resume noticed can feel impossible. But guess what? A few smart tweaks and some AI prompts changed everything for me. I'm sharing my tips + practical prompts that helped me tailor resumes and land interviews. Let's dive in—keep it real, be honest, and watch those opportunities roll in! &lt;/p&gt;

&lt;h2&gt;
  
  
  A Few Tips for a Better Resume
&lt;/h2&gt;

&lt;p&gt;Based on what I've learned (and messed up) along the way. These are gold for #internships and #juniors in tech.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Intent Matters!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
With this mindset, write your resume like:&lt;br&gt;&lt;br&gt;
✅ How do I want them to see me?&lt;br&gt;&lt;br&gt;
✅ With what title do I want to be seen? Front-end? Back-end? Or Web Developer?&lt;br&gt;&lt;br&gt;
✅ What skills do they need? (Every job ad asks for specific skills.)&lt;br&gt;&lt;br&gt;
🔴 A note for #interns like me with no experience: if you’ve got lots of projects, include the ones whose tech stack matches the job description.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Where Does HR Look First?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Since #resumes go to HR first, your title/headline is crucial. Make sure it fits the role you’re applying for—don't slap on something generic if the ad is screaming "Front-End Dev"!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Which Skills?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
For the #Skills section:&lt;br&gt;&lt;br&gt;
✅ Don’t list a skill you haven’t actually used in your projects.&lt;br&gt;&lt;br&gt;
✅ It helps to indicate your level for each: learning, proficient, or expert?&lt;br&gt;&lt;br&gt;
🔴 Don’t include skills you “just know” that aren’t relevant to the role.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;About Me—Sell Yourself&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
For #internships and #juniors, the About Me/Summary section matters: your motivation, your path, what you’ve done, and the skills you can bring to that company.&lt;br&gt;&lt;br&gt;
🔺 They say no summary is better than a bad, unprofessional one!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Some job ads list skills in the description that don’t match the job title. Don’t overthink it—and even if you don’t know that thing, send your resume anyway. Experience says (in some cases) they add it just to reduce the number of applicants! &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🟥 Better not to exaggerate, lie, or BS in your resume. Be honest—if you claim something you don’t know, the interview will expose it big time!&lt;/p&gt;

&lt;h2&gt;
  
  
  💥 A Few Great Prompts That Helped Me
&lt;/h2&gt;

&lt;p&gt;These are game-changers! I used them with tools like ChatGPT to polish my resume. Plug in your details and watch the magic. 👆&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Act as a recruiter for [Role]. Review my resume below and highlight weak areas, overused buzzwords, and missing metrics. Be brutally honest.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👆 This one's a beast—especially the metrics it suggests!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rewrite this resume to sound more results-driven, quantifiable, and compelling for [target role]. Focus on achievements, not just duties.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ATS Boost&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Update this resume to be fully optimized for Applicant Tracking Systems (ATS) for the role of [specific role/title]. Use industry-specific keywords naturally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Craft My Hook&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Write a powerful, 3-line professional summary that hooks a recruiter in under 10 seconds. Prioritize impact, clarity, and value.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Upgrade Experience&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Rephrase the experience section to highlight impact, results, and transferable skills using action verbs and quantifiable outcomes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Format Fix&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Suggest a clean, modern resume format that works for both humans and ATS. No graphics, no columns. Just structured and effective.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tailor for the Role&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Tailor this resume to fit this specific job description [paste JD]. Highlight matching experience and reword sections to match the language used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Standout Cover Letter&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Prompt: Write a compelling cover letter based on this resume and job description. Keep it personal, enthusiastic, and under 200 words.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These prompts saved me hours—try 'em out and tweak as needed!&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping It Up
&lt;/h2&gt;

&lt;p&gt;There you have it—my no-BS guide to resumes that actually get seen. If you're grinding through job apps as a web dev or code newbie, remember: intent and honesty win. For more inspo, check out this webinar from Tech Immigrants on resume writing: &lt;a href="https://youtu.be/Gt2AQG-u8xM" rel="noopener noreferrer"&gt;https://youtu.be/Gt2AQG-u8xM&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;What’s your biggest resume struggle? Drop it in the comments—let's chat! If this helped, upvote or share for more tips. Happy job hunting!&lt;br&gt;
 #WebDevelopment #CodeNewbie #ResumeTips&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>resume</category>
      <category>internship</category>
      <category>resumetips</category>
    </item>
    <item>
      <title>Css styling, Cards grid and overlay effect! thanks to cursor ai!</title>
      <dc:creator>Dani</dc:creator>
      <pubDate>Fri, 10 Oct 2025 21:39:24 +0000</pubDate>
      <link>https://dev.to/lain/css-styling-cards-grid-and-overlay-effect-thanks-to-cursor-ai-2i47</link>
      <guid>https://dev.to/lain/css-styling-cards-grid-and-overlay-effect-thanks-to-cursor-ai-2i47</guid>
      <description>&lt;h1&gt;
  
  
  How I Learned to Build Beautiful Anime Cards (Thanks to AI + Curiosity)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrmk07w2gechoiw50fkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrmk07w2gechoiw50fkz.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
When I was building my &lt;a href="https://github.com/daniyal-abbassi/Next.js-animeAPI" rel="noopener noreferrer"&gt;&lt;strong&gt;Next.js anime browser&lt;/strong&gt;&lt;/a&gt;, I wanted each anime to feel special—not just a static image, but a little interactive card that reveals more when you hover over it.&lt;/p&gt;

&lt;p&gt;I didn’t know how to do it… so I asked &lt;strong&gt;Cursor AI&lt;/strong&gt; to help me generate a cool styling. And you know what? I was amazed and also That’s where the real learning began.&lt;/p&gt;

&lt;p&gt;Instead of just copying the code, I &lt;strong&gt;studied it, broke it, fixed it, and made it my own&lt;/strong&gt;. Here’s what I learned along the way.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Responsive Grid: “Fit as Many Cards as Possible”
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ont70bqgigxxd93bjb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ont70bqgigxxd93bjb3.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
First, I needed the cards to look great on &lt;strong&gt;any screen&lt;/strong&gt;—phone, tablet, or desktop.&lt;/p&gt;

&lt;p&gt;The AI suggested this CSS trick:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.animeGrid&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auto-fill&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;minmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;280px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first, I didn’t get it. But after playing with it, I realized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;minmax(280px, 1fr)&lt;/code&gt; = “Each card is at least 280px wide, but can grow to fill space.”&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;auto-fill&lt;/code&gt; = “Add as many columns as fit—no media queries needed!”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s &lt;strong&gt;pure CSS magic&lt;/strong&gt;—and now I use it everywhere(though i remember it!)&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Hover Overlay: Sleek, Smooth, and Useful
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8bhgr7dgnxap7vwblq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8bhgr7dgnxap7vwblq7.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;br&gt;
I wanted to show &lt;strong&gt;more details&lt;/strong&gt; (score, summary, genres) on hover—without cluttering the main view.&lt;/p&gt;

&lt;p&gt;Here’s the core idea the AI gave me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrap the card in a &lt;code&gt;position: relative&lt;/code&gt; container
&lt;/li&gt;
&lt;li&gt;Add an absolutely positioned &lt;code&gt;.animeOverlay&lt;/code&gt; that’s &lt;strong&gt;hidden by default&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On hover, &lt;strong&gt;slide it in&lt;/strong&gt; with &lt;code&gt;transform&lt;/code&gt; and fade it with &lt;code&gt;opacity&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.animeCard&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;hidden&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.animeOverlay&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="py"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="m"&gt;0.4s&lt;/span&gt; &lt;span class="n"&gt;cubic-bezier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.animeCard&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="nc"&gt;.animeOverlay&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;What I learned&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;backdrop-filter: blur()&lt;/code&gt; creates that modern glass effect
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cubic-bezier(0.4, 0, 0.2, 1)&lt;/code&gt; is the same easing Apple uses—it feels &lt;em&gt;natural&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Always use &lt;code&gt;overflow: hidden&lt;/code&gt; on the parent to prevent scrollbars during animation&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  3. Custom Scrollbar: Because Default Ones Are Ugly
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzt87w0pamxrm9dkyc76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzt87w0pamxrm9dkyc76.png" alt=" " width="256" height="412"&gt;&lt;/a&gt;&lt;br&gt;
Some anime have long synopses, so the overlay needs to scroll. But browser scrollbars are thick and distracting.&lt;/p&gt;

&lt;p&gt;The AI showed me how to style a &lt;strong&gt;minimal, elegant scrollbar&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.overlayContent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;overflow-y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* Firefox */&lt;/span&gt;
  &lt;span class="py"&gt;scrollbar-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;thin&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;scrollbar-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* WebKit (Chrome, Safari) */&lt;/span&gt;
&lt;span class="nc"&gt;.overlayContent&lt;/span&gt;&lt;span class="nd"&gt;::-webkit-scrollbar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.overlayContent&lt;/span&gt;&lt;span class="nd"&gt;::-webkit-scrollbar-thumb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the scrollbar is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only &lt;strong&gt;4px wide&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semi-transparent white&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rounded corners&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invisible until you scroll&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It feels native, clean, and intentional—like it belongs.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Lesson: AI Is a Teacher, Not a Crutch
&lt;/h2&gt;

&lt;p&gt;I could’ve just pasted the code and moved on. But by &lt;strong&gt;asking “why?”&lt;/strong&gt;—  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why &lt;code&gt;minmax()&lt;/code&gt;?
&lt;/li&gt;
&lt;li&gt;Why &lt;code&gt;transform&lt;/code&gt; instead of &lt;code&gt;top&lt;/code&gt;?
&lt;/li&gt;
&lt;li&gt;Why &lt;code&gt;backdrop-filter&lt;/code&gt;?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—I turned AI output into &lt;strong&gt;real understanding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that’s the key: &lt;strong&gt;use AI to jumpstart your learning, not replace it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now I know some &lt;strong&gt;styling patterns&lt;/strong&gt; that I didn't know before!&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Try it yourself&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
Take an AI-generated snippet, save it somewhere else, and rebuild it from scratch. You’ll learn 10x more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Happy coding—and happy styling! 🎨✨&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I Finally Understood React — Before Learning Next.js!</title>
      <dc:creator>Dani</dc:creator>
      <pubDate>Sun, 05 Oct 2025 16:29:59 +0000</pubDate>
      <link>https://dev.to/lain/how-i-finally-understood-react-before-learning-nextjs-1ee4</link>
      <guid>https://dev.to/lain/how-i-finally-understood-react-before-learning-nextjs-1ee4</guid>
      <description>&lt;h1&gt;
  
  
  How I Finally Understood React — Before Learning Next.js!
&lt;/h1&gt;

&lt;p&gt;If you're reading this, I'm guessing you're planning to learn Next.js.&lt;br&gt;&lt;br&gt;
From my experience, Next.js truly feels like stepping into a smoother, more comfortable phase of web development. But here's the key: &lt;strong&gt;you'll get way more out of it if you first understand React&lt;/strong&gt; — not just its syntax, but &lt;em&gt;how to think in React&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This post is my personal summary of what clicked for me while going through the &lt;a href="https://nextjs.org/learn/react-foundations" rel="noopener noreferrer"&gt;&lt;strong&gt;React Foundations&lt;/strong&gt;&lt;/a&gt; section on the official Next.js Learn site. It's not a tutorial — it's the "aha!" moments I had along the way.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2e2xgtrb44jh7cfh75g9.png" alt=" " width="800" height="533"&gt;
&lt;/h2&gt;
&lt;h2&gt;
  
  
  React and Next.js: What's the Difference?
&lt;/h2&gt;

&lt;p&gt;Both React and Next.js are tools for building web applications — but they play different roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;React&lt;/strong&gt; is a &lt;strong&gt;JavaScript library&lt;/strong&gt; for building &lt;strong&gt;interactive user interfaces (UIs)&lt;/strong&gt;. It gives you powerful APIs to create UI components, but it doesn’t decide how you structure your app, handle routing, or fetch data. That’s up to you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Next.js&lt;/strong&gt; is a &lt;strong&gt;React framework&lt;/strong&gt;. It takes React and adds structure, built-in solutions, and optimizations for common needs like routing, data fetching, rendering, and more.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;React gives you the bricks.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Next.js gives you the whole blueprint — and even the construction crew!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  So… What Even &lt;em&gt;IS&lt;/em&gt; a Web Application?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://nextjs.org/learn/react-foundations/what-is-react-and-nextjs#building-blocks-of-a-web-application" rel="noopener noreferrer"&gt;Next.js Learn course&lt;/a&gt; breaks it down beautifully: every modern web app is made of &lt;strong&gt;building blocks&lt;/strong&gt;, like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;User Interface&lt;/strong&gt; – What users see and interact with (e.g., a list of blog posts, a comment section).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing&lt;/strong&gt; – How users move between pages (e.g., from &lt;code&gt;/posts&lt;/code&gt; to &lt;code&gt;/posts/my-first-post&lt;/code&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Fetching&lt;/strong&gt; – Where your data lives (like a database) and how you get it (via APIs or Server Actions).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rendering&lt;/strong&gt; – When and where content is generated (statically at build time? dynamically on the server?).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrations&lt;/strong&gt; – Third-party services (authentication, CMS, payments) and how you connect to them.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt; – Where your app is deployed (Vercel, Netlify, etc.).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt; – How fast it loads and feels.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt; – How it handles growth in users, content, or team size.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Experience&lt;/strong&gt; – How easy and enjoyable it is to build and maintain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When I imagined building a &lt;strong&gt;personal blog&lt;/strong&gt;, these ideas suddenly made sense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users &lt;strong&gt;browse all posts&lt;/strong&gt; → that’s UI + routing.
&lt;/li&gt;
&lt;li&gt;They &lt;strong&gt;click into a single post&lt;/strong&gt; → more routing + data fetching.
&lt;/li&gt;
&lt;li&gt;They &lt;strong&gt;leave a comment&lt;/strong&gt; → UI + data mutation + maybe auth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;React helps you build the UI layer.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;strong&gt;Next.js helps you wire up everything else — cleanly and efficiently.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69xn2konwe8gmub14j2d.png" alt=" " width="800" height="283"&gt;
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Back to Basics: The DOM and How We Update It
&lt;/h2&gt;

&lt;p&gt;Like most of us, I started web dev with &lt;strong&gt;HTML → CSS → JavaScript&lt;/strong&gt;. And I used the &lt;strong&gt;DOM&lt;/strong&gt; (Document Object Model) to update pages dynamically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feod0mzp64jp5hzx12rtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feod0mzp64jp5hzx12rtw.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The DOM is the bridge between your code and what users see. You can read it, change it, and add to it using JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But here’s the thing: &lt;strong&gt;updating the DOM manually is tedious&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, to add a simple &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; with plain JavaScript, you’d write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Develop. Preview. Ship.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;headerContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createTextNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;headerContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s five lines just to show a heading! &lt;br&gt;
This style is called imperative programming: you tell the browser exactly how to build the UI, step by step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsltgsqk2gg7dr0yz6j4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsltgsqk2gg7dr0yz6j4.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Enter React: A Declarative Approach
&lt;/h3&gt;

&lt;p&gt;React flips this around. Instead of describing &lt;em&gt;how&lt;/em&gt; to build the UI, you describe &lt;em&gt;what&lt;/em&gt; you want — and React figures out the “how.”&lt;/p&gt;

&lt;p&gt;With React, the same heading becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;domNode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;root&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ReactDOM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createRoot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;domNode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Develop. Preview. Ship.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much cleaner, right?&lt;/p&gt;

&lt;p&gt;This is declarative programming:&lt;br&gt;&lt;br&gt;
“I want an &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; with this text inside &lt;code&gt;#app&lt;/code&gt;.”&lt;br&gt;&lt;br&gt;
(React handles the DOM updates for you.)&lt;/p&gt;

&lt;p&gt;It’s like ordering a pizza instead of baking the dough, slicing the tomatoes, and grilling the cheese yourself. 🍕&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Note:&lt;/strong&gt; React itself isn’t a “declarative language” — it’s a library that enables a declarative style using JavaScript + JSX.&lt;/p&gt;
&lt;h3&gt;
  
  
  Wait… What’s JSX?
&lt;/h3&gt;

&lt;p&gt;That line &lt;code&gt;root.render(&amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;)&lt;/code&gt; isn’t valid JavaScript — so how does it work?&lt;/p&gt;

&lt;p&gt;Meet JSX (JavaScript XML): a syntax extension that lets you write HTML-like code inside JavaScript. Browsers don’t understand JSX natively, so it gets compiled to regular JavaScript (usually by tools like Babel).&lt;/p&gt;

&lt;p&gt;JSX has just three simple rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrap everything in a single root element (e.g., you can’t return two sibling &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s without a parent).&lt;/li&gt;
&lt;li&gt;Close all tags (e.g., &lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt;, not &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Use camelCase for attributes (e.g., &lt;code&gt;className&lt;/code&gt; instead of &lt;code&gt;class&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you get used to it, JSX feels natural — and it makes your UI code way more readable.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Think in React: The 3 Core Concepts
&lt;/h2&gt;

&lt;p&gt;To truly “get” React, focus on these three pillars (as taught in the &lt;a href="https://nextjs.org/learn/react-foundations" rel="noopener noreferrer"&gt;React Foundations course&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;Don’t just read — build!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The ideas below are meant to give you a mental map, not replace hands-on practice. To truly understand them, open your editor, type out the examples, break them, fix them, and create your own tiny components. Reading alone won’t make it stick — writing code will.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1phwmfvcpf9kwr23q0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1phwmfvcpf9kwr23q0u.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Components = Reusable UI Pieces
&lt;/h3&gt;

&lt;p&gt;Components are JavaScript functions (with capitalized names!).&lt;br&gt;&lt;br&gt;
They return JSX that describes part of your UI.&lt;br&gt;&lt;br&gt;
You can nest them like LEGO bricks: &lt;code&gt;&amp;lt;Header /&amp;gt;&lt;/code&gt; inside &lt;code&gt;&amp;lt;HomePage /&amp;gt;&lt;/code&gt;, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;My Blog&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;HomePage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;...&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/learn/react-foundations/building-ui-with-components" rel="noopener noreferrer"&gt;Building UI with Components&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react.dev/learn/your-first-component" rel="noopener noreferrer"&gt;Your First Component (React Docs)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Props = Data Flow from Parent to Child
&lt;/h3&gt;

&lt;p&gt;Props let you pass data into components (like function arguments).&lt;br&gt;&lt;br&gt;
They’re read-only and help make components reusable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;author&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;By &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Usage:&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Post&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"My First Post"&lt;/span&gt; &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Ali"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/learn/react-foundations/displaying-data-with-props" rel="noopener noreferrer"&gt;Displaying Data with Props&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. State = Managing Changing Data
&lt;/h3&gt;

&lt;p&gt;State holds data that changes over time (e.g., form inputs, toggle buttons).&lt;br&gt;&lt;br&gt;
Use the &lt;code&gt;useState&lt;/code&gt; Hook to add state to a component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;CommentBox&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setComment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; 
      &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;comment&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
      &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
    &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/learn/react-foundations/updating-state" rel="noopener noreferrer"&gt;Updating State&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Advice: Don’t Just Read — Build!
&lt;/h2&gt;

&lt;p&gt;This post is just a launchpad. The real learning happens when you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write code alongside the tutorials
&lt;/li&gt;
&lt;li&gt;Break things and fix them
&lt;/li&gt;
&lt;li&gt;Rebuild small projects (like a blog, todo app, or profile page)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://nextjs.org/learn/react-foundations" rel="noopener noreferrer"&gt;React Foundations course&lt;/a&gt; is beginner-friendly and assumes only HTML/CSS/JS knowledge — no React experience needed.&lt;/p&gt;

&lt;p&gt;And remember: you don’t need to master everything before starting Next.js. But understanding these fundamentals will save you hours of confusion later.&lt;/p&gt;

&lt;p&gt;Happy coding — and welcome to the React + Next.js world!&lt;/p&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>web</category>
      <category>programming</category>
    </item>
    <item>
      <title>Semantic HTML, interview and technical terms!</title>
      <dc:creator>Dani</dc:creator>
      <pubDate>Thu, 04 Sep 2025 21:52:59 +0000</pubDate>
      <link>https://dev.to/lain/semantic-html-interview-and-technical-terms-2j</link>
      <guid>https://dev.to/lain/semantic-html-interview-and-technical-terms-2j</guid>
      <description>&lt;p&gt;I was rejected from my first interview for a front-end position due to a lack of technical knowledge. This became an excuse for me to review the technical terms related to HTML and CSS from the beginning:&lt;/p&gt;




&lt;h3&gt;
  
  
  🔴 HTML
&lt;/h3&gt;

&lt;p&gt;✅ Why do we use &lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt;?&lt;br&gt;
To tell the browser that our page is written with HTML5/CSS, so it can correctly render features like flexbox and grid for us.&lt;/p&gt;

&lt;p&gt;✅ What is a Root Element?&lt;br&gt;
It refers to the  element/tag, which must have the language or lang attribute.&lt;br&gt;
Why must it have the language attribute? For two reasons: 1. Better SEO (screen readers) and 2. For translation services.&lt;br&gt;
Of course, we can later add this attribute (lang) to any element (tag) we have.&lt;/p&gt;

&lt;p&gt;✅ What is Semantic HTML?&lt;br&gt;
It refers to elements (tags) that can define themselves and play a specific, meaningful role on the page. For example, instead of a &lt;/p&gt;, we should use &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, and similar tags, each with their own specific place and rules.&lt;br&gt;
For example:&lt;br&gt;
The  and  tags should be the first children of .

&lt;p&gt;✅ What are DOM and AOM?&lt;br&gt;
By parsing the semantic tags, the browser can give us two software interfaces (APIs):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The first is the Document Object Model, which has a tree structure and is used to control the elements on the page.&lt;/li&gt;
&lt;li&gt;The second is the Accessibility Object Model, which is parallel to the DOM but is provided to us in a non-visual way. This interface is what screen readers interact with, and this is where the benefit of using semantic tags becomes tangible. AOM provides us with a landmark for each tag, which SEO and screen readers use. For example, the  tag gives us a landmark called "banner," but a tag like  has no landmark!


&lt;p&gt;🟥 The concept of semantic HTML or structured tags is one of the most important concepts in web development, and it's essential to know "where," "how," and "why" we place each tag.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>semantichtml</category>
      <category>interview</category>
      <category>reject</category>
      <category>web</category>
    </item>
  </channel>
</rss>
