<?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: Prayush Adhikari</title>
    <description>The latest articles on DEV Community by Prayush Adhikari (@adhikareeprayush).</description>
    <link>https://dev.to/adhikareeprayush</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1274304%2Fc9da5e02-7345-4dd7-9b65-e75e5811bca4.png</url>
      <title>DEV Community: Prayush Adhikari</title>
      <link>https://dev.to/adhikareeprayush</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adhikareeprayush"/>
    <language>en</language>
    <item>
      <title>Learning to Code Without Burning Out: How to Stay Consistent for the Long Haul</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Fri, 16 Oct 2026 18:00:53 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/learning-to-code-without-burning-out-how-to-stay-consistent-for-the-long-haul-1mlk</link>
      <guid>https://dev.to/adhikareeprayush/learning-to-code-without-burning-out-how-to-stay-consistent-for-the-long-haul-1mlk</guid>
      <description>&lt;p&gt;Week one, you were unstoppable. Six-hour sessions, three tutorials a day, a notebook full of plans, and a brand new GitHub account.&lt;/p&gt;

&lt;p&gt;Week three, you haven't opened your editor in five days. You feel guilty about it, and the guilt makes you want to avoid it even more. So now you're not just behind, you're avoiding the whole thing.&lt;/p&gt;

&lt;p&gt;If that's you, nothing is wrong with your brain or your discipline. You just ran into the most common pattern in learning to code, and it has very little to do with talent. This post is about staying in the game long enough for the skills to stick.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Boom and Bust Cycle
&lt;/h2&gt;

&lt;p&gt;Almost every beginner runs the same loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A burst of motivation, usually after a video or a big decision&lt;/li&gt;
&lt;li&gt;An intense stretch of doing far too much&lt;/li&gt;
&lt;li&gt;Exhaustion, or a hard concept that breaks the streak&lt;/li&gt;
&lt;li&gt;Guilt, avoidance, and a quiet quit&lt;/li&gt;
&lt;li&gt;A new wave of motivation, and back to step 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem isn't step 4. It's steps 1 and 2. Motivation is a spark, not a fuel. It's great for starting and terrible for lasting. If your plan depends on feeling motivated every day, it will fail on the first bad Tuesday.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Think of Your Energy as a Phone Battery
&lt;/h2&gt;

&lt;p&gt;Here's a picture that made this click for me.&lt;/p&gt;

&lt;p&gt;Your focus and energy are a phone battery. Every coding session drains some. That's fine, that's what it's for. But there are two things that quietly kill the battery faster:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background apps.&lt;/strong&gt; Even when you're not coding, your brain is running apps: the worry that you're behind, five open courses, comparing yourself to someone your age with an internship, the endless scroll of "how I got hired in 3 months." None of it is on screen, yet all of it drains you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never charging.&lt;/strong&gt; Sleep, rest days, food, walks, time with friends. These aren't rewards for finishing. They're the charger. Skip them and you're running at 5% and wondering why nothing sticks.&lt;/p&gt;

&lt;p&gt;Staying consistent isn't about draining the battery harder. It's about never letting it hit zero, and closing the background apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Warning Signs to Watch For
&lt;/h2&gt;

&lt;p&gt;Burnout tends to creep in rather than crash in. Notice if you're feeling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dread when you open your editor, not just difficulty&lt;/li&gt;
&lt;li&gt;Everything you build feels pointless or not good enough&lt;/li&gt;
&lt;li&gt;Irritability or a short temper about small errors&lt;/li&gt;
&lt;li&gt;Trouble focusing or reading code you understood yesterday&lt;/li&gt;
&lt;li&gt;Sleeping badly, or replaying bugs in your head at night&lt;/li&gt;
&lt;li&gt;A constant background feeling of guilt about not doing enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Catching these early is far easier than recovering from a full crash. If they're heavy, they last for weeks, or they spill into the rest of your life, please talk to someone: a friend, a mentor, a family member, or a professional. Nothing here is a diagnosis, and it's a sign to look after yourself rather than push harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Build a Minimum, Not a Mountain
&lt;/h2&gt;

&lt;p&gt;The most powerful trick I know for consistency is embarrassingly simple: &lt;strong&gt;decide the smallest version of a study session that still counts, and never go below it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mine is 20 minutes: open the editor, do one small thing. Write one function, fix one bug, read one page of docs. That's a valid day.&lt;/p&gt;

&lt;p&gt;Why it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starting is the hardest part. Once you're in, you often keep going.&lt;/li&gt;
&lt;li&gt;A tiny minimum removes the all-or-nothing trap. A bad day becomes a 20-minute day instead of a zero day.&lt;/li&gt;
&lt;li&gt;It keeps the habit alive, and habits are what get you through the months where motivation disappears.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want a rule to live by: &lt;strong&gt;never miss twice.&lt;/strong&gt; Missing one day is life. Missing two in a row is the start of a new habit. So after a skipped day, do the minimum the next day, no matter how small.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Schedule It Like a Class
&lt;/h2&gt;

&lt;p&gt;"I'll code when I feel like it" is the plan that fails. Give your practice a time, like a lecture you've committed to.&lt;/p&gt;

&lt;p&gt;A sustainable pattern for a student might look like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mon to Fri&lt;/td&gt;
&lt;td&gt;1 focused hour at a fixed time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Saturday&lt;/td&gt;
&lt;td&gt;2 to 3 hours on your project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunday&lt;/td&gt;
&lt;td&gt;Full rest, no code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's about 8 to 9 hours a week. It sounds small, and it beats the 12-hour weekend binge followed by two weeks of nothing.&lt;/p&gt;

&lt;p&gt;A few extra habits that help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Work in blocks.&lt;/strong&gt; 25 minutes focused, 5 minutes break, or 50 and 10 if that suits you better.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look away from the screen regularly.&lt;/strong&gt; The 20-20-20 habit is easy: every 20 minutes, look at something about 20 feet away for 20 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop mid-task on purpose.&lt;/strong&gt; End a session with the next step already written down. It makes tomorrow's start easier.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Close the Background Apps
&lt;/h2&gt;

&lt;p&gt;You can't learn well with twelve tabs open in your head.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One learning path.&lt;/strong&gt; One course, one main project. Not five.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A news diet.&lt;/strong&gt; Checking tech news, trends, and "top 10 things to learn" every day is a distraction disguised as progress. Try once a week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mute the comparison feed.&lt;/strong&gt; If certain accounts make you feel behind more than inspired, unfollow them. You're allowed to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write down the shiny ideas.&lt;/strong&gt; New framework? New idea? Put it in a "later" list and go back to your work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Track Wins, Not Hours
&lt;/h2&gt;

&lt;p&gt;Counting hours makes you feel guilty when they're low. Counting wins makes you feel progress.&lt;/p&gt;

&lt;p&gt;Keep a simple running list in your notes app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bug I fixed today&lt;/li&gt;
&lt;li&gt;A concept that finally clicked&lt;/li&gt;
&lt;li&gt;Something I built and shipped&lt;/li&gt;
&lt;li&gt;A question I answered for someone else&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once a week, spend five minutes reviewing it: what did I ship, what did I learn, what's next? On the days when it feels like you're going nowhere, that list is proof that you are.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Everyone Feels Like an Imposter
&lt;/h2&gt;

&lt;p&gt;That nagging feeling that everyone else understands things you don't? Almost every developer has it, including people with years of experience and impressive jobs. You only see other people's finished work, never their confusion.&lt;/p&gt;

&lt;p&gt;You don't need to feel confident to make progress. You just need to keep showing up while feeling unsure. Confidence follows the work, not the other way around.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Look After the Body Running the Code
&lt;/h2&gt;

&lt;p&gt;This part sounds boring and it matters more than any tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sleep.&lt;/strong&gt; Cutting sleep to study longer is usually a bad trade. Tired brains learn poorly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move.&lt;/strong&gt; A walk, stretching, or a bit of exercise clears your head better than another hour of staring at a bug.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eat and drink water.&lt;/strong&gt; It's easy to forget both during a coding session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sit well.&lt;/strong&gt; A better chair or a laptop stand can save you a lot of discomfort down the line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;See people.&lt;/strong&gt; Time away from screens with friends and family is not wasted time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Learn With Other People
&lt;/h2&gt;

&lt;p&gt;Learning alone is the fastest route to feeling isolated. Find your people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;study buddy&lt;/strong&gt; you check in with weekly&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;club or community&lt;/strong&gt; where people build things together&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;accountability partner&lt;/strong&gt; to whom you say what you'll do this week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teaching others&lt;/strong&gt;, even a beginner behind you, which cements your own understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sharing what you're stuck on cuts the stress in half, and someone else's small win can pull you through a slump.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. When You're Stuck on a Plateau
&lt;/h2&gt;

&lt;p&gt;Some weeks nothing seems to improve. That's normal, because learning isn't a straight line. When it happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Switch modes.&lt;/strong&gt; If you've been watching tutorials, build something. If you've been building, read someone else's code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shrink the goal.&lt;/strong&gt; Scale down instead of quitting. One small feature this week is fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take a proper break.&lt;/strong&gt; Two or three days fully off can do more than a week of forcing it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stalling is part of the process. Stopping for good is the only real failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Coming Back After a Long Break
&lt;/h2&gt;

&lt;p&gt;Say you vanished for a month. Don't start with a guilty five-hour session to "catch up." That's the boom and bust cycle again.&lt;/p&gt;

&lt;p&gt;Try a gentle re-entry instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open an old project. Just run it and see it work.&lt;/li&gt;
&lt;li&gt;Fix one tiny thing or add one small feature.&lt;/li&gt;
&lt;li&gt;Do your 20-minute minimum for a week.&lt;/li&gt;
&lt;li&gt;Then slowly build back up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nobody is keeping score of the days you missed. The only day that matters is the next one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tonight: Set Your Minimum
&lt;/h2&gt;

&lt;p&gt;Before you close this tab, do two things. First, decide your minimum session, the smallest amount of coding that counts. Second, pick a time tomorrow and put it in your calendar.&lt;/p&gt;

&lt;p&gt;Not a big plan. Not a new roadmap. Just a small promise you can actually keep.&lt;/p&gt;

&lt;p&gt;The people who become good developers aren't the ones who worked the hardest in week one. They're the ones who were still showing up in month six.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;Tell me in the comments what your own minimum session looks like, or what usually derails your consistency. I read every one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to land your first freelance client as a student, or how to build a career network when you don't know anyone in tech?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>mentalhealth</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to Build Your First Portfolio Website (Even If You're Not a Designer)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Mon, 12 Oct 2026 16:23:03 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/how-to-build-your-first-portfolio-website-even-if-youre-not-a-designer-19ho</link>
      <guid>https://dev.to/adhikareeprayush/how-to-build-your-first-portfolio-website-even-if-youre-not-a-designer-19ho</guid>
      <description>&lt;p&gt;Everyone says you need a portfolio website. Nobody tells you what goes on it.&lt;/p&gt;

&lt;p&gt;So you open a blank file, write "Welcome to my portfolio!" at the top, and then spend three hours picking a font. Two weeks later it's still not online, and the folder is named &lt;code&gt;portfolio-final-new&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sound familiar? Good, because this post fixes it. I'll walk you through what to put on your portfolio, how to make it look decent when you're no designer, and how to get it live without paying anything. No fancy skills required.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Do You Even Need One?
&lt;/h2&gt;

&lt;p&gt;Fair question. If you already have a clean GitHub profile (I wrote a whole post on that), you're ahead of most people.&lt;/p&gt;

&lt;p&gt;But a portfolio site does something GitHub can't: &lt;strong&gt;it lets you tell your own story, in your own order, on your own terms.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub shows your code. A portfolio shows your &lt;em&gt;thinking&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You control what people see first.&lt;/li&gt;
&lt;li&gt;You get one link to put on your resume, LinkedIn, and job applications.&lt;/li&gt;
&lt;li&gt;It proves you can finish and ship something, which is exactly what employers want to know.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn't need to be huge. One good page beats a ten-page site nobody finishes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Think of It as a Movie Trailer
&lt;/h2&gt;

&lt;p&gt;Here's the mindset that changed how I approach this.&lt;/p&gt;

&lt;p&gt;A movie trailer doesn't show the whole film. It shows the best moments in about two minutes, leaves you curious, and makes you want more.&lt;/p&gt;

&lt;p&gt;Your portfolio is your trailer. Nobody will read every project description or scroll through everything you've ever made. They'll spend about half a minute deciding whether you're worth a closer look. So show your best three or four moments, make them easy to understand, and give people a clear next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What to Put On It
&lt;/h2&gt;

&lt;p&gt;Keep it simple. A strong beginner portfolio has five parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hero section.&lt;/strong&gt; Your name, one line about what you do, and a button that leads somewhere (like "See my projects" or "Contact me"). Example: "Computer engineering student building web tools and learning backend."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projects.&lt;/strong&gt; Three or four of your best. Quality over quantity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;About.&lt;/strong&gt; A short, human paragraph. Where you study, what you're into, what you're learning. Add a photo if you're comfortable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills.&lt;/strong&gt; A short list of tools you actually use. Skip the progress bars that say "JavaScript 85%." Nobody knows what that means, including you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact.&lt;/strong&gt; Email, LinkedIn, and GitHub links. Make sure they work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Optional extras: a link to your resume, and a blog or writing section if you publish posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How to Present Each Project
&lt;/h2&gt;

&lt;p&gt;This is where most beginner portfolios fall apart. A screenshot and a title isn't enough.&lt;/p&gt;

&lt;p&gt;For each project, answer these in a few lines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; One sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What problem does it solve?&lt;/strong&gt; Why did you build it?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did you use?&lt;/strong&gt; The tech, in a short list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What was hard?&lt;/strong&gt; One real challenge and how you dealt with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where can I see it?&lt;/strong&gt; A live link and a GitHub link.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That "what was hard" line is gold. It shows that you can reason about your own work, and it gives an interviewer something to ask you about. If you used AI tools in the process, say how and where you checked the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Choose How You'll Build It
&lt;/h2&gt;

