<?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: Vinayak</title>
    <description>The latest articles on DEV Community by Vinayak (@vinayakisme).</description>
    <link>https://dev.to/vinayakisme</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%2F1171619%2F620a73f5-d85c-4aa1-9805-d36b1a3bd84c.jpg</url>
      <title>DEV Community: Vinayak</title>
      <link>https://dev.to/vinayakisme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vinayakisme"/>
    <language>en</language>
    <item>
      <title>I’m 22 and I’m lost…</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Fri, 04 Jul 2025 02:57:26 +0000</pubDate>
      <link>https://dev.to/vinayakisme/im-22-and-im-lost-5foe</link>
      <guid>https://dev.to/vinayakisme/im-22-and-im-lost-5foe</guid>
      <description>&lt;p&gt;Hey there. This is a life update blog.&lt;/p&gt;

&lt;p&gt;Well, actually… It’s more of an existential crisis blog.&lt;/p&gt;

&lt;p&gt;It’s 7 AM while I’m writing this. It’s raining outside.&lt;/p&gt;

&lt;p&gt;I’ve been sitting here since 5 AM. No, I’m not a morning person.&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%2Fw041k92okrvtz4t16971.gif" 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%2Fw041k92okrvtz4t16971.gif" alt="rain gif" width="460" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I woke up early because… well, everyone says that’s the least you can do to change your life.&lt;/p&gt;

&lt;p&gt;And honestly? I agree. It’s kinda wonderful.&lt;/p&gt;

&lt;p&gt;Being up before everyone else, finishing your high-leverage tasks before breakfast??&lt;/p&gt;

&lt;p&gt;(amazing)&lt;/p&gt;

&lt;p&gt;Except….. I don’t know what the hell I’m actually supposed to do.&lt;/p&gt;

&lt;p&gt;Ok, let me start “from the start”.&lt;/p&gt;

&lt;p&gt;It’s “2019”.&lt;/p&gt;

&lt;p&gt;I am looking at my exceptional 10th-grade results.&lt;/p&gt;

&lt;p&gt;Everyone’s congratulating me, everybody’s happy, except me.&lt;/p&gt;

&lt;p&gt;Don’t get me wrong, I was proud.&lt;/p&gt;

&lt;p&gt;I knew how hard I’d worked for it.&lt;/p&gt;

&lt;p&gt;But deep down? I felt empty.&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%2F2hjutb1mdlf8bfl8oiid.jpg" 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%2F2hjutb1mdlf8bfl8oiid.jpg" alt="feeling lost" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 years of buildup, of “ Your life will change after this”. And all I had to show for, was this piece of paper.&lt;/p&gt;

&lt;p&gt;I remember thinking:&lt;/p&gt;

&lt;p&gt;“I don’t want to do this anymore. I want to create something.&lt;/p&gt;

&lt;p&gt;Something stupid,&lt;/p&gt;

&lt;p&gt;Something fun,&lt;/p&gt;

&lt;p&gt;Something mine.”&lt;/p&gt;

&lt;p&gt;Something like that WWE parody video I made with my friends last year.&lt;/p&gt;

&lt;p&gt;People thought it was dumb… and fun.&lt;/p&gt;

&lt;p&gt;And I loved every second of it.&lt;/p&gt;

&lt;p&gt;Something that I could look back on and cringe at… and still be proud of.&lt;/p&gt;

&lt;p&gt;Fast forward, I was obsessed with gaming,&lt;/p&gt;

&lt;p&gt;So I started making Let’s Play videos. But my PC could barely run games, let alone record them.&lt;/p&gt;

&lt;p&gt;The frame rates would be down in the gutter.&lt;/p&gt;

&lt;p&gt;Still, I pushed out some 40 videos. Uploaded them on YouTube.&lt;/p&gt;

&lt;p&gt;Guess how many total views they got?&lt;/p&gt;

&lt;p&gt;Probably not more than 40.&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%2Fzza0dvk06yvdjb49f4ho.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%2Fzza0dvk06yvdjb49f4ho.png" alt="yt dashboard" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So… I quit.&lt;/p&gt;

&lt;p&gt;And then, around the same time, a friend introduced me to anime.&lt;/p&gt;

&lt;p&gt;…and it led to a moment that literally changed my life, over something as dumb as a waifu debate.&lt;/p&gt;

&lt;p&gt;yep&lt;/p&gt;

&lt;p&gt;Me, and two of my friends were arguing about the best girls, like the true cultured men we were!&lt;/p&gt;

&lt;p&gt;To prove my pick was superior, I said, “I’ll make an AMV about her.”&lt;/p&gt;

&lt;p&gt;Now…. I barely knew editing.&lt;/p&gt;

&lt;p&gt;Just trim…. copy…… and render…..&lt;/p&gt;

&lt;p&gt;But I said it. So now I have to deliver,&lt;/p&gt;

&lt;p&gt;For her honor. And mine.&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%2F45l88u097w1ycwc57p5d.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%2F45l88u097w1ycwc57p5d.png" alt="askeladd serious" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I searched “how to edit AMVs” on YouTube, and this 2-hour-long tutorial popped up.&lt;/p&gt;

&lt;p&gt;It took me 2 days to finish it and make the video.&lt;/p&gt;

&lt;p&gt;But man… I was so proud of it.&lt;/p&gt;

&lt;p&gt;I created an Instagram account on the spot, posted it there,&lt;/p&gt;

&lt;p&gt;shared it on YouTube,&lt;/p&gt;

&lt;p&gt;showed it to my friends,&lt;/p&gt;

&lt;p&gt;and even emailed the tutorial creator for feedback!!&lt;/p&gt;

&lt;p&gt;I was hooked.&lt;/p&gt;

&lt;p&gt;Ideas started flooding in like crazy.&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%2F09n68urgfon5u812u2lk.gif" 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%2F09n68urgfon5u812u2lk.gif" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And for the next 3–4 months, I was editing AMVs like a madman; there was no sense of time or hunger.&lt;/p&gt;

&lt;p&gt;Then… I stopped.&lt;/p&gt;

&lt;p&gt;Tech was booming in 2022, and I’ve always loved tech.&lt;/p&gt;

&lt;p&gt;I was already pursuing a CS degree.&lt;/p&gt;

&lt;p&gt;So I thought — why not take my career forward in that?&lt;/p&gt;

&lt;p&gt;Land a job. Freelance.&lt;/p&gt;

&lt;p&gt;Get some “tech money” and reinvest it into content or a business.&lt;/p&gt;

&lt;p&gt;Back then, I saw editing as low-skill, low-pay “grind work.”&lt;/p&gt;

&lt;p&gt;Didn’t realize… that was one of the biggest missed opportunities of my life.&lt;/p&gt;

&lt;p&gt;I could have scaled it up to an agency,&lt;/p&gt;

&lt;p&gt;Built a content brand.&lt;/p&gt;

&lt;p&gt;Or at least be in a somewhat better state than I am now,&lt;/p&gt;

&lt;p&gt;But these are all speculations.&lt;/p&gt;

&lt;p&gt;Instead, I fell into this corporate-tech learning rabbit hole.&lt;/p&gt;

&lt;p&gt;My focus shifted from creating to optimizing.&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%2F3hrxrldh2xz86egy27tx.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%2F3hrxrldh2xz86egy27tx.png" alt=" " width="623" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chasing the hottest technologies.&lt;/p&gt;

&lt;p&gt;Searching for the perfect tech stack,&lt;/p&gt;

&lt;p&gt;Overcomplicating projects just to learn the fancy tools.&lt;/p&gt;

&lt;p&gt;Trying to learn everything instead of building anything.&lt;/p&gt;

&lt;p&gt;I still smile when someone asks me, “What’s the best editing software?” And I say,&lt;/p&gt;

&lt;p&gt;“It doesn’t matter what you use. It matters what you create.”&lt;/p&gt;

&lt;p&gt;…And yet, I don’t take my own advice.&lt;/p&gt;

&lt;p&gt;The last 3 years were messy.&lt;/p&gt;

&lt;p&gt;I’d grind hard for 2 months, then burn out and procrastinate for 4.&lt;/p&gt;

&lt;p&gt;Any time I had a creative idea like Streaming, a new video, something fun, I’d stop myself and say, “It’ll divide my focus. It’s not worth it.”&lt;/p&gt;

