<?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: mary thandy</title>
    <description>The latest articles on DEV Community by mary thandy (@mary_thandy_4aa49f665e580).</description>
    <link>https://dev.to/mary_thandy_4aa49f665e580</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%2F3713466%2Ff8c4498d-ebf5-4ff8-af87-14a3d153bf68.png</url>
      <title>DEV Community: mary thandy</title>
      <link>https://dev.to/mary_thandy_4aa49f665e580</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mary_thandy_4aa49f665e580"/>
    <language>en</language>
    <item>
      <title>A Guide to SQL Joins and Window Functions</title>
      <dc:creator>mary thandy</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:23:23 +0000</pubDate>
      <link>https://dev.to/mary_thandy_4aa49f665e580/a-guide-to-sql-joins-and-window-functions-328a</link>
      <guid>https://dev.to/mary_thandy_4aa49f665e580/a-guide-to-sql-joins-and-window-functions-328a</guid>
      <description>&lt;p&gt;Data, in its raw state, is seldom found in a single neat table. The reality of working in analytics or data engineering is needing to synthesize information from disjointed sources and compute metrics that rely on understanding relationships and patterns across a dataset. This is where SQL excels. If you want to move beyond simple filtering and aggregation, you must master two foundational tools: &lt;strong&gt;&lt;em&gt;Joins and Window Functions.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Understanding SQL Joins&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Joins are the mechanism we use to reunite this data into meaningful results. A join connects rows from two or more tables based on a related column between them.&lt;br&gt;
&lt;em&gt;&lt;code&gt;Joins are how you put the puzzle pieces back together to get a full picture.&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Below are the most common types of joins:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A. INNER JOIN (The Matchmaker) &lt;br&gt;
This is the most common join. It only returns rows where there is a matching value in both tables. If a row doesn't have a match, it is excluded.&lt;br&gt;
 Use Case:Showing a list of customers who have actually placed orders.&lt;br&gt;
B. LEFT JOIN (The "Don't Leave Me" Join)&lt;br&gt;
This returns all rows from the left table, and the matched rows from the right table. If there is no match on the right, you get NULL values.&lt;br&gt;
Use Case: Finding all customers, including those who haven't bought anything yet (great for identifying "cold" leads).&lt;br&gt;
C. RIGHT JOIN&lt;br&gt;
The exact opposite of a Left Join. It returns all rows from the right table.&lt;br&gt;
&lt;code&gt;Pro Tip: Most developers just use LEFT JOIN and switch the table order to keep the code easier to read.&lt;/code&gt;&lt;br&gt;
D. FULL OUTER JOIN (The "Everyone Invited" Join)&lt;br&gt;
Returns all rows when there is a match in either the left or right table. If there’s no match, the missing side gets a NULL.&lt;/p&gt;

&lt;p&gt;Use Case: Merging two lists (like a list of local leads and a list of international leads) to see everyone at once.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Basic Syntax&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;To join tables, you need a "Key" (usually an ID) that exists in both tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    tableA.column_name, 
    tableB.column_name
FROM TableA
INNER JOIN TableB 
    ON TableA.common_id = TableB.common_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Real-World Example&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Imagine you have a Students table and a Clubs table.&lt;/p&gt;

&lt;p&gt;Students Table&lt;br&gt;
| id | name |&lt;br&gt;
|:---|:---|&lt;br&gt;
| 1 | Alice |&lt;br&gt;
| 2 | Bob |&lt;br&gt;
| 3 | Charlie |&lt;/p&gt;

&lt;p&gt;Clubs Table&lt;br&gt;
| student_id | club_name |&lt;br&gt;
|:---|:---|&lt;br&gt;
| 1 | Chess |&lt;br&gt;
| 2 | Music |&lt;br&gt;
| 5 | Drama |&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Which Join should you use?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;"Who is in a club?" → INNER JOIN (Alice and Bob).&lt;/p&gt;

&lt;p&gt;"List all students and their clubs (even if they have none)?" → LEFT JOIN (Alice, Bob, and Charlie with a NULL club).&lt;/p&gt;