&lt;p&gt;You have three realistic paths. Pick one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path A: A template or website builder.&lt;/strong&gt; Fastest. Great if you're short on time or don't want to touch code. The downside is you learn less and it looks less unique.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path B: Plain HTML, CSS, and a little JavaScript.&lt;/strong&gt; Slower, but you learn a ton and you fully control it. This is my pick for a first portfolio, especially if you're still learning the basics. A portfolio you coded yourself doubles as a project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path C: A framework like React, Astro, or Next.js.&lt;/strong&gt; Powerful, but it's a lot to learn at once. Choose this only if you already know it.&lt;/p&gt;

&lt;p&gt;If you're unsure, go with Path B. Here's how small the starting point is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Your Name | Web Developer&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"description"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"Student developer building web tools. See my projects."&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"style.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Your Name&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Computer engineering student building web tools.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- projects, about, contact go here --&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a real starting page. Everything else is filling in sections and styling them.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Make It Look Good Without Being a Designer
&lt;/h2&gt;

&lt;p&gt;You don't need talent. You need a few simple rules.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two fonts at most.&lt;/strong&gt; One for headings, one for body text. Free options on Google Fonts have plenty of good pairings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two or three colors.&lt;/strong&gt; One background, one text color, one accent for buttons and links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lots of whitespace.&lt;/strong&gt; Crowded pages look amateur. Empty space looks confident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent spacing.&lt;/strong&gt; Use the same gaps between sections and cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readable text.&lt;/strong&gt; Dark text on a light background, or the reverse, with strong contrast. Don't put light gray on white.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile first.&lt;/strong&gt; Many people will open your link on a phone. Check it there before anything else.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Steal ideas shamelessly, in a good way. Browse a few portfolios you love, notice what they do (spacing, layout, how they show projects), then build your own version. Copying the &lt;em&gt;approach&lt;/em&gt; is learning. Copying the code and content is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The Build Order That Works
&lt;/h2&gt;

&lt;p&gt;Follow this sequence and you'll finish:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sketch it.&lt;/strong&gt; A rough wireframe on paper or in Excalidraw. Five boxes, no colors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the words first.&lt;/strong&gt; Your one-liner, About paragraph, and project descriptions. Design goes faster when the content exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build one page.&lt;/strong&gt; Get it working end to end, ugly is fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it responsive.&lt;/strong&gt; Test on a phone-sized screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add polish.&lt;/strong&gt; Colors, fonts, a hover effect or two.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy.&lt;/strong&gt; Don't wait for perfect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The biggest killer of portfolios is polishing something that isn't online yet. Ship the ugly version, then improve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Put It Online for Free
&lt;/h2&gt;

&lt;p&gt;You can host a portfolio at no cost. Common options are GitHub Pages, Netlify, Vercel, and Cloudflare Pages. All of them can turn a folder of files into a live link in minutes, usually straight from a GitHub repo, so every update goes live automatically when you push.&lt;/p&gt;

&lt;p&gt;Free plans and their limits change over time, so check the current details when you sign up.&lt;/p&gt;

&lt;p&gt;Later, consider a custom domain like &lt;code&gt;yourname.com&lt;/code&gt; or &lt;code&gt;yourname.dev&lt;/code&gt;. It costs a little each year and looks much more professional than a long default address, but it's optional. Don't let it delay your launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. The Small Details That Make You Look Professional
&lt;/h2&gt;

&lt;p&gt;These take ten minutes and set you apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Page title and description.&lt;/strong&gt; What shows up in Google results and browser tabs. Include your name and what you do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A favicon.&lt;/strong&gt; The tiny icon in the browser tab. Its absence quietly says "unfinished."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A preview image for link sharing.&lt;/strong&gt; When you paste your link into LinkedIn or a chat, a good preview card makes people click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image descriptions (alt text).&lt;/strong&gt; Good for accessibility and search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compressed images.&lt;/strong&gt; Huge photos make your site slow, and slow sites get closed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working links.&lt;/strong&gt; Click every single one. Broken links look sloppy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10. Test It Before You Share It
&lt;/h2&gt;

&lt;p&gt;Do a quick sanity check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open it on your phone and on a different browser&lt;/li&gt;
&lt;li&gt;Ask three friends to look at it for five seconds, then tell you what you do. If they can't say, your hero section needs work.&lt;/li&gt;
&lt;li&gt;Read every word out loud for typos&lt;/li&gt;
&lt;li&gt;Make sure the contact links actually open the right thing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then ask someone in the field for honest feedback. A senior student or a developer in your club works great. Honest feedback stings for a minute and helps for years.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Common Mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Waiting for it to be perfect.&lt;/strong&gt; It never will be. Launch and iterate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too many projects.&lt;/strong&gt; Ten mediocre ones drown out three great ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tutorial clones.&lt;/strong&gt; Every to-do app and weather app looks the same. Add something of your own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fake skill bars and buzzwords.&lt;/strong&gt; Show, don't claim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never updating it.&lt;/strong&gt; An old portfolio with two-year-old projects says you stopped building.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignoring mobile.&lt;/strong&gt; More people than you think will open it on a phone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  12. Keep It Alive
&lt;/h2&gt;

&lt;p&gt;A portfolio isn't a one-time task. Every few months, add your newest project, retire the weakest one, and reread your bio. Set a calendar reminder so it doesn't rot.&lt;/p&gt;

&lt;p&gt;Also, add your portfolio link everywhere: your GitHub profile, LinkedIn, Dev.to bio, resume, and email signature. A great site nobody visits does nothing for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now Go Write One Sentence
&lt;/h2&gt;

&lt;p&gt;Don't open a code editor yet. Open a plain text file and write your one-line intro: who you are and what you build.&lt;/p&gt;

&lt;p&gt;Once you have that sentence, everything else gets easier. Then sketch five boxes, write the content, and build it in one weekend. You can improve it forever after that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;Drop your portfolio link in the comments once it's live. I'd like to see it and give feedback.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to stay consistent and avoid burnout while learning to code, or how to land your first freelance client as a student?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>portfolio</category>
      <category>career</category>
    </item>
    <item>
      <title>Git Explained for Beginners (Without the Confusing Parts)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Wed, 07 Oct 2026 13:35:52 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/git-explained-for-beginners-without-the-confusing-parts-5036</link>
      <guid>https://dev.to/adhikareeprayush/git-explained-for-beginners-without-the-confusing-parts-5036</guid>
      <description>&lt;p&gt;You've heard everyone say "just push it to GitHub." You nodded. You have no idea what that means.&lt;/p&gt;

&lt;p&gt;Or maybe you've memorized &lt;code&gt;git add .&lt;/code&gt;, &lt;code&gt;git commit -m "stuff"&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt; like a magic spell, and the day something goes wrong you have no clue what to do. Delete the folder and clone again? Yeah, I've seen that. I've done that.&lt;/p&gt;

&lt;p&gt;Git isn't hard because the commands are hard. It's hard because nobody explains what's happening underneath. Once you have the right picture in your head, the commands stop being spells and start making sense. Let me give you that picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Git Is a Save System for Your Code
&lt;/h2&gt;

&lt;p&gt;Think about a video game with save points.&lt;/p&gt;

&lt;p&gt;Before a boss fight, you save. If you die, you reload and try again. You don't lose the whole game, just the last few minutes. Some games even let you keep multiple save slots so you can try a risky path without wrecking your main run.&lt;/p&gt;

&lt;p&gt;Git does exactly that for your project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;commit&lt;/strong&gt; is a save point, with a note attached saying what changed&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;history&lt;/strong&gt; is the list of all your save points, so you can go back to any of them&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;branch&lt;/strong&gt; is a separate save slot where you can try something risky&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merging&lt;/strong&gt; is bringing the results of one slot back into your main game&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's the whole idea. Everything else is details.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Git vs GitHub (They're Not the Same Thing)
&lt;/h2&gt;

&lt;p&gt;This trips up almost everyone at the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; is the tool that lives on your computer and tracks your changes. It works completely offline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt; is a website that stores copies of your Git projects online, so you can back them up, share them, and work with other people. GitLab and Bitbucket do the same job.&lt;/p&gt;

&lt;p&gt;If Git is the game, GitHub is the cloud save. You can play without the cloud, but the cloud is how you keep your progress safe and let friends join in.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Three Places Your Code Lives
&lt;/h2&gt;

&lt;p&gt;This is the part tutorials skip, and it's the reason &lt;code&gt;git add&lt;/code&gt; confuses people.&lt;/p&gt;

&lt;p&gt;Your code moves through three areas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Working folder.&lt;/strong&gt; The files you're actually editing right now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staging area.&lt;/strong&gt; A waiting room where you choose which changes go into the next save.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository.&lt;/strong&gt; The saved history, where your commits live.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Picture packing a bag before a trip. Your working folder is your whole room. Staging is the bag on the bed, where you place only what you're taking. The commit is zipping the bag shut and putting a label on it.&lt;/p&gt;

&lt;p&gt;Why bother with staging? Because sometimes you've changed five files but only two belong to the same idea. Staging lets you save those two together with a clear note, and leave the rest for another commit. That's what keeps a history readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Your First Five Minutes with Git
&lt;/h2&gt;

&lt;p&gt;First, tell Git who you are, once per computer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"you@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now make a project and start tracking it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-project
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;git init&lt;/code&gt; turns the folder into a repository. Create a file, then check what Git sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello Git"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; notes.txt
git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;git status&lt;/code&gt; is your best friend. It tells you what changed, what's staged, and what Git isn't tracking yet. Whenever you feel lost, run it.&lt;/p&gt;

&lt;p&gt;Stage the file, then save:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add notes.txt
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add first notes file"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now look at your history:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You just made your first save point. That's the loop you'll repeat thousands of times: change files, &lt;code&gt;git add&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Write Commit Messages Future You Will Thank You For
&lt;/h2&gt;

&lt;p&gt;A commit message is the note attached to a save point. Compare these:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bad&lt;/th&gt;
&lt;th&gt;Better&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;update&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Fix login button not responding on mobile&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stuff&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Add validation to signup form&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;final final v2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Refactor navbar into a reusable component&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A good rule: your message should complete the sentence "This commit will..." in a way that makes sense. Keep the first line short and specific. When you're hunting for the moment a bug appeared three weeks from now, you'll be very glad you wrote real messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Branches: Try Things Without Fear
&lt;/h2&gt;

&lt;p&gt;Here's where Git gets genuinely powerful.&lt;/p&gt;

&lt;p&gt;The main line of your project is usually called &lt;code&gt;main&lt;/code&gt;. A &lt;strong&gt;branch&lt;/strong&gt; is a copy of your work where you can experiment. If it goes well, you bring it back. If it goes badly, you throw the branch away and &lt;code&gt;main&lt;/code&gt; is untouched.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch &lt;span class="nt"&gt;-c&lt;/span&gt; add-dark-mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates a new branch called &lt;code&gt;add-dark-mode&lt;/code&gt; and moves you onto it. Make your changes, add, and commit as usual. When you're happy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch main
git merge add-dark-mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;main&lt;/code&gt; includes your dark mode work. Small habit that will save you a lot of pain: &lt;strong&gt;one branch per feature or fix.&lt;/strong&gt; Keep them small and short-lived.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Connecting to GitHub: Push, Pull, Clone
&lt;/h2&gt;

