<?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: Deepika Pusala</title>
    <description>The latest articles on DEV Community by Deepika Pusala (@deepika_pusala).</description>
    <link>https://dev.to/deepika_pusala</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%2F4060374%2F1930f0d0-ed1a-4008-a5b1-cb07341e8dec.png</url>
      <title>DEV Community: Deepika Pusala</title>
      <link>https://dev.to/deepika_pusala</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deepika_pusala"/>
    <language>en</language>
    <item>
      <title>Day 2 Diaries: Semantic HTML, Accessibility &amp; the Branch 🌿</title>
      <dc:creator>Deepika Pusala</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:45:51 +0000</pubDate>
      <link>https://dev.to/deepika_pusala/day-2-diaries-semantic-html-accessibility-the-branch-59o8</link>
      <guid>https://dev.to/deepika_pusala/day-2-diaries-semantic-html-accessibility-the-branch-59o8</guid>
      <description>&lt;p&gt;If Day 1 was all about setting up the "rules of the game" (Git, GitHub, branches, PR templates), Day 2 was where I actually got to play — and also where I met my first real Git troublemaker. Here's everything I learned today, written the way it actually happened. 😅&lt;/p&gt;

&lt;p&gt;🎯 What I worked on today&lt;br&gt;
Built a mini blog page using Semantic HTML&lt;br&gt;
Learned why semantic tags matter (not just what they are)&lt;br&gt;
Ran a Lighthouse audit to check accessibility, performance, and SEO&lt;br&gt;
Accidentally created a branch named escape 🙃 and had to recover from it&lt;br&gt;
Finally understood the real difference between one branch per topic vs one branch per week&lt;br&gt;
🧱 What is Semantic HTML, actually?&lt;/p&gt;

&lt;p&gt;Before today, my idea of building a webpage was: wrap everything in &lt;/p&gt; tags and hope for the best. Turns out, that's called "div soup," and it's not great. 😂

&lt;p&gt;Semantic HTML means using tags that actually describe what the content is, not just how it looks.&lt;/p&gt;

&lt;p&gt;Non-semantic (bad)  Semantic (good) What it tells the browser&lt;br&gt;
&lt;/p&gt;        "This is the top section"&lt;br&gt;
      "This is navigation links"&lt;br&gt;
    "This is the main content"&lt;br&gt;
        "This is the bottom section"

&lt;p&gt;Real-life analogy: imagine a delivery box with no label — the courier has no idea what's inside or how to handle it. Semantic HTML is like labeling the box "FRAGILE — HANDLE WITH CARE" — now the browser (and screen readers, and search engines) know exactly what they're dealing with.&lt;/p&gt;

&lt;p&gt;A tiny example from my blog.html:&lt;br&gt;
html&lt;/p&gt;


&lt;h1&gt;Tech Learning Blog&lt;/h1&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href="#article"&amp;gt;Article&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href="#tips"&amp;gt;Tips&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;&amp;lt;a href="#contact"&amp;gt;Contact&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Notice aria-label="Main Navigation" — that's my first taste of accessibility (a11y) in action.&lt;/p&gt;