&lt;p&gt;"Show all clubs, even if the student ID doesn't exist in our table?" → RIGHT JOIN (Chess, Music, and Drama with a NULL name).&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Introducing Window Functions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A window function performs a calculation across a set of table rows that are somehow related to the current row. Critically, it does not cause rows to become grouped into a single output row.&lt;br&gt;
Standard SQL aggregation &lt;code&gt;(GROUP BY)&lt;/code&gt; is powerful, but it comes with a major limitation: it reduces multiple rows into a single summary row.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Key Window Function Syntax&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The definitive keyword is &lt;code&gt;OVER,&lt;/code&gt; which defines the "window" or the set of rows the function will operate on. It typically has two optional but powerful clauses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PARTITION BY&lt;/strong&gt;: This divides the window into groups (e.g., partition by department or by region). The function runs independently on each partition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ORDER BY&lt;/strong&gt;: This defines the logical sequence of rows within each partition.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Common Categories of Window Functions&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Ranking Functions: Ideal for finding the "top" items within a category. Key functions include &lt;code&gt;ROW_NUMBER()&lt;/code&gt; (sequential number, no ties), &lt;code&gt;RANK()&lt;/code&gt; (numbers with ties that skip the next number), and &lt;code&gt;DENSE_RANK()&lt;/code&gt; (numbers with ties that do not skip numbers).&lt;/li&gt;
&lt;li&gt;Aggregate Window Functions: You can use standard aggregates like &lt;code&gt;SUM()&lt;/code&gt;, &lt;code&gt;AVG()&lt;/code&gt;, or &lt;code&gt;COUNT()&lt;/code&gt; within the &lt;code&gt;OVER()&lt;/code&gt;clause to calculate things like running totals or moving averages.&lt;/li&gt;
&lt;li&gt;Value-based Functions: These are used to compare the current row to surrounding rows.LAG()(looks at a previous row) and LEAD() (looks at a following row) are essential for identifying changes over time, like calculating day-over-day growth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example :You want to see each sale and the total accumulated sales so far.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    sale_date, 
    amount,
    SUM(amount) OVER (ORDER BY sale_date) AS running_total
FROM sales;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Here is a summary of the most crucial concepts from the article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Joins are for Relationship Management: Joins are essential because relational databases are normalized. They allow you to reconstruct data across different tables based on common columns.&lt;/li&gt;
&lt;li&gt;Left Join is a Key Tool: The LEFT JOIN is one of the most practical and frequently used joins, specifically for identifying mismatches or ensuring all records in a primary table are retained.&lt;/li&gt;
&lt;li&gt;Window Functions Prescribe Rows: The fundamental difference between standard aggregation &lt;code&gt;(GROUP BY)&lt;/code&gt;and window functions is that window functions retain the individual rows.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;OVER()&lt;/code&gt; Clause is the 'Window': &lt;code&gt;The OVER()&lt;/code&gt; clause defines the specific set of rows a function operates on, often customized with PARTITION BY (to define subgroups) and ORDER BY (to define the order within subgroups).&lt;/li&gt;
&lt;li&gt;Ranking and Change-Over-Time Analysis: Window functions make calculations like ranking &lt;code&gt;(DENSE_RANK())&lt;/code&gt;, running totals &lt;code&gt;(SUM()),&lt;/code&gt; and day-over-day growth (LAG()) intuitive and direct.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sql</category>
      <category>joins</category>
      <category>window</category>
      <category>analyst</category>
    </item>
    <item>
      <title>“How Analysts Translate Messy Data into Action Using Power BI”</title>
      <dc:creator>mary thandy</dc:creator>
      <pubDate>Tue, 10 Feb 2026 17:40:03 +0000</pubDate>
      <link>https://dev.to/mary_thandy_4aa49f665e580/how-analysts-translate-messy-data-into-action-using-power-bi-3m46</link>
      <guid>https://dev.to/mary_thandy_4aa49f665e580/how-analysts-translate-messy-data-into-action-using-power-bi-3m46</guid>
      <description>&lt;p&gt;The role of the  Data Analyst is to take the technical data of Power BI and arrange it into a story that helps in decision making.A messy data foundation forces leadership to rely on instinct rather than insight, this can lead to the business collapsing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Steps in cleaning a messy data&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Power Query
&lt;/h4&gt;

&lt;p&gt;It is a data transformation and data preparation engine. It allows you to connect to hundreds of different data sources eg Excel and clean that data.&lt;/p&gt;

&lt;h4&gt;
  
  
  What power query does:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Removing null values, splitting columns (e.g., "City, State" into two columns), changing data types, and filtering out unnecessary rows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Every change you make is recorded in the Applied Steps pane on the right. Power Query doesn't "save over" your data; it just remembers the steps to clean it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once the data is polished and structured, you click "Close &amp;amp; Apply." Power Query then sends the clean data into the Power BI "Data Model," where it is ready for DAX measures and visualization.&lt;/p&gt;

&lt;h4&gt;
  
  
  DAX &amp;amp; The Data Model