&lt;p&gt;So far everything lives on your laptop. Time to sync with GitHub.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/strong&gt; copies an existing GitHub project to your machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/strong&gt; sends your new commits up to GitHub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/strong&gt; brings down commits that someone else (or another computer of yours) added&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To connect a project you started locally, create an empty repository on GitHub, then link it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin https://github.com/your-username/my-project.git
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that first time, &lt;code&gt;git push&lt;/code&gt; and &lt;code&gt;git pull&lt;/code&gt; are all you need. A good habit: &lt;strong&gt;pull before you start working&lt;/strong&gt;, so you begin from the latest version.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. The Merge Conflict (It Looks Scary. It Isn't.)
&lt;/h2&gt;

&lt;p&gt;Every beginner panics the first time they see this. Let me defuse it.&lt;/p&gt;

&lt;p&gt;A conflict happens when two changes touch the same lines of the same file and Git can't decide which one wins. Instead of guessing, it stops and asks you. Open the file and you'll see something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
&lt;/span&gt;&amp;lt;h1&amp;gt;Welcome to my site&amp;lt;/h1&amp;gt;
&lt;span class="gh"&gt;=======
&lt;/span&gt;&amp;lt;h1&amp;gt;Welcome to my portfolio&amp;lt;/h1&amp;gt;
&lt;span class="gi"&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; add-new-heading
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The top part is your current version. The bottom is the incoming one. Your job is simple: decide what the final text should be, delete the marker lines, and save. Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add index.html
git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. Git just needed a human to pick a winner. Conflicts get easier the more often you commit small and pull often.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Undoing Mistakes (Without Panic)
&lt;/h2&gt;

&lt;p&gt;Everyone makes mistakes. Here's a safe toolkit. First, run &lt;code&gt;git status&lt;/code&gt;. It usually tells you the exact command you need.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Throw away edits to a file you haven't committed:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  git restore notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Careful: this really discards those changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unstage a file you added by accident:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  git restore &lt;span class="nt"&gt;--staged&lt;/span&gt; notes.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Undo a commit you've already shared, safely:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  git revert &amp;lt;commit-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This adds a new commit that cancels the old one, so nobody's history gets rewritten.&lt;/p&gt;

&lt;p&gt;Two commands to treat with respect: &lt;code&gt;git reset --hard&lt;/code&gt; and &lt;code&gt;git push --force&lt;/code&gt;. Both can destroy work, and force-pushing can wipe out teammates' commits. If you're not completely sure what they'll do, don't run them yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Don't Commit Your Secrets
&lt;/h2&gt;

&lt;p&gt;This one can genuinely hurt you, so read it twice.&lt;/p&gt;

&lt;p&gt;Never commit passwords, API keys, or &lt;code&gt;.env&lt;/code&gt; files. Once something is pushed to a public repo, assume the whole internet has seen it, even if you delete it a minute later. Bots scan GitHub for exposed keys constantly.&lt;/p&gt;

&lt;p&gt;Use a &lt;code&gt;.gitignore&lt;/code&gt; file to tell Git which files to skip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;.&lt;span class="n"&gt;env&lt;/span&gt;
&lt;span class="n"&gt;node_modules&lt;/span&gt;/
*.&lt;span class="n"&gt;log&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you do accidentally push a key, don't just delete the file. &lt;strong&gt;Revoke and replace the key immediately&lt;/strong&gt;, then clean up. Deleting the commit isn't enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. The Cheat Sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you want&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Start tracking a folder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See what's going on&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stage a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save a snapshot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git commit -m "message"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See history&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git log --oneline&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Make and switch to a branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch -c &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switch branches&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merge a branch into the current one&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git merge &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Download a project&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send commits to GitHub&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Get latest changes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You don't need to memorize all of these today. Print them, tape them next to your screen, and they'll stick on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Habits That Make Git Painless
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Commit small and often.&lt;/strong&gt; Many small commits beat one giant one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write real messages.&lt;/strong&gt; Future you is a stranger who needs context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull before you start.&lt;/strong&gt; Begin from the freshest code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch for every feature.&lt;/strong&gt; Keep &lt;code&gt;main&lt;/code&gt; clean and working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run &lt;code&gt;git status&lt;/code&gt; constantly.&lt;/strong&gt; It costs nothing and prevents most surprises.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Now Go Break Something Safely
&lt;/h2&gt;

&lt;p&gt;Make a throwaway folder, run &lt;code&gt;git init&lt;/code&gt;, and go wild. Create a branch, mess up a file on purpose, create a conflict, and fix it. There's no better way to lose your fear of Git than breaking it in a place where nothing matters.&lt;/p&gt;

&lt;p&gt;Ten minutes of that will teach you more than an hour of reading.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;Tell me in the comments what part of Git confuses you the most. I'll cover it in a follow-up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to read and understand error messages, or how to build your first portfolio website from scratch?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Panicking at Red Text: How to Actually Read Error Messages</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Mon, 05 Oct 2026 20:17:03 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/stop-panicking-at-red-text-how-to-actually-read-error-messages-1df</link>
      <guid>https://dev.to/adhikareeprayush/stop-panicking-at-red-text-how-to-actually-read-error-messages-1df</guid>
      <description>&lt;p&gt;Your screen just turned red. There's a wall of text, half of it looks like a foreign language, and your first instinct is to close the terminal and pretend it never happened.&lt;/p&gt;

&lt;p&gt;Been there. For an embarrassingly long time, my debugging strategy was to stare at the error for two seconds, decide it was unreadable, and start randomly changing things until it went away. Sometimes that worked. Mostly it made things worse.&lt;/p&gt;

&lt;p&gt;Here's the surprising truth: that red wall of text is usually the most helpful thing your computer will ever say to you. It tells you what broke, where it broke, and often why. You just need to learn to read it. Let's fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. An Error Is a Note, Not an Insult
&lt;/h2&gt;

&lt;p&gt;Most beginners hear error messages as criticism. "You did it wrong." So they look away.&lt;/p&gt;

&lt;p&gt;Try a different frame. Think of an error message as a note left by a very literal coworker who can only say what they see: "I got to line 12, tried to use something called &lt;code&gt;total&lt;/code&gt;, and I don't know what that is."&lt;/p&gt;

&lt;p&gt;It isn't judging you. It's reporting a fact, and the fact narrows your search from "somewhere in my whole project" to "right around this line." That's a gift. A bug with no error message is much harder to find, and I'll get to that later.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Read the Whole Thing (Yes, Really)
&lt;/h2&gt;

&lt;p&gt;The number one habit that separates people who debug fast from people who suffer: &lt;strong&gt;they read the entire message, slowly, before touching anything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most errors contain three useful pieces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The type.&lt;/strong&gt; What kind of problem is this? (&lt;code&gt;TypeError&lt;/code&gt;, &lt;code&gt;NameError&lt;/code&gt;, &lt;code&gt;SyntaxError&lt;/code&gt;...)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The message.&lt;/strong&gt; A short sentence explaining what went wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The location.&lt;/strong&gt; The file and line number where it happened.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Find those three and you've solved half the problem before opening Google.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Follow the Footprints
&lt;/h2&gt;

&lt;p&gt;Here's a real-looking Python error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Traceback (most recent call last):
&lt;/span&gt;&lt;span class="gp"&gt;  File "app.py", line 8, in &amp;lt;module&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;    total = add_prices(cart)
  File "app.py", line 4, in add_prices
    return sum(prices) + tax
NameError: name 'tax' is not defined
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks scary. Let's read it like a detective following footprints.&lt;/p&gt;

&lt;p&gt;This block is called a &lt;strong&gt;stack trace&lt;/strong&gt; (or traceback). It's a trail showing how the program got to the crash: line 8 called a function, and inside that function, line 4 is where things fell apart.&lt;/p&gt;

&lt;p&gt;The trick in Python: &lt;strong&gt;read from the bottom up.&lt;/strong&gt; The last line is the actual problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;NameError: name 'tax' is not defined&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Translation: "You used something called &lt;code&gt;tax&lt;/code&gt;, but I've never heard of it." Now look one line above: line 4, inside &lt;code&gt;add_prices&lt;/code&gt;. You'll spot that &lt;code&gt;tax&lt;/code&gt; was never created, or is misspelled, or lives somewhere this function can't see.&lt;/p&gt;

&lt;p&gt;Thirty seconds, and you know exactly where to look. No guessing.&lt;/p&gt;

&lt;p&gt;JavaScript works a little differently, and the newest line is often at the top of the trace, so check where your browser or tool puts the important part. The reading skill is the same: find the type, the message, and the location.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. A Field Guide to Common Errors
&lt;/h2&gt;

&lt;p&gt;You'll see the same handful of errors over and over. Learn what they usually mean and you'll recognize most of them on sight.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SyntaxError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You broke the grammar of the language: a missing bracket, quote, or colon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;NameError&lt;/code&gt; / &lt;code&gt;ReferenceError&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;You used a variable or function that doesn't exist (yet), often a typo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TypeError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You used the wrong kind of thing, like adding a number to text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;IndexError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You asked for item 5 in a list that only has 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;KeyError&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You asked a dictionary for a key that isn't there&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cannot read properties of undefined&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You tried to use a value that doesn't exist, like &lt;code&gt;user.name&lt;/code&gt; when &lt;code&gt;user&lt;/code&gt; is empty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;ModuleNotFoundError&lt;/code&gt; / &lt;code&gt;Cannot find module&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;The library isn't installed, or the name or path is wrong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;404&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The page or endpoint you asked for doesn't exist at that address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;401&lt;/code&gt; / &lt;code&gt;403&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;You're not logged in, or you're not allowed to see that&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The server itself crashed. Usually the problem is on their side, not yours&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Don't memorize this table. Bookmark it, and let the patterns sink in over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The Error Might Be Lying (Slightly)
&lt;/h2&gt;

&lt;p&gt;One thing that trips up every beginner: &lt;strong&gt;the line number points to where the program noticed the problem, not always where you made it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The classic case is a missing closing bracket. You forget it on line 10, but the computer keeps reading until line 25 before realizing something is wrong. So the error shows up on line 25.&lt;/p&gt;

&lt;p&gt;When the reported line looks perfectly fine, check the lines above it. Look for unclosed brackets, quotes, or parentheses. Nine times out of ten, that's where the real culprit is hiding.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Search the Right Way
&lt;/h2&gt;

&lt;p&gt;Once you've read the error and still don't get it, Google is your next move. But there's a way to do this well.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy the error message itself&lt;/strong&gt;, especially the last line. Not your whole file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove parts that are specific to you&lt;/strong&gt;, like your file paths and variable names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the language or framework&lt;/strong&gt; in front. "Python NameError name is not defined" beats "my code doesn't work."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look at results from official docs, Stack Overflow, or GitHub issues&lt;/strong&gt; first. Skim the answers and check the date, because old answers can be outdated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most errors you'll hit have been hit by thousands of people before you. You're rarely the first.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Using AI Without Turning Off Your Brain
&lt;/h2&gt;

&lt;p&gt;AI tools are genuinely good at explaining errors. Paste in the message and the few lines of code around it, and you'll often get a clear explanation in seconds.&lt;/p&gt;

&lt;p&gt;But use it as a teacher, not a fixer. Instead of "fix this," try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Explain what this error means in simple words"&lt;/li&gt;
&lt;li&gt;"Where in my code is the likely cause, and why?"&lt;/li&gt;
&lt;li&gt;"Give me a hint but don't write the solution"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you paste the fix without understanding it, you'll hit the same error next week and be exactly as confused. I made the same argument in my earlier posts about learning in the AI era, and it applies double here.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. When There's No Error (The Silent Bug)
&lt;/h2&gt;

&lt;p&gt;The trickiest bugs are the ones where nothing crashes. The program runs happily and gives you the wrong answer.&lt;/p&gt;

&lt;p&gt;No red text means no clue, so you have to create your own clues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Print your way through it.&lt;/strong&gt; Add print statements (or &lt;code&gt;console.log&lt;/code&gt; in JavaScript) to see what your variables actually hold at each step. Most of the time you'll find that something isn't what you assumed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shrink the problem.&lt;/strong&gt; Remove parts of the code until you have the smallest piece that still gives the wrong result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain it out loud.&lt;/strong&gt; Describe what each line is supposed to do, to a friend, a rubber duck, or the wall. Somewhere in that sentence, you'll say something that doesn't match the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change one thing at a time.&lt;/strong&gt; If you edit five things and it starts working, you won't know which one fixed it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bugs aren't magic. Every one has a cause, and the goal is to narrow down where it hides.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. How to Ask for Help So People Actually Answer
&lt;/h2&gt;

&lt;p&gt;Sometimes you're truly stuck, and asking for help is the right move. Vague questions get vague answers, or silence. A good question includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you're trying to do.&lt;/strong&gt; The goal in one sentence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you expected to happen.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What actually happened,&lt;/strong&gt; with the exact error message pasted as text, not a photo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The smallest bit of code&lt;/strong&gt; that shows the problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you've already tried.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Writing the question this carefully often solves the problem before you hit send. And when it doesn't, people answer fast, because you made their job easy.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Habits That Make You Faster
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read the error out loud,&lt;/strong&gt; slowly. It sounds silly and it works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't change random things.&lt;/strong&gt; Every edit should test a specific idea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix the first error first.&lt;/strong&gt; Later errors are often just fallout from the earlier one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a "bugs I've fixed" note.&lt;/strong&gt; The same mistakes come back. Your own notes are the fastest search engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take a break&lt;/strong&gt; if you've been stuck for over an hour. Fresh eyes spot the missing bracket in seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Time Your Screen Turns Red
&lt;/h2&gt;

&lt;p&gt;Don't close it. Don't panic-click. Take one deep breath and read it from the bottom up. Find the type, the message, and the location.&lt;/p&gt;

&lt;p&gt;You'll be surprised how often the answer was sitting right there the whole time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;Tell me in the comments about the most confusing error you've ever hit. I'd love to see if we can decode it together.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to build your first portfolio website from scratch, or how to pick a programming language as a total beginner?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>debugging</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Which Programming Language Should You Learn First? (Stop Overthinking It)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Sun, 04 Oct 2026 04:30:14 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/which-programming-language-should-you-learn-first-stop-overthinking-it-1km8</link>
      <guid>https://dev.to/adhikareeprayush/which-programming-language-should-you-learn-first-stop-overthinking-it-1km8</guid>
      <description>&lt;p&gt;You asked Reddit. You watched three "best language in 2026" videos. You messaged a friend who studies CS. Now you have six different answers, four browser tabs of comparison charts, and zero lines of code written.&lt;/p&gt;

&lt;p&gt;I get it. I lost an embarrassing amount of time on this exact question before I wrote a single real program, and I see the same thing every time new members join our IT club. This post will end the debate for you. It won't declare a winner, because there isn't one. It'll give you a way to choose in about ten minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The First Language Matters Less Than You Think
&lt;/h2&gt;

&lt;p&gt;Here's what nobody tells beginners: the hard part of programming isn't the language. It's the ideas underneath it. Variables, conditions, loops, functions, and how to break a problem into small steps. Those ideas are the same everywhere.&lt;/p&gt;

&lt;p&gt;Look at the same loop in two different languages.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same idea, same output, different spelling. Once you truly understand a loop in one language, you understand it in all of them. Your second language will take a fraction of the time your first one did.&lt;/p&gt;

&lt;p&gt;So the question isn't "which language is the best?" It's "which language will keep me learning and building until the fundamentals click?"&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Think of It Like Picking Your First Instrument
&lt;/h2&gt;

&lt;p&gt;Say you want to learn music. Guitar, piano, and drums are all fine choices. What actually matters is what you want to play.&lt;/p&gt;

&lt;p&gt;Want to accompany songs around a campfire? Guitar. Want to compose and understand theory? Piano. Want to drive a band? Drums.&lt;/p&gt;

&lt;p&gt;Whichever you pick, you learn rhythm, timing, and how to practice. Switch to another instrument later and all of that carries over. Nobody who started on piano is stuck on piano forever.&lt;/p&gt;

&lt;p&gt;Programming languages work the same way. Pick based on what you want to make, learn the universal skills, and move sideways whenever you need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Start From What You Want to Build
&lt;/h2&gt;

&lt;p&gt;Skip the "top languages" lists for a minute and ask a simpler question: &lt;strong&gt;what do I want to make?&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you want to build...&lt;/th&gt;
&lt;th&gt;Good first choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Websites and web apps&lt;/td&gt;
&lt;td&gt;JavaScript (with HTML and CSS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automation, scripts, data work, or AI projects&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android apps&lt;/td&gt;
&lt;td&gt;Kotlin (or Java)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iPhone apps&lt;/td&gt;
&lt;td&gt;Swift&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Games (beginner friendly)&lt;/td&gt;
&lt;td&gt;C# with Unity, or GDScript with Godot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big-name games or engines&lt;/td&gt;
&lt;td&gt;C++&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware, embedded systems, or operating systems&lt;/td&gt;
&lt;td&gt;C or C++&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend services at scale&lt;/td&gt;
&lt;td&gt;Java, C#, or Go&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice that a few of these overlap. That's fine. You're picking a starting point, not signing a contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Still Have No Idea? Pick Python or JavaScript
&lt;/h2&gt;

&lt;p&gt;If you genuinely don't know what you want to build yet, which is completely normal, choose between these two. Both are beginner-friendly, both have huge communities, and both have endless free learning material.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Clean, readable syntax that looks close to plain English. Great for automation, data, and AI. Very forgiving for beginners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; You don't see visual results as quickly. Building a website or app with it takes extra tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick it if:&lt;/strong&gt; You like logic, want to automate boring tasks, or are curious about data and AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Runs in every browser, so you can build something visual and share it with a link on day one. Powers a huge share of the web.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; It has quirks that confuse beginners, and the ecosystem of tools can feel overwhelming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick it if:&lt;/strong&gt; You want to see your work on screen immediately and you're interested in websites or apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're still stuck, flip a coin. I'm not joking. The difference between the two for a beginner is small, and the time you spend agonizing is worth far more than any gap between them.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What About C, C++, or Java First?
&lt;/h2&gt;

&lt;p&gt;Many colleges start students on C, C++, or Java. If that's your situation, just learn what your course teaches. You'll be tested on it anyway.&lt;/p&gt;

&lt;p&gt;These languages are stricter and closer to how computers really work, which makes them harder at first but excellent for understanding memory, types, and performance. Plenty of great engineers started here. They're a fine first language if you have a teacher, a course, or a specific goal that needs them. If you're teaching yourself with no particular goal, a gentler language is usually easier to stick with.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Mistakes That Waste Your First Months
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language hopping.&lt;/strong&gt; Two weeks of Python, then "actually JavaScript is better," then Rust because someone on Twitter said so. Every restart resets your progress. Pick one and commit for at least 90 days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choosing by hype or salary lists.&lt;/strong&gt; Trends change. The person who keeps learning beats the person who chased the trend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Waiting for the perfect choice.&lt;/strong&gt; There isn't one. Time spent deciding is time not spent learning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning three at once.&lt;/strong&gt; One language, one path, one project. Depth first, breadth later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning syntax only.&lt;/strong&gt; Knowing what a &lt;code&gt;for&lt;/code&gt; loop looks like is not the same as being able to solve a problem with it. Build things.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Does the Language Even Matter in the AI Era?
&lt;/h2&gt;

&lt;p&gt;Fair question, since AI tools can write code in almost any language now.&lt;/p&gt;

&lt;p&gt;Here's my answer: it matters less for typing, and more for understanding. AI can produce a working program in seconds, but you still need to read it, judge whether it's right, and fix it when it breaks. That requires knowing at least one language properly.&lt;/p&gt;

&lt;p&gt;So choose one, go deep, and use AI as a tutor along the way. I covered this in more detail in my post about learning to code in the AI era, so check that out if you haven't yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. How Will You Know You've Learned Enough?
&lt;/h2&gt;

&lt;p&gt;You're past the beginner stage when you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a small project from a blank file without following a tutorial&lt;/li&gt;
&lt;li&gt;Read someone else's simple code and roughly follow what it does&lt;/li&gt;
&lt;li&gt;Fix most of your own errors by reading the message&lt;/li&gt;
&lt;li&gt;Explain, in plain words, what your code does and why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's the target. Not "finish every chapter." Notice that none of it requires knowing every feature of the language.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. A Simple 90-Day Plan
&lt;/h2&gt;

&lt;p&gt;Once you've picked, here's a plan that works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 1 to 30: Fundamentals&lt;/strong&gt;&lt;br&gt;
Learn variables, conditions, loops, functions, and lists. Use one good free resource, and write small programs every day, even ten-line ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 31 to 60: Small projects&lt;/strong&gt;&lt;br&gt;
Build three or four tiny things: a calculator, a quiz, a simple tracker. Get stuck on purpose, and fight through it before searching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Days 61 to 90: One real project&lt;/strong&gt;&lt;br&gt;
Pick something you'd actually use. Put it on GitHub, write a proper README, and get it online if you can. Show it to someone.&lt;/p&gt;

&lt;p&gt;By day 90 you'll have a real project, real confidence, and an easy answer to "what have you built?"&lt;/p&gt;

&lt;h2&gt;
  
  
  10. When to Add a Second Language
&lt;/h2&gt;

&lt;p&gt;Add another language when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've shipped at least one project in your first&lt;/li&gt;
&lt;li&gt;A project or job genuinely needs something else&lt;/li&gt;
&lt;li&gt;You're curious and the first one feels comfortable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A common and useful pairing is Python for automation and data alongside JavaScript for the web. But that's a decision for later. Right now, your only job is to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decision Time
&lt;/h2&gt;

&lt;p&gt;Answer these quickly and go with your gut:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do you already know what you want to build? &lt;strong&gt;Use the table in section 3.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Does your college require a particular language? &lt;strong&gt;Learn that one.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Still no idea? &lt;strong&gt;Python if you like logic, JavaScript if you like seeing results.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Still can't decide? &lt;strong&gt;Flip a coin, and start today.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best first language is the one you actually open tomorrow morning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;Tell me in the comments which language you're starting with and what you want to build. I'll cheer you on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to build your first portfolio website from scratch, or how to stay consistent and avoid burnout while learning to code?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Your First Internship: How to Not Feel Completely Lost in Week One</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Thu, 01 Oct 2026 04:02:29 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/your-first-internship-how-to-not-feel-completely-lost-in-week-one-5cb0</link>
      <guid>https://dev.to/adhikareeprayush/your-first-internship-how-to-not-feel-completely-lost-in-week-one-5cb0</guid>
      <description>&lt;p&gt;You got the internship. Congratulations, genuinely. Now the panic sets in: everyone else seems to already know how things work here, the codebase is huge, and you have no idea what you're allowed to ask without looking clueless.&lt;/p&gt;

&lt;p&gt;Every intern feels this in week one. What separates the ones who have a great internship from the ones who spend three months quietly terrified isn't skill. It's how they handle exactly this stretch.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. You're an Exchange Student, Not a Transfer
&lt;/h2&gt;

&lt;p&gt;Think about what it's like being an exchange student at a new school abroad. You don't already know the unwritten rules: how strict this teacher actually is, which shortcuts are fine, which ones aren't, what the local slang means. A smart exchange student spends the first weeks watching and asking quiet questions before assuming their old school's rules apply here.&lt;/p&gt;

&lt;p&gt;An internship works the same way. Every team has its own unwritten culture: how they review code, how blunt or gentle their feedback is, what "done" actually means to them. You're not expected to know it on day one. You're expected to notice you don't know it yet, and to learn fast without pretending otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Nobody Expects You to Already Know Everything
&lt;/h2&gt;

&lt;p&gt;This is worth repeating because it doesn't sink in easily: &lt;strong&gt;you were hired as an intern, not as a finished engineer.&lt;/strong&gt; The company already knows you're learning. The pressure you feel to seem competent from day one is almost entirely self-imposed.&lt;/p&gt;

&lt;p&gt;What they actually expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Curiosity and real effort&lt;/li&gt;
&lt;li&gt;The ability to ask for help instead of silently spinning your wheels&lt;/li&gt;
&lt;li&gt;Steady improvement over the weeks, not instant mastery&lt;/li&gt;
&lt;li&gt;Being pleasant and reliable to work with&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nobody is quietly judging you for not knowing the codebase on day two. They'd be far more concerned by someone who pretends to understand something they don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The First Week Is for Watching, Not Proving
&lt;/h2&gt;

&lt;p&gt;Resist the urge to immediately prove yourself with something big. The first few days are better spent learning the terrain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read the onboarding docs fully,&lt;/strong&gt; even the boring parts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up your development environment&lt;/strong&gt; and get the existing project running locally&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read through the codebase&lt;/strong&gt; you'll be working in, even without changing anything yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notice communication patterns.&lt;/strong&gt; Which channel do people use for what? How formal or casual is the tone?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meet your team,&lt;/strong&gt; even briefly. A short chat with each teammate is worth more than it seems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're not being unproductive by doing this. You're building the map you'll need before you can move confidently.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Ask Questions the Smart Way
&lt;/h2&gt;

&lt;p&gt;Asking questions is expected and encouraged. How you ask them is what actually gets noticed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak:&lt;/strong&gt; "This doesn't work, what do I do?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better:&lt;/strong&gt; "I'm trying to do X. I expected Y to happen, but I got Z instead. Here's what I've tried so far. Do you know what I might be missing?"&lt;/p&gt;

&lt;p&gt;The second version shows effort, gives your teammate enough to actually help quickly, and doesn't waste their time on back-and-forth just to understand the problem. A good rule: try for fifteen to thirty minutes on your own first, then ask, rather than either giving up instantly or silently struggling for hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Take Notes Like Your Future Self Depends on It
&lt;/h2&gt;

&lt;p&gt;You'll be told a lot of things in your first weeks: where things live, how to run tests, who owns which part of the system, small quirks that aren't written down anywhere. Write it all down.&lt;/p&gt;

&lt;p&gt;Keep a simple running document:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup steps you had to figure out&lt;/li&gt;
&lt;li&gt;People and what they own or know well&lt;/li&gt;
&lt;li&gt;Terms and acronyms specific to this company&lt;/li&gt;
&lt;li&gt;Mistakes you made and how you fixed them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two benefits: you stop asking the same question twice, and by week four you'll have an informal manual that would have saved you a lot of confusion in week one.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Understand Before You Touch
&lt;/h2&gt;

&lt;p&gt;When you're finally given a task, resist jumping straight into code. Spend a few minutes making sure you actually understand what's being asked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restate the task in your own words to whoever assigned it&lt;/li&gt;
&lt;li&gt;Ask about edge cases or ambiguous parts before you start&lt;/li&gt;
&lt;li&gt;Check how your task fits into the bigger picture, if that's unclear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A short clarifying conversation up front is far cheaper than building the wrong thing and needing to redo it later.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Handling Feedback and Code Review
&lt;/h2&gt;

&lt;p&gt;Your code will get reviewed, and comments will come back. This is one of the best parts of an internship, not a punishment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't take it personally.&lt;/strong&gt; A comment on your code isn't a comment on your worth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask "why" when a suggestion isn't clear,&lt;/strong&gt; rather than silently changing it without understanding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say thanks,&lt;/strong&gt; even for blunt feedback. It signals you're coachable, which people notice and remember&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply the same feedback proactively next time,&lt;/strong&gt; which shows you're actually learning, not just fixing one instance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interns who grow fastest are the ones who treat every review comment as a small, free lesson.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Manage Up a Little
&lt;/h2&gt;

&lt;p&gt;You likely have a manager or a mentor assigned to you. Don't wait passively for them to check on you constantly. A little initiative goes a long way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give a short update on your progress every few days, even unprompted&lt;/li&gt;
&lt;li&gt;Flag early if you're stuck or blocked, rather than waiting until a deadline is at risk&lt;/li&gt;
&lt;li&gt;Ask what "good" looks like for your specific tasks, so you're not guessing at the bar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick, honest "here's where I am, here's what I'm stuck on" message is one of the simplest ways to look reliable, regardless of your actual skill level yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Build Relationships, Not Just Output
&lt;/h2&gt;

&lt;p&gt;Your internship isn't only about the code you ship. It's also your first real chance to build a small professional network, which I've written about in more depth separately.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Say yes to coffee chats, casual lunches, or team social time when you can&lt;/li&gt;
&lt;li&gt;Ask people about their own path into the field. Most people enjoy being asked&lt;/li&gt;
&lt;li&gt;Be genuinely helpful to other interns too, not just senior engineers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These relationships often outlast the internship itself, sometimes becoming references, referrals, or simply people glad to hear from you again later.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Document Your Work as You Go
&lt;/h2&gt;

&lt;p&gt;Don't wait until the final week to remember what you did. Keep a running log:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you built or fixed, in plain language&lt;/li&gt;
&lt;li&gt;What you learned that you didn't know before&lt;/li&gt;
&lt;li&gt;Any measurable impact, if you can point to one honestly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This becomes the raw material for your resume, your final presentation if there is one, and interview stories for your next application. Trying to reconstruct three months of work from memory in the last week is much harder than logging it along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Common Mistakes First-Time Interns Make
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pretending to understand something you don't.&lt;/strong&gt; It always surfaces later, at a worse time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disappearing when stuck.&lt;/strong&gt; Silence looks worse than admitting you're blocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Over-promising on timelines&lt;/strong&gt; to seem capable, then scrambling to deliver.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Only talking to your immediate team.&lt;/strong&gt; Meeting people elsewhere in the company opens doors later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparing yourself to full-time engineers.&lt;/strong&gt; They've had years of practice you haven't had yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not asking for feedback proactively.&lt;/strong&gt; Waiting for a scheduled review means missing months of smaller course corrections.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  12. Using AI Tools During Your Internship
&lt;/h2&gt;

&lt;p&gt;Many companies now allow AI coding tools, some don't, and some have specific rules about what data can go into them. Before using anything, ask what's allowed. Once you know the rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use it to understand unfamiliar code faster, not to avoid understanding it&lt;/li&gt;
&lt;li&gt;Never paste proprietary code, credentials, or customer data into a tool without explicit permission&lt;/li&gt;
&lt;li&gt;Still be able to explain your own work in review, since "the AI wrote it" isn't an answer your reviewer wants to hear&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Week One Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Get your environment set up and the project running&lt;/li&gt;
&lt;li&gt;[ ] Read the docs and skim the codebase before writing code&lt;/li&gt;
&lt;li&gt;[ ] Meet your team, even with a short message or call&lt;/li&gt;
&lt;li&gt;[ ] Start your running notes document&lt;/li&gt;
&lt;li&gt;[ ] Ask at least one question you were nervous to ask&lt;/li&gt;
&lt;li&gt;[ ] Send a short first-week update to your manager or mentor&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  You're Allowed to Not Know Things Yet
&lt;/h2&gt;

&lt;p&gt;Every senior engineer on your team was once exactly where you are now, confused by a codebase, unsure what to ask, quietly worried they didn't belong. The only real difference between you and them is time and a lot of exactly these small, uncomfortable first weeks.&lt;/p&gt;

&lt;p&gt;Show up, ask honestly, take notes, and give it real effort. That's genuinely all anyone is expecting from you right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;If you're starting an internship soon, tell me in the comments what's making you most nervous. I'll do my best to help.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What should I write next: how to survive group projects with a difficult teammate, or how to turn an internship into a full-time offer?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>internship</category>
      <category>beginners</category>
      <category>career</category>
      <category>students</category>
    </item>
    <item>
      <title>I Spent a Weekend Binge-Watching LLM Content So You Don't Have To (Okay, You Still Should, But Here's the Map)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Sun, 27 Sep 2026 13:58:09 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/i-spent-a-weekend-binge-watching-llm-content-so-you-dont-have-to-okay-you-still-should-but-1im1</link>
      <guid>https://dev.to/adhikareeprayush/i-spent-a-weekend-binge-watching-llm-content-so-you-dont-have-to-okay-you-still-should-but-1im1</guid>
      <description>&lt;p&gt;Real talk: everyone and their uncle is "using AI" right now, but ask most people what a token actually is and you get a blank stare. I was in that camp too, not long ago. So this month I did something slightly unhinged — I sat down and went through three completely different explanations of how LLMs actually work, back to back, and it clicked in a way that no single YouTube video was ever going to give me.&lt;/p&gt;

&lt;p&gt;Here's the thing: each of these sources attacks the problem from a totally different altitude. One gets its hands dirty with code and whiteboard sketches. One skips theory entirely and just shows you how to build something. And one is basically a full grad-school course crammed into a lecture series. Stack them together and you get something close to an actual curriculum, minus the tuition.&lt;/p&gt;

&lt;p&gt;If you're on the same journey — curious about AI beyond "type prompt, get answer" — I'm breaking down what I learned from each one, and honestly, I'd watch them in the same order I did.&lt;/p&gt;

&lt;p&gt;Big credit up front to the people who actually made this stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Piyush Garg&lt;/strong&gt; — &lt;a href="https://www.youtube.com/watch?v=K45s2PgywvI" rel="noopener noreferrer"&gt;"How LLMs Works? - Overview"&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev Weekends&lt;/strong&gt; — &lt;a href="https://www.youtube.com/watch?v=qRzK8P_SnaE" rel="noopener noreferrer"&gt;"Level 0 and Level 1 - Gen AI Sessions"&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stanford Online&lt;/strong&gt; — &lt;a href="https://www.youtube.com/playlist?list=PLoROMvodv4rOCXd21gf0CF4xr35yINeOy" rel="noopener noreferrer"&gt;"CME295: Transformers and Large Language Models I, Autumn 2025"&lt;/a&gt; (Afshine and Shervine Amidi)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  Part 1: What's Actually Happening Inside the Box
&lt;/h2&gt;

&lt;p&gt;If you've ever nodded along in a conversation about AI while quietly having zero clue what "embedding" means, start with Piyush Garg's video. It's not a theory lecture — it's a "let me rip the hood off this thing" video, and it works because it stays concrete the entire time.&lt;/p&gt;

&lt;p&gt;The core message is refreshingly deflating in a good way: ChatGPT, Gemini, Claude — none of it is magic, none of it is sentient. It's math, code, and a lot of data. Even the name gives it away. GPT is basically a spec sheet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generative&lt;/strong&gt; — it makes new stuff on the fly instead of retrieving and ranking existing pages like a search engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-trained&lt;/strong&gt; — it already chewed through a mountain of internet text, books, and conversations before you typed anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformer&lt;/strong&gt; — the architecture underneath all of it, from Google's 2017 paper &lt;em&gt;"Attention Is All You Need."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From there the video walks you through the actual pipeline your sentence goes through:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tokenization.&lt;/strong&gt; Before a computer can do anything with your text, it needs numbers. A tokenizer chops your sentence into chunks based on a vocabulary, and the size of that vocabulary decides whether you get clean whole-word tokens or things get sliced into subwords and stray characters. Garg demos this live with Hugging Face's &lt;code&gt;transformers&lt;/code&gt; library and Google's Gemma tokenizer, and honestly that's the moment it stops being abstract and starts being "oh, that's literally what's happening."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vector embeddings.&lt;/strong&gt; Once you've got tokens, each one gets mapped to a dense vector — we're talking hundreds or thousands of dimensions — that's supposed to encode meaning. The analogy that actually landed for me: think direction and distance. The path from &lt;code&gt;Cat&lt;/code&gt; to &lt;code&gt;Milk&lt;/code&gt; looks a lot like the path from &lt;code&gt;Dog&lt;/code&gt; to &lt;code&gt;Pedigree&lt;/code&gt;. &lt;code&gt;Dog&lt;/code&gt; to &lt;code&gt;Animal&lt;/code&gt; mirrors &lt;code&gt;Man&lt;/code&gt; to &lt;code&gt;Human&lt;/code&gt;. The model isn't memorizing a dictionary — it's storing relationships between concepts, and you can literally go poke at this yourself through the OpenAI embeddings API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Positional encoding.&lt;/strong&gt; Here's a detail a lot of people skip over: Transformers don't read left to right the way you do. Without help, "the dog chased the cat" and "the cat chased the dog" would look identical to the attention mechanism, which — yeah, that's a problem. Positional encoding bolts sine and cosine functions onto the embeddings so word order (and the meaning that comes with it) actually survives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-attention and multi-head attention.&lt;/strong&gt; This is the star of the show, and it's the actual innovation from the 2017 paper everyone name-drops. Self-attention lets every token look at every other token and update itself based on context. That's how the model knows "bank" in "river bank" has nothing to do with "bank" in "ICICI bank" — something the older RNN and CNN architectures genuinely struggled with. Multi-head attention just runs a bunch of these attention processes in parallel, so the model can track multiple relationships at once — a dog, on a train, doing something, being a specific color — all simultaneously instead of one at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feed-forward layers, then output.&lt;/strong&gt; These attention blocks stack on top of each other, refining the representation layer by layer, until a final linear layer spits out a probability distribution over the entire vocabulary for "what token comes next." Softmax turns those raw scores into actual probabilities, and &lt;strong&gt;temperature&lt;/strong&gt; decides how safe or how spicy the model gets with its pick — low temperature plays it safe, high temperature gambles on something less likely (and usually more interesting, sometimes more unhinged).&lt;/p&gt;

&lt;p&gt;The video also draws a clean line between &lt;strong&gt;training&lt;/strong&gt; (the model sees known input-output pairs, calculates loss, updates weights via backpropagation) and &lt;strong&gt;inference&lt;/strong&gt; (live deployment — the model just predicts one token at a time, autoregressively, until it hits an end-of-sequence tag, with zero learning happening). Sounds obvious once you say it out loud, but it clears up a lot of confusion about what's actually happening when you're chatting with one of these things.&lt;/p&gt;

&lt;p&gt;What makes this video worth your time isn't that any of it is secret — it's that Garg keeps everything tied to code you can actually run: &lt;code&gt;AutoTokenizer&lt;/code&gt;, the OpenAI embeddings endpoint, a from-scratch PyTorch generation loop with &lt;code&gt;AutoModelForCausalLM&lt;/code&gt;. You walk away with a mental model you can go verify yourself instead of just trusting some guy on YouTube (me included).&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: Cool, Now How Do I Actually Build Something?
&lt;/h2&gt;

&lt;p&gt;Understanding attention mechanisms doesn't teach you how to ship a product. I learned that gap the hard way trying to wire an LLM into a side project with zero idea what I was doing. This is exactly where Dev Weekends' "Level 0 and Level 1" session comes in, and it's the most immediately useful of the three if your goal is writing software instead of passing an exam.&lt;/p&gt;

&lt;p&gt;It starts with the unglamorous stuff that actually matters: &lt;strong&gt;you pay for tokens&lt;/strong&gt;, full stop, and your bill is input tokens (your prompt) plus output tokens (the response). If you've ever gotten a surprise API bill, you already know why this matters more than the fancy theory.&lt;/p&gt;

&lt;p&gt;From there it breaks down the three roles you'll use in basically every single LLM API call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System message&lt;/strong&gt; — sets the model's personality and ground rules, invisible to whoever's using your app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User message&lt;/strong&gt; — whatever the human actually typed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assistant message&lt;/strong&gt; — the model's response, generated using both of the above as context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few engineering patterns get covered here that I think people skip more than they should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt; (&lt;code&gt;stream=True&lt;/code&gt;) — instead of waiting for the full response, you get it chunk by chunk, which is the entire reason ChatGPT feels like it's "typing" instead of freezing and dumping a wall of text on you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured output / JSON schemas&lt;/strong&gt; — if you're plugging an LLM into a real system, you cannot have it randomly deciding to wrap its JSON in a friendly little paragraph. Define a schema up front and you kill an entire category of parsing bugs before they happen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool calling / function calling&lt;/strong&gt; — this is the mechanism that lets a model say "I don't know today's weather, but here's a function signature for a weather API, go call it and hand me the result." The model itself never executes anything — it just recognizes when it needs help and passes the ball back to your app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the prompting side, it runs through the standard toolbox: &lt;strong&gt;zero-shot&lt;/strong&gt; (just ask), &lt;strong&gt;few-shot&lt;/strong&gt; (show it examples first), &lt;strong&gt;chain-of-thought&lt;/strong&gt; (make it reason step-by-step before answering), and &lt;strong&gt;ReAct&lt;/strong&gt; (interleaving reasoning with actual tool calls to chew through multi-step problems). I'd read about all of these separately before, but seeing them laid out as a progression — from "just ask" to "reason and act" — made a lot more sense than any individual blog post had.&lt;/p&gt;

&lt;p&gt;The part I found genuinely most useful, though, was the &lt;strong&gt;fine-tuning vs. RAG&lt;/strong&gt; breakdown. Fine-tuning means retraining chunks of the network on your own data — expensive, heavy on compute, and static, since any new information means retraining the whole thing over again. RAG (Retrieval-Augmented Generation) sidesteps all of that by keeping the model frozen and just hooking it up to an external, updatable vector database instead.&lt;/p&gt;

&lt;p&gt;The RAG pipeline breaks down into five steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Parse&lt;/strong&gt; your source documents — PDFs, databases, scraped pages via BeautifulSoup, whatever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chunk&lt;/strong&gt; the text into fixed-size pieces (think 512 tokens) with some overlap (150 tokens) so you're not losing context at the seams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embed and store&lt;/strong&gt; those chunks in a vector database (ChromaDB, PgVector) along with metadata like source and timestamp.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search&lt;/strong&gt; — turn the user's query into an embedding and run cosine similarity to pull the top-k most relevant chunks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inject&lt;/strong&gt; those chunks into the prompt so the model actually grounds its answer in your data instead of just guessing confidently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And it doesn't stop at "ship it and pray" — it flags &lt;strong&gt;RAGAS&lt;/strong&gt; as a framework for actually evaluating whether your retrieved context is faithful, your answers are relevant, and you're not quietly hallucinating despite technically having a "grounded" system. That last part is easy to forget. RAG lowers your hallucination risk. It does not erase it. Learn that the easy way, not the hard way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: The Academic Backbone — Stanford CME295
&lt;/h2&gt;

&lt;p&gt;If the first two are "how it works" and "how you build with it," Stanford's CME295 (taught by Afshine and Shervine Amidi) is the "why it works, rigorously, and where this is all headed" course. It's a full nine-lecture sequence, and it's the one I'd point to if your goal is going from "informed enthusiast" to "person who can actually reason about model design decisions in a room full of people who'd know."&lt;/p&gt;

&lt;p&gt;The syllabus tracks a clean arc:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transformer&lt;/strong&gt; — core attention mechanics and encoder-decoder structure, covered with academic precision instead of intuition-first analogies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformer-Based Models &amp;amp; Tricks&lt;/strong&gt; — how BERT, GPT, and T5 diverge architecturally, different positional embedding schemes, and the tricks that make large-scale training actually converge instead of blowing up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformers &amp;amp; LLMs&lt;/strong&gt; — the jump from small task-specific models to today's massive general-purpose ones, scaling laws, and emergent capabilities that only show up once you're big enough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Training&lt;/strong&gt; — pre-training objectives, dataset prep at scale, and the distributed-cluster/memory-efficiency tricks required to train something this large in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Tuning&lt;/strong&gt; — Supervised Fine-Tuning, Parameter-Efficient Fine-Tuning (LoRA and friends), and alignment via RLHF and Direct Preference Optimization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Reasoning&lt;/strong&gt; — how post-training unlocks reasoning, and the increasingly hot idea of scaling &lt;em&gt;test-time&lt;/em&gt; compute instead of just throwing more compute at training.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic LLMs&lt;/strong&gt; — designing autonomous agents: task decomposition, memory architectures, tool use, multi-agent coordination.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Evaluation&lt;/strong&gt; — systematic benchmarking, the "LLM-as-a-judge" approach, and safety/robustness red-teaming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recap &amp;amp; Current Trends&lt;/strong&gt; — tying it all together and pointing at where frontier research is actually headed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What this course adds that the other two structurally can't is the &lt;em&gt;why&lt;/em&gt;. Garg's video tells you self-attention solves the context problem. Stanford's course is where you'd actually get the math behind scaled dot-product attention, the reasoning behind specific positional embedding choices, and the real tradeoffs between RLHF and DPO for alignment. It's also the only one of the three treating agentic systems and formal evaluation as first-class topics instead of an afterthought bolted on at the end — which, not coincidentally, is exactly where the field's energy is right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It All Together
&lt;/h2&gt;

&lt;p&gt;Lined up side by side, these three cover roughly the same ground a CS curriculum would, just compressed into a weekend of watching instead of a semester of tuition:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Piyush Garg&lt;/th&gt;
&lt;th&gt;Dev Weekends&lt;/th&gt;
&lt;th&gt;Stanford CME295&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Building intuition for the internals&lt;/td&gt;
&lt;td&gt;Shipping real LLM-powered software&lt;/td&gt;
&lt;td&gt;Deep theoretical and research literacy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single video, whiteboard + code&lt;/td&gt;
&lt;td&gt;Hands-on workshop, live API/RAG demos&lt;/td&gt;
&lt;td&gt;9-lecture university course&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Core focus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tokens → embeddings → attention → sampling&lt;/td&gt;
&lt;td&gt;API roles, streaming, JSON schemas, tool calling, RAG vs. fine-tuning&lt;/td&gt;
&lt;td&gt;Math foundations, scaling, alignment, reasoning, agents, evaluation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tools shown&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hugging Face &lt;code&gt;transformers&lt;/code&gt;, PyTorch, OpenAI API&lt;/td&gt;
&lt;td&gt;OpenAI API, ChromaDB, LangChain, BeautifulSoup, RAGAS&lt;/td&gt;
&lt;td&gt;Academic frameworks, frontier benchmarks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Honest take: none of these alone gives you the full picture, and that's fine, because they're not trying to. &lt;strong&gt;Garg&lt;/strong&gt; hands you the mechanical model of how a token turns into a prediction. &lt;strong&gt;Dev Weekends&lt;/strong&gt; shows you what to actually do with that model once it's sitting behind an API and your credit card is on the line. &lt;strong&gt;Stanford&lt;/strong&gt; gives you the rigor to understand why the field made the choices it did, and where it's probably going next — reasoning models, agentic systems, evaluation frameworks that can actually keep pace.&lt;/p&gt;

&lt;p&gt;If you're early in this journey, that's the order I'd go: intuition, then application, then theory. Same path I took, minus the part where I procrastinated for two weeks before starting.&lt;/p&gt;

&lt;p&gt;Now go tokenize something.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through the 8th semester of computer engineering and running an IT club on the side while trying to actually understand the stuff I keep building with. If you've watched any of these three (or have a better resource I'm missing), drop it in the comments — I'm always collecting more.&lt;/p&gt;

