<?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: Rvn</title>
    <description>The latest articles on DEV Community by Rvn (@00rvn00).</description>
    <link>https://dev.to/00rvn00</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%2F3252389%2Fd498ba03-406d-4ab5-a6a1-f70043b54268.png</url>
      <title>DEV Community: Rvn</title>
      <link>https://dev.to/00rvn00</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/00rvn00"/>
    <language>en</language>
    <item>
      <title>When Platforms Like LinkedIn Fail Developers, We Build Without Them</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Fri, 04 Jul 2025 07:45:35 +0000</pubDate>
      <link>https://dev.to/00rvn00/when-platforms-like-linkedin-fail-developers-we-build-without-them-493i</link>
      <guid>https://dev.to/00rvn00/when-platforms-like-linkedin-fail-developers-we-build-without-them-493i</guid>
      <description>&lt;p&gt;Some of us joined platforms like LinkedIn just to show who we are.&lt;br&gt;&lt;br&gt;
We didn’t spam. We didn’t scam. We didn’t cheat.&lt;/p&gt;

&lt;p&gt;We simply signed up, filled in real information, and tried to connect.&lt;br&gt;&lt;br&gt;
And still, we got banned.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 The System Doesn't Want You — Unless You Already "Belong"
&lt;/h2&gt;

&lt;p&gt;Let’s be honest.&lt;/p&gt;

&lt;p&gt;LinkedIn claims to be a professional platform for all. But its systems treat newcomers — especially students, early-career devs, or people from underrepresented regions — as if they’re a threat.&lt;/p&gt;

&lt;p&gt;Accounts get flagged.&lt;br&gt;&lt;br&gt;
Profiles get banned.&lt;br&gt;&lt;br&gt;
Support stays silent.&lt;br&gt;&lt;br&gt;
And users are blamed for the very actions they’re prevented from controlling.&lt;/p&gt;

&lt;p&gt;You get locked out.&lt;br&gt;&lt;br&gt;
Then you're told you have too many accounts.&lt;br&gt;&lt;br&gt;
But you can't log in to delete them.&lt;br&gt;&lt;br&gt;
And they call it “your fault.”&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 This Isn’t About One Person. It’s About All of Us.
&lt;/h2&gt;

&lt;p&gt;We’ve seen it. Lived it. Felt it.&lt;br&gt;&lt;br&gt;
Not just one person, or one profile — but a wave of developers shut out for being new, different, or simply &lt;strong&gt;visible in the wrong way&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No warnings.&lt;br&gt;&lt;br&gt;
No clear rules.&lt;br&gt;&lt;br&gt;
Just an algorithm that acts like a gatekeeper for a system already broken.&lt;/p&gt;

&lt;p&gt;And the worst part?&lt;/p&gt;

&lt;p&gt;They don't care.&lt;/p&gt;

&lt;p&gt;They don’t listen.&lt;br&gt;&lt;br&gt;
They don’t respond.&lt;br&gt;&lt;br&gt;
They don’t learn.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 But We Do.
&lt;/h2&gt;

&lt;p&gt;We’re the ones writing open-source tools.&lt;br&gt;&lt;br&gt;
We’re the ones building projects late at night, with no company name behind us.&lt;br&gt;&lt;br&gt;
We’re the ones solving problems no one asked us to solve — yet.&lt;/p&gt;

&lt;p&gt;And we’re done waiting for permission.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 We Don’t Need Platforms That Shut Us Down to Grow.
&lt;/h2&gt;

&lt;p&gt;If LinkedIn wants to filter us out, silence us, bury us in a pile of auto-generated restrictions and fake professionalism — that’s fine.&lt;/p&gt;

&lt;p&gt;We’ll build somewhere else.&lt;/p&gt;

&lt;p&gt;Because a platform that fears authenticity doesn’t deserve real builders.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ They May Not Know Who We Are.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  But We Do.
&lt;/h2&gt;

&lt;p&gt;We are the new wave.&lt;br&gt;&lt;br&gt;
We don’t come from prestige, but from practice.&lt;br&gt;&lt;br&gt;
We don’t speak with titles, but with tools.&lt;br&gt;&lt;br&gt;
And we don’t need validation to keep creating.&lt;/p&gt;

&lt;p&gt;They built walls.&lt;br&gt;&lt;br&gt;
We’ll build bridges.&lt;br&gt;&lt;br&gt;
They closed doors.&lt;br&gt;&lt;br&gt;
We’ll make our own platforms.&lt;/p&gt;

&lt;p&gt;This is our voice.&lt;br&gt;&lt;br&gt;
And no algorithm can silence that.&lt;/p&gt;

&lt;p&gt;– a voice among many.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✊ If You’ve Been Through the Same…
&lt;/h2&gt;

&lt;p&gt;Comment below.&lt;br&gt;&lt;br&gt;
Tell your story.&lt;br&gt;&lt;br&gt;
Let’s show the world that &lt;strong&gt;we’re more than broken profiles and restricted accounts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We are developers.&lt;br&gt;&lt;br&gt;
We build.&lt;br&gt;&lt;br&gt;
We learn.&lt;br&gt;&lt;br&gt;
We adapt.&lt;/p&gt;

&lt;p&gt;And no algorithm will stop that.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>developers</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>🔐 Secure Auth Token Handling in the Frontend: When Your Client Needs the Token</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Sat, 21 Jun 2025 15:27:38 +0000</pubDate>
      <link>https://dev.to/00rvn00/secure-auth-token-handling-in-the-frontend-when-your-client-needs-the-token-1knn</link>
      <guid>https://dev.to/00rvn00/secure-auth-token-handling-in-the-frontend-when-your-client-needs-the-token-1knn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;💬 &lt;em&gt;“Do you have any tips for auth flows where the client legitimately needs the token for APIs?”&lt;/em&gt;&lt;br&gt;
This is one of the most common — and dangerous — pain points for modern web devs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you’ve ever built a frontend app that needs to call an API, you’ve probably asked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 Where do I &lt;strong&gt;store the token&lt;/strong&gt; safely?&lt;br&gt;
👉 How do I &lt;strong&gt;protect against XSS or CSRF&lt;/strong&gt;?&lt;br&gt;
👉 What if the client &lt;strong&gt;actually needs the token&lt;/strong&gt; to work?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's walk through &lt;strong&gt;why this is tricky&lt;/strong&gt;, and how to &lt;strong&gt;design a secure flow&lt;/strong&gt; that balances &lt;strong&gt;usability and security&lt;/strong&gt; — even when the client needs access to the token.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 Why It’s Dangerous: The Frontend is an Unsafe Place
&lt;/h3&gt;

