<?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: Manu </title>
    <description>The latest articles on DEV Community by Manu  (@mannu_r).</description>
    <link>https://dev.to/mannu_r</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%2F1861591%2Ff117b26e-841e-4dd3-9ac2-5bbf11acea21.jpg</url>
      <title>DEV Community: Manu </title>
      <link>https://dev.to/mannu_r</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mannu_r"/>
    <language>en</language>
    <item>
      <title>My 'First' GitHub Project</title>
      <dc:creator>Manu </dc:creator>
      <pubDate>Sun, 23 Aug 2026 22:19:36 +0000</pubDate>
      <link>https://dev.to/mannu_r/my-first-github-project-3ahi</link>
      <guid>https://dev.to/mannu_r/my-first-github-project-3ahi</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;From a Local Folder to GitHub, Using Git and SSH&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before this week, my GitHub profile was mostly a place where projects sat as plain uploaded folders. I had never taken a project through the actual Git workflow from scratch, starting a local repository, track changes properly, and push it up over SSH instead of typing a username and password every time. This article walks through how I did that for the first time, using one of my own data science projects (an EPL results analysis notebook I had been building locally) as the real example.&lt;/p&gt;

&lt;p&gt;The point of this article isn't to define Git and GitHub in the abstract. It's to show, step by step, what actually happened on my machine when I turned a folder sitting on my laptop into a proper, version-controlled GitHub repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  The starting point: a folder, not a repository.
&lt;/h2&gt;

&lt;p&gt;I had a project folder on my machine with a Jupyter notebook, a CSV of match data, and a few helper scripts. Nothing in that folder was being tracked by git yet it was just files sitting on disk. This distinction matters: a folder only becomes a Git repository once you deliberately initialize it. Until then, there is no history, no staging area, and nothing to push anywhere.&lt;br&gt;
To turn the folder into a repository, I ran:&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;cd &lt;/span&gt;epl-results-analysis
git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a hidden &lt;code&gt;.git&lt;/code&gt; folder inside the project. That hidden folder is where Git stores every commit, every branch, and the entire history of the project. Nothing in my actual project files changed git simply started watching the folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deciding what Git should ignore.
&lt;/h2&gt;

&lt;p&gt;Before making my first commit, I created a &lt;code&gt;.gitignore&lt;/code&gt; file. This step matters more than it looks. A data science folder tends to fill up with things that should never end up in version control: virtual environment folders, &lt;code&gt;__pycache__&lt;/code&gt;directories, &lt;code&gt;.ipynb_checkpoints&lt;/code&gt;, and large raw data exports that change constantly. If these get committed early, they clutter the history and make the repository heavier than it needs to be.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.venv/
__pycache__/
.ipynb_checkpoints/
*.pyc
.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git ignores anything listed here, so when I check the status of the project, only files that actually matter for the project show up as changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the staging area
&lt;/h2&gt;

&lt;p&gt;This was the part that finally clicked for me during this project. Git does not commit your whole folder every time it commits whatever you have deliberately placed in the staging area. Running git status showed my notebook and script files listed as untracked. To move them into the staging area, I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
git add notebook.ipynb epl_helpers.py README.md
git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running git status again after &lt;code&gt;git add&lt;/code&gt; showed the same files, but now listed as &lt;code&gt;"changes to be committed"&lt;/code&gt; instead of &lt;em&gt;"untracked."&lt;/em&gt; The staging area is essentially a preview of the next &lt;em&gt;commit&lt;/em&gt;. This is useful in practice: if I only wanted to commit the README and not the half-finished notebook, I could stage just that one file rather than everything at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the first commit.
&lt;/h2&gt;

&lt;p&gt;Once the files I wanted were staged, I committed them with a message describing what the commit actually contains:&lt;br&gt;
&lt;code&gt;git commit -m "Add initial EPL results notebook and data loading script"&lt;/code&gt;&lt;br&gt;
A commit is a snapshot, not just a save. git records exactly which files changed, what the content looked like, who made the change, and when. Because I staged deliberately rather than committing everything blindly, this first commit told a clear story: &lt;strong&gt;"here is the starting version of the analysis,"&lt;/strong&gt; rather than a vague dump of every file on my laptop.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up SSH instead of HTTPS
&lt;/h2&gt;

&lt;p&gt;GitHub lets you connect over &lt;code&gt;HTTPS&lt;/code&gt; or &lt;code&gt;SSH&lt;/code&gt;. &lt;strong&gt;HTTPS&lt;/strong&gt; works, but it usually means typing a username and a personal access token every time you push. &lt;strong&gt;SSH&lt;/strong&gt; avoids that by using a key pair: a &lt;strong&gt;private key&lt;/strong&gt; that stays on my machine, and a &lt;strong&gt;public key&lt;/strong&gt; that I register with GitHub. Once that's set up, GitHub can verify it's really my machine pushing the code, with no password prompt.&lt;br&gt;
To generate a new key pair, I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"imm********@gmail.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This created two files: a &lt;code&gt;private key (id_ed25519)&lt;/code&gt; that never leaves my machine, and a &lt;code&gt;public key (id_ed25519.pub)&lt;/code&gt; that is safe to share. I copied the contents of the public key file and added it under GitHub's SSH keys settings. I then confirmed the connection worked before pushing anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful response confirms GitHub recognizes the key and identifies me by username, without ever asking for a password. The private key is the one piece of this whole workflow that must never be shared, committed, or pasted anywhere. It's the equivalent of a house key, while the public key is just the lock GitHub uses to check it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting the local repository to GitHub.
&lt;/h2&gt;