&lt;p&gt;Which one are you starting with: the internals video, the build-something workshop, or going straight for the Stanford deep end?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;https://linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;https://github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;https://prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>llm</category>
      <category>machinelearning</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Tutorial Hell Is Real: I Watched 40 Hours of Videos and Built Nothing (Here's How I Escaped)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Sat, 26 Sep 2026 01:43:16 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/tutorial-hell-is-real-i-watched-40-hours-of-videos-and-built-nothing-heres-how-i-escaped-2ie9</link>
      <guid>https://dev.to/adhikareeprayush/tutorial-hell-is-real-i-watched-40-hours-of-videos-and-built-nothing-heres-how-i-escaped-2ie9</guid>
      <description>&lt;p&gt;Hey there! Let me guess how your week went.&lt;/p&gt;

&lt;p&gt;You watched a full-stack course. Then another one. You nodded along, pausing at the right moments, typing out everything the instructor typed. Everything worked. You felt like a genius.&lt;/p&gt;

&lt;p&gt;Then you opened a blank file to build something on your own, and your brain went completely white.&lt;/p&gt;

&lt;p&gt;Welcome to tutorial hell. I've lived there. I paid rent there for way too long. This post is the map I wish I'd had on the way out.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. How to Know You're Stuck in Tutorial Hell
&lt;/h2&gt;

&lt;p&gt;Be honest with yourself. Tick these off:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You've finished more courses than you've built projects&lt;/li&gt;
&lt;li&gt;You feel like you "get it" while watching, but can't start without a video&lt;/li&gt;
&lt;li&gt;You keep switching to a new language or framework because the old one "wasn't clicking"&lt;/li&gt;
&lt;li&gt;Your bookmarks folder is bigger than your GitHub profile&lt;/li&gt;
&lt;li&gt;You've said the words "I'll start my own project after this course" more than twice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you ticked two or more, you're in. No shame in it. Almost every self-taught developer visits at some point, and plenty of CS students too, because college can be tutorial hell with a syllabus.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Why It Feels So Good (and Why That's the Trap)
&lt;/h2&gt;

&lt;p&gt;Here's the 5-year-old version.&lt;/p&gt;

&lt;p&gt;Watching a tutorial is like watching someone cook on TV. You see the knife skills, the perfect sear, the plating. Everything looks easy, and you feel like you learned to cook.&lt;/p&gt;

&lt;p&gt;Then you walk into your kitchen with raw ingredients and no instructions. Suddenly you don't know how hot the pan should be, how to tell if the chicken is done, or what to do when the onions start burning.&lt;/p&gt;

&lt;p&gt;The show never showed you &lt;em&gt;that&lt;/em&gt; part. It showed you the finished path, with every decision already made, every wrong turn already edited out.&lt;/p&gt;

&lt;p&gt;That's the trap. Tutorials remove the exact thing that makes you learn: &lt;strong&gt;the struggle of not knowing what to do next.&lt;/strong&gt; Your brain gets the warm feeling of progress without any of the actual muscle-building.&lt;/p&gt;

&lt;p&gt;Same as the gym. Watching someone lift doesn't make you stronger.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Real Skill Nobody Teaches
&lt;/h2&gt;

&lt;p&gt;Here's the thing. Programming isn't really about knowing syntax. It's about &lt;strong&gt;taking a vague problem and breaking it down into small steps you can actually solve&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tutorials never teach that, because the instructor already did the breaking down before hitting record. You only ever see the solved version.&lt;/p&gt;

&lt;p&gt;So to escape, you need to practice the part they skipped: staring at a fuzzy idea, figuring out the first tiny step, doing it, then figuring out the next one. It feels slow and uncomfortable. That discomfort is the learning. Real talk: if it feels easy, you're probably still watching.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. My Escape Method: Watch, Rebuild, Remix
&lt;/h2&gt;

&lt;p&gt;This is the system that actually works for me and for the people in our IT club. Three steps for every tutorial:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Watch (once)
&lt;/h3&gt;

&lt;p&gt;Follow the tutorial once, start to finish. Type along if it helps. This is the only time you're allowed to follow along.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Rebuild (from memory)
&lt;/h3&gt;

&lt;p&gt;Close the tab. Delete the code. Open a blank file and build the same thing again &lt;em&gt;without&lt;/em&gt; the video.&lt;/p&gt;

&lt;p&gt;You will get stuck. You will forget things. Good. Every time you get stuck, spend 15 minutes trying to figure it out yourself before peeking. When you peek, look at only the one piece you need, then close it again.&lt;/p&gt;

&lt;p&gt;This step alone is worth more than five extra tutorials.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Remix (make it yours)
&lt;/h3&gt;

&lt;p&gt;Now change something the tutorial never covered. Building a weather app? Add a feature for saving favorite cities. A to-do app? Add tags or a deadline reminder. A landing page? Rebuild it for a real local business.&lt;/p&gt;

&lt;p&gt;The remix is where you stop being a follower and become a builder. It's also the part that makes your project different from the thousands of identical tutorial clones on GitHub. Recruiters can spot those from a mile away.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Project Ideas That Actually Work for Beginners
&lt;/h2&gt;

&lt;p&gt;Stuck on what to build? Here's a starter list. Pick something small enough to finish in a week.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A tool that solves a tiny annoying problem in your daily life&lt;/li&gt;
&lt;li&gt;A website for a local shop, a relative's business, or your college club&lt;/li&gt;
&lt;li&gt;A tracker for something you already track in a messy spreadsheet (expenses, workouts, study hours)&lt;/li&gt;
&lt;li&gt;A quiz app for a subject you're studying&lt;/li&gt;
&lt;li&gt;A bot that sends you a daily reminder or summary&lt;/li&gt;
&lt;li&gt;A simple dashboard showing data from a free public API&lt;/li&gt;
&lt;li&gt;A personal site that's actually deployed and live&lt;/li&gt;
&lt;li&gt;A cleaner, better-looking version of an app you use and find ugly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice the pattern? They all start from a &lt;strong&gt;real problem you have&lt;/strong&gt;. Motivation is way easier when you're building something you'll actually use.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. When You Get Stuck (You Will)
&lt;/h2&gt;

&lt;p&gt;Getting stuck isn't a sign you're bad at this. It's the job. Here's how I handle it now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read the error message. Actually read it.&lt;/strong&gt; Most beginners skip straight to panic. The error usually tells you the file, the line, and what it expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain the problem out loud&lt;/strong&gt; to a friend, a rubber duck, or your wall. Half the time you solve it mid-sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shrink the problem.&lt;/strong&gt; Delete everything unrelated until you have the smallest piece that still breaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search with specifics&lt;/strong&gt;, not "my code doesn't work". Paste the exact error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then ask AI to guide you&lt;/strong&gt;, not to hand you the answer. Say "give me a hint, not the solution." I wrote about this in my last post, so check it out if you missed it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Real talk: the developers who improve fastest aren't the ones who never get stuck. They're the ones who get &lt;em&gt;comfortable&lt;/em&gt; being stuck.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The Comparison Trap
&lt;/h2&gt;

&lt;p&gt;One more thing, because it quietly kills more beginners than bad tutorials do.&lt;/p&gt;

&lt;p&gt;You'll see someone your age on social media shipping a startup, landing an internship, or posting a huge project. Ignore the urge to compare. You're seeing their highlight reel next to your behind-the-scenes.&lt;/p&gt;

&lt;p&gt;I learned the hard way that the only comparison worth making is you today versus you a month ago. Can you build something now that you couldn't then? Then you're moving.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. A 30-Day Plan to Break Out
&lt;/h2&gt;

&lt;p&gt;If you want something concrete, here's the plan I'd give to a friend:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 1: Rebuild&lt;/strong&gt;&lt;br&gt;
Pick one tutorial project you already finished. Rebuild it from scratch without the video. Expect to struggle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 2: Remix&lt;/strong&gt;&lt;br&gt;
Add two features to that project that were never in the tutorial. Deploy it somewhere public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 3: Build your own&lt;/strong&gt;&lt;br&gt;
Choose a tiny original idea from the list above. Write down the smallest working version in one sentence, then build only that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 4: Polish and share&lt;/strong&gt;&lt;br&gt;
Write a proper README explaining what it does and why you built it. Put it on GitHub. Post about it, or show it to your club or a friend.&lt;/p&gt;

&lt;p&gt;That's one shipped, original project in a month. That alone puts you ahead of most people still on their fourth course.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Honest Takes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tutorials aren't evil. They're great for &lt;em&gt;starting&lt;/em&gt;. They're terrible as a &lt;em&gt;destination&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;A finished ugly project beats ten perfect plans.&lt;/li&gt;
&lt;li&gt;Copying code isn't the sin. Not understanding it is.&lt;/li&gt;
&lt;li&gt;Consistency beats intensity. One hour a day beats one heroic weekend.&lt;/li&gt;
&lt;li&gt;Nobody feels ready. Start anyway.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That's It. Now Go Build Something.
&lt;/h2&gt;

&lt;p&gt;Close this tab. Close the course you're halfway through. Open a blank file and start something small and slightly embarrassing.&lt;/p&gt;

&lt;p&gt;It won't feel great at first. That means it's working.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of learning to code.&lt;/p&gt;

&lt;p&gt;If you're stuck in tutorial hell right now, drop a comment and tell me what you're trying to build. I read every one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What project are you building to escape tutorial hell? And what should the next post be: how to build a GitHub profile that gets you noticed, or how to survive your first coding interview?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Should You Still Learn to Code in 2026? An Honest Take From a Student Who's Still Grinding</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Thu, 24 Sep 2026 16:32:29 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/should-you-still-learn-to-code-in-2026-an-honest-take-from-a-student-whos-still-grinding-4f3</link>
      <guid>https://dev.to/adhikareeprayush/should-you-still-learn-to-code-in-2026-an-honest-take-from-a-student-whos-still-grinding-4f3</guid>
      <description>&lt;p&gt;So you've seen the videos. "Coding is dead." "AI writes everything now." "Don't bother learning to program."&lt;/p&gt;

&lt;p&gt;Cool. Now you're three weeks into learning Python, staring at a &lt;code&gt;SyntaxError&lt;/code&gt;, wondering if you're wasting your time.&lt;/p&gt;

&lt;p&gt;I get it. I'm a computer engineering student in my final semester, I run an IT club, and I get this exact question all the time: &lt;em&gt;"Bro, is it even worth learning to code anymore?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Short answer: yes. Long answer: yes, but the way you learn has to change. Let me break it down with no hype and no doom.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Panic Is Real (Let's Not Pretend Otherwise)
&lt;/h2&gt;