&lt;p&gt;Your browser app (React, Vue, Svelte, etc.) runs in a sandboxed environment… but it’s still &lt;strong&gt;exposed to the DOM, scripts, and user extensions&lt;/strong&gt;. That makes it vulnerable to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧨 &lt;strong&gt;XSS (Cross-Site Scripting)&lt;/strong&gt;: Malicious scripts can steal tokens if they’re stored in &lt;code&gt;localStorage&lt;/code&gt; or &lt;code&gt;sessionStorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;🪝 &lt;strong&gt;CSRF (Cross-Site Request Forgery)&lt;/strong&gt;: If you're using cookies incorrectly, attackers can trick users into making unwanted requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, &lt;strong&gt;you should be very careful&lt;/strong&gt; when storing or exposing tokens on the frontend. But sometimes — &lt;strong&gt;you &lt;em&gt;have&lt;/em&gt; to&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Legit Use Cases Where Client Needs the Token
&lt;/h2&gt;

&lt;p&gt;There &lt;em&gt;are&lt;/em&gt; valid reasons why your frontend app may need direct access to a token:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calling &lt;strong&gt;3rd-party APIs&lt;/strong&gt; (e.g., Stripe, Firebase, or custom backend services)&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;GraphQL clients&lt;/strong&gt; like Apollo that inject tokens into headers&lt;/li&gt;
&lt;li&gt;Managing &lt;strong&gt;mobile apps&lt;/strong&gt; or &lt;strong&gt;Electron apps&lt;/strong&gt; that mimic frontend environments&lt;/li&gt;
&lt;li&gt;Single-page apps (SPAs) where API access is deeply integrated into UI logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, let’s build a secure plan.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 5 Secure Practices for Token-Based Auth on the Frontend
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 🛑 Avoid &lt;code&gt;localStorage&lt;/code&gt; for Sensitive Tokens
&lt;/h3&gt;

&lt;p&gt;It's easy. It's tempting. But it's &lt;strong&gt;not safe&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Not secure&lt;/span&gt;
&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;yourJWT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why not? Because if &lt;strong&gt;any script on your site is compromised&lt;/strong&gt; — even via a small XSS vulnerability — your token is instantly leaked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use localStorage only if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s a &lt;strong&gt;public-access token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The token has &lt;strong&gt;limited access scope&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You’ve fully audited your code for &lt;strong&gt;XSS protection&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Otherwise...&lt;/p&gt;




&lt;h3&gt;
  
  
  2. ✅ Use In-Memory Storage for Access Tokens
&lt;/h3&gt;

&lt;p&gt;Store the token in memory (e.g., in a React context or state variable). This way, it's &lt;strong&gt;never written to disk&lt;/strong&gt; and disappears when the page is refreshed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ✅ Safer: only in memory&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;accessToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&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;login&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;accessToken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetchToken&lt;/span&gt;&lt;span class="p"&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;callAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;Authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not vulnerable to XSS&lt;/li&gt;
&lt;li&gt;Not persistent after refresh (good for security)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You lose the token on refresh. This is where a &lt;strong&gt;refresh token&lt;/strong&gt; helps.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. 🔁 Use HttpOnly Cookies for Refresh Tokens
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Refresh tokens&lt;/strong&gt; are designed to &lt;strong&gt;get new access tokens silently&lt;/strong&gt;. Store the refresh token in an &lt;strong&gt;&lt;code&gt;HttpOnly&lt;/code&gt;, &lt;code&gt;Secure&lt;/code&gt;, &lt;code&gt;SameSite=Strict&lt;/code&gt;&lt;/strong&gt; cookie.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Set-Cookie: refresh_token=abc.def.ghi; HttpOnly; Secure; SameSite=Strict
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;HttpOnly = JS can’t touch it ✅&lt;/li&gt;
&lt;li&gt;Secure = Only sent over HTTPS ✅&lt;/li&gt;
&lt;li&gt;SameSite = Prevents CSRF ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the access token expires, the client can &lt;strong&gt;request a new one via an API route&lt;/strong&gt; that automatically uses the refresh token.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. 📦 Use a Secure Auth Pattern: "Split Token Storage"
&lt;/h3&gt;

&lt;p&gt;Here’s a hybrid approach many modern apps use:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Token Type&lt;/th&gt;
&lt;th&gt;Where to Store&lt;/th&gt;
&lt;th&gt;Lifetime&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Access Token&lt;/td&gt;
&lt;td&gt;Memory only&lt;/td&gt;
&lt;td&gt;Short (5–15 min)&lt;/td&gt;
&lt;td&gt;Sent in headers, manually&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refresh Token&lt;/td&gt;
&lt;td&gt;HttpOnly Cookie&lt;/td&gt;
&lt;td&gt;Long (7–30 days)&lt;/td&gt;
&lt;td&gt;Used by backend to re-issue&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This pattern ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚔️ No tokens are exposed in JavaScript&lt;/li&gt;
&lt;li&gt;🔁 Session can be refreshed silently&lt;/li&gt;
&lt;li&gt;🔐 Access token is never stored on disk&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. 🛡️ Add Extra Layers of Protection
&lt;/h3&gt;

&lt;p&gt;Don’t stop at token handling. Secure your entire stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSP (Content Security Policy):&lt;/strong&gt; Prevent inline scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XSS Protection:&lt;/strong&gt; Sanitize all inputs &amp;amp; templates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Rotation:&lt;/strong&gt; Invalidate and replace old tokens regularly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit Headers:&lt;/strong&gt; Set &lt;code&gt;X-Content-Type-Options&lt;/code&gt;, &lt;code&gt;X-Frame-Options&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scopes &amp;amp; Claims:&lt;/strong&gt; Use role-based access with JWT claims to limit token power&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Real-World Flow Example (React + Express)
&lt;/h2&gt;

&lt;p&gt;Here’s a simplified version:&lt;/p&gt;