&lt;p&gt;With SSH working, I created an empty repository on GitHub through the website deliberately empty, with no &lt;code&gt;README&lt;/code&gt; or &lt;code&gt;.gitignore&lt;/code&gt; auto-generated, since my local project already had its own history started. GitHub then gave me an SSH remote URL, which I attached to my local repository:&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 git@github.com:&amp;lt;my-username&amp;gt;/epl-results-analysis.git
git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The remote is just a label Git uses to know where "GitHub" is for this project. Running &lt;code&gt;git remote -v&lt;/code&gt; afterward let me confirm the URL was set correctly and was using the SSH form (starting with &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;) rather than the HTTPS form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pushing the project.
&lt;/h2&gt;

&lt;p&gt;The final step was pushing my local commit history up to GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;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;The -u flag links my local main branch to origin/main, so future pushes and pulls can just be git push and git pull without repeating the branch name each time. After this ran, refreshing the GitHub page showed the notebook, helper script, and &lt;code&gt;README&lt;/code&gt; sitting in the repository, with the commit message I had written earlier attached to the file history.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small mistake that taught me something
&lt;/h2&gt;

&lt;p&gt;On my first attempt, I forgot to add the &lt;code&gt;.gitignore&lt;/code&gt; file before staging everything, and a &lt;code&gt;.venv&lt;/code&gt; folder briefly got added to the staging area. I caught it before committing by checking git status carefully and unstaged it with git restore --staged &lt;code&gt;.venv/&lt;/code&gt; before adding the &lt;code&gt;.gitignore&lt;/code&gt; and trying again. This reinforced why checking &lt;code&gt;git status&lt;/code&gt; before every commit is worth the extra few seconds. It's the one command that shows exactly what's about to be recorded in the project's history.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this project actually taught me
&lt;/h2&gt;

&lt;p&gt;Going through this once, deliberately, made several ideas concrete that had previously just been definitions I could recite:&lt;br&gt;
• The working directory, staging area, and commit history are three distinct stages, not one blurry "saving" step.&lt;br&gt;
• Staging lets you commit selectively and intentionally, instead of everything you happen to have open.&lt;br&gt;
• &lt;code&gt;SSH keys&lt;/code&gt; remove repeated authentication friction and are safer than typing credentials into a terminal repeatedly as long as the private key stays private.&lt;br&gt;
• A &lt;code&gt;.gitignore&lt;/code&gt; written before the first commit saves cleanup work later.&lt;br&gt;
• &lt;code&gt;git status&lt;/code&gt; is the single most useful command in the whole workflow, because it tells you exactly what state your repository is in before you commit or push anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where this goes next.
&lt;/h3&gt;

&lt;p&gt;With the EPL results project now properly version-controlled and published, later changes follow the same pattern: edit files, check status, stage deliberately, commit with a clear message, and push. The next improvement I want to make to this workflow is writing a proper README before pushing, rather than after, so that anyone finding the repository understands what the project does before they open a single file. That's a small habit, but this project made it obvious why it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This is not for educational purposes only. _&lt;br&gt;
_This repository is private.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>Data Science: An expert's perspective.</title>
      <dc:creator>Manu </dc:creator>
      <pubDate>Mon, 12 Aug 2024 12:43:03 +0000</pubDate>
      <link>https://dev.to/mannu_r/data-science-an-experts-perspective-5f0f</link>
      <guid>https://dev.to/mannu_r/data-science-an-experts-perspective-5f0f</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is data science?&lt;/strong&gt;&lt;br&gt;
Data science is an area where data is examined for patterns and characteristics. This includes a combination of methods and techniques from mathematics, statistics and computer science. Visualization techniques are frequently used in order to make the data understandable. The focus is on the understanding and usage of the data with the aim of obtaining insights which can further contribute to the organization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does it relate to AI, for instance Machine Learning and&lt;br&gt;
Deep Learning?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artificial Intelligence&lt;/strong&gt; is a discipline which enables computers to mimic human behavior and intelligence.&lt;br&gt;
&lt;strong&gt;Machine Learning&lt;/strong&gt; is part of Artificial Intelligence which focuses on ‘learning’. Algorithms and statistical models are being designed for autonomous learning of tasks from data, without giving explicit instructions upfront.&lt;br&gt;
&lt;strong&gt;Deep Learning&lt;/strong&gt; is part of Machine Learning that uses artificial neural networks. This type of model is inspired by the structure and function of the human brain.&lt;/p&gt;

&lt;p&gt;Aspiring &lt;strong&gt;data scientists&lt;/strong&gt; should take a strategic approach to their career goals. Start by identifying your ideal employer in the field, whether it's a tech giant like Netflix, Amazon, or Google, or another company that aligns with your interests. Once you've pinpointed your target organizations, research their specific data science job openings. These listings often provide detailed information about the skills, qualifications, and experience they seek in candidates. Use this valuable insight as a roadmap to guide your learning and development. By tailoring your skills to match the requirements of your dream companies, you can create a focused path towards your desired data science career. This approach not only helps you set clear objectives but also ensures you're developing the most relevant and in-demand skills for your target roles.   &lt;/p&gt;

&lt;p&gt;"Es lo que es."&lt;br&gt;
Si?&lt;/p&gt;

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