&lt;/h4&gt;

&lt;p&gt;DAX stands for &lt;em&gt;Data Analysis Expressions&lt;/em&gt;&lt;br&gt;
Its job is to analyze the data already in the room.&lt;/p&gt;

&lt;p&gt;Its looks at the &lt;em&gt;Physical Tables&lt;/em&gt; Power Query created and calculates new values ( using New Measures) based on how you interact with the report.&lt;br&gt;
It  also creates &lt;em&gt;Virtual Values&lt;/em&gt; These don't exist as physical columns in your data; they are calculated on the fly.&lt;br&gt;
Every DAX measure follows a specific structure.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_Measure Name = FUNCTION{'Table'[Column])_&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Name&lt;/strong&gt;: Always wrap it in brackets &lt;code&gt;[Total Sales]&lt;/code&gt; when referencing it elsewhere.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Function:&lt;/strong&gt; Common ones include &lt;code&gt;SUM, AVERAGE, COUNTROWS,&lt;/code&gt; or the of &lt;code&gt;DAX: CALCULATE.&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Reference:&lt;/strong&gt; DAX likes specific addresses—'&lt;code&gt;Sales'[Revenue]&lt;/code&gt; tells it exactly which table and column to look at.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Power BI is the bridge between "the messy data" and "the optimized business". The true skill of an analyst isn't just knowing how to write a CALCULATE function; it’s knowing which business question that function is answering.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>powerquery</category>
      <category>data</category>
      <category>powerfuldevs</category>
    </item>
    <item>
      <title>Mastering Schema and Data Modelling in Power BI</title>
      <dc:creator>mary thandy</dc:creator>
      <pubDate>Mon, 02 Feb 2026 13:14:34 +0000</pubDate>
      <link>https://dev.to/mary_thandy_4aa49f665e580/mastering-schema-and-data-modelling-in-power-bi-4gkf</link>
      <guid>https://dev.to/mary_thandy_4aa49f665e580/mastering-schema-and-data-modelling-in-power-bi-4gkf</guid>
      <description>&lt;p&gt;In the world of Power BI, a stunning dashboard is only as good as the architecture supporting it. While it is tempting to jump straight into creating vibrant charts and complex maps, the true magic happens behind the scenes in the &lt;strong&gt;&lt;em&gt;Data Model&lt;/em&gt;&lt;/strong&gt;. Designing a robust schema—the blueprint of how your data interacts—is the most critical step in building any professional report. Without a solid foundation, even the best-looking visuals can produce sluggish performance and, more dangerously, inaccurate insights. This article explores the core principles of data modelling, from the efficiency of the &lt;em&gt;&lt;strong&gt;Star Schema&lt;/strong&gt;&lt;/em&gt; to the vital roles of &lt;em&gt;&lt;strong&gt;Fact and Dimension tables&lt;/strong&gt;&lt;/em&gt;, ensuring your next Power BI project is both lightning-fast and reliably precise.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Foundations: Fact vs. Dimension Tables
&lt;/h3&gt;

&lt;p&gt;Before you can build a schema, you must categorize your data into two distinct buckets:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Fact Tables (The "What Happened?")&lt;/strong&gt;**
&lt;/h4&gt;