&lt;p&gt;I'm not going to tell you everything is fine. It's not all fine.&lt;/p&gt;

&lt;p&gt;Entry-level developer job postings have dropped hard. One 2026 breakdown puts the drop in junior postings at about 67% since 2022, with actual hiring falling even more. That hurts to read when you're the one about to apply.&lt;/p&gt;

&lt;p&gt;But here's the thing most doom videos skip. Stanford's August 2026 revision found a real employment gap for young workers in AI-exposed jobs, yet the researchers themselves call it descriptive rather than proof of cause. And the U.S. Bureau of Labor Statistics still projects growth for software developer roles over the next decade.&lt;/p&gt;

&lt;p&gt;So what's actually happening? The jobs aren't vanishing. They're being &lt;em&gt;rewritten&lt;/em&gt;. The old "take a ticket, write boilerplate, submit a pull request" junior role is under pressure. The new junior role is closer to "understand the problem, direct the AI, check what it gave you, and explain why it's right."&lt;/p&gt;

&lt;p&gt;Real talk: that's a skill you can learn. But only if you learn the basics first.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What AI Actually Replaced
&lt;/h2&gt;

&lt;p&gt;Here's the 5-year-old version.&lt;/p&gt;

&lt;p&gt;Think of AI as a really fast intern who never sleeps, never complains, and types 100x faster than you. Sounds amazing, right?&lt;/p&gt;