&lt;h3&gt;
  
  
  Login Flow:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;User logs in via &lt;code&gt;/api/login&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Backend:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Sends access token → response JSON (short-lived)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sends refresh token → &lt;code&gt;HttpOnly&lt;/code&gt; cookie (long-lived)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Frontend:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stores access token in memory&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Accessing API:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React app sends &lt;code&gt;Authorization: Bearer &amp;lt;access_token&amp;gt;&lt;/code&gt; in headers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Token Expired?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;API returns 401&lt;/li&gt;
&lt;li&gt;Frontend silently requests &lt;code&gt;/api/refresh&lt;/code&gt; (uses &lt;code&gt;HttpOnly&lt;/code&gt; refresh cookie)&lt;/li&gt;
&lt;li&gt;Backend sends a new access token&lt;/li&gt;
&lt;li&gt;App retries the original request&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 TL;DR – Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;❌ Don’t store sensitive tokens in &lt;code&gt;localStorage&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Keep access tokens in memory only&lt;/li&gt;
&lt;li&gt;🍪 Use &lt;code&gt;HttpOnly&lt;/code&gt; cookies for refresh tokens&lt;/li&gt;
&lt;li&gt;♻️ Rotate and expire tokens properly&lt;/li&gt;
&lt;li&gt;🧱 Harden your frontend with CSP and XSS protections&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Yes — sometimes the client &lt;em&gt;needs&lt;/em&gt; the token. But with the right architecture, you can still stay &lt;strong&gt;safe, fast, and scalable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you’re building an SPA or mobile frontend, designing a &lt;strong&gt;robust auth system&lt;/strong&gt; is one of the most valuable skills you can develop as a dev.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>security</category>
    </item>
    <item>
      <title>🛠️ 1 Tool That Feels Like Cheating (but Isn’t) – Meet `tldraw`</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Sat, 21 Jun 2025 15:17:37 +0000</pubDate>
      <link>https://dev.to/00rvn00/1-tool-that-feels-like-cheating-but-isnt-meet-tldraw-31fn</link>
      <guid>https://dev.to/00rvn00/1-tool-that-feels-like-cheating-but-isnt-meet-tldraw-31fn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;✨ A tool so smooth, it feels like magic.&lt;br&gt;
🎨 A whiteboard, a design surface, a collaboration space — all in one.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  😳 “This feels like cheating...”
&lt;/h2&gt;

&lt;p&gt;As a developer or indie maker, how many times have you opened up &lt;strong&gt;Figma&lt;/strong&gt;, &lt;strong&gt;Miro&lt;/strong&gt;, or a basic drawing tool just to sketch out an idea — and immediately felt friction?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Too many buttons.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Too many steps.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Too slow to just... think visually.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s where &lt;a href="https://www.tldraw.com/" rel="noopener noreferrer"&gt;&lt;code&gt;tldraw&lt;/code&gt;&lt;/a&gt; changes everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What is &lt;code&gt;tldraw&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tldraw&lt;/code&gt; is a &lt;strong&gt;free, open-source whiteboard tool&lt;/strong&gt; designed for instant thinking.&lt;br&gt;
But don’t let the word “whiteboard” fool you — it’s so much more.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ What makes it special:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instant use.&lt;/strong&gt; Open the site — no sign-up needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time multiplayer.&lt;/strong&gt; Invite a friend — you both draw live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drag-and-drop UI design.&lt;/strong&gt; Sketch apps, flows, and systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown, shapes, stickies, connectors.&lt;/strong&gt; Perfect for dev planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source.&lt;/strong&gt; Self-host it or build on top.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👨‍💻 How Developers Use It
&lt;/h2&gt;

&lt;p&gt;Here’s how I (and many other devs) use &lt;code&gt;tldraw&lt;/code&gt; every day:&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 1. Thinking Through Features
&lt;/h3&gt;

&lt;p&gt;Before writing code, I’ll sketch out logic or page layouts.&lt;br&gt;
Not pretty — just &lt;em&gt;fast&lt;/em&gt;. I can drag arrows between parts and write notes inline.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's like drawing on glass with my brain plugged in."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🧪 2. Explaining Systems to Others
&lt;/h3&gt;

&lt;p&gt;When a client or team asks, &lt;em&gt;"How does this API flow work?"&lt;/em&gt;&lt;br&gt;
Boom — open &lt;code&gt;tldraw&lt;/code&gt;, diagram it in real time, and everyone gets it.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ 3. Designing Without Getting Stuck
&lt;/h3&gt;

&lt;p&gt;I don’t want Figma layers or design tokens. I just want to explore.&lt;br&gt;
&lt;code&gt;tldraw&lt;/code&gt; helps me stay in &lt;strong&gt;build mode&lt;/strong&gt; without switching to &lt;strong&gt;pixel-perfect mode&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 Bonus Power: Self-Hosting
&lt;/h2&gt;

&lt;p&gt;Want to use &lt;code&gt;tldraw&lt;/code&gt; for your startup? You can &lt;strong&gt;fork it on GitHub&lt;/strong&gt; and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrate it into your product&lt;/li&gt;
&lt;li&gt;Add custom elements&lt;/li&gt;
&lt;li&gt;Save/load diagrams in your app&lt;/li&gt;
&lt;li&gt;Use it as a &lt;strong&gt;collaborative playground&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub repo → &lt;a href="https://github.com/tldraw/tldraw" rel="noopener noreferrer"&gt;https://github.com/tldraw/tldraw&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  😌 Why It Feels Like Cheating
&lt;/h2&gt;

&lt;p&gt;It’s not just fast — it’s &lt;strong&gt;freeing&lt;/strong&gt;.&lt;br&gt;
You go from idea → diagram → shared understanding in &lt;strong&gt;seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don’t need to &lt;em&gt;think about the tool&lt;/em&gt;.&lt;br&gt;
You just &lt;em&gt;think&lt;/em&gt; — and the tool follows.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Good tools disappear.&lt;br&gt;
Great tools &lt;em&gt;feel like superpowers&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;tldraw&lt;/code&gt; is one of those. Try it once — and you'll start using it every day.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tldraw</category>
      <category>design</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🧠 You're Trusting `localStorage`… You Shouldn’t 😬</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Fri, 20 Jun 2025 09:15:00 +0000</pubDate>
      <link>https://dev.to/00rvn00/youre-trusting-localstorage-you-shouldnt-26g3</link>
      <guid>https://dev.to/00rvn00/youre-trusting-localstorage-you-shouldnt-26g3</guid>
      <description>&lt;p&gt;We’ve all done it.&lt;br&gt;
