<?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: Srisuma Atluri</title>
    <description>The latest articles on DEV Community by Srisuma Atluri (@srisuma13).</description>
    <link>https://dev.to/srisuma13</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F478569%2Fdbc8ae04-9c0b-45af-861a-72c50639fc9b.jpg</url>
      <title>DEV Community: Srisuma Atluri</title>
      <link>https://dev.to/srisuma13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srisuma13"/>
    <language>en</language>
    <item>
      <title>Git Handbook</title>
      <dc:creator>Srisuma Atluri</dc:creator>
      <pubDate>Mon, 23 Jan 2023 15:22:30 +0000</pubDate>
      <link>https://dev.to/srisuma13/git-handbook-281f</link>
      <guid>https://dev.to/srisuma13/git-handbook-281f</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;This blog post is going to contain all the git commands with its use cases for quick lookup.&lt;/p&gt;

&lt;p&gt;Without further ado, let's jump into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  BASICS
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/strong&gt;&lt;/em&gt; - to initialise the repository for git to track it.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;&lt;code&gt;git add &amp;lt;filename&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/em&gt; - adds the untracked file  to stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git add &amp;lt;file-1&amp;gt; &amp;lt;file-2&amp;gt; &amp;lt;file-3&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - adds multiple files based on the specified file names to stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - adds all the untracked files to stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git restore -stage &amp;lt;filename&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - unstage the  i.e it moves to untracked files list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git stash&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - moves both the (un-committed) staged and unstaged files to stash (like backstage) for cleaner working directory. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git stash pop&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - moves back all the files in stash area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git stash clear&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - clears the files in stash i.e permanently deletes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git commit -m &amp;lt;title&amp;gt; -m &amp;lt;description&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - commits the staged/tracked files with the corresponding commit message and description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - public record of commit history for a branch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git reflog&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - private record, saved locally used for recovering deleted branches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git reset &amp;lt;commit-id&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - resets the head to the commit id mentioned and the removed commits are pushed to unstaged area.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git reset --hard &amp;lt;commit-id&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - resets the head to the commit id mentioned and deletes the changes of above commits permenantly.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git revert &amp;lt;commit-id&amp;gt;&lt;/code&gt; - While git reset does this by moving the current head of the branch back to the specified commit, thereby changing the commit history, git revert does this by creating a new commit that undoes the changes in the specified commit and so does not change the history.
14.&lt;strong&gt;&lt;em&gt;&lt;code&gt;git push origin &amp;lt;remote-branch&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - pushes your commits to remote repository,  thats mentioned in the command.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&lt;code&gt;git push origin &amp;lt;remote-branch&amp;gt; -f&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; - force push required when remote branch has some commits which aren't present/removed in local(eg: with git reset).&lt;/li&gt;
&lt;li&gt;When working with forked projects, we need to fetch upstream commits - &lt;strong&gt;&lt;em&gt;&lt;code&gt;git pull upstream develop&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt; This creates an extra commit.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git rebase -i &amp;lt;commit-id&amp;gt;&lt;/code&gt;- Squashing your commits above a particular commit id(you can either pick or squash)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit --amend -no-edit&lt;/code&gt; - adds the staged files to previous commits without generating a new commit.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit --amend&lt;/code&gt; - adds the staged files to previous commit whilst providing an option to edit the previous commit. This and the above are very helpful when some logical step is missed in the previous commit.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prefer rebase over merge to pull remote changes to avoid merge commits -
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;git remote -v&lt;/code&gt; - displays all the remote urls attached to the local repository.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote add &amp;lt;remote-name&amp;gt; &amp;lt;remote-url&amp;gt;&lt;/code&gt; - connecting your local git repository with the remote repository hosted on Github with the remote name.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;remote-name&amp;gt;&lt;/code&gt; is generally origin for the repo cloned from github. It basically depicts the repository that we want to connect to.&lt;/li&gt;
&lt;li&gt;A repository might have multiple forks in which one of them can be cloned to the local repository. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In order to pull the changes from upstream repo into the fork - &lt;code&gt;git pull --rebase &amp;lt;remote-name&amp;gt; &amp;lt;feature-branch&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;this pulls and rebases the remote branch of upstream repo without making an extra commit on feature/develop branch of forked repo. Feature branches don't need to track merge commits.&lt;/li&gt;
&lt;li&gt;resolve the merge conflicts in the process of rebase if exists.&lt;/li&gt;
&lt;li&gt;use &lt;code&gt;git rebase --continue&lt;/code&gt; once merge conflicts are resolved for a particular commit to continue further.&lt;/li&gt;
&lt;li&gt;use &lt;code&gt;git rebase --abort&lt;/code&gt; for aborting the rebasing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you need to squash any duplicate commits, use &lt;code&gt;git rebase -i HEAD~N&lt;/code&gt; or &lt;code&gt;git rebase -i &amp;lt;commit-id&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DO NOT FORGOT to FORCE PUSH the commits that are squashed or amended. &lt;code&gt;git push origin develop -f&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  QUESTION
&lt;/h2&gt;