&lt;p&gt;The catch: this intern is &lt;em&gt;confidently wrong&lt;/em&gt; once in a while, and it will never tell you when. It'll hand you something that looks perfect, runs fine on the first try, and quietly breaks three days later.&lt;/p&gt;

&lt;p&gt;If you don't understand the work, you can't tell the difference between "correct" and "almost correct." And that gap is exactly where beginners get burned.&lt;/p&gt;

&lt;p&gt;It's the same story as calculators. Calculators didn't kill math. They killed the &lt;em&gt;arithmetic grind&lt;/em&gt;. People who understood math got faster. People who never learned it just got confident wrong answers, faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Vibe Coding Trap
&lt;/h2&gt;

&lt;p&gt;You've probably heard of "vibe coding": describe what you want, let AI write it, don't read the output, go with the feeling. And honestly? It's fun. It went from a joke to something a huge share of developers now use daily, and you can ship a working prototype in an afternoon.&lt;/p&gt;

&lt;p&gt;But look at what happens when the code breaks.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. I once had an AI generate a chunk of a project that I didn't fully understand. It worked. I moved on. Then something small changed, it broke, and I had zero idea where to even start looking. I spent more time debugging code I never wrote than it would've taken to write it myself.&lt;/p&gt;

&lt;p&gt;The data backs this up. In Anthropic's own study of around 400,000 coding sessions, sessions rated as novice reached verified success about 15% of the time, versus roughly 28 to 33% for intermediate or expert sessions. That's vendor research, so take it as a signal, not gospel. But it lines up with what I see: &lt;strong&gt;AI makes experts faster. It doesn't turn beginners into experts.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And ask any working developer what annoys them most about AI code. In a Stack Overflow survey, the top frustration for about two-thirds of respondents was solutions that are "almost right". Almost right is the most dangerous kind of wrong. You only catch it if you understand what right looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What You Should Actually Learn
&lt;/h2&gt;