Quick login logic. JWT or token in hand.&lt;br&gt;
&lt;code&gt;localStorage.setItem("token", yourToken)&lt;/code&gt; — boom, done. Feels safe. Feels clean. Feels… &lt;em&gt;modern&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;But here’s the hard truth:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Anything in &lt;code&gt;localStorage&lt;/code&gt; is accessible to &lt;em&gt;any&lt;/em&gt; script on the page — malicious or not.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn’t a nitpick. This is a &lt;strong&gt;real attack vector&lt;/strong&gt; you may have just handed over to a rogue third-party script, a careless plugin, or even a compromised CDN. Let's break this down.&lt;/p&gt;


&lt;h2&gt;
  
  
  🚨 The False Sense of Security
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;localStorage&lt;/code&gt; is often mistaken for a secure place to keep sensitive data like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT access tokens&lt;/li&gt;
&lt;li&gt;User credentials&lt;/li&gt;
&lt;li&gt;Refresh tokens&lt;/li&gt;
&lt;li&gt;Session states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s fast, persistent, and easy to use — but it’s also &lt;strong&gt;entirely exposed to the browser’s JavaScript environment&lt;/strong&gt;. That means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; 
&lt;span class="c1"&gt;// returns your secret like candy from a vending machine&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now imagine this line existing inside a third-party script you included — maybe an analytics tool, a chat widget, or a library you forgot to audit.&lt;br&gt;
If it can run, it can &lt;strong&gt;read&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 Let’s Visualize It
&lt;/h2&gt;

&lt;p&gt;Let’s say your login flow stores a JWT:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;accessToken&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let’s say a malicious script runs on the same domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stolen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;accessToken&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;sendToHacker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stolen&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. No hacking tools needed.&lt;br&gt;
Just the same access your app has — but used &lt;em&gt;against&lt;/em&gt; you.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔐 The Safer Alternative: &lt;code&gt;httpOnly&lt;/code&gt; Secure Cookies
&lt;/h2&gt;

&lt;p&gt;If you're storing sensitive auth tokens on the client, the right move is often to:&lt;/p&gt;

&lt;p&gt;✅ Store them in &lt;strong&gt;cookies&lt;/strong&gt;&lt;br&gt;
✅ Mark them as &lt;code&gt;httpOnly&lt;/code&gt;&lt;br&gt;
✅ Mark them as &lt;code&gt;secure&lt;/code&gt; and &lt;code&gt;SameSite=Strict&lt;/code&gt; when appropriate&lt;/p&gt;

&lt;p&gt;Here’s why this works:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Can JS Access It?&lt;/th&gt;
&lt;th&gt;Sent Automatically with Requests?&lt;/th&gt;
&lt;th&gt;Ideal For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;localStorage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Non-sensitive app state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;httpOnly&lt;/code&gt; Cookie&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Auth/session tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A typical Express.js or backend setup would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;accessToken&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;httpOnly&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;secure&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sameSite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Strict&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// or "Lax" depending on your use case&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that cookie is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sent &lt;em&gt;only&lt;/em&gt; to your server&lt;/li&gt;
&lt;li&gt;Inaccessible from JavaScript&lt;/li&gt;
&lt;li&gt;Protected from XSS-based token theft&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤯 Common Objection: “But I Need It in JS!”
&lt;/h2&gt;

&lt;p&gt;Sometimes devs say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I use my token in frontend API calls, so I need to read it in JavaScript."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But if you &lt;strong&gt;must&lt;/strong&gt; access your token in the client, at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never persist it beyond the session (&lt;code&gt;sessionStorage&lt;/code&gt; &amp;gt; &lt;code&gt;localStorage&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Consider encrypted IndexedDB + user-specific key&lt;/li&gt;
&lt;li&gt;Store minimal privilege tokens client-side&lt;/li&gt;
&lt;li&gt;Protect the token lifecycle with refresh tokens that are &lt;em&gt;httpOnly&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still, the ideal solution for most use cases is to &lt;strong&gt;design your API and frontend so that auth happens via &lt;code&gt;httpOnly&lt;/code&gt; cookies&lt;/strong&gt;, with CSRF protection in place.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Bonus Tip: Use Subresource Integrity (SRI)
&lt;/h2&gt;