&lt;p&gt;Then I’d waste those same months doing nothing anyway.&lt;/p&gt;

&lt;p&gt;Yet today I woke up at 5 am again after a month, to work on this project I started weeks ago.&lt;/p&gt;

&lt;p&gt;It’s bloated with stuff like Docker, monorepo, and whatnot.&lt;/p&gt;

&lt;p&gt;The stuff I thought would make me a “real” developer.&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%2Fj6tbbyylt8hnvmh9n26c.gif" 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%2Fj6tbbyylt8hnvmh9n26c.gif" alt="table exhausted" width="500" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But now? It’s so overengineered that it doesn’t excite me anymore. It just feels… tedious.&lt;/p&gt;

&lt;p&gt;I feel exhausted just looking at it.&lt;/p&gt;

&lt;p&gt;And to top it all off, I just graduated. I’m 22. And I don’t know what the hell I’m doing.&lt;/p&gt;

&lt;p&gt;Should I prep for job interviews?&lt;/p&gt;

&lt;p&gt;Try freelancing?&lt;/p&gt;

&lt;p&gt;Build a product?&lt;/p&gt;

&lt;p&gt;Or just… create content?&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%2Fync1zl5yfk4cll9trsun.gif" 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%2Fync1zl5yfk4cll9trsun.gif" alt="thinking in rain" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The anxiety’s creeping in. And after a 6 AM career therapy session with ChatGPT…&lt;/p&gt;

&lt;p&gt;I said&lt;/p&gt;

&lt;p&gt;“fuck it”.&lt;/p&gt;

&lt;p&gt;I am just gonna post something today.&lt;/p&gt;

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

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

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

&lt;p&gt;Just a person, trying to create something cool again. Trying to feel something again.&lt;/p&gt;

&lt;p&gt;If you are also struggling like me, do share them in the comments, I’ll appreciate that.&lt;/p&gt;

&lt;p&gt;And yeaa, let’s see where it goes.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>discuss</category>
      <category>developer</category>
      <category>networking</category>
    </item>
    <item>
      <title>Cut the Crap: Ship Better-Looking Websites (Fast)</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Sat, 03 May 2025 11:53:04 +0000</pubDate>
      <link>https://dev.to/vinayakisme/cut-the-crap-ship-better-looking-websites-fast-282</link>
      <guid>https://dev.to/vinayakisme/cut-the-crap-ship-better-looking-websites-fast-282</guid>
      <description>&lt;p&gt;Alright, let's be real. That UI/UX stuff? It's pretty much the only thing your users actually see and interact with. It's the front door to whatever awesome thing you've built.&lt;/p&gt;

&lt;p&gt;If you put 20% of your efforts into this, it will give you 80% of the results regarding users. &lt;br&gt;
&lt;strong&gt;The 80/20 of a product.&lt;/strong&gt;&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%2F9m8zdj3x66ihhtlg6jev.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%2F9m8zdj3x66ihhtlg6jev.png" alt="80/20 leverage" width="498" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But if you're a &lt;em&gt;code-first&lt;/em&gt; dev like me, staring at a blank design canvas feels… directionless. Like, where do you even &lt;em&gt;start&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;I've been there. I tried building components and designing from scratch. But no matter how much I tried, the results were mediocre at best.&lt;/p&gt;

&lt;p&gt;The usual advice? "You'll get good eventually." &lt;br&gt;
Yeah, thanks. Super helpful when you're trying to ship something quickly.&lt;/p&gt;

&lt;p&gt;I used to watch these long tutorials on YouTube. All they do is teach design fundamentals and make you learn Figma anyway. "Figma? What's that? Why? It's hard enough to manage state, fetches, APIs, auth, schema, and whatnot. I don't wanna learn graphic design on top of that."&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%2F9bu1e2icw3bg1kphekxe.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%2F9bu1e2icw3bg1kphekxe.png" alt="Scary figma" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, there is nothing wrong with being willing to learn design properly. It's a valuable skill. &lt;/p&gt;

&lt;p&gt;But if your goal is to ship an MVP fast, build side projects, or just get your ideas out there, mastering another discipline first isn't sustainable. It takes tons of time and practice.&lt;/p&gt;

&lt;p&gt;Enough said, let's dive into the 3-layer system I use to ship decent-looking UI, fast:&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Steal the Structure
&lt;/h2&gt;

&lt;p&gt;The structure is everything. You can't build anything solid without a decent blueprint. And the good news? You don't have to invent it.&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%2Fzj1g264xsbzhi9pb02l4.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%2Fzj1g264xsbzhi9pb02l4.png" alt="Steal like an Artist — Austin Kleon" width="242" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Steal Like an Artist — Austin Kleon&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. Define Your Bones First
&lt;/h3&gt;

&lt;p&gt;Before looking at pretty pictures, know what you're building.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outline&lt;/strong&gt;: What are the key features/sections?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flow:&lt;/strong&gt; How does a user get from A to B? Sketch a simple flowchart (yes, pen and paper works!). Or use some tool like Excalidraw, or if you are super lazy like me, just sketch it in your mind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data:&lt;/strong&gt; What info needs to be shown/collected? (Think basic schema).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why bother?&lt;/em&gt;&lt;/strong&gt; Designing is 10x easier when you know the purpose and flow.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Research &amp;amp; "Borrow"
&lt;/h3&gt;

&lt;p&gt;Now, find your visual inspiration. Why?&lt;/p&gt;

&lt;p&gt;Think about it, these brands have spent thousands perfecting UI patterns. Learning from them will give you that unseen leverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some useful resources for research:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Niche Leaders&lt;/strong&gt;: Look at the top websites or apps in your space. What works? What doesn't?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Curated Galleries&lt;/strong&gt;: Dive into &lt;a href="https://mobbin.com/" rel="noopener noreferrer"&gt;Mobbin&lt;/a&gt; (great for app flows) and &lt;a href="https://dribbble.com/" rel="noopener noreferrer"&gt;Dribbble&lt;/a&gt; (great for visual flair and components). Screenshot liberally. Analyze why you like certain layouts or elements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F3g5o65h1ce3ge9oqan8j.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%2F3g5o65h1ce3ge9oqan8j.png" alt="design templates" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secret Resource&lt;/strong&gt; (for Flair): &lt;a href="https://github.com/emmabostian/developer-portfolios" rel="noopener noreferrer"&gt;Portfolio websites&lt;/a&gt;. Seriously. These are a collection of some of the most impressive-looking websites you will find on the web. It's just developers flexing their skills. Usefulness 3/10, Creativity 10/10. Good for grabbing specific ideas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. AI Kickstart
&lt;/h3&gt;

&lt;p&gt;Got your outline, flow, and a folder full of inspiration screenshots? Let's get a concrete starting point without touching that scary tool called Figma.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt the Prompter&lt;/strong&gt;: Open ChatGPT (or your LLM of choice). Feed it your outline, and flow, and describe the key layouts or components you liked from your research (or even better, if the tool allows image input, use them!). Ask it: &lt;em&gt;"Generate a detailed prompt for an AI UI generator like Vercel's v0.dev, Lovable.ai, Galileo AI, etc., to create an initial design concept for a [your app type] based on these features, this user flow, and inspired by these visual styles [describe/show references]."&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generate &amp;amp; Iterate&lt;/strong&gt;: Paste the generated prompt into a tool like v0.dev or Lovable. Let it spit out some ideas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CRUCIAL AI Note&lt;/strong&gt;: As mentioned, AI is great at creating initial stuff but often clumsy at updating an existing design via prompts. If the first result is way off, don't waste time trying to tweak it with 50 follow-up prompts. Start a new chat, refine your initial prompt based on what you learned, and generate it again. It's often faster.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fja93u368gx4n4sy2pfn0.webp" 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%2Fja93u368gx4n4sy2pfn0.webp" alt="lovable ai" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: This is a hit-or-miss step. Sometimes it's garbage. But sometimes? It nails a solid layout or component structure you can directly use (copy the code if available!) or iterate on. This saves &lt;em&gt;hours&lt;/em&gt; of "where does the button go?" agony.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Layer 2: Assemble the Building Blocks
&lt;/h2&gt;

&lt;p&gt;Now that you've got a structural direction from Layer 1. It's time to assemble the actual UI quickly and consistently.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Styling Foundation
&lt;/h3&gt;