&lt;p&gt;♿ Why Accessibility matters (and isn't just a "nice to have")&lt;/p&gt;

&lt;p&gt;Accessibility means making sure your website works for everyone — including people using screen readers, people who can't use a mouse, people with low vision, etc.&lt;/p&gt;

&lt;p&gt;Simple example: aria-label="Main Navigation" tells a screen reader "hey, this is the navigation section," even if there's no visible text saying so. Without it, someone using a screen reader might have no idea what that block of links is for.&lt;/p&gt;

&lt;p&gt;🔦 Running my first Lighthouse Audit&lt;/p&gt;

&lt;p&gt;Chrome has a built-in tool called Lighthouse that scores your webpage on:&lt;/p&gt;

&lt;p&gt;⚡ Performance&lt;br&gt;
♿ Accessibility&lt;br&gt;
✅ Best Practices&lt;br&gt;
🔍 SEO&lt;/p&gt;

&lt;p&gt;My first attempt failed instantly with this error:&lt;/p&gt;

&lt;p&gt;Can only audit pages on HTTP or HTTPS. Navigate to a different page.&lt;/p&gt;

&lt;p&gt;Turns out I'd opened my file directly from my hard drive (F:/FullStack_Intern/...), and Lighthouse needs a real web server — even a local one — to properly measure things like load time.&lt;/p&gt;

&lt;p&gt;The fix: VS Code's Live Server extension. One click on "Go Live," and my file loaded through an actual local server (&lt;a href="http://127.0.0.1:5500/.." rel="noopener noreferrer"&gt;http://127.0.0.1:5500/..&lt;/a&gt;.) instead of a raw file path. Lighthouse worked instantly after that.&lt;/p&gt;

&lt;p&gt;Lesson: file:// ≠ http://, and some tools genuinely care about that difference.&lt;/p&gt;

&lt;p&gt;🌀 The "escape" branch incident&lt;/p&gt;

&lt;p&gt;This was the chaotic part of my day, and honestly, my favorite lesson.&lt;/p&gt;

&lt;p&gt;While creating a new branch in VS Code, a popup appeared:&lt;/p&gt;

&lt;p&gt;"Please provide a new branch name (Press 'Enter' to confirm or 'Escape' to cancel)"&lt;/p&gt;

&lt;p&gt;Somewhere in there, my branch accidentally got named... escape. Yes, literally the word "escape." 😭&lt;/p&gt;

&lt;p&gt;I committed my blog.html file onto this wrongly-named branch without realizing it, then tried to git push — and it failed, because this branch had never been connected to GitHub.&lt;/p&gt;

&lt;p&gt;How I found and fixed it:&lt;br&gt;
bash&lt;br&gt;
git branch          # showed: escape, main, week-01-02-semantic-html-accessibility&lt;br&gt;
git log --oneline   # confirmed my blog.html commit was sitting on 'escape'&lt;/p&gt;

&lt;p&gt;The fix used a command I'd never heard of before today — cherry-pick:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
git checkout week-01-02-semantic-html-accessibility&lt;br&gt;
git cherry-pick 4b9ea4b     # copies one specific commit onto the current branch&lt;br&gt;
git push&lt;br&gt;
git branch -D escape        # deletes the mistake branch&lt;/p&gt;

&lt;p&gt;Cherry-pick, in plain English: "take this one specific commit from somewhere else, and copy it onto the branch I'm currently on." It's like copy-pasting one paragraph from a messy draft into your final clean document, instead of rewriting everything from scratch.&lt;/p&gt;

&lt;p&gt;🌳 Branch strategy — the correction of the day&lt;/p&gt;

&lt;p&gt;I originally thought each topic (HTML, CSS, JS...) needed its own separate branch. After checking with Maruti, turns out our team's actual convention is:&lt;/p&gt;

&lt;p&gt;One branch per WEEK, not per topic.&lt;/p&gt;

&lt;p&gt;week-01     ← ALL of week 1's topics (HTML, CSS, JS...) as commits here&lt;br&gt;
week-02     ← ALL of week 2's topics here&lt;br&gt;
week-03     ← and so on&lt;/p&gt;

&lt;p&gt;So instead of opening a new branch for every single topic, I keep adding commits into the same weekly branch, and only open one PR at the end of the week, once everything's done.&lt;/p&gt;

&lt;p&gt;📋 Git Commands Cheat Sheet (everything I used today)&lt;br&gt;
Command What it does (in plain English)&lt;br&gt;
git branch  Lists all branches, shows which one you're currently on&lt;br&gt;
git checkout    Switches you to a different branch&lt;br&gt;
git checkout -b     Creates a NEW branch and switches to it&lt;br&gt;
git branch -m     Renames the branch you're currently on&lt;br&gt;
git branch -d   Deletes a branch (only if it's safely merged)&lt;br&gt;
git branch -D   Force-deletes a branch, even if not merged&lt;br&gt;
git add .   Stages all your changed files, getting them ready to commit&lt;br&gt;
git commit -m "message" Saves a checkpoint of your staged changes, with a note&lt;br&gt;
git push    Uploads your local commits to GitHub&lt;br&gt;
git pull origin main    Downloads the latest changes from GitHub into your local main&lt;br&gt;
git status  Shows what's changed, staged, or still pending&lt;br&gt;
git log --oneline   Shows a short list of recent commits&lt;br&gt;
git cherry-pick  Copies one specific commit onto your current branch&lt;br&gt;
💭 What today actually taught me&lt;/p&gt;

&lt;p&gt;Not the Lighthouse scores, not even the semantic tags. What really stuck was this: mistakes in Git are almost always recoverable, as long as you slow down, check git status and git branch before panicking, and understand why an error happened instead of just Googling the fix blindly.&lt;/p&gt;

&lt;p&gt;Also — labeling a branch "escape" by accident might be the most on-brand thing that's ever happened to me on a stressful day. 😂&lt;/p&gt;

&lt;p&gt;Tomorrow: More CSS, and hopefully zero branches named after keyboard keys.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>lighthouse</category>
      <category>ai</category>
    </item>
    <item>
      <title>Day 1 as a Full Stack Intern: Setting Up My First Real Git Workflow</title>
      <dc:creator>Deepika Pusala</dc:creator>
      <pubDate>Mon, 03 Aug 2026 15:27:36 +0000</pubDate>
      <link>https://dev.to/deepika_pusala/day-1-as-a-full-stack-intern-setting-up-my-first-real-git-workflow-24je</link>
      <guid>https://dev.to/deepika_pusala/day-1-as-a-full-stack-intern-setting-up-my-first-real-git-workflow-24je</guid>
      <description>&lt;p&gt;Today was my first day as a Full Stack Intern at Sandlogic, and honestly, I thought I'd spend Day 1 writing some HTML or maybe just sitting through onboarding slides. Instead, my very first task was this:&lt;/p&gt;

&lt;p&gt;"Initialize a Git repo, set up a branch naming convention, add a .gitignore, write a proper README, create a PR template, protect the main branch, and define the contribution workflow you'll use for every single practical from here on."&lt;/p&gt;

&lt;p&gt;No code. No React. No APIs. Just... Git. And by the end of the day, I understood why. This is the foundation everything else gets built on top of. So here's my Day 1, written the way it actually happened — including the parts where I panicked a little.&lt;/p&gt;

&lt;p&gt;Git vs GitHub — the thing I mixed up first&lt;/p&gt;

&lt;p&gt;Before touching anything, I had to get one thing straight in my head: Git and GitHub are not the same thing.&lt;/p&gt;

&lt;p&gt;Git is a tool that runs on your own computer and tracks every change you make to your files over time. GitHub is a website that hosts your Git project online so other people (like my mentor, Maruti) can see it, review it, and collaborate on it.&lt;/p&gt;

&lt;p&gt;So Git is the engine, GitHub is where the car gets parked for everyone to see.&lt;/p&gt;

&lt;p&gt;-&amp;gt; Setting up the repo&lt;/p&gt;

&lt;p&gt;I created a new GitHub repo called "FullStack_Intern", added a description, and had to make two small decisions I wasn't expecting:&lt;/p&gt;

&lt;p&gt;'.gitignore' — what template do I pick?&lt;br&gt;
Since I'm on the JS/full-stack track (Node, React, eventually Next.js), I went with the &lt;strong&gt;Node&lt;/strong&gt; template. This automatically ignores stuff like &lt;code&gt;node_modules/&lt;/code&gt; and &lt;code&gt;.env&lt;/code&gt; files — things that are either too huge to commit or contain secrets that should never be public.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Branch Naming Convention
&lt;/h2&gt;

&lt;p&gt;Every single practical I do from now on lives on its own branch, named like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;week-NN-topic-slug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example: &lt;code&gt;week-01-central-repository-git-branching-strategy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;NN&lt;/code&gt; is always a two-digit week number so everything sorts in order, and the topic slug is just a short, readable version of what I'm working on. Simple, but it means six months from now, anyone (including me) can scroll through my branches and instantly understand the timeline of what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing the README
&lt;/h2&gt;

&lt;p&gt;The README is basically the front door of my repo — the first thing anyone sees. Mine has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An overview of what the repo is for&lt;/li&gt;
&lt;li&gt;The tech stack I'm using&lt;/li&gt;
&lt;li&gt;The folder structure&lt;/li&gt;
&lt;li&gt;The branch naming convention (with real examples)&lt;/li&gt;
&lt;li&gt;The full contribution workflow, step by step&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The PR Template
&lt;/h2&gt;

&lt;p&gt;This one confused me at first — I actually tried to create it inside &lt;code&gt;.gitignore&lt;/code&gt; by mistake (yeah, I know 😅). Turns out a Pull Request template is a completely separate thing that lives in a folder called &lt;code&gt;.github&lt;/code&gt;, not inside the ignore file. Once I understood that, it was straightforward: create &lt;code&gt;.github/pull_request_template.md&lt;/code&gt;, and now every PR I open automatically loads a consistent checklist — what the PR does, which week it's for, and a checklist to self-review before merging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protecting &lt;code&gt;main&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is where things got real. I went into my repo's Settings → Rules → Rulesets and set up a rule so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nobody (including me) can push directly to &lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Every change has to go through a Pull Request&lt;/li&gt;
&lt;li&gt;Force-pushing is blocked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first I set "Required approvals" to 1, thinking that was the safe, professional thing to do. Then I hit a wall — GitHub literally does not let you approve your own PR, no matter what. I messaged my mentor Maruti about it, and he told me I could manage my own PRs for now. So I lowered the required approvals to 0 (while keeping "PR required before merge" switched on), which meant I still had to go through the full PR process — just without waiting on someone else's click.&lt;/p&gt;

&lt;p&gt;✨My First Real Branch → PR → Merge&lt;/p&gt;

&lt;p&gt;Here's where I actually tested the whole system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Created a branch: &lt;code&gt;week-01-central-repository-git-branching-strategy&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Added my notes for the week&lt;/li&gt;
&lt;li&gt;Committed and pushed&lt;/li&gt;
&lt;li&gt;Opened a Pull Request into &lt;code&gt;main&lt;/code&gt;, using the PR template&lt;/li&gt;
&lt;li&gt;Squash-merged it into &lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sounds clean when I write it like that. It was &lt;strong&gt;not&lt;/strong&gt; clean the first time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Duplicate Folder Disaster (a.k.a. my first real Git problem)
&lt;/h2&gt;

&lt;p&gt;While creating a file directly on GitHub's website, I accidentally created a folder inside a folder with the exact same name. So instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;week-01-central-repo-git-branching-strategy/
  └── notes.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I ended up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;week-01-central-repo-git-branching-strategy/
  └── week-01-central-repo-git-branching-strategy/
        └── notes.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I didn't even notice until I actually looked closely at the file path in my browser. Lesson learned: &lt;strong&gt;always double-check your file path breadcrumb before committing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I deleted the duplicate, but then when I tried pushing my local changes, Git rejected me with this:&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;! [rejected] (fetch first)
error: failed to push some refs
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because GitHub's copy of the branch and my laptop's copy had gone in two different directions. The fix was to &lt;code&gt;git pull&lt;/code&gt; first to merge the two, clean up the leftover mess again, commit the cleanup, and then push. It worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Not Fully Merged" Scare
&lt;/h2&gt;

&lt;p&gt;After my PR was successfully merged on GitHub (I saw the purple "Merged" badge and everything), I went back to my terminal to delete my local branch and got this:&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;error: The branch 'week-01-...' is not fully merged.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I genuinely panicked for a second, thinking I'd lost my work. Turns out this is a very normal, very common thing that happens with &lt;strong&gt;squash merges&lt;/strong&gt; — because squashing creates one brand-new combined commit on &lt;code&gt;main&lt;/code&gt;, Git's local branch comparison doesn't recognize it as "the same" commits, even though everything is safely there. The fix was just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-D&lt;/span&gt; week-01-central-repository-git-branching-strategy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The capital &lt;code&gt;-D&lt;/code&gt; forces the delete since I already knew, for certain, that the content was safely merged (I could see it live on GitHub).&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Actually Learned Today
&lt;/h2&gt;

&lt;p&gt;Not the "correct" Git commands — I could've read those anywhere. What I actually learned is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Things will go slightly wrong even when you follow every step correctly, and that's normal, not a sign you're bad at this&lt;/li&gt;
&lt;li&gt;A rejected push or a "not fully merged" error looks scary but almost always has a calm, logical explanation&lt;/li&gt;
&lt;li&gt;Reading the actual error message Git gives you is usually the fastest way to fix it — it often tells you exactly what command to run next&lt;/li&gt;
&lt;li&gt;Setting up "boring" infrastructure like branch protection and PR templates on Day 1 is what makes every future day smoother&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tomorrow, I move on to my first actual coding practical — Semantic HTML &amp;amp; Accessibility. But I'm glad my first day was about building the workflow first, because now I actually understand &lt;em&gt;why&lt;/em&gt; we do branch → PR → review → merge, instead of just being told to do it.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