&lt;p&gt;And there's some famous question/doubt everyone has on their mind when starting off with git/github:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is a git 'pull request' not called a 'push request'?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Push" is you forcing the changes being present in the target repository (git push).&lt;br&gt;
"Pull" is the target repository grabbing your changes to be present there (git pull from the other repo).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A "pull request" is you requesting the target repository to please grab your changes.&lt;/li&gt;
&lt;li&gt;A "push request" would be the target repository requesting you to push your changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Always write better commit messages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Commit history is the index.&lt;/li&gt;
&lt;li&gt;Writing meaningful, logical and verbose commit messages allows others to understand the task or story that the PR solves.&lt;/li&gt;
&lt;li&gt;Prepend the commit message with its the type like feat, chore, fix, test, docs, refactor etc. &lt;a href="https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;squash all duplicate commits so that the master branch contains clean commit history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>code</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>My first step towards OSS</title>
      <dc:creator>Srisuma Atluri</dc:creator>
      <pubDate>Tue, 01 Nov 2022 06:29:12 +0000</pubDate>
      <link>https://dev.to/srisuma13/my-first-step-towards-oss-3om2</link>
      <guid>https://dev.to/srisuma13/my-first-step-towards-oss-3om2</guid>
      <description>&lt;p&gt;Hello everyone!&lt;br&gt;
Most of you might already know what open source software is and the community around it.&lt;br&gt;
Today I would like to share my first step towards OSS where I participated in the Hacktoberfest event and was able to successfully submit 4 PRs that got approved 🚀🚀🚀🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  My contributions and learnings
&lt;/h2&gt;

&lt;p&gt;During the month, maintainers of OSS from all around the world tag issues as "hacktoberfest" and "good-first-issue". Most of the issues are beginner friendly, especially for first time contributors. This was the best time for me to start out and learn the about it.&lt;/p&gt;

&lt;p&gt;So I found a project called &lt;a href="https://github.com/ToolJet/ToolJet"&gt;ToolJet&lt;/a&gt; that signed up for Hacktoberfest and actively providing good first issues for contributors who are beginning. &lt;br&gt;
ToolJet is basically an open-source low-code framework to build and deploy internal tools quickly without much effort from the engineering teams. It was using javascript and react where my area of interest lies.&lt;br&gt;
I worked on fixing few good first issues that were opened by the maintainers.They were very responsive, reviewed the PRs carefully and always checked if changes align with their code standards. Even though my contributions weren't huge, having it merged gave me an immense confidence boost.&lt;br&gt;
Checking to a whole new repo, reading through the code and figuring out things was great. While contributing to this repo, I additionally learnt about docker and how applications run on it.&lt;/p&gt;

&lt;p&gt;Also, while preparing for interviews last month, I found the &lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;Freecodecamp developer quiz resources&lt;/a&gt; very useful. Javascript was my main area of focus, so I wanted to added few questions to the repo that didn't have few important topics like closures, event delegation etc. So opened a PR for the same.&lt;/p&gt;

&lt;p&gt;Therefore, from a developer who was using numerous open source libraries in own projects to contributing to one of them feels awesome. I am so glad for choosing to participate and hope to continue on it.&lt;/p&gt;