&lt;p&gt;If you're a beginner, stop trying to learn everything. Here's the short list that actually works.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. One language, properly
&lt;/h3&gt;

&lt;p&gt;Pick Python or JavaScript. Not both. Not five. Get to the point where you can write a small program from a blank file without copy-pasting. Fundamentals beat frameworks every time.&lt;/p&gt;

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

&lt;p&gt;This is the new superpower. When AI gives you broken code, the person who can read an error message and trace the problem wins. Learn to use print statements, read stack traces, and Google (or ask AI) &lt;em&gt;specific&lt;/em&gt; questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Git and GitHub
&lt;/h3&gt;

&lt;p&gt;Every job expects this. Learn to commit, branch, and push. It's boring. Do it anyway. It's also your public proof that you build things.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Basic SQL and how data is stored
&lt;/h3&gt;

&lt;p&gt;Almost every app is a fancy wrapper around a database. If you understand tables, queries, and why things get slow, you're already ahead of most beginners.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Reading code
&lt;/h3&gt;

&lt;p&gt;Sounds weird, but most of your career is reading code someone else wrote. Now that includes code an AI wrote. Practice reading before you write.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Explaining what you built
&lt;/h3&gt;

&lt;p&gt;Being able to say "here's the problem, here's what I built, here's why I made this choice" is worth more than a fancy tech stack. Communication is the skill nobody puts on a roadmap.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. How to Use AI While Learning (Without Rotting Your Brain)
&lt;/h2&gt;

&lt;p&gt;I'm not telling you to avoid AI. That's silly, and employers expect you to use it. I'm telling you to use it like a &lt;em&gt;tutor&lt;/em&gt;, not a &lt;em&gt;vending machine&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Here are the rules I follow and tell everyone in my club:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try first, ask second.&lt;/strong&gt; Spend at least 15 minutes fighting the problem yourself. The struggle is where the learning actually happens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never paste code you can't explain.&lt;/strong&gt; If you can't explain a line out loud, you don't own it yet. Ask the AI to explain it like you're new, then explain it back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask it to quiz you.&lt;/strong&gt; "Give me 5 questions on this topic and don't show the answers until I try." This alone changes everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Break it on purpose.&lt;/strong&gt; Take working code, change one thing, and predict what will break. If you can predict it, you understand it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask "why," not just "how."&lt;/strong&gt; The best prompt for a beginner isn't "write me a login system." It's "why do we hash passwords instead of encrypting them?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use AI to go &lt;em&gt;deeper&lt;/em&gt;, not to skip the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Build Proof, Not Tutorials
&lt;/h2&gt;

&lt;p&gt;Here's the honest hiring reality right now. Companies are picky. A certificate of completion won't cut it.&lt;/p&gt;

&lt;p&gt;What works instead is &lt;strong&gt;two or three real projects that are actually deployed&lt;/strong&gt; and solve a real problem. Not a to-do app copied from a tutorial. Something specific: a tool for your college, a small site for a local business, a bot that fixes an annoying thing in your daily life.&lt;/p&gt;

&lt;p&gt;Then do the part everyone skips: write a proper README explaining what it does, why you built it, and what you'd improve. If you used AI along the way, say how and where you checked its work. That's exactly the kind of maturity hiring managers want to see.&lt;/p&gt;

&lt;p&gt;And join something. A club, an open-source project, a Discord community. Being around people who build things keeps you honest and gets you noticed. Running our IT club taught me that most opportunities come from people who know you build stuff, not from cold applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Things I'd Tell My Younger Self
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Nobody is "too late." Every generation of developers thought the field was already crowded.&lt;/li&gt;
&lt;li&gt;Tutorial hell is real. If you've watched 40 hours and built nothing, stop watching.&lt;/li&gt;
&lt;li&gt;The goal isn't to write code faster than AI. It's to be the person who knows whether the code is &lt;em&gt;good&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Consistency beats intensity. One hour a day for six months beats a 12-hour weekend binge.&lt;/li&gt;
&lt;li&gt;Your first projects will be ugly. Ship them anyway.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That's It. That's the Honest Take.
&lt;/h2&gt;

&lt;p&gt;Coding isn't dead. The lazy version of coding is. The version where you understand what you're building, can debug when things break, and use AI as a power tool instead of a crutch? That version is more valuable than ever.&lt;/p&gt;

&lt;p&gt;Now go close that "coding is dead" video and open your editor. Write something small. Break it. Fix it. Repeat.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Connect
&lt;/h2&gt;

&lt;p&gt;I'm Prayush Adhikari, currently grinding through computer engineering, leading an IT club, and building my own company on the side. I write about Linux, productivity, and the honest side of being a developer.&lt;/p&gt;

&lt;p&gt;If this hit home, drop a comment and tell me where you're stuck right now. I read every one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;linkedin.com/in/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;github.com/adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio: &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's your biggest fear as a beginner right now: AI taking your job, or never getting your first one? Tell me, and I'll write the next post about it.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sources for the numbers above:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://daily.dev/blog/how-to-get-first-developer-job/" rel="noopener noreferrer"&gt;How to Get Your First Developer Job in 2026 (daily.dev)&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://wavect.io/blog/vibe-coders-new-junior-developers/" rel="noopener noreferrer"&gt;Are Vibe Coders Replacing Junior Developers? (Wavect)&lt;/a&gt;, which covers the Stanford revision, the BLS projection, the Anthropic study, and the Stack Overflow survey&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>ai</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top 10 AI Coding Tools You Need in 2026 (Or You're Basically Coding With One Hand Tied Behind Your Back)</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Sun, 20 Sep 2026 20:02:48 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/top-10-ai-coding-tools-you-need-in-2026-or-youre-basically-coding-with-one-hand-tied-behind-your-272g</link>
      <guid>https://dev.to/adhikareeprayush/top-10-ai-coding-tools-you-need-in-2026-or-youre-basically-coding-with-one-hand-tied-behind-your-272g</guid>
      <description>&lt;p&gt;So here's the thing nobody warned us about: the "AI will help you code" era quietly turned into the "AI will just... code" era, and if you blinked you probably missed it. One day you're accepting autocomplete suggestions like a normal person, the next day your terminal is opening pull requests without you. Wild times. Anyway, here's ten tools that are actually worth your time right now, ranked by "how often do I personally open this."&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;strong&gt;Claude Code&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This one lives in your terminal and just... does things. Refactors, writes tests, reads your whole repo before making a suggestion instead of guessing from three open tabs like some tools I won't name. It feels less like autocomplete and more like handing a task to a very fast, slightly overcaffeinated junior dev who actually read the codebase first.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://claude.com/product/claude-code" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;strong&gt;Cursor&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Cursor took "VS Code but the AI actually understands your project" and ran with it. Multi-file edits, chat that doesn't forget what file you're in, the whole deal. If you've been Copilot-only, this is the upgrade that makes you go "oh, we're doing THIS now."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cursor.com/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;GitHub Copilot Workspace&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Copilot grew up. It's not just finishing your sentences anymore — you can hand it an issue and it drafts an actual plan before touching code. Feels less like a suggestion box and more like a very eager teammate who reads tickets before Slacking you questions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;strong&gt;Windsurf&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The agentic-editor space got crowded fast, and Windsurf earned its spot by being genuinely good at holding context across a big session without you re-explaining your entire architecture every ten minutes. Underrated for long refactor sessions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://windsurf.com/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. &lt;strong&gt;v0 by Vercel&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Describe a UI, get actual working React components back. It's the closest thing to "type a sentence, get a webpage" that doesn't look like it was built in 2013. Frontend prototyping got stupidly fast.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://v0.dev/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. &lt;strong&gt;Qodo (formerly CodiumAI)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Test coverage is the vegetables of software development — you know you should, you usually don't. Qodo writes actually-relevant tests based on what your code does instead of generic boilerplate. Slightly less guilt at code review time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. &lt;strong&gt;Tabnine&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For the "I like AI help but I'd also like my proprietary codebase to not leave the building" crowd. Local/private deployment options make it the pick for teams with strict data policies. Boring in the best way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tabnine.com/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. &lt;strong&gt;Warp&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A terminal that understands natural language and has an AI baked directly in for command lookup and debugging weird shell errors. If you've ever googled "how to undo a git rebase" at 1am, this is for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.warp.dev/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. &lt;strong&gt;Graphite&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Code review, but the AI actually summarizes the diff for your reviewers instead of them scrolling through 40 files going "sure, looks fine, ship it." Stacked PRs plus AI summaries make review way less of a chore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphite.dev/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. &lt;strong&gt;Replit Agent&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Full apps from a prompt, deployed and running, no local setup required. It's the tool that makes non-devs go "wait, I could build this?" — which is either exciting or terrifying depending on your job security anxiety that day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://replit.com/" rel="noopener noreferrer"&gt;Check It Out&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;The honest takeaway: nobody's job is "type code" anymore, it's "know what to ask for and whether the answer is actually good." Worth spending a weekend poking at two or three of these instead of doomscrolling about how AI is coming for your job. Pick one, break something small in a side project, learn from it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Security Pitfalls in React Apps I Learned the Hard Way</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Sat, 20 Jun 2026 15:05:53 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/security-pitfalls-in-react-apps-i-learned-the-hard-way-56e0</link>
      <guid>https://dev.to/adhikareeprayush/security-pitfalls-in-react-apps-i-learned-the-hard-way-56e0</guid>
      <description>&lt;p&gt;A few months back I was doing a code review for a friend's project and noticed they were storing JWTs in localStorage. I almost said nothing because honestly, I had done the same thing in like three projects before someone pointed it out to me. That's kind of the problem with frontend security. Nobody really teaches it properly, so we all just copy patterns from tutorials that were written to be quick, not safe.&lt;/p&gt;

&lt;p&gt;So here's what I've picked up, mostly from messing things up myself or catching bugs before they became actual incidents.&lt;/p&gt;

&lt;h2&gt;
  
  
  XSS is more common than you think
&lt;/h2&gt;

&lt;p&gt;Cross-Site Scripting is when attacker-controlled JavaScript ends up running in your user's browser. Sounds dramatic. It's also surprisingly easy to introduce by accident.&lt;/p&gt;

&lt;p&gt;The most common way I've seen it happen in React is through &lt;code&gt;dangerouslySetInnerHTML&lt;/code&gt;. Someone needs to render rich text from a CMS or a user comment, they google how to do it, find this prop, use it, and move on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Comment&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;dangerouslySetInnerHTML&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;userInput&lt;/code&gt; is coming from anything a user typed or any external source, this is a problem. An attacker can craft input that includes script tags and now that runs in every other user's browser that loads the comment.&lt;/p&gt;

&lt;p&gt;The fix is pretty straightforward. React escapes content by default when you render it normally, so just do that when you can:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Comment&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;userInput&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And when you genuinely need to render HTML, run it through DOMPurify first. It strips out anything dangerous before it hits the DOM.&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Comment&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;clean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DOMPurify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sanitize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userInput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;dangerouslySetInnerHTML&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;clean&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not perfect, but significantly better than nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSRF is the one people forget about entirely
&lt;/h2&gt;

&lt;p&gt;I genuinely forgot CSRF was a thing for a while. It doesn't come up much in React tutorials because the React part isn't really where the vulnerability lives.&lt;/p&gt;

&lt;p&gt;The short version: if your app uses cookies for auth, an attacker can get a logged-in user to make requests to your server from a completely different site. The browser sends the cookies automatically, your server sees a valid session, and whatever that request was supposed to do just... happens.&lt;/p&gt;