&lt;p&gt;Now, don't go wandering off on YouTube trying to master CSS from scratch, we might never hear from you again! &lt;br&gt;
I don't want you to get stuck in the CSS rabbit hole. Look, there are hundreds of CSS properties, but honestly? You probably only need to grasp maybe 20-ish core ones. &lt;/p&gt;

&lt;p&gt;With those, you can build almost any UI layout, especially when using modern tools. &lt;/p&gt;

&lt;p&gt;You can check this very &lt;a href="https://dev.to/vinayak00017/laziest-tailwind-guide-to-build-almost-any-ui-without-touching-a-single-line-of-raw-css-o6j"&gt;brief article&lt;/a&gt;. Or if you want to get on track quickly, focus on understanding essentials like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Box Model (margin, padding, border)&lt;/li&gt;
&lt;li&gt;Layout (display: flex, display: grid, gap)&lt;/li&gt;
&lt;li&gt;Positioning (position, top, left, right, bottom, z-index)&lt;/li&gt;
&lt;li&gt;Sizing (width, height, max-width)&lt;/li&gt;
&lt;li&gt;Typography (font-size, font-weight, color, line-height, text-align)&lt;/li&gt;
&lt;li&gt;Backgrounds (background-color, background-image)&lt;/li&gt;
&lt;li&gt;Basic Selectors (classes, IDs - though you'll use classes 99% of the time with utility-first approaches)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(If you already know this stuff cold or are a CSS wizard. Sorry to disrespect you, but I gotta do what I gotta do, to save people’s time.)&lt;br&gt;
 &lt;br&gt;
Understanding these basics gives you the foundation you need without derailing your project for weeks. You need this context to understand how the tools we'll use next work under the hood.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tailwind 
&lt;/h3&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%2Ffq19wwdujx2zbw76do5w.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%2Ffq19wwdujx2zbw76do5w.png" alt="tailwindcss" width="756" height="307"&gt;&lt;/a&gt;&lt;br&gt;
Yes, you need Tailwind in 2025. &lt;br&gt;
Yes, raw CSS can be painful (naming things, managing files…). &lt;br&gt;
Yes Tailwind CSS fixes this for many devs. &lt;/p&gt;

&lt;p&gt;It's utility-first: you apply tiny classes directly in your HTML/JSX (className="pt-4 text-lg font-semibold"). &lt;br&gt;
On top of that it provides a consistent design system out-of-the-box, speeding things up. &lt;/p&gt;

&lt;p&gt;But the biggest reason to use Tailwind is its &lt;strong&gt;Huge ecosystem around Component libraries.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Component Libraries (The Real Accelerator)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DO NOT REINVENT THE WHEEL.&lt;/strong&gt; &lt;br&gt;
Buttons, modals, forms, and cards are built faster and better by using pre-built components. &lt;/p&gt;

&lt;p&gt;This is non-negotiable for speed. Forget building these from scratch (unless you really have to).&lt;br&gt;
 &lt;br&gt;
Do you know how much time I have wasted in building a popover menu from scratch? The countless bugs I encountered? The scary dream I had? (ok, maybe not that much.) &lt;/p&gt;

&lt;p&gt;But the point is, now you can just copy it from Shadcn and customize it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shadcn/UI&lt;/strong&gt;: This isn't a traditional library you install as a dependency. Instead, you copy-paste beautifully crafted component code directly into your project. Unstyled (but themeable via Tailwind). Tbh, it's one of the biggest things that ever happened to front-end development.&lt;/li&gt;
&lt;/ul&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%2Fvw775y2s2d6k6pofq9cy.gif" 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%2Fvw775y2s2d6k6pofq9cy.gif" alt="shadcnui" width="690" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why you SHOULD use it?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You Own the Code&lt;/strong&gt;: So max control, max customization, max fun, and no fighting library internals, too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Only want to use this pretty card, but don't want countless dependencies? No problem, go ahead, use only what you need. No bloat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind Native&lt;/strong&gt;: Remember when I asked you to learn Tailwind? Yup, you will thank me now, with Tailwind, you can work seamlessly with it for styling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-Paste Simple&lt;/strong&gt;: Pick a component, run a CLI command, and get the code. That's it, now build, it's so incredibly productive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Growing Shadcn/Radix Ecosystem&lt;/strong&gt;: That copy-paste, "own-the-code" approach you love from Shadcn? It's a whole ecosystem now. For more specialized or highly animated components built with the same philosophy (using Radix primitives and Tailwind), check out libraries like &lt;a href="https://magicui.design/" rel="noopener noreferrer"&gt;Magic UI&lt;/a&gt; or &lt;a href="https://ui.aceternity.com/components" rel="noopener noreferrer"&gt;Aceternity UI&lt;/a&gt;. You integrate them the same way, no extra dependencies, just more cool building blocks for your project.&lt;/li&gt;
&lt;/ul&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%2F5usiay1y3d3327g2owbs.webp" 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%2F5usiay1y3d3327g2owbs.webp" alt="magicui" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other Tailwind Libraries&lt;/strong&gt;: If the Shadcn approach isn't your jam, there are libraries like &lt;a href="https://flowbite.com/" rel="noopener noreferrer"&gt;Flowbite&lt;/a&gt; or &lt;a href="https://daisyui.com/" rel="noopener noreferrer"&gt;DaisyUI&lt;/a&gt;. They offer ready-made components styled with Tailwind, often installed as dependencies. Providing similar speed benefits for common patterns.&lt;/p&gt;

&lt;p&gt;Here is a huge collection of &lt;a href="https://github.com/birobirobiro/awesome-shadcn-ui" rel="noopener noreferrer"&gt;UI libraries&lt;/a&gt;, more than you would ever need. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Font Sanity: 
&lt;/h3&gt;

&lt;p&gt;Font is also something you should keep in mind. Some people don't even touch it, and some people get &lt;em&gt;insano-style&lt;/em&gt; with it. &lt;/p&gt;

&lt;p&gt;Keep it simple. Pick one, maybe two readable fonts that align with your application's feel. Use different &lt;strong&gt;weights&lt;/strong&gt; (light, regular, bold) and sizes for hierarchy. Google Fonts is great. &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%2Fzvg6ugsjexq7ki9wgysk.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%2Fzvg6ugsjexq7ki9wgysk.png" alt="fonts" width="490" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure them in your tailwind.config.js (if using Tailwind) for easy use (font-sans, font-headings). Done.&lt;/p&gt;

&lt;p&gt;Layer 2 is about setting up your core toolkit. Understanding fundamental CSS properties, leveraging killer component libraries. (Seriously, look at Magic UI.) You can build a complex UI fast with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Make it Pretty
&lt;/h2&gt;

&lt;p&gt;You have the structure (Layer 1) and the functional building blocks, which already look good in their own regard (Layer 2).&lt;/p&gt;

&lt;p&gt;Layer 3 is purely about adding that visual polish, the stuff that makes it look less like a wireframe and more like a finished product.&lt;/p&gt;

&lt;p&gt;Now, I'll be honest here, at this point, this is a designer's job. Like, I don't know what gradient would complement which background, or what should be the optimal size of this button. &lt;/p&gt;

&lt;p&gt;The better design skills you have, the better UI you'll be able to create.&lt;br&gt;
Unfortunately, I am not that good. I wish I knew a designer whom I could ask for advice.&lt;/p&gt;

&lt;p&gt;Wait, maybe I do know someone who can help. I think you know him too.&lt;br&gt;
Yes! You got it right, it's our scary friend AI. He has analyzed countless designs, he can surely help.&lt;/p&gt;

&lt;p&gt;These designers are vibe-coding applications in minutes, so why can't I vibe-design my application?&lt;/p&gt;

&lt;p&gt;And believe me, with this you would be able to create really beautiful designs and components.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. AI as Design Consultant
&lt;/h3&gt;

&lt;p&gt; Use AI tools (Cursor, GitHub Copilot Chat, or even just ChatGPT). Describe a specific section or element from your current build and ask for aesthetic advice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Suggest 3 ways to add subtle micro-interactions to my buttons using Tailwind/CSS."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Recommend a complementary accent color to go with my primary blue (#XXXXXX) for call-to-action elements."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"How can I make this data table feel less dense? Suggest layout or styling tweaks."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Give me ideas for a visually interesting background for the hero section (e.g., subtle gradients, patterns)."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask any questions, doesn't matter how silly, it's not gonna judge you.&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%2Ff9w9agq31ypopkzk4css.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%2Ff9w9agq31ypopkzk4css.png" alt="copilot" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt; &lt;br&gt;
Now, this is the nuclear option. You can definitely build extremely "fast" using this approach. &lt;/p&gt;

&lt;p&gt;Your imagination is the only thing stopping you here. And apparently some application-breaking bugs. &lt;/p&gt;

&lt;p&gt;While it's true you can operate very fast, the question arises, "Who's in control?". &lt;/p&gt;

&lt;p&gt;It totally depends on you how comfortable you are. If you don't care how it works, which is totally fine. Then, by all means, just make your imagination a reality. &lt;/p&gt;

&lt;p&gt;But if you don't want to lose control of your codebase, then at least try to understand why and how things are working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Generate the Tailwind CSS classes for a linear gradient background going from blue-500 to purple-600."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Write the CSS keyframes and Tailwind classes for a button that subtly scales up on hover."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Show me how to implement a fade-in animation on scroll for sections using JavaScript and Tailwind."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Feed a screenshot or code snippet to a visual-aware AI tool and ask: "Generate the code to refine the styling of this card to look more modern, like [reference image/description]."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, use AI first for ideas on polish, then use AI again to generate the code snippets or styling logic needed to achieve that polish within your Tailwind/Component structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Takeaway
&lt;/h3&gt;

&lt;p&gt;Stop trying to be a master designer and a master coder simultaneously, especially when starting out or aiming for speed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Steal&lt;/strong&gt; structure and get AI to kickstart layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assemble&lt;/strong&gt; using Tailwind, sensible fonts, and crucially, powerful component libraries like Shadcn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polish&lt;/strong&gt; the aesthetics using AI for ideas and code implementation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's about leveraging the right tools and abstractions to get 80% of the visual impact with 20% of the traditional design effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now go build something!
&lt;/h2&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>frontend</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Laziest tailwind guide to build almost any UI without touching a single line of raw CSS.</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Thu, 24 Apr 2025 07:46:55 +0000</pubDate>
      <link>https://dev.to/vinayakisme/laziest-tailwind-guide-to-build-almost-any-ui-without-touching-a-single-line-of-raw-css-o6j</link>
      <guid>https://dev.to/vinayakisme/laziest-tailwind-guide-to-build-almost-any-ui-without-touching-a-single-line-of-raw-css-o6j</guid>
      <description>&lt;p&gt;CSS sure feels intimidating, but it’s also the backbone of every web design.&lt;/p&gt;

&lt;p&gt;If you’re learning Tailwind, don’t try to master every class, only 20% of properties are used to build 80% of designs.&lt;/p&gt;

&lt;p&gt;Its much better to mater only these 20% properties rather than skimming through every other property that tailwind provides(trust me there are a lot).&lt;/p&gt;

&lt;p&gt;Now I won’t waste more of your time because its a lazy guide after all.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Layout: Flexbox and Grid
&lt;/h2&gt;

&lt;p&gt;This is the heart of all the layouts. If you master these, you can create any layout existing.&lt;/p&gt;

&lt;p&gt;— flex, flex-row, flex-col&lt;/p&gt;

&lt;p&gt;— justify- (center, between, etc.)&lt;/p&gt;

&lt;p&gt;— items- (center, start, end)&lt;/p&gt;

&lt;p&gt;— gap-4 for spacing between&lt;/p&gt;

&lt;p&gt;— grid, grid-cols-3, col-span-2&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%2Fjcfm11nso6egsbjb8yuj.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%2Fjcfm11nso6egsbjb8yuj.png" alt=" " width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Box Model: Spacing &amp;amp; Sizing
&lt;/h2&gt;

&lt;p&gt;Its used to position and align elements in your layout.&lt;/p&gt;

&lt;p&gt;— m-, p- (margin &amp;amp; padding)&lt;/p&gt;

&lt;p&gt;— w-, h- (width &amp;amp; height)&lt;/p&gt;

&lt;p&gt;— max-w-, min-h-&lt;/p&gt;

&lt;p&gt;— box-border&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%2Fesmdze7ykfz1z9v43usa.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%2Fesmdze7ykfz1z9v43usa.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Colors &amp;amp; Styling
&lt;/h2&gt;

&lt;p&gt;Quickly apply color schemes and basic visuals.&lt;/p&gt;

&lt;p&gt;— bg-{color}-{shade} / text-{color}-{shade}&lt;/p&gt;

&lt;p&gt;— rounded, rounded-lg, rounded-full&lt;/p&gt;

&lt;p&gt;— shadow, shadow-md&lt;/p&gt;

&lt;p&gt;— opacity-70 etc.&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%2Fz70z1jt3mjfw92mirl7f.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%2Fz70z1jt3mjfw92mirl7f.png" alt=" " width="775" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Typography
&lt;/h2&gt;

&lt;p&gt;I mean font are pretty important, so….Don’t skip these:&lt;/p&gt;

&lt;p&gt;— text-sm (small text), text-xl (large headings)&lt;/p&gt;

&lt;p&gt;— leading-snug / leading-loose (line height control)&lt;/p&gt;

&lt;p&gt;— text-left / text-center / text-right&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%2Fwf3sp1r23qv2vp19h54y.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%2Fwf3sp1r23qv2vp19h54y.png" alt=" " width="800" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Positioning
&lt;/h2&gt;

&lt;p&gt;For layering and pinning elements where you need them&lt;/p&gt;

&lt;p&gt;— relative / absolute / fixed / sticky&lt;/p&gt;

&lt;p&gt;— top-0, left-4, etc.&lt;/p&gt;

&lt;p&gt;— z-10 to layer stuff&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%2F3h9ghzvepdssz6akwybe.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%2F3h9ghzvepdssz6akwybe.png" alt=" " width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Interaction &amp;amp; Motion
&lt;/h2&gt;

&lt;p&gt;For that satisfying UX.&lt;/p&gt;

&lt;p&gt;— hover:bg-gray-200&lt;/p&gt;

&lt;p&gt;— hover:text-blue-600&lt;/p&gt;

&lt;p&gt;— transition, duration-300, ease-in-out&lt;/p&gt;

&lt;p&gt;— cursor-pointer, select-none&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%2Fs2q1uxw1afuyvwy3u9xh.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%2Fs2q1uxw1afuyvwy3u9xh.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Responsive Design
&lt;/h2&gt;

&lt;p&gt;— Prefix any class with sm:, md:, lg:, xl:, 2xl:&lt;/p&gt;

&lt;p&gt;Uses a mobile-first breakpoint system. Meaning that unprefixed utilities take effect on all screen sizes, while prefixed utilities (like md:…) only take effect at the specified breakpoint and above.&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%2Fvsxytn0e8xzdazuw0jw3.webp" 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%2Fvsxytn0e8xzdazuw0jw3.webp" alt=" " width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Master these, and you’ll cover 80% of UI needs in Tailwind. That’s it.&lt;/p&gt;

&lt;p&gt;If there are any other important classes that I didn’t mention, let me know in the replies.&lt;/p&gt;

&lt;p&gt;resources: &lt;a href="https://tailwindcss.com/docs" rel="noopener noreferrer"&gt;https://tailwindcss.com/docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>ui</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Hack That Made People Rich.....in Subway Surfers</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Mon, 07 Apr 2025 12:57:33 +0000</pubDate>
      <link>https://dev.to/vinayakisme/the-hack-that-made-people-richin-subway-surfers-4jm4</link>
      <guid>https://dev.to/vinayakisme/the-hack-that-made-people-richin-subway-surfers-4jm4</guid>
      <description>&lt;p&gt;"Lucky Patcher" &lt;br&gt;
Does this ring a bell in your head?&lt;/p&gt;

&lt;p&gt;Remember when people used it to exploit Subway Surfers for extra coins(9999999999...)?&lt;/p&gt;

&lt;p&gt;Have you ever wondered how it actually worked? &lt;br&gt;
Let’s break down the technical wizardry behind it, "purely for historical insight!"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;gt; Disclaimer: This article is intended solely for educational and historical insight. Modifying or exploiting software without permission is unethical and may be illegal. Always support developers and use your technical knowledge responsibly.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Understanding Lucky Patcher
&lt;/h3&gt;

&lt;p&gt;Lucky Patcher is an Android utility known for its versatility. Originally designed to modify app behavior, its features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ad Removal: Disabling intrusive advertisements.&lt;/li&gt;
&lt;li&gt;License Bypass: Circumventing in-app purchase verifications.&lt;/li&gt;
&lt;li&gt;Modification Capabilities: Altering an app’s code to unlock premium features or simulate purchases.&lt;/li&gt;
&lt;/ul&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%2Fp9sx19jiwcon37x4cbmj.jpg" 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%2Fp9sx19jiwcon37x4cbmj.jpg" alt="Lucky Patcher logo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its flexibility earned it the nickname "the Swiss Army knife of game modding." Although its use to exploit apps like Subway Surfers was widespread, it also sparked discussions about the ethics and security implications of such modifications.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Mechanics of the Exploit
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Intercepting In-App Purchase (IAP) Calls
&lt;/h2&gt;

&lt;p&gt;Subway Surfers, like many mobile games, offered in-app purchases (IAP) for coins and keys. The exploit worked by intercepting the purchase request process. Here’s how:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IAP Request: When a player attempted to buy coins, the game would send an IAP request via an API call (typically to Android’s InAppBillingService).&lt;/li&gt;
&lt;li&gt;API Hooking: Lucky Patcher intercepted this call by hooking into the billing API. Essentially, it monitored the communication between the game and the billing service.&lt;/li&gt;
&lt;li&gt;Fake Success Response: Instead of processing a real transaction, the tool faked a “purchase successful” response. The game, fooled by this response, would credit the user’s account with a large number of coins—often instantaneously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process can be visualized as a flowchart:&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%2Ficwzqwc2g8pk1vv2b8fj.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%2Ficwzqwc2g8pk1vv2b8fj.png" alt="Api Hooking" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Direct APK Modification
&lt;/h2&gt;

&lt;p&gt;Beyond intercepting API calls, some modders took an even deeper dive by modifying the game’s APK (Android Package). This method involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reverse Engineering: By decompiling the APK, modders could analyze the underlying code and locate key variables related to coin values.&lt;/li&gt;
&lt;li&gt;Memory Patching: Once identified, these variables were patched directly. In some cases, modders altered memory addresses or hardcoded values that determined the coin count.&lt;/li&gt;
&lt;li&gt;Result: The modified APK, when recompiled and installed, would start with an artificially high coin balance, bypassing normal in-game progression mechanics.
This process, often referred to as “pure digital alchemy,” demonstrated how even simple code adjustments could dramatically alter gameplay.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Why the Exploit Worked So Seamlessly
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Local Data Storage
&lt;/h2&gt;

&lt;p&gt;One of the primary reasons the exploit was effective was due to how Subway Surfers managed its data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Local Storage: Much of the game’s critical data (such as coin counts) was stored locally on the device rather than on a secure, remote server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Minimal Server-Side Oversight: With little to no real-time verification from a backend server, the game relied on the integrity of local data, leaving it vulnerable to modifications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fjkmtjfoq2kecbznfd6zv.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%2Fjkmtjfoq2kecbznfd6zv.png" alt="Offline first" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Weak Code Obfuscation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Exposed Code: Early versions of Subway Surfers did not employ strong obfuscation techniques. This lack of code protection made it easier for modders to understand and alter the game logic.&lt;/li&gt;
&lt;li&gt;Easier Patching: With clear and accessible code, patching specific values or intercepting functions became a straightforward task for those with the know-how.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. The Evolution of Mobile Security
&lt;/h3&gt;

&lt;p&gt;As mobile gaming grew in popularity—and as exploits like these became more common. Developers had to rethink security measures. Modern mobile apps now employ several robust techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server-Side Validation: Instead of relying solely on local data, critical transactions and data are now verified on secure servers.&lt;/li&gt;
&lt;li&gt;Advanced Encryption: Enhanced encryption and obfuscation methods make reverse engineering significantly more challenging.&lt;/li&gt;
&lt;li&gt;Anti-Tamper Measures: Tools such as the Play Integrity API and various anti-tamper libraries are designed to detect and prevent unauthorized modifications.&lt;/li&gt;
&lt;li&gt;Dynamic Verification: Continuous, real-time validation of in-app purchases and other sensitive operations now adds an extra layer of security, making exploits like those used with Lucky Patcher nearly impossible without substantial risk.&lt;/li&gt;
&lt;/ul&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%2F19ovk8rjr9u2gfdtu1ft.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%2F19ovk8rjr9u2gfdtu1ft.png" alt="Game over" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The shift from local data management to robust server-side architectures represents a key evolution in mobile security. What once allowed for easy exploits is now safeguarded by multiple layers of defense.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Final Thoughts
&lt;/h3&gt;

&lt;p&gt;The exploitation of Subway Surfers using Lucky Patcher remains a fascinating case study in early mobile game security. It highlights both the creativity of modders and the vulnerabilities inherent in early app designs. &lt;/p&gt;

&lt;p&gt;Today’s fortified security measures ensure that such exploits are largely relics of the past, serving as a reminder of how far mobile security has advanced.&lt;/p&gt;

&lt;p&gt;While the hack itself is an intriguing piece of gaming history, it underscores a critical lesson for developers: thorough backend validations and continuous security enhancements are essential in safeguarding digital ecosystems.&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>learning</category>
      <category>api</category>
      <category>security</category>
    </item>
    <item>
      <title>Web Dev Buzzwords: CSR, SSR, SSG!</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Wed, 23 Oct 2024 11:37:52 +0000</pubDate>
      <link>https://dev.to/vinayakisme/web-dev-buzzwords-csr-ssr-ssg-a70</link>
      <guid>https://dev.to/vinayakisme/web-dev-buzzwords-csr-ssr-ssg-a70</guid>
      <description>&lt;p&gt;Let's start from the beginning, if you don't know what they even are, don't worry they are just different ways to render a webpage.&lt;/p&gt;

&lt;p&gt;Or if you are feeling fancy, you can say these are different rendering techniques used to deliver content to users.&lt;/p&gt;

&lt;p&gt;I prefer the first one.&lt;/p&gt;

&lt;p&gt;But, what’s the difference? 🤔 &lt;/p&gt;

&lt;p&gt;Which one’s right for your project? Or better yet, when should you use each?  &lt;/p&gt;

&lt;p&gt;Let's flip right into it. &lt;/p&gt;

&lt;h2&gt;
  
  
  CSR(Client Side Rendering)
&lt;/h2&gt;

&lt;p&gt;or should I say the cool kid of the bunch?&lt;/p&gt;

&lt;p&gt;When a user requests a page, the server sends over a skeleton(HTML), and the browser (on the client-side) fills it in by fetching and rendering the actual content with JS.&lt;/p&gt;

&lt;p&gt;It's like building the house after your guests arrive!&lt;/p&gt;

&lt;p&gt;Perfect for highly interactive apps, and can make your single-page apps snappy but can be slow for first-page loads.&lt;/p&gt;

&lt;p&gt;There is also one major flaw in this approach, the waterfalling problem.&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%2Fu0mmblvpq4vshtd18cwz.jpg" 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%2Fu0mmblvpq4vshtd18cwz.jpg" alt=" " width="720" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The client performs multiple API calls to fetch data. If one API call is slow or dependent on the result of another, it creates a bottleneck, delaying the rendering of components or sections of the page.&lt;/p&gt;

&lt;p&gt;This also makes CSR a terrible option for SEO, because when a web scrapper hits the website, all it sees is a 👆(not this one). I mean an empty HTML file.&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%2F9xa4wzqd7gkvh25pzazp.jpg" 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%2F9xa4wzqd7gkvh25pzazp.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  SSR (Server-Side Rendering)
&lt;/h2&gt;

&lt;p&gt;The server builds the full page before sending it to the browser. This means quicker initial loads and better SEO, but it can cause slower interactions once the page is loaded because of the back-and-forth between server and client for new data.&lt;/p&gt;

&lt;p&gt;It's good for landing pages, and blogs with dynamic content that needs faster initial load and SEO-friendliness.&lt;/p&gt;

&lt;p&gt;Because this time when a web-scrapper hits the website, it gonna see a beautifully hydrated HTML file.&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%2Fsd87usjgieav3d9bvi7k.jpg" 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%2Fsd87usjgieav3d9bvi7k.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But here a good question arises:&lt;/p&gt;

&lt;p&gt;Why do I need to render this page again and again for my portfolio or blog website? Well because you are stupid!! &lt;/p&gt;

&lt;p&gt;Thank god that this article is here to save you. &lt;/p&gt;

&lt;p&gt;You don't need to render this page again and again. What you can do is something called SSG, generate it once, and yeah&lt;/p&gt;

&lt;h2&gt;
  
  
  SSG( Static Site Generation )
&lt;/h2&gt;

&lt;p&gt;It’s like that nerdy, introverted kid who doesn’t really enjoy live interactions and prefers working behind the scenes.&lt;/p&gt;

&lt;p&gt;Quietly preparing everything in advance. Super efficient, fast, and reliable, but freezes when it comes to on-the-spot interaction.&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%2F4jzafqr3urcip6pp3x8l.jpg" 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%2F4jzafqr3urcip6pp3x8l.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words, SSG is like pre-building your pages (at build time), so they're ready to serve instantly to users.&lt;/p&gt;

&lt;p&gt;The downside? &lt;/p&gt;

&lt;p&gt;They're not as dynamic, but for blogs or sites that don’t change often, it's a super-fast option!&lt;/p&gt;

&lt;p&gt;Use it when you need a blazing-fast static site with minimal interaction but maximum performance!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The article emphasizes a recurring theme: each technique involves trade-offs between different features, so the best choice ultimately depends on your specific application logic and goals&lt;/p&gt;

&lt;p&gt;Soooo, in short:&lt;/p&gt;

&lt;p&gt;CSR = dynamic &amp;amp; reactive ⚡ &lt;/p&gt;

&lt;p&gt;SSR = speed &amp;amp; SEO love ❤️ &lt;/p&gt;

&lt;p&gt;SSG = pre-built speed demon 🏃‍♂️&lt;/p&gt;

&lt;p&gt;Have a nice day :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>react</category>
      <category>programming</category>
    </item>
    <item>
      <title>! and ? in Typescript.</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Thu, 17 Oct 2024 11:45:15 +0000</pubDate>
      <link>https://dev.to/vinayakisme/-and-in-typescript-3c78</link>
      <guid>https://dev.to/vinayakisme/-and-in-typescript-3c78</guid>
      <description>&lt;p&gt;Ever wondered what those mysterious symbols ! and ? do in TypeScript? 🤔 They may be small, but they pack a punch! &lt;/p&gt;

&lt;p&gt;Here's how and why to use them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;? - Optional Modifier&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use the ? to mark a property or parameter as optional. It tells TypeScript, "Hey, this field might be undefined."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface User {     
    name: string;     
    age?: number;   
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now age can be defined or left out! 🎯&lt;/p&gt;

&lt;p&gt;Why Use "?", well: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cleaner code: It reduces the need for undefined checks.&lt;/li&gt;
&lt;li&gt;Great for flexibility: Perfect for objects where some fields aren’t always needed!
Example: Optional query params, form fields, or configuration settings.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;! - Non-Null Assertion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ! is like telling TypeScript, “I know better! This value is definitely NOT null or undefined.”&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const element = document.getElementById('app')!;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This assures TypeScript the element exists. But use with care! 🚨&lt;/p&gt;

&lt;p&gt;Why Use "!", hmm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Removes unnecessary null checks when you’re certain a value isn’t null.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;⚠️ But... it can be risky if you’re wrong! Use it when you’re in control of initialization or DOM elements that you know exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use ? for flexibility and to safely handle optional properties.&lt;/li&gt;
&lt;li&gt;Use ! when you're confident a value won't be null/undefined, but be cautious—it can lead to runtime errors if misused.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, these tools help you write cleaner, more maintainable code. 💡&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Is Piracy Worth It?</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Sat, 20 Apr 2024 17:36:18 +0000</pubDate>
      <link>https://dev.to/vinayakisme/is-piracy-worth-it-2i4d</link>
      <guid>https://dev.to/vinayakisme/is-piracy-worth-it-2i4d</guid>
      <description>&lt;p&gt;Ok let's be honest here, we all have done piracy at some point in our lives.&lt;/p&gt;

&lt;p&gt;There is a famous quote by Gabe Newel on piracy:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;"Piracy is almost always a service problem and not a pricing problem"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And it's true, we exchange our money for the convenience these services offer. Netflix was groundbreaking because it provided a one-stop destination for a vast array of content, eliminating the need to purchase individual DVDs for each movie or show. It seems like we've circled back to where we started.&lt;/p&gt;

&lt;p&gt;Today's streaming service environment is a complete mess, if you wanna watch even one full show, the probability is very high that you would have to buy subscriptions for multiple streaming services. For example, if you want to watch Pokemon, you must hop on to 7-8 streaming services. I am not kidding, there is a whole guide on how to watch it across various platforms:&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%2F28twni477mk2ebch5nwf.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%2F28twni477mk2ebch5nwf.png" alt="pokemon guide" width="239" height="891"&gt;&lt;/a&gt;&lt;br&gt;
source: &lt;a href="https://www.pokemon.com/us/animation/where-to-watch-pokemon-episodes-movies" rel="noopener noreferrer"&gt;https://www.pokemon.com/us/animation/where-to-watch-pokemon-episodes-movies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dunkey( if you know him ) has highlighted this problem in his video very well:'&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/yvhv7bgmz64"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Malicious Practices in Digital Spaces
&lt;/h2&gt;

&lt;p&gt;Even if someone is willing to go through all this mess, they are still being manipulated by these corporations..... There is a very nice video by Louis Rossmann in which he explains how Netflix pushes their closed-source application on closed-source platforms like smart TVs by intentionally reducing the video resolution and bitrate on the computers. It's bad because platforms like smart TVs have more control over your privacy. They sell your data to show personalized ads. Here is the link to the full video, I do recommend everyone to check this out:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/o4GZUCwVRLs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Gaming...
&lt;/h2&gt;

&lt;p&gt;Not only streaming services, the gaming industry has been the same in this regard. More and more companies are using Digital rights management (DRM) in their games.&lt;/p&gt;

&lt;p&gt;DRM is the management of legal access to digital content. Various tools or technological protection measures (TPM) like access control technologies, can restrict the use of proprietary hardware and copyrighted works. DRM technologies govern the use, modification, and distribution of copyrighted works (e.g. software, multimedia content) and of systems that enforce these policies within devices. DRM technologies include licensing agreements and encryption. -Wikipedia&lt;/p&gt;

&lt;p&gt;DRMs are used to reduce piracy but they hurt the legitimate consumers who paid for the games. DRMs tend to impact the CPU, when you are playing the game you might experience lags and fewer framerates compared to a counterpart with no DRM.&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%2F5s0xn7jnyrlu3fvy4oi8.jpg" 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%2F5s0xn7jnyrlu3fvy4oi8.jpg" alt="denuvo" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Also, you get &lt;strong&gt;no control over what you paid for&lt;/strong&gt;. If you are paying a whopping $60 for a piece of software, you should be able to own that copy.&lt;/p&gt;

&lt;p&gt;The funny thing is when you buy a game on Steam, you don't own it. If you break the rules with Valve, they can shut down your account, and poof!! all of your games will be gone. But Valve has a good reputation in the gaming space and Steam is really good service, so people trust them.&lt;/p&gt;

&lt;p&gt;Recently Ubisoft’s Director of Subscriptions Phillippe Tremblay said, “One of the things we saw is that gamers are used to, a little bit like DVD, having and owning their games. That’s the consumer shift that needs to happen.&lt;/p&gt;

&lt;p&gt;“They got comfortable not owning their CD collection or DVD collection. That’s a transformation that’s been a bit slower to happen in games.”&lt;/p&gt;

&lt;p&gt;There was an outrage in the gaming community about this statement especially because it's coming from goddamn "Ubisoft", the most hated corporation among gamers. But he is not entirely wrong since owning digital media is more convenient but you are losing all control to them.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AdCQlWcz4V0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
A recent example is Funimation, a massive amine streaming platform announcing it will shut down all its services from April 2. Now, the good news is Funimation merged with Crunchyroll back in 2021 so most of the content you paid for will be transferred to your Crunchyroll account. Still, unfortunately, Crunchyroll will not preserve any digital copies (redeemed from DVD and Blu-ray codes) associated with your account.&lt;/p&gt;

&lt;p&gt;So, all this stuff you paid for is gone, and if you don't own the physical copy, there is nothing you can do about it, except (cough, cough) &lt;strong&gt;accidentally&lt;/strong&gt; pirate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When you pirate, you get better quality, you own the digital copy, and everything is in one place and complete, so better service. A big reason for people not pirating was that it was inconvenient but now "accidentally" going to a shady pirating site and "accidentally" downloading some unsafe shady files is less of a hassle than skimming through piles of streaming services or constantly getting lower frame rates on games.&lt;/p&gt;

&lt;p&gt;Now I'm not advocating piracy here, most of the time it's unethical, people who worked so hard to produce these products deserve every single penny but on the other hand customer service is important too. Why should I pay for something worse than the stuff available for free? &lt;strong&gt;People don't mind paying for services, but they do mind paying for bad services.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Use functional state updates for incrementing state variables in React</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Fri, 12 Apr 2024 13:24:30 +0000</pubDate>
      <link>https://dev.to/vinayakisme/use-functional-state-updates-for-incrementing-state-variables-in-react-3ono</link>
      <guid>https://dev.to/vinayakisme/use-functional-state-updates-for-incrementing-state-variables-in-react-3ono</guid>
      <description>&lt;p&gt;I recently saw a React project, in which incrementing a state variable was done like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const [count, setCount] = useState(0)&lt;br&gt;
.....&lt;br&gt;
setCount(count + 1 )&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
This directly sets the state to count + 1. However, this is not the right approach because if count is updated multiple times in quick succession, React may batch the updates for performance reasons, and all the updates might use the same initial value of count, leading to incorrect results.&lt;/p&gt;

&lt;p&gt;Instead of doing this, functional updates should be used.&lt;br&gt;
Functional state update is the approach of updating a state variable based on its previous value using a function provided to the state setter.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;setCount((count) =&amp;gt; count + 1);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This uses a function to update the state. The function receives the previous state as its argument and returns the new state. This ensures that each update is applied correctly even if multiple updates are batched together because each update uses the most recent state when it's applied.&lt;/p&gt;

&lt;p&gt;I know pretty basic, but still wanted to put it out there for anyone new to React. 👍&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>"Keep everything online"</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Tue, 09 Apr 2024 13:26:25 +0000</pubDate>
      <link>https://dev.to/vinayakisme/keep-everything-online-1ebd</link>
      <guid>https://dev.to/vinayakisme/keep-everything-online-1ebd</guid>
      <description>&lt;p&gt;Where should I even begin, what if I tell you as a developer the most important asset that I own is my password manager account?&lt;/p&gt;

&lt;p&gt;Storytime... A few years ago, I was installing some shady software on my Windows machine. And surprise-surprise it was malware! , my system got infected.&lt;/p&gt;

&lt;p&gt;I tried to get rid of it but stupid me had given it admin privileges, and it pretty much owned me on my own PC(poetic). So, as a last resort, I had to format my SSD immediately. I remember it was such a mess, I lost so much important data. I did have some backups but not enough.&lt;br&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%2F2kmf3jz8i962cvbp7w4f.gif" 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%2F2kmf3jz8i962cvbp7w4f.gif" alt="computer infected with virus" width="490" height="358"&gt;&lt;/a&gt;&lt;br&gt;
But if tomorrow I wake up and find out that my operating system got corrupted, my PC has been infected with malware or maybe my laptop has been stolen(ok, this would actually suck a lot ).&lt;/p&gt;

&lt;p&gt;It will be inconvenient and frustrating, but atleast I can recover all my important data and get my dev setup back to the current state.&lt;br&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%2Fc3zae8ctjgjv9n6z038b.jpg" 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%2Fc3zae8ctjgjv9n6z038b.jpg" alt="Clean computer setup" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Now when I think of it, the only things you need to integrate are :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Password Manager&lt;/li&gt;
&lt;li&gt;Browser Account&lt;/li&gt;
&lt;li&gt;GitHub ( for devs )&lt;/li&gt;
&lt;li&gt;Personal Cloud Storage&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Password Manager
&lt;/h2&gt;

&lt;p&gt;It's a web application that allows you to store your passwords and all other important secret stuff. You can also use your browser's password manager but I don't recommend it because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It's not secure enough. Surfing the web with all your passwords on your browser is risky as Browser Vulnerabilities can also impact the safety of your Stored Passwords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browser Password Managers Only Work With THAT Browser, and it's not a good idea to store all your passwords on every browser.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In today's age, I believe a password manager should be a must for anyone. There are a lot of them but what I use and recommend others too is BITWARDEN.&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%2F938n45qt8x5v9lyudnm1.jpg" 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%2F938n45qt8x5v9lyudnm1.jpg" alt="Bitwarden password manager" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free forever&lt;/li&gt;
&lt;li&gt;Unlimited password storage&lt;/li&gt;
&lt;li&gt;256-bit AES encryption (it means it's pretty secure :) )&lt;/li&gt;
&lt;li&gt;Open-source&lt;/li&gt;
&lt;li&gt;Available on every major platform including Android and iOS (Yes, you can access your passwords on your phone)&lt;/li&gt;
&lt;li&gt;Autofill and password generator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing that I am not a big fan of is Bitwarden's UX( user experience ). It's not very smooth and you might have to do some manual work.&lt;/p&gt;

&lt;p&gt;But hey, you should always do your own research and find out the best one for you.&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%2Fsvx3kz1ul8qzebrvrdxk.jpg" 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%2Fsvx3kz1ul8qzebrvrdxk.jpg" alt="Password managers" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Browser Account
&lt;/h2&gt;

&lt;p&gt;If you have access to all your accounts, this one is not that important, but it can save you a lot of time with that y+ENTER for opening YouTube.&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%2F34oh71dqtt2kh43nc1qm.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%2F34oh71dqtt2kh43nc1qm.png" alt="Youtube URL search" width="384" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the account you can create in any browser, that saves your history, bookmarks, keywords, password, etc.&lt;/p&gt;

&lt;p&gt;So, yeah do make an account, it's good stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Github
&lt;/h2&gt;

&lt;p&gt;If you are a developer and don't have GitHub, then I don't know what you are even doing. So we are gonna skip this one.&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%2F0x05yk5lm1s6xcm2kqh8.jpg" 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%2F0x05yk5lm1s6xcm2kqh8.jpg" alt="Github" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay okay, let's talk a little about it.&lt;/p&gt;

&lt;p&gt;Think of it as a platform, where you can store and share your code with others but it's more than that.&lt;/p&gt;

&lt;p&gt;If you want to learn more about it you should read this: &lt;a href="https://docs.github.com/en/get-started/start-your-journey/about-github-and-git" rel="noopener noreferrer"&gt;https://docs.github.com/en/get-started/start-your-journey/about-github-and-git&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Personal Cloud Storage
&lt;/h2&gt;

&lt;p&gt;Everyone knows about this one too. I'm talking about Google Drive, OneDrive, Mega... that kind of stuff, you know that :)&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%2Fc7trzuw16j0c6m2zz59g.jpg" 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%2Fc7trzuw16j0c6m2zz59g.jpg" alt="Cloud storage" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can backup all the files, photos, videos, anddddd anything.&lt;/p&gt;




&lt;p&gt;With all these tools, you can access all the important data anywhere, anytime, and convert any machine into your workspace.&lt;/p&gt;

&lt;p&gt;The password manager has saved my life a couple of times and one day it might save yours too.&lt;/p&gt;

&lt;p&gt;If there is any secret tool or technique you are hiding that can improve my system, please do tell me!!&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Best way to learn new stuff as a software developer.</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Sat, 20 Jan 2024 14:16:31 +0000</pubDate>
      <link>https://dev.to/vinayakisme/best-way-to-learn-new-stuff-as-a-software-developer-2oeb</link>
      <guid>https://dev.to/vinayakisme/best-way-to-learn-new-stuff-as-a-software-developer-2oeb</guid>
      <description>&lt;p&gt;Learning new stuff is a very crucial skill, not only as a developer but in general. So I want to start this blog with a quick story.&lt;/p&gt;

&lt;p&gt;Back in the days when I was watching a lot of anime, I was obsessed with amvs(anime music videos) so much so that I wanted to create my own amvs. Even though I only knew very basic video editing, I just had this super cool amv idea on my mind that I wanted to create anyhow. I built this project with the help of lots of tutorials. Learning advanced stuff was painful.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.videoservice.pro%2Fimages%2Fvideo-editing.jpg%2C" 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%2Fwww.videoservice.pro%2Fimages%2Fvideo-editing.jpg%2C" title="editing" alt="alt text" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I look back on that project, it’s very messy but for me, it was the best amv on the internet. I loved it. Fast forward 5 months I became a very good amv editor or video editor in general. I loved turning my imagination into media.&lt;/p&gt;

&lt;p&gt;It taught me some valuable lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to learn new stuff?&lt;/li&gt;
&lt;li&gt;How does it feel to get good at something?&lt;/li&gt;
&lt;li&gt;Having fun along the way.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now to the juicy bits, there are some key points I keep in mind while learning anything new, it helps me learn it way faster and most of all have a fun time doing it:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Aspire Way Above Your Skill Level
&lt;/h2&gt;

&lt;p&gt;Whenever learning anything new, the first thing to do is to set a goal in mind. Now by goal, I don't mean "I want to become a good developer", that's good and all but it's very abstract, what do you even mean by a good dev?&lt;/p&gt;

&lt;p&gt;Try to think of something more practical, that you can achieve this month like "I want to create a workout application that I can use to plan my workouts, maybe others will like and use it too", now how cool that sounds.&lt;/p&gt;

&lt;p&gt;Now try to achieve this goal, don't think that you can't do it. You have to do it anyhow. It doesn't matter if it's good or not, just complete it.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1607705703571-c5a8695f18f6%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D%2C" 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%2Fimages.unsplash.com%2Fphoto-1607705703571-c5a8695f18f6%3Fq%3D80%26w%3D2070%26auto%3Dformat%26fit%3Dcrop%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%253D%253D%2C" title="focus" alt="alt text" width="2070" height="1380"&gt;&lt;/a&gt;&lt;br&gt;
If you get stuck somewhere because you don't have the required skills, that's where you :&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Learn Things on the Go
&lt;/h2&gt;

&lt;p&gt;Believe me, it will save you so much time and headache. Doing this, I have learned so many advanced skills in such a short time that would have taken me way longer, or maybe I would have never learned them.&lt;/p&gt;

&lt;p&gt;I constantly put myself in a situation where I have to learn it, rather than learning it because it might be useful.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1587093336587-eeca6cb17cf2%3Fw%3D600%26auto%3Dformat%26fit%3Dcrop%26q%3D60%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxzZWFyY2h8N3x8aGFyZHxlbnwwfHwwfHx8MA%253D%253D%2C" 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%2Fimages.unsplash.com%2Fphoto-1587093336587-eeca6cb17cf2%3Fw%3D600%26auto%3Dformat%26fit%3Dcrop%26q%3D60%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxzZWFyY2h8N3x8aGFyZHxlbnwwfHwwfHx8MA%253D%253D%2C" title="figure it out" alt="alt text" width="600" height="751"&gt;&lt;/a&gt;&lt;br&gt;
If you have ever played any sport in your life, recall the first time you ever tried to play it, did you first learn every rule and technique? or did you pick it up and start playing?&lt;/p&gt;

&lt;p&gt;I am pretty sure most of you did the latter, but why? Because it's more fun, duh!&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Having Fun
&lt;/h2&gt;

&lt;p&gt;Going back to my amv story. I like this story a lot, it made me a very good video editor and taught me so many lessons but the reason why I go back to it is because of how fun it was!!&lt;/p&gt;

&lt;p&gt;At that time, the only reason I was doing it was because I was having a blast editing videos till I fell asleep(literally).&lt;/p&gt;

&lt;p&gt;Motivation and discipline sure help you complete the task, but having fun is what makes you think about it all day and get excited to do it again the next day.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1545184180-25d471fe75eb%3Fw%3D600%26auto%3Dformat%26fit%3Dcrop%26q%3D60%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxzZWFyY2h8Mnx8aGFwcHklMjBjb21wdXRlcnxlbnwwfHwwfHx8MA%253D%253D%2C" 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%2Fimages.unsplash.com%2Fphoto-1545184180-25d471fe75eb%3Fw%3D600%26auto%3Dformat%26fit%3Dcrop%26q%3D60%26ixlib%3Drb-4.0.3%26ixid%3DM3wxMjA3fDB8MHxzZWFyY2h8Mnx8aGFwcHklMjBjb21wdXRlcnxlbnwwfHwwfHx8MA%253D%253D%2C" title="fun" alt="alt text" width="600" height="900"&gt;&lt;/a&gt;&lt;br&gt;
Try to have fun with it, and build projects that really excite you.&lt;/p&gt;




&lt;p&gt;These are the three main things I keep in mind while learning anything new. I am pretty sure you will pick up a few things from this blog and apply them to your own strategy(That's what I do).&lt;/p&gt;

&lt;p&gt;All of this is straight out of my experience, so I thought sharing it with you guys would be pretty cool.&lt;/p&gt;

&lt;p&gt;Have a nice day :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>This is not the tsc command you are looking for</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Sat, 20 Jan 2024 14:10:10 +0000</pubDate>
      <link>https://dev.to/vinayakisme/this-is-not-the-tsc-command-you-are-looking-for-5eng</link>
      <guid>https://dev.to/vinayakisme/this-is-not-the-tsc-command-you-are-looking-for-5eng</guid>
      <description>&lt;p&gt;So, from what I have experienced, this problem occurs when you install typescript like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g tsc             #don't do this
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;To solve this error, try to run this command in the terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm uninstall -g typescript
npm uninstall - g tsc
npm install -g typescript 
npm install -D typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hope it helped :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to install Firefox Developer edition on Ubuntu.</title>
      <dc:creator>Vinayak</dc:creator>
      <pubDate>Fri, 19 Jan 2024 14:45:26 +0000</pubDate>
      <link>https://dev.to/vinayakisme/how-to-install-firefox-developer-edition-on-ubuntu-5eb8</link>
      <guid>https://dev.to/vinayakisme/how-to-install-firefox-developer-edition-on-ubuntu-5eb8</guid>
      <description>&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%2Fjbhn552ihimdxs7wptx2.jpg" 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%2Fjbhn552ihimdxs7wptx2.jpg" alt=" " width="640" height="458"&gt;&lt;/a&gt;The thing is, Firefox dev edition is not available on the default system repository so if you want to install it, you have to do it manually.&lt;/p&gt;

&lt;p&gt;Let's get right into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Open terminal
&lt;/h2&gt;

&lt;h2&gt;
  
  
  2. Download and unpack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&amp;amp;os=linux64&amp;amp;lang=en-US" -O Firefox-dev.tar.bz2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo tar xjf Firefox-dev.tar.bz2 -C /opt/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm -r Firefox-dev.tar.bz2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ln -s /opt/firefox/firefox /usr/local/bin/firefox-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firefox-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now at this point, you have installed Firefox dev on your system and you can run it with the above command but if you want to create a shortcut(which you should), then follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Creating Shortcut
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vi Firefox-dev.desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don’t know how to use vi editor :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Press “i” to enter insert mode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;copy-paste the lines given below( ctrl +c / ctrl+v )&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Paste these lines inside the file :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Desktop Entry]
Name=Firefox-developer-edition
Exec=/usr/local/bin/firefox-dev
Icon=/opt/firefox/browser/chrome/icons/default/default128.png
comment=browser
Type=Application
Terminal=false
Encoding=UTF-8
Categories=Utility;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;press “ESC” to move out of insert mode.&lt;/li&gt;
&lt;li&gt;now type “:wq” and press enter key to save and exit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo cp Firefox-dev.desktop /usr/share/applications/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Updating
&lt;/h2&gt;

&lt;p&gt;To be honest with you using Firefox Developers Edition as your default browser is kinda annoying since it asks for updates very often and you have to do it manually.&lt;/p&gt;

&lt;p&gt;But if you wanna update it, don’t download it from the browser, just run these commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&amp;amp;os=linux64&amp;amp;lang=en-US" -O Firefox-dev.tar.bz2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo tar xjf  Firefox-dev.tar.bz2 -C /opt/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Removing
&lt;/h2&gt;

&lt;p&gt;In some case, you wanna completely remove Firefox dev from your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo rm -r /opt/firefox/

sudo rm /usr/local/bin/firefox-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo rm /usr/share/applications/Firefox-dev.desktop

rm ~/Desktop/Firefox-dev.desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