&lt;p&gt;If you include third-party scripts from CDNs, always use &lt;strong&gt;Subresource Integrity (SRI)&lt;/strong&gt; hashes:&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;src=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.example.com/library.js"&lt;/span&gt;
        &lt;span class="na"&gt;integrity=&lt;/span&gt;&lt;span class="s"&gt;"sha384-abc123..."&lt;/span&gt;
        &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures the script hasn’t been tampered with.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ TL;DR — Fix the Front Too
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;🔓 &lt;code&gt;localStorage&lt;/code&gt; is like a safe with no lock — &lt;strong&gt;anyone with JavaScript access can peek in.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Instead:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🛡 Store sensitive data in &lt;strong&gt;&lt;code&gt;httpOnly&lt;/code&gt; cookies&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔒 Use &lt;code&gt;secure&lt;/code&gt; and &lt;code&gt;SameSite&lt;/code&gt; flags&lt;/li&gt;
&lt;li&gt;🚫 Keep tokens out of the JS runtime if possible&lt;/li&gt;
&lt;li&gt;🎯 Be intentional with what your frontend &lt;em&gt;really&lt;/em&gt; needs to know&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎬 Watch It as a Short (Cinematic Edition)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;I broke this down into a powerful 11-second dev short — no fluff, just clarity.&lt;br&gt;
🎥 Check it out on [YouTube Shorts / TikTok] — or search for:&lt;br&gt;
&lt;strong&gt;"You’re Trusting localStorage... You Shouldn’t 😬"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Thanks for reading!&lt;br&gt;
If this saved your app from a silent data leak, share it with a dev who needs it.&lt;br&gt;
Security isn’t just backend business — &lt;strong&gt;the frontend is your first line of defense.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👋 Follow me for more dev shorts, breakdowns, and modern web tactics.&lt;br&gt;
Let’s write safer, smarter code — one line at a time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>⚡ Make Your App *Feel* Instant with One Line: `requestIdleCallback()</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Thu, 19 Jun 2025 09:19:42 +0000</pubDate>
      <link>https://dev.to/00rvn00/make-your-app-feel-instant-with-one-line-requestidlecallback-42cl</link>
      <guid>https://dev.to/00rvn00/make-your-app-feel-instant-with-one-line-requestidlecallback-42cl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ever feel like your app should be fast…&lt;br&gt;
But somehow still feels &lt;strong&gt;heavy&lt;/strong&gt;?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes, the slowdown isn’t about &lt;em&gt;what&lt;/em&gt; you're doing —&lt;br&gt;
It’s &lt;em&gt;when&lt;/em&gt; you're doing it.&lt;/p&gt;

&lt;p&gt;Let’s fix that with a tiny but powerful native tool:&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 What Is &lt;code&gt;requestIdleCallback()&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;requestIdleCallback()&lt;/code&gt; lets the browser delay a task &lt;strong&gt;until the main thread is free&lt;/strong&gt;.&lt;br&gt;
That means it only runs &lt;strong&gt;when the user isn’t actively interacting&lt;/strong&gt; — like between frames, or during idle time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Translation?&lt;br&gt;
Less jank. Happier users. Faster feel.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  ❌ The Problem: Too Much Work During Render
&lt;/h2&gt;

&lt;p&gt;Imagine you’re doing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;cleanupDOM&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nf"&gt;trackAnalytics&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nf"&gt;recalculatePositions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If this happens &lt;strong&gt;immediately after user interaction&lt;/strong&gt;, the browser is forced to do &lt;em&gt;everything now&lt;/em&gt;, which can delay animations, clicks, or even typing.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ The Fix: Let the Browser Decide
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;requestIdleCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;cleanupDOM&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 that non-urgent cleanup happens &lt;strong&gt;only when it won’t block the UI&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Bonus: It’s Natively Supported (and Polyfillable)
&lt;/h3&gt;

&lt;p&gt;It works in modern browsers, and for older ones, you can polyfill with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;requestIdleCallback&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;requestIdleCallback&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
  &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;handler&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="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;timeRemaining&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 Real Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;onUserAction&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;updateUI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nf"&gt;clearOldDOMNodes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// slow!&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  After:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;onUserAction&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;updateUI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nf"&gt;requestIdleCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;clearOldDOMNodes&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;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster initial reaction&lt;/li&gt;
&lt;li&gt;Less layout shift&lt;/li&gt;
&lt;li&gt;Happier dev AND user ✨&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔍 When to Use It
&lt;/h2&gt;

&lt;p&gt;✅ For non-critical UI cleanup&lt;br&gt;
✅ For off-screen DOM removal&lt;br&gt;
✅ For logging, tracking, deferred loading&lt;br&gt;
✅ Anytime your code &lt;em&gt;can wait a little&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;🛑 Don’t use it for things the user is expecting &lt;em&gt;right now&lt;/em&gt;, like validation or transitions.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Why It Feels So Good
&lt;/h2&gt;

&lt;p&gt;Sometimes the &lt;strong&gt;tiniest changes&lt;/strong&gt; give the &lt;strong&gt;biggest satisfaction&lt;/strong&gt;.&lt;br&gt;
This one-liner gives your app the &lt;strong&gt;illusion of instant speed&lt;/strong&gt;, without a full rewrite or new library.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s not cheating.&lt;br&gt;
It’s &lt;em&gt;smart dev timing&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🛠️ TL;DR
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;requestIdleCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// run non-blocking, non-urgent code here&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Boosts perceived speed&lt;br&gt;
✅ Super lightweight&lt;br&gt;
✅ Native and modern&lt;br&gt;
✅ Satisfying to use 😌&lt;/p&gt;




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

&lt;p&gt;Ever used &lt;code&gt;requestIdleCallback()&lt;/code&gt; in production?&lt;br&gt;
Or have a favorite micro-performance trick of your own?&lt;/p&gt;

&lt;p&gt;Drop it in the comments — your tip might save someone’s day ⚡&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🧠 You Fixed the Bug… So Why Do You Feel Nothing?</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Wed, 18 Jun 2025 08:40:47 +0000</pubDate>
      <link>https://dev.to/00rvn00/you-fixed-the-bug-so-why-do-you-feel-nothing-mop</link>
      <guid>https://dev.to/00rvn00/you-fixed-the-bug-so-why-do-you-feel-nothing-mop</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“✅ Build successful.”&lt;br&gt;
And yet…&lt;br&gt;
You just stare. No smile. No joy.&lt;br&gt;
Just... emptiness.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🐞 The Bug Was Brutal
&lt;/h2&gt;

&lt;p&gt;You spent &lt;strong&gt;3 hours&lt;/strong&gt; chasing a shadow.&lt;br&gt;
Nested callbacks, forgotten state, invisible mutation… maybe all of it.&lt;/p&gt;

&lt;p&gt;You went deep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stepped through debugger like a surgeon&lt;/li&gt;
&lt;li&gt;Added and removed a hundred &lt;code&gt;console.log&lt;/code&gt;s&lt;/li&gt;
&lt;li&gt;Rewrote part of the logic tree&lt;/li&gt;
&lt;li&gt;Gave up twice&lt;/li&gt;
&lt;li&gt;Came back once more — and found it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then…&lt;br&gt;
&lt;strong&gt;It worked.&lt;/strong&gt;&lt;br&gt;
But you didn’t cheer.&lt;/p&gt;


&lt;h2&gt;
  
  
  🥀 Why Devs Feel Nothing After Wins
&lt;/h2&gt;

&lt;p&gt;You’re not alone. Many developers report this strange, &lt;strong&gt;hollow feeling&lt;/strong&gt; after solving hard problems.&lt;/p&gt;
&lt;h3&gt;
  
  
  A few real reasons why:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;Mental fatigue.&lt;/strong&gt; You &lt;em&gt;burned your fuel&lt;/em&gt; getting here.&lt;/li&gt;
&lt;li&gt;🕳️ &lt;strong&gt;No feedback loop.&lt;/strong&gt; No one saw how deep the rabbit hole went.&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Next-ticket syndrome.&lt;/strong&gt; You’re already thinking about what’s next.&lt;/li&gt;
&lt;li&gt;😞 &lt;strong&gt;Inner critic.&lt;/strong&gt; You blame yourself for not solving it faster.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We don’t celebrate because we’re conditioned to &lt;strong&gt;move forward&lt;/strong&gt; — not pause.&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 Tiny Wins Deserve Big Respect
&lt;/h2&gt;

&lt;p&gt;Fixing a bug is &lt;strong&gt;not just fixing code&lt;/strong&gt;.&lt;br&gt;
It’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clarifying chaos&lt;/li&gt;
&lt;li&gt;Untangling logic&lt;/li&gt;
&lt;li&gt;Communicating with your past self (and future bugs)&lt;/li&gt;
&lt;li&gt;Recovering a broken part of something &lt;em&gt;you care about&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s not “just fixing.”&lt;br&gt;
That’s &lt;em&gt;healing&lt;/em&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🌱 Action: Make Space to Feel Proud
&lt;/h2&gt;

&lt;p&gt;Here’s what helps — really:&lt;/p&gt;
&lt;h3&gt;
  
  
  ✅ 1. Take 60 seconds to reflect
&lt;/h3&gt;

&lt;p&gt;Literally just pause and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That was tricky. I stuck with it. I didn’t quit.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It rewires your brain to &lt;em&gt;recognize effort&lt;/em&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  ✅ 2. Write it down (just for you)
&lt;/h3&gt;

&lt;p&gt;Create a &lt;strong&gt;“Bug Graveyard”&lt;/strong&gt; file or journal.&lt;br&gt;
Every time you fix something painful, log it like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;### 🐛 2025-06-13 — Broken Auth Redirect&lt;/span&gt;
Took 2 hours.  
Problem: wrong env var in Next.js edge middleware  
Fix: moved logic to server + added fallback  
Lesson: always test redirects from production flow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These become powerful &lt;strong&gt;proofs of progress&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ 3. Share quietly — or loudly
&lt;/h3&gt;

&lt;p&gt;Post it in your dev Slack.&lt;br&gt;
Tweet: “Spent 4 hours on a dumb bug. Fixed it. I am invincible.”&lt;br&gt;
Or just say to yourself: &lt;em&gt;“Good job, me.”&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ❤️ Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Not every victory comes with applause.&lt;br&gt;
But every victory &lt;strong&gt;matters&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next time you fix something hard — and you don’t feel anything — remember this:&lt;/p&gt;

&lt;p&gt;🎯 &lt;strong&gt;You did it.&lt;/strong&gt;&lt;br&gt;
🎯 &lt;strong&gt;You mattered in that moment.&lt;/strong&gt;&lt;br&gt;
🎯 &lt;strong&gt;Be proud.&lt;/strong&gt; Even if it's just you who knows.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;💬 Let’s Normalize Silent Wins.&lt;/strong&gt;&lt;br&gt;
Ever felt this before?&lt;br&gt;
Drop your story in the comments — someone else probably needs to hear it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🧠 You Fixed It… and No One Saw 😶</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Tue, 17 Jun 2025 04:40:18 +0000</pubDate>
      <link>https://dev.to/00rvn00/you-fixed-it-and-no-one-saw-2bim</link>
      <guid>https://dev.to/00rvn00/you-fixed-it-and-no-one-saw-2bim</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Debugging is one of the hardest — and most invisible — skills in tech.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🐞 The Bug No One Could Solve…
&lt;/h2&gt;

&lt;p&gt;There’s a special kind of silence in dev life:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The logs are messy.&lt;/li&gt;
&lt;li&gt;The bug is buried layers deep.&lt;/li&gt;
&lt;li&gt;Everyone tried — and gave up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But then &lt;strong&gt;you&lt;/strong&gt; sit down.&lt;br&gt;
No big speeches. No help. Just you, the console, and your mind in &lt;em&gt;deep focus&lt;/em&gt; mode.&lt;/p&gt;

&lt;p&gt;You trace it. Test it. Hunt it. Break it.&lt;br&gt;
And finally… fix it.&lt;br&gt;
No big reaction. Just one clean &lt;strong&gt;test pass ✅&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No one saw the chaos.&lt;br&gt;
No one will ever know what it took.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And yet… you know.&lt;br&gt;
And that’s enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 What Debugging Really Looks Like
&lt;/h2&gt;

&lt;p&gt;Debugging isn’t glamorous — but it’s the &lt;strong&gt;real heart&lt;/strong&gt; of software development.&lt;/p&gt;

&lt;p&gt;It’s not about adding features. It’s not shipping new pages.&lt;br&gt;
It’s about solving a system that &lt;strong&gt;no longer plays by the rules&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real examples:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔄 A memory leak caused by a closure inside a &lt;code&gt;setInterval&lt;/code&gt; — took 4 hours to find&lt;/li&gt;
&lt;li&gt;🧵 Race conditions inside async queue logic — passed tests but failed randomly
*⚠️ Production crash caused by a hidden circular import — only in serverless builds&lt;/li&gt;
&lt;li&gt;🐛 A styling bug that only happened in Safari 15.1 (yes, that specific)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren’t stories people tell on stage.&lt;br&gt;
They’re the &lt;strong&gt;ghost fights&lt;/strong&gt; — invisible wins that keep the system running.&lt;/p&gt;




&lt;h2&gt;
  
  
  👁️ Debugging = Invisible Mastery
&lt;/h2&gt;

&lt;p&gt;Most people think debugging is just “fixing what’s broken.”&lt;br&gt;
But real debugging means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding code you didn’t write&lt;/li&gt;
&lt;li&gt;Recognizing symptoms and tracing back to root cause&lt;/li&gt;
&lt;li&gt;Reading logs like they’re &lt;strong&gt;mystery novels&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Knowing when to &lt;code&gt;console.log&lt;/code&gt;, and when to &lt;strong&gt;pause and think&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s problem-solving at a &lt;strong&gt;deep level&lt;/strong&gt;.&lt;br&gt;
Not flashy. But real.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💬 No One Applauds Debuggers
&lt;/h2&gt;

&lt;p&gt;When you add a feature, the UI changes.&lt;br&gt;
When you deploy a fix… everything &lt;em&gt;looks the same&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And yet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app is stable&lt;/li&gt;
&lt;li&gt;The team moves faster&lt;/li&gt;
&lt;li&gt;The customer never sees the crash&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Debuggers are the silent protectors of every codebase.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 For the Devs in the Shadows
&lt;/h2&gt;

&lt;p&gt;If you’ve ever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solved a bug that no one could reproduce&lt;/li&gt;
&lt;li&gt;Cleaned up code that was never documented&lt;/li&gt;
&lt;li&gt;Fixed something you couldn’t even explain in words…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post is for you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You won’t get applause.&lt;br&gt;
You won’t trend.&lt;br&gt;
But you’ll sleep better — because &lt;strong&gt;you know what you did.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧘 Final Thought
&lt;/h2&gt;

&lt;p&gt;Writing code is exciting.&lt;br&gt;
But &lt;strong&gt;fixing code&lt;/strong&gt; — that’s wisdom.&lt;/p&gt;

&lt;p&gt;So next time you solve a bug and no one sees it?&lt;/p&gt;

&lt;p&gt;Pause.&lt;br&gt;
Take a breath.&lt;br&gt;
And remind yourself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That’s dev life.&lt;br&gt;
Silent wins. Quiet mastery. 🧠&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>🧠 You Showed Up… Even With Nothing Left</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Mon, 16 Jun 2025 07:33:45 +0000</pubDate>
      <link>https://dev.to/00rvn00/you-showed-up-even-with-nothing-left-906</link>
      <guid>https://dev.to/00rvn00/you-showed-up-even-with-nothing-left-906</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;✨ “That’s not weakness.&lt;br&gt;
That’s discipline. That’s you.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You didn’t want to open the editor today.&lt;br&gt;
Your brain said &lt;em&gt;“rest.”&lt;/em&gt;&lt;br&gt;
Your body said &lt;em&gt;“quit.”&lt;/em&gt;&lt;br&gt;
But your instinct whispered:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just one more line. Just one more try.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And somehow…&lt;br&gt;
You showed up.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧱 Dev Grit: What They Don’t Teach You
&lt;/h2&gt;

&lt;p&gt;You can learn all the syntax in the world,&lt;br&gt;
Master every framework,&lt;br&gt;
Write perfect functions.&lt;/p&gt;

&lt;p&gt;But nobody teaches you this:&lt;br&gt;
&lt;strong&gt;Some days, the real challenge is opening the IDE.&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  ⚠️ Signs You’re &lt;em&gt;There&lt;/em&gt; Right Now:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You reread the same line 5 times, nothing sticks&lt;/li&gt;
&lt;li&gt;You feel “guilty” for resting, but too drained to code&lt;/li&gt;
&lt;li&gt;You’re doing 2 hours of work in 6&lt;/li&gt;
&lt;li&gt;You push one small commit — and it feels like a marathon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;p&gt;You’re not lazy. You’re &lt;strong&gt;mentally exhausted&lt;/strong&gt;.&lt;br&gt;
And yet... you’re still here. That matters.&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 The Science: Willpower, Dopamine, and Burnout
&lt;/h2&gt;

&lt;p&gt;🔬 Studies show that &lt;strong&gt;cognitive fatigue&lt;/strong&gt; doesn’t always mean your brain is out of power — it means your &lt;strong&gt;reward system is out of fuel.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You're pushing through without dopamine.&lt;br&gt;
Without the "why."&lt;br&gt;
Without applause.&lt;/p&gt;

&lt;p&gt;That's not weakness.&lt;br&gt;
That's &lt;strong&gt;internal discipline&lt;/strong&gt;.&lt;br&gt;
That's you showing up &lt;strong&gt;even when it’s invisible&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🎯 One Commit = 100% Today
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just one commit”&lt;br&gt;
“Just fix the spacing”&lt;br&gt;
“Just finish the test case”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These tiny actions might look like nothing.&lt;br&gt;
But they’re actually &lt;strong&gt;mental resistance reps&lt;/strong&gt; — the kind that make you anti-fragile.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 What To Do When You Feel Like This
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. &lt;strong&gt;Set a “low bar” win&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Give yourself &lt;strong&gt;permission&lt;/strong&gt; to do less:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One bug fix&lt;/li&gt;
&lt;li&gt;Refactor one line&lt;/li&gt;
&lt;li&gt;Rename one variable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small progress &amp;gt; no progress.&lt;/p&gt;


&lt;h3&gt;
  
  
  2. &lt;strong&gt;Honor the energy cost&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After you commit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎉 Celebrate&lt;br&gt;
💧 Rest&lt;br&gt;
💤 Walk away&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You don’t need to “make up for lost time.”&lt;br&gt;
You &lt;strong&gt;earned the pause.&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  3. &lt;strong&gt;Track your “showed up” days&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Start a log like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;📅 2025-06-13 — Showed up
🧠 Burned out. But opened VS Code. Fixed tiny bug.  
Not much… but I didn’t ghost myself.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Over time, you’ll see your &lt;strong&gt;true consistency&lt;/strong&gt; — not just outputs, but &lt;em&gt;persistence&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❤️ Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You showed up today.&lt;br&gt;
Even with brain fog. Even with nothing left.&lt;br&gt;
That’s not failure. That’s &lt;em&gt;grit.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Keep showing up — not perfectly, but honestly.&lt;br&gt;
You’re building something bigger than code.&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 Have You Had These Days?
&lt;/h3&gt;

&lt;p&gt;Drop a comment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What keeps you going on the hard days?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's talk about &lt;strong&gt;real dev life&lt;/strong&gt; — not just the highlight reels.&lt;br&gt;
You’re not alone. You’re one of us.&lt;/p&gt;

</description>
      <category>developerthoughts</category>
      <category>techcommunity</category>
      <category>realtalkintech</category>
      <category>codingjourney</category>
    </item>
    <item>
      <title>💭 “You Were Never Lazy…” — A Quiet Truth for Burnt-Out Devs</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Sun, 15 Jun 2025 05:45:47 +0000</pubDate>
      <link>https://dev.to/00rvn00/you-were-never-lazy-a-quiet-truth-for-burnt-out-devs-4ojh</link>
      <guid>https://dev.to/00rvn00/you-were-never-lazy-a-quiet-truth-for-burnt-out-devs-4ojh</guid>
      <description>&lt;h1&gt;
  
  
  💭 “You Were Never Lazy…” — A Quiet Truth for Burnt-Out Devs
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;🤯 What if your problem was never laziness…&lt;br&gt;
What if you were just trying to scale alone?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  😓 Burnout ≠ Laziness
&lt;/h2&gt;

&lt;p&gt;We’ve all been there.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You open your editor — and just stare.&lt;/li&gt;
&lt;li&gt;A bug from yesterday still lingers.&lt;/li&gt;
&lt;li&gt;You’ve been pushing late nights, endless context-switching, and shipping under pressure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And when your mind and body finally say &lt;strong&gt;“no more”&lt;/strong&gt;, you don’t feel tired.&lt;br&gt;
You feel &lt;strong&gt;lazy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But here’s the truth:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You weren’t lazy.&lt;/strong&gt;&lt;br&gt;
You were &lt;em&gt;exhausted from solving everything alone.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🧠 Even Code Doesn’t Work Alone
&lt;/h2&gt;

&lt;p&gt;Here’s the kicker: even the most basic code functions don’t run in isolation.&lt;/p&gt;

&lt;p&gt;Think about &lt;code&gt;.map()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// → [2, 4, 6]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It &lt;em&gt;asks for help&lt;/em&gt; — from a function you give it.&lt;br&gt;
It scales its effort by &lt;em&gt;delegating&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That’s how most of code works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frameworks abstract&lt;/strong&gt; the hard stuff&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Helpers reduce repetition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaboration makes ideas real faster&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So… why do we expect &lt;em&gt;ourselves&lt;/em&gt; to work alone 24/7?&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 The Hidden Cost of Solo Mode
&lt;/h2&gt;

&lt;p&gt;Being a dev often means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wearing multiple hats (frontend/backend/devops/docs/client support…)&lt;/li&gt;
&lt;li&gt;Learning while building&lt;/li&gt;
&lt;li&gt;Debugging alone at 2:43 AM&lt;/li&gt;
&lt;li&gt;Saying “I got it” when you don’t&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This “solo hero” mindset creates guilt when we stop —&lt;br&gt;
But that guilt isn’t productive. It’s corrosive.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Because if we confuse &lt;strong&gt;burnout&lt;/strong&gt; for &lt;strong&gt;personal failure&lt;/strong&gt;,&lt;br&gt;
we’ll keep pushing until we &lt;em&gt;break.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💬 What Help &lt;em&gt;Actually&lt;/em&gt; Looks Like
&lt;/h2&gt;

&lt;p&gt;Asking for help doesn’t mean you’re incapable.&lt;br&gt;
It means you’re building &lt;strong&gt;like a dev&lt;/strong&gt; — efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-world examples:
&lt;/h3&gt;

&lt;p&gt;✅ You ask a teammate to pair-program for 20 minutes&lt;br&gt;
✅ You check Stack Overflow instead of brute-forcing&lt;br&gt;
✅ You use &lt;code&gt;useEffect&lt;/code&gt; with a custom hook someone already made&lt;br&gt;
✅ You say, “I don’t know yet, let me ask the team”&lt;/p&gt;

&lt;p&gt;These aren’t weaknesses. They’re strategies.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s not cheating.&lt;br&gt;
It’s scaling.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧘 Final Thought: Grace for Your Developer Self
&lt;/h2&gt;

&lt;p&gt;If your brain is foggy, if your body’s done,&lt;br&gt;
it’s not because you “don’t want it enough.”&lt;/p&gt;

&lt;p&gt;You’ve just reached a limit — and limits are data.&lt;/p&gt;

&lt;p&gt;So pause.&lt;br&gt;
Ask.&lt;br&gt;
Lean on the system.&lt;/p&gt;

&lt;p&gt;Because the moment you ask for help isn’t when you &lt;em&gt;fail&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s when you &lt;em&gt;start scaling.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🧠💬 &lt;em&gt;Have you felt this kind of burnout before? How did you bounce back — or are you still in it? Let’s talk in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>developerlife</category>
      <category>burnoutrecovery</category>
      <category>youarenotlazy</category>
      <category>devmentalhealth</category>
    </item>
    <item>
      <title>🚀 17 and Full-Stack: My Dev Journey So Far</title>
      <dc:creator>Rvn</dc:creator>
      <pubDate>Mon, 09 Jun 2025 14:48:27 +0000</pubDate>
      <link>https://dev.to/00rvn00/17-and-full-stack-my-dev-journey-so-far-1499</link>
      <guid>https://dev.to/00rvn00/17-and-full-stack-my-dev-journey-so-far-1499</guid>
      <description>&lt;p&gt;Hey dev.to 👋&lt;br&gt;
I'm &lt;strong&gt;Ravan&lt;/strong&gt;, a 17-year-old full-stack developer who's been deep in code for the past 10 months.&lt;/p&gt;

&lt;p&gt;Since I started, I’ve spent over &lt;strong&gt;3000 hours&lt;/strong&gt; learning, building, and breaking things on purpose — just to understand how they work. I’ve written over &lt;strong&gt;100,000 lines of code&lt;/strong&gt;, mostly across full-stack projects.&lt;/p&gt;

&lt;p&gt;My main stack:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vue&lt;/strong&gt;, &lt;strong&gt;JavaScript&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt;, &lt;strong&gt;Node.js&lt;/strong&gt;, and sometimes Python, Java, or raw HTML/CSS when needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I care a lot about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 Writing clean, maintainable code&lt;/li&gt;
&lt;li&gt;🛠️ Building scalable backend architectures&lt;/li&gt;
&lt;li&gt;🔍 Debugging smarter, not harder&lt;/li&gt;
&lt;li&gt;💡 Turning ideas into real, working systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Outside of coding, I enjoy thinking about strategy, leadership, and systems — stuff I believe overlaps with building good software.&lt;/p&gt;

&lt;p&gt;I'll be sharing things I learn here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dev experiments&lt;/li&gt;
&lt;li&gt;Coding techniques I find useful&lt;/li&gt;
&lt;li&gt;Thoughts on mindset and growth as a young dev&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m still early in my journey, but I’m moving fast — and I’m here to learn and contribute along the way.&lt;/p&gt;

&lt;p&gt;Let’s connect ⚡&lt;br&gt;
Feel free to share what you’re working on or learning right now 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