&lt;p&gt;A Fact table sits at the center of your model. It records specific events or transactions that occur at a specific point in time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Type:&lt;/strong&gt; Usually contains quantitative, numeric data (measures) like sales amount, quantity sold, or temperature readings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure:&lt;/strong&gt; These tables are typically very "long"—they can contain millions or even billions of rows—but they are "skinny," consisting mostly of numbers and "Foreign Keys" (ID numbers that link to other tables).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; A Sales table that lists every single receipt generated in a store.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Dimension Tables (The "Who, Where, and When?")&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Dimension tables provide the context for your facts. They describe the entities involved in the business process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Type:&lt;/strong&gt; Contains qualitative, descriptive data (attributes) like product names, customer addresses, or date hierarchies (Year, Month, Quarter).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure:&lt;/strong&gt; These tables are usually "wide" because they contain many columns of descriptive text, but they are "short" compared to fact tables (e.g., you might have 10 million sales, but only 500 unique products).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: A Product table that lists the name, colour, category, and brand of everything you sell.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Why the Distinction Matters&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;In Power BI, you generally want to &lt;strong&gt;filter&lt;/strong&gt; by your Dimensions and &lt;strong&gt;calculate&lt;/strong&gt; your Facts. For example, you would use a Product Name from a Dimension table to filter your Total Revenue from a Fact table. Mixing these two up is a leading cause of messy models and broken calculations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Gold Standard: The Star Schema&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The Star Schema gets its name from its physical appearance in the Model View. It consists of a single &lt;strong&gt;&lt;em&gt;Fact table&lt;/em&gt;&lt;/strong&gt; at the center, surrounded by multiple &lt;em&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt;&lt;/em&gt; that radiate outward like the points of a star.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Why Power BI Loves the Star Schema&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Power BI’s data engine is specifically optimized for this structure. Here is why it works so well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplified DAX&lt;/strong&gt;: When your data is organized into a star, writing measures becomes much easier. The relationships are direct, reducing the need for complex "workaround" formulas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast Performance&lt;/strong&gt;: Because the "filters" only have to travel one step from the Dimension table to the Fact table, Power BI can calculate results almost instantaneously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usability&lt;/strong&gt;: For the end-user, the model is intuitive. They know to grab their "categories" from the outer tables and their "numbers" from the center.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Snowflake Schema:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sometimes, you will encounter a &lt;strong&gt;Snowflake Schema&lt;/strong&gt;. This happens when a Dimension table is broken down into further sub-dimensions (&lt;em&gt;for example, a Product table that connects to a separate Category table, which then connects to a Department table&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;While "snowflaking" can save a tiny amount of storage space by reducing redundant text, it generally makes Power BI models &lt;strong&gt;_slower _&lt;/strong&gt;and more difficult to navigate. Whenever possible, it is better to "flatten" those sub-dimensions back into a single, wide Product table to maintain a clean Star Schema.&lt;br&gt;
Snowflakes Schema also creates complex relationship paths and the "Fields" pane harder for users to navigate.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Performance Matter&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Good modelling isn't just about being "neat." It directly impacts the two most important things in Power BI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DAX Efficiency&lt;/em&gt;&lt;/strong&gt;: In a Star Schema, the "filter context" is clear. This means your measures (like Total Sales or Year-over-Year Growth) will calculate faster because the engine doesn't have to jump through multiple "Snowflaked" hoops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Accurate Reporting:&lt;/em&gt;&lt;/strong&gt; Incorrect relationships often lead to "Cartesian products," where the model guesses at connections and returns wildly inflated numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Summary Table&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;*&lt;em&gt;Star Schema *&lt;/em&gt;
&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Snowflake Schema&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (Optimized for Power BI)&lt;/td&gt;
&lt;td&gt;Lower (More joins required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Easier / Simpler DAX&lt;/td&gt;
&lt;td&gt;More complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User Experience&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Intuitive&lt;/td&gt;
&lt;td&gt;Can be confusing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As technology evolves, the tools we use to visualize data will continue to change, but the principles of data modelling remain constant. Mastery of the Star Schema is the ultimate "cheat code" for any Power BI developer. By separating your nouns (Dimensions) from your verbs (Facts) and maintaining clean, one-to-way relationships, you ensure that your reports are not just beautiful, but accurate, fast, and scalable.&lt;/p&gt;

&lt;p&gt;I hope this breakdown helps you build your next model with confidence. I’d love to hear your thoughts—let me know in the comments how you approach your data modelling!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>data</category>
      <category>datamodelling</category>
      <category>schema</category>
    </item>
    <item>
      <title>Understanding Git and GitHub for Beginners</title>
      <dc:creator>mary thandy</dc:creator>
      <pubDate>Mon, 02 Feb 2026 11:00:05 +0000</pubDate>
      <link>https://dev.to/mary_thandy_4aa49f665e580/understanding-git-and-github-for-beginners-5b5f</link>
      <guid>https://dev.to/mary_thandy_4aa49f665e580/understanding-git-and-github-for-beginners-5b5f</guid>
      <description>&lt;p&gt;Before diving into modern software development, it is essential to master the tools that power global collaboration and code management. Whether you are beginning your programming journey or curious about how professional teams build real-world software, Git and GitHub are foundational skills you simply cannot overlook.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Git
&lt;/h2&gt;

&lt;p&gt;Git is a &lt;em&gt;&lt;strong&gt;version control system/software&lt;/strong&gt;&lt;/em&gt; on your computer that tracks every change that is used to track changes. This tool is used mostly by software developers, its helps them  trace easily any changes made or errors on projects. It also makes it possible for multiple people to work on the same project simultaneously using branches thus avoiding code overlapping. It  can be used as a backup where historical projects can be locally saved.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is GitHub?
&lt;/h3&gt;

&lt;p&gt;Github is a &lt;strong&gt;&lt;em&gt;web -based platform&lt;/em&gt;&lt;/strong&gt; designed to help developers, collaborate and manage projects with ease. It also helps to store code. Github serves as a portfolio for coding projects. It also allows developers from all around the world to contribute to your project. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hope we are still together , lets continue with the learning&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between Git and GitHub?
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GitHub&lt;/th&gt;
&lt;th&gt;Git&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provides collaboration and project management tools&lt;/td&gt;
&lt;td&gt;Tracks changes in code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requires an internet connection to access repositories&lt;/td&gt;
&lt;td&gt;Operates locally on your machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud-based hosting platform for Git repositories&lt;/td&gt;
&lt;td&gt;Version control system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Prerequisites for Using Git
&lt;/h4&gt;

&lt;p&gt;Before you can start using Git on your machine, you need to ensure it is properly installed based on your operating system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows: Download and install Git Bash. This provides a Unix-style command-line experience which is the standard for Git operations.&lt;/li&gt;
&lt;li&gt;macOS / Linux: Open your Terminal. Git is often pre-installed, but if it isn't, you can install it using your system's package manager (e.g., brew install git for Mac or sudo apt install git for Linux).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Pro-Tip
&lt;/h4&gt;

&lt;p&gt;To check if Git is already installed and ready to go, type the following command in your terminal or Git Bash:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git --version&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Configure Your Identity
&lt;/h5&gt;

&lt;p&gt;Once Git is installed, the first thing you should do is set your identity. Git attaches this information to every commit you make to track who made specific changes. You can configure your global username and email address by running the following commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git config --global user.name "Your Name"&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;'git config --global user.email "your_email@example.com"&lt;/code&gt;&lt;br&gt;
`&lt;br&gt;
Ensure to change “Your Name” and “&lt;a href="mailto:your_email@example.com"&gt;your_email@example.com&lt;/a&gt;” to match your details. To ensure everything is saved correctly, you can list your active settings by running:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git config --list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When you run that command, Git will return a list of settings. It should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;user.name=Your Name&lt;br&gt;
user.email=your_email@example.com&lt;br&gt;
...&lt;/code&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Understanding SSH Keys
&lt;/h5&gt;

&lt;p&gt;An SSH key is a secure access credential used by the Secure Shell (SSH) protocol. It provides a more secure and scalable way to authenticate your machine with GitHub than using a standard password.&lt;/p&gt;

&lt;p&gt;SSH authentication relies on a pair of keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public Key: Shared with services like GitHub. It acts like a "lock."&lt;/li&gt;
&lt;li&gt;Private Key: Kept strictly on your local machine. It acts like the "physical key" to that lock.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Generating a New SSH Key
&lt;/h5&gt;

&lt;p&gt;Open your Git Bash (Windows) or Terminal (Mac/Linux) and run the following command to generate a modern, high-security key:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh-keygen -t ed25519 -C "your_email@example.com"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: When prompted to "Enter a file in which to save the key," simply press Enter to accept the default location.&lt;/p&gt;

&lt;h5&gt;
  
  
  Adding the Key to Your GitHub Account
&lt;/h5&gt;

&lt;p&gt;To link your machine to GitHub, you must copy your Public Key and add it to your GitHub settings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View your public key: Run the following command to display the key text: cat ~/.ssh/id_ed25519.pub&lt;/li&gt;
&lt;li&gt;Copy the output: Highlight the entire text starting with ssh-&lt;strong&gt;ed25519&lt;/strong&gt; and ending with your &lt;strong&gt;email.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add to GitHub: Go to GitHub Settings &amp;gt; SSH and GPG keys &amp;gt; New SSH Key, then paste your key into the "Key" field.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Verifying the Connection
&lt;/h5&gt;

&lt;p&gt;Finally, test the connection to ensure everything is configured correctly by running:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh -T git@github.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If successful, you will receive a confirmation message:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"Hi [YourUsername]! You've successfully authenticated, but GitHub does not provide shell access."&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;As technology evolves, Git remains the undisputed backbone of version control, while GitHub continues to lead the way in collaborative software innovation.&lt;/p&gt;

&lt;p&gt;Understanding the distinction between these two is vital for any developer: Git is the engine that tracks and manages your code changes, while GitHub is the hub that simplifies collaboration, hosting, and project management.&lt;/p&gt;

&lt;p&gt;I hope this breakdown provides a clear starting point for your journey. I’d love to hear your thoughts—feel free to drop a comment below!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;gt;Let's learn together.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>luxdev</category>
      <category>learning</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