&lt;p&gt;The standard defenses are CSRF tokens (a secret value the attacker can't read from their site) and setting &lt;code&gt;SameSite=Strict&lt;/code&gt; or &lt;code&gt;SameSite=Lax&lt;/code&gt; on your cookies. The SameSite attribute alone cuts off most of these attacks without much extra work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Set-Cookie: session=abc123; SameSite=Strict; Secure; HttpOnly
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're using a backend framework, there's usually middleware that handles CSRF token generation and validation. Worth checking if it's actually enabled rather than assuming.&lt;/p&gt;

&lt;h2&gt;
  
  
  localStorage is fine until it isn't
&lt;/h2&gt;

&lt;p&gt;I know the feeling. Tutorial says put the JWT in localStorage, you put it in localStorage, app works, you ship it. And most of the time nothing bad happens.&lt;/p&gt;

&lt;p&gt;The issue is that localStorage is readable by any JavaScript running on the page. So if you ever end up with an XSS vulnerability (a bad npm package, a forgotten &lt;code&gt;dangerouslySetInnerHTML&lt;/code&gt;, whatever) the attacker's script can just read your token straight out of storage and send it somewhere.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// readable by literally any JS on this page&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HttpOnly cookies solve this because JavaScript can't read them at all. The browser sends them with requests automatically, but no script can access the value. The tradeoff is that your backend needs to set the cookie for you, which adds a bit of coordination. But if you're already building an API, it's not that much extra work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security headers exist and you're probably not sending them
&lt;/h2&gt;

&lt;p&gt;This took me embarrassingly long to actually implement. Security headers are HTTP response headers your server sends that tell the browser how to behave. Most apps don't send them because nobody ever runs into a direct error from not having them.&lt;/p&gt;

&lt;p&gt;Content Security Policy is the big one. It tells the browser which sources are allowed to load scripts, styles, images, etc. A solid CSP adds a meaningful second layer against XSS because even if a script gets injected, the browser may refuse to run it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Content-Security-Policy: default-src 'self'; script-src 'self'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also &lt;code&gt;X-Content-Type-Options: nosniff&lt;/code&gt; which stops browsers from sniffing content types, and &lt;code&gt;X-Frame-Options: DENY&lt;/code&gt; which prevents your app from being iframed on other sites (relevant for clickjacking).&lt;/p&gt;

&lt;p&gt;If you're running an Express backend, the Helmet package sets most of these in a few lines. If you're on Vercel or Netlify, you can set them in a config file. Either way it's not a big lift once you actually sit down to do it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accidentally shipping secret keys
&lt;/h2&gt;

&lt;p&gt;This one has bitten people I know. React apps bundle environment variables into the JavaScript that ships to the browser, which means anyone can open DevTools and read them.&lt;/p&gt;

&lt;p&gt;In Create React App, only variables prefixed with &lt;code&gt;REACT_APP_&lt;/code&gt; get included in the bundle. In Vite, it's &lt;code&gt;VITE_&lt;/code&gt;. The problem is people forget this rule and prefix something they shouldn't.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# now visible to anyone who opens the network tab&lt;/span&gt;
&lt;span class="nv"&gt;REACT_APP_STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk_live_abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Secret keys belong on the server. If your frontend needs to charge a card, it should call your own API endpoint, which then calls Stripe using the secret key from a server-side environment variable. The frontend never needs to touch the key directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honestly
&lt;/h2&gt;

&lt;p&gt;Most of this stuff isn't complicated once you know it exists. The gap is that nobody really lays it out together in one place during the "learn React" phase, so you end up shipping apps with several of these issues without realizing it.&lt;/p&gt;

&lt;p&gt;I'm still finding old projects of mine where I got lazy about some of this. If you're in the same boat, pick one thing from this list and fix it this week. That's usually how I approach it rather than trying to audit everything at once.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you've hit a security bug in production or caught one before it went out, I'd genuinely like to hear what it was in the comments.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;adhikareeprayush&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>security</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Built a Free Public Random Quotes API — No Key, No Auth, Just Use It</title>
      <dc:creator>Prayush Adhikari</dc:creator>
      <pubDate>Wed, 06 May 2026 16:44:54 +0000</pubDate>
      <link>https://dev.to/adhikareeprayush/i-built-a-free-public-random-quotes-api-no-key-no-auth-just-use-it-kg5</link>
      <guid>https://dev.to/adhikareeprayush/i-built-a-free-public-random-quotes-api-no-key-no-auth-just-use-it-kg5</guid>
      <description>&lt;p&gt;Hey there! So you've been Googling for a &lt;strong&gt;free quotes API&lt;/strong&gt; that doesn't require signing up, doesn't throttle you after 100 requests, and actually has useful filters?&lt;/p&gt;

&lt;p&gt;Yeah, I built that. It's live, it's public, and I want you to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Base URL:&lt;/strong&gt; &lt;code&gt;https://quotesapi.prayushadhikari.com.np/api&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;No API key. No authentication. No credit card. Just copy the URL and start fetching quotes. Let me show you everything it can do.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Another Quotes API?
&lt;/h2&gt;

&lt;p&gt;Most &lt;strong&gt;random quotes APIs&lt;/strong&gt; I found while building projects were either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dead (domain expired, RIP)&lt;/li&gt;
&lt;li&gt;Rate-limited to the point of uselessness&lt;/li&gt;
&lt;li&gt;Behind a signup wall for basic features&lt;/li&gt;
&lt;li&gt;Returning the same 20 quotes forever&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I needed something with real filtering — by author, category, text search, quote length. So I built it. And since I built it anyway, I hosted it publicly so you don't have to.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Right Now
&lt;/h2&gt;

&lt;p&gt;Open your browser or terminal and hit this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes/random"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll get back:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"quote"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"I feel bare. I didn't realize I wore my secrets as armor until they were gone and now everyone sees me as I really am."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Veronica Roth, Insurgent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"armor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"secrets"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"total"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;499708&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"offset"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"order"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"random"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"returned"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice &lt;code&gt;category&lt;/code&gt; is an array — a single quote can belong to multiple categories. And yeah, &lt;code&gt;meta.total&lt;/code&gt; is 499,708. Nearly half a million quotes. That's not a typo.&lt;/p&gt;

&lt;p&gt;That's it. No setup, no tokens, no nonsense. It just works.&lt;/p&gt;




&lt;h2&gt;
  
  
  All Available Endpoints
&lt;/h2&gt;

&lt;p&gt;Hit the discovery endpoint first — it gives you the full route map:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's what's available:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Route map — your starting point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/quotes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Paginated quotes with all filters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/quotes/random&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Random quote(s), default &lt;code&gt;limit=1&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/categories&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All available categories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/authors&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Searchable author list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/health&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Load status + diagnostics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Random Quotes Endpoint
&lt;/h2&gt;

&lt;p&gt;The most popular use case — &lt;strong&gt;get a random quote&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Single random quote (default)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes/random"&lt;/span&gt;

&lt;span class="c"&gt;# 5 random quotes at once&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes/random?limit=5"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is what you want for daily quote widgets, Discord bots, browser extensions, email footers — anything that needs a surprise every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Filters That Actually Work
&lt;/h2&gt;

&lt;p&gt;This is where this &lt;strong&gt;free quotes API&lt;/strong&gt; beats most alternatives. You're not stuck with just "give me random." Let me show you what's possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter by Category
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Quotes about wisdom&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?category=wisdom&amp;amp;limit=5"&lt;/span&gt;

&lt;span class="c"&gt;# Multiple categories (OR — matches either)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?categories=wisdom,motivation&amp;amp;limit=10"&lt;/span&gt;

&lt;span class="c"&gt;# Multiple categories (AND — must match all)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?categories=wisdom,motivation&amp;amp;match_categories=all"&lt;/span&gt;

&lt;span class="c"&gt;# Exclude a category&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?exclude_category=politics&amp;amp;limit=10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filter by Author
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Partial match, case-insensitive&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?author=oscar&amp;amp;limit=5"&lt;/span&gt;

&lt;span class="c"&gt;# Exact match&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?author_exact=Oscar%20Wilde"&lt;/span&gt;

&lt;span class="c"&gt;# Exclude specific author&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?exclude_author=Napoleon&amp;amp;limit=10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Full-Text Search
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Search inside quote text&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?q=journey&amp;amp;order=text&amp;amp;limit=20"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Quote Length Filters
&lt;/h3&gt;

&lt;p&gt;Perfect when you have a UI constraint — like a widget that only fits a tweet-length quote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Short quotes only (under 100 characters)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?max_len=100&amp;amp;limit=5"&lt;/span&gt;

&lt;span class="c"&gt;# Medium length range&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?min_len=80&amp;amp;max_len=200&amp;amp;limit=5"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Discover What's in the Dataset
&lt;/h2&gt;

&lt;p&gt;Before you build filters, explore what categories and authors exist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# All categories&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/categories"&lt;/span&gt;

&lt;span class="c"&gt;# Categories with quote counts&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/categories?counts=true"&lt;/span&gt;

&lt;span class="c"&gt;# Search authors by name&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/authors?q=einstein&amp;amp;limit=10"&lt;/span&gt;

&lt;span class="c"&gt;# All authors (up to 100)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/authors"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;counts=true&lt;/code&gt; on categories returns &lt;code&gt;{ name, count }[]&lt;/code&gt; which is exactly what you need to build a category picker UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Seed Param — My Favorite Feature
&lt;/h2&gt;

&lt;p&gt;This is the most underrated param in this &lt;strong&gt;random quotes API&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?order=random&amp;amp;seed=42&amp;amp;limit=10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same seed = same "random" order, every single time. Use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily quote of the day&lt;/strong&gt; — use today's date as the seed (&lt;code&gt;seed=20250506&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shareable quote lists&lt;/strong&gt; — send someone a seed and they see what you see&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducible testing&lt;/strong&gt; — no flaky randomness in your test suite&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Pagination for the Full Dataset
&lt;/h2&gt;

&lt;p&gt;Random order doesn't support &lt;code&gt;offset&lt;/code&gt; — that's intentional. But if you switch to deterministic ordering, pagination works perfectly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Page 1&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?order=text&amp;amp;limit=20&amp;amp;offset=0"&lt;/span&gt;

&lt;span class="c"&gt;# Page 2&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/quotes?order=text&amp;amp;limit=20&amp;amp;offset=20"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;meta&lt;/code&gt; field in every response gives you &lt;code&gt;total&lt;/code&gt; and &lt;code&gt;returned&lt;/code&gt; so you can compute pages on your end.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using the API in JavaScript
&lt;/h2&gt;

&lt;p&gt;This &lt;strong&gt;quotes API&lt;/strong&gt; supports CORS, so you can call it directly from the browser — no backend needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Fetch a single random quote&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getRandomQuote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://quotesapi.prayushadhikari.com.np/api/quotes/random&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Fetch quotes by category&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getQuotesByCategory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;limit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;limit&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://quotesapi.prayushadhikari.com.np/api/quotes?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;quotes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Daily quote using date as seed&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getDailyQuote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/-/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;order&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;random&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://quotesapi.prayushadhikari.com.np/api/quotes?&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Example usage&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;quote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getRandomQuote&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`"&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;" — &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Using It in Python
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;

&lt;span class="n"&gt;BASE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://quotesapi.prayushadhikari.com.np/api&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_random_quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;category&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt;

    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE_URL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/quotes/random&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_daily_quote&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;seed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%Y%m%d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE_URL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/quotes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;random&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Get a random motivation quote
&lt;/span&gt;&lt;span class="n"&gt;quotes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_random_quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;motivation&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;quotes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quote&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; — &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;author&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Get today's quote (same every time you call it today)
&lt;/span&gt;&lt;span class="n"&gt;daily&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_daily_quote&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Daily: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;daily&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quote&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  All Query Parameters at a Glance
&lt;/h2&gt;

&lt;p&gt;Here's the full reference for &lt;code&gt;GET /api/quotes&lt;/code&gt; and &lt;code&gt;GET /api/quotes/random&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;author&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Substring match on author name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;author=einstein&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;author_exact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exact author name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;author_exact=Albert%20Einstein&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;exclude_author&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exclude this author&lt;/td&gt;
&lt;td&gt;&lt;code&gt;exclude_author=Napoleon&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Must include this category&lt;/td&gt;
&lt;td&gt;&lt;code&gt;category=wisdom&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;categories&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Comma-separated, OR logic&lt;/td&gt;
&lt;td&gt;&lt;code&gt;categories=wisdom,love&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;match_categories=all&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Require ALL listed categories&lt;/td&gt;
&lt;td&gt;&lt;code&gt;match_categories=all&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;exclude_category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exclude this category&lt;/td&gt;
&lt;td&gt;&lt;code&gt;exclude_category=politics&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;q&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Substring search in quote text&lt;/td&gt;
&lt;td&gt;&lt;code&gt;q=courage&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;min_len&lt;/code&gt; / &lt;code&gt;max_len&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Quote character length range&lt;/td&gt;
&lt;td&gt;&lt;code&gt;min_len=50&amp;amp;max_len=200&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;limit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Results per page (default 10, max 100)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;limit=25&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;offset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pagination offset (not for random)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;offset=40&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;order&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;random&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;order=author&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deterministic shuffle for random&lt;/td&gt;
&lt;td&gt;&lt;code&gt;seed=42&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;legacy=true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns bare JSON array&lt;/td&gt;
&lt;td&gt;&lt;code&gt;legacy=true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;meta=false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Omit meta object from response&lt;/td&gt;
&lt;td&gt;&lt;code&gt;meta=false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What Can You Build With This?
&lt;/h2&gt;

&lt;p&gt;Here's what I'd love to see people building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily quote bots&lt;/strong&gt; for Discord, Telegram, or Slack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New tab browser extensions&lt;/strong&gt; with category-filtered quotes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motivational widgets&lt;/strong&gt; on personal portfolio sites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quote-of-the-day email newsletters&lt;/strong&gt; using the seed param&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile apps&lt;/strong&gt; that match quote moods to user input&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screensaver or wallpaper generators&lt;/strong&gt; with random quotes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Obsidian plugins&lt;/strong&gt; that pull quotes into your daily notes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI tools&lt;/strong&gt; that show a quote on every terminal open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API handles &lt;strong&gt;CORS&lt;/strong&gt; for all GET requests, so browser-direct calls work without a proxy backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Getting empty &lt;code&gt;data: []&lt;/code&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hit the health endpoint first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://quotesapi.prayushadhikari.com.np/api/health"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It'll tell you if the full dataset loaded correctly or if there's a fallback in use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filters returning fewer results than expected?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You might be combining too many strict filters. Try loosening them one at a time. The &lt;code&gt;q&lt;/code&gt; text search is a substring match, so &lt;code&gt;q=inspiration&lt;/code&gt; won't match a quote containing "inspire."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Need ALL quotes, not just 10?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;order=text&lt;/code&gt; (or &lt;code&gt;order=author&lt;/code&gt;) with &lt;code&gt;offset&lt;/code&gt; for pagination. &lt;code&gt;meta.total&lt;/code&gt; tells you how many exist total. Don't use &lt;code&gt;order=random&lt;/code&gt; with &lt;code&gt;offset&lt;/code&gt; — it won't work.&lt;/p&gt;




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

&lt;p&gt;I built this &lt;strong&gt;free random quotes API&lt;/strong&gt; because I was tired of hitting dead endpoints and rate limits every time I wanted to add a quote feature to a side project. Now you don't have to be.&lt;/p&gt;

&lt;p&gt;It's free. It's public. It's not going anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start here:&lt;/strong&gt; &lt;code&gt;https://quotesapi.prayushadhikari.com.np/api&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Drop a comment with what you're building — I read every single one and it helps me figure out what to add next. Want me to cover setting up your own instance, adding new quote datasets, or building a Discord bot with this? Let me know.&lt;/p&gt;

&lt;p&gt;I'm &lt;strong&gt;Prayush Adhikari&lt;/strong&gt;, grinding through computer engineering and shipping things in public.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://linkedin.com/in/adhikareeprayush" rel="noopener noreferrer"&gt;adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/adhikareeprayush" rel="noopener noreferrer"&gt;adhikareeprayush&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portfolio:&lt;/strong&gt; &lt;a href="https://prayushadhikari.com.np" rel="noopener noreferrer"&gt;prayushadhikari.com.np&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now go fetch some quotes.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