&lt;p&gt;Would love to take any suggestions related to OSS contributions.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>My experience and learnings as a Software engineer so far</title>
      <dc:creator>Srisuma Atluri</dc:creator>
      <pubDate>Mon, 31 Oct 2022 07:52:59 +0000</pubDate>
      <link>https://dev.to/srisuma13/my-experience-and-learnings-as-a-software-engineer-so-far-56ll</link>
      <guid>https://dev.to/srisuma13/my-experience-and-learnings-as-a-software-engineer-so-far-56ll</guid>
      <description>&lt;p&gt;Okay, it is little more than two years of my career and would like to take a moment, pause and write down things I learnt and would love to share with you all. Hope these bits of information might help you if you are just beginning your career and looking for some guidance.&lt;/p&gt;

&lt;p&gt;I started off my career after my graduation in the pandemic, mid of July, 2020 which was the period where whole world was in total chaos, so was I. Reason for it being - how can I start working online? It's something I never thought of, remote jobs was so unfamiliar. How can I get to know my teammates online and ask for help? And when I got to know I would be the second developer in Hyderabad working  with my lead to learn and build the team from there ahead, a hell lot of questions were running on the mind.&lt;/p&gt;

&lt;p&gt;But so grateful that all the negatives I thought about while my career hit off turned out to be not so negative, instead they all were beautiful learnings. I had an awesome supportive mentors during the initial days which turned out to be a blessing in disguise. Why a blessing? It's because I was just not taught on what and how we should be working but also &lt;em&gt;why&lt;/em&gt; we are actually working on a particular project/task and at what scale/impact the changes would result in.&lt;/p&gt;

&lt;p&gt;This played a subtle but huge difference in my thought process on the tasks I picked up, the way I looked at problems. Initially, I was girl who used to rush things to finish off the task quickly and panicked when things wouldn’t fall in place. But over these 2 years understood that Software Engineering is not sprint to be completed quickly but a marathon to be ran carefully.&lt;/p&gt;

&lt;p&gt;Things I picked up on my first job apart from the tech stack:&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning
&lt;/h2&gt;

&lt;p&gt;Planning things properly played a crucial role. Writing down a list of things I would like to finish off for the day in the morning and keeping enough pace to at least complete 80% of it. Not always I could finish off goals I set for the day. Sometimes, a part of your day might be involved in helping your teammates or you might be in a very bad mood, end up unable to concentrate or get stuck somewhere. Having said all the above, having a list is still important. Always track things down and carry forward the leftovers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communication is key
&lt;/h2&gt;

&lt;p&gt;When things go south, never hesitate to ask for help. Don't get stuck with a problem for too long, you can always google and try to fix things but if even that doesn't help, reach out your teammates. They have a fountain of knowledge that they would definitely love to share. Ask in the channels so that someone on your team would jump in to help you. Having a good bond with all of your teammates is a great thing you can do for yourself. We aren't machines who can keep on work, pause for a while, talk to people maybe new people as well sometimes. There would be so many ideas triggering out of your mind.&lt;br&gt;
And also always share your knowledge with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing clean code
&lt;/h2&gt;

&lt;p&gt;Also, I had a misconception that being a software engineer, my love for problem solving would be the driving factor but it is more that just solving problems like in CP. We need to identify and articulate problems, architect/design possible solutions for it and then comes to implementation. Hold on, it is not the end. I spent days addressing reviewing comments for the my PR’s initially and most of them include writing clean code apart from the functionality review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging
&lt;/h2&gt;

&lt;p&gt;Learning how to appropriately use debugging tools has had huge impact. During the first few days, I had no clue of google dev tools when working on web or placing debugger on VS code for server side code. I just used logging statements throughout the codebase and hoping that I could find clues as to the location of the problem. But once when I was told to learn more about the debugging tools, I fell in loving with solving bugs. These tools helped me interpret code a lot better as we could see the data thats flowing through.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Therefore, planning, communication, problem solving (debugging) and writing clean code are few key attributes I think a software engineer should possess. &lt;br&gt;
Let me know the ones that I might have missed and you think are definitely required on this list or anything amiss.&lt;br&gt;
Happy to discuss.&lt;/p&gt;

</description>
      <category>career</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
