<?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: Amos Kiarie </title>
    <description>The latest articles on DEV Community by Amos Kiarie  (@kiarieamos).</description>
    <link>https://dev.to/kiarieamos</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%2F1249450%2F7d98b4dc-8058-4f6a-8b2c-1c66e7a68146.png</url>
      <title>DEV Community: Amos Kiarie </title>
      <link>https://dev.to/kiarieamos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kiarieamos"/>
    <language>en</language>
    <item>
      <title>DATA MODELLING IN POWER BI - An analysts perspective</title>
      <dc:creator>Amos Kiarie </dc:creator>
      <pubDate>Mon, 02 Feb 2026 10:43:49 +0000</pubDate>
      <link>https://dev.to/kiarieamos/data-modelling-in-power-bi-an-analysts-perspective-2epd</link>
      <guid>https://dev.to/kiarieamos/data-modelling-in-power-bi-an-analysts-perspective-2epd</guid>
      <description>&lt;p&gt;Microsoft's power BI is one of the most common tools used by data analysts in data, exploration, cleaning, analysis, reporting and presentation.&lt;br&gt;
Its a versatile tool with many advantages and one of its most powerful features is the model view. &lt;br&gt;
In this view, you can define the data schema as well as the relationships between the various tables in the schema.&lt;/p&gt;

&lt;h3&gt;
  
  
  Definition of Terms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data Modelling - The process of identifying the relationships between different data tables and mapping them into schematic representations of the various tables and the relationships between them.&lt;/li&gt;
&lt;li&gt;Data Schema - A formal description of the relationships between various entities in a data warehouse or a database management system.&lt;/li&gt;
&lt;li&gt;Fact table - The main table in a data model that contains the analysts' subject matter.&lt;/li&gt;
&lt;li&gt;Dimensions table - Support tables in a data model that contain additional information regarding the records in the fact table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  DATA SCHEMAS
&lt;/h4&gt;

&lt;p&gt;A data schema is the blueprint or structure of a database. It defines how data is organized, stored, and related using tables, fields, data types, and constraints.  Schemas define essential data components such as;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tables / Entities -&amp;gt; the main object for storing data in relational databases. It holds records in rows and their attributes in columns.&lt;/li&gt;
&lt;li&gt;Fields / attributes -&amp;gt; the individual characteristics of each record in the table.&lt;/li&gt;
&lt;li&gt;Relationships -&amp;gt; how the different tables in the database relate to one another and the cardinality of said relationships.&lt;/li&gt;
&lt;li&gt;Constraints - the rules enforced on the data in the tables to ensure data integrity, accuracy and reliability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data schemas vary based on the use case.&lt;br&gt;
From a developers perspective, there are 3 major types of schemas;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conceptual data schema - a high level outline of what the database system will contain. Its intended for business and stakeholder approval and focuses on business rules, major entities and their relationships.&lt;/li&gt;
&lt;li&gt;Logical data schema - It defines the schema objects like table names, field names and integrity constraints but without the physical implementation details / specific DBMS language.&lt;/li&gt;
&lt;li&gt;Physical data schema - The actual implementation of a database in a live database management system. it includes the partitioning information and indexing strategy but not the actual data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the most part, data analysts operate from a data warehouse / data mart. There are various schemas that they can implement to improve data querying, reporting integrity and consistency.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Star Schema - employs one fact table surrounded by multiple denormalised dimensions tables. The fact table holds the analysts subject matter i.e. sales and the dimensions hold more details about the records in the facts table.&lt;/li&gt;
&lt;li&gt;Snowflake schema - This is an extension of the star schema. at the centre is one facts table surrounded by normalised dimensions tables. However, the dimension tables have sub-dimensions tables each creating its own mini star schema.&lt;/li&gt;
&lt;li&gt;Third Normal Form - This is an extreme case where there are a small number of facts tables surrounded by multiple dimensions tables with many to many relationships. its common in Online Transaction processing Systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 3 schemas above are very common and are used by data analysts when modelling their data. Each model presents some advantages as well as shortcomings a follows;&lt;/p&gt;

&lt;h5&gt;
  
  
  Star Model
&lt;/h5&gt;

&lt;p&gt;This model employs one fact tables surrounded by several dimensions tables.&lt;br&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster Query Performance as there are fewer joins per query.&lt;/li&gt;
&lt;li&gt;Simplified Data Modelling as the structure is intuitive for developers.&lt;/li&gt;
&lt;li&gt;Reduced join complexity as the dimension tables are not normalized.&lt;/li&gt;
&lt;li&gt;Enhanced reporting efficiency as DAX operations run faster on faster queries.&lt;/li&gt;
&lt;li&gt;Improved usability resulting from its intuitive layout.
&lt;strong&gt;Limitations&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Data redundancy on the denormalized dimensions tables.&lt;/li&gt;
&lt;li&gt;High maintenance cost  as new data has to be denormalized into the simpler dimension tables.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Snowflake Model
&lt;/h5&gt;

&lt;p&gt;This model employs one fact table surrounded by multiple dimensions tables each with their own sub-dimensions.&lt;br&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced data redundancy as the dimensions table are normalized.&lt;/li&gt;
&lt;li&gt;Increased storage efficiency as data is not duplicated across tables.&lt;/li&gt;
&lt;li&gt;Is better suited for modelling complex real world operations such as supply chain data. &lt;/li&gt;
&lt;li&gt;Improved query performance for highly selective queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hard to navigate due to its complex nature.&lt;/li&gt;
&lt;li&gt;Reduced query efficiency resulting from an increase in joins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3 NF Model&lt;/strong&gt;&lt;br&gt;
This model is not commonly used due to its complexity and computation cost when running queries. However, in some niche OLTP applications its preferred  for its data integrity advantages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Models
&lt;/h3&gt;

&lt;p&gt;In the real world, data exists in many forms and can be fetched from diverse sources.&lt;br&gt;
Tabular data commonly exists as a collection of tables in a database management system, however, there are exceptions to this where some forms data can and exists as a single file. A good example is a google sheet extracted from google forms.&lt;/p&gt;

&lt;p&gt;When working with such data its trivial to perform, exploratory analysis, cleaning and transformation.&lt;/p&gt;

&lt;p&gt;On the other hand, working with multiple tables requires a data modelling approach. In power BI, the modelling approach is as follows;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify the necessary tables from the source data.&lt;/li&gt;
&lt;li&gt;Load the selected tables into power BI.&lt;/li&gt;
&lt;li&gt;Perform exploratory analysis on the loaded data to identify relationships and cardinality.&lt;/li&gt;
&lt;li&gt;Perform data cleaning on the loaded data ensuring uniformity and consistency.&lt;/li&gt;
&lt;li&gt;Choose a favourable schema to model your data on (star  is the most common) &lt;/li&gt;
&lt;li&gt;Define the relationships between your data tables via the model view.&lt;/li&gt;
&lt;li&gt;Test your model via slicers from the report view.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  ADVANTAGES OF DATA MODELLING
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Simplifies data complexity by providing a visual representation of the entire dataset.&lt;/li&gt;
&lt;li&gt;A good data model reduces computation cost when querying the data.&lt;/li&gt;
&lt;li&gt;Ensures data integrity and consistency when reporting.&lt;/li&gt;
&lt;li&gt;Simplifies data organization and communication.\&lt;/li&gt;
&lt;li&gt;A good data model forms the basis of security and access control.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>datascience</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>GIT &amp; GITHUB AS A BEGINNER</title>
      <dc:creator>Amos Kiarie </dc:creator>
      <pubDate>Sun, 18 Jan 2026 09:59:10 +0000</pubDate>
      <link>https://dev.to/kiarieamos/git-github-as-a-beginner-3k1k</link>
      <guid>https://dev.to/kiarieamos/git-github-as-a-beginner-3k1k</guid>
      <description>&lt;h3&gt;
  
  
  DEFINATION OF TERMS - GIT
&lt;/h3&gt;

&lt;p&gt;GIT - This is a free and opensource distribute version controll system. It runs locally on a developers machine but may also be hosted centrally or remotely in a specified server within an organization to aid in version control.&lt;/p&gt;

&lt;p&gt;its never a good idea to explain terms with more jargon. While reading the explanation above, I have realized that I did not mention what a version control system is.&lt;/p&gt;

&lt;p&gt;Version Control - In technology, this is the practice of keeping track of a software system's many versions and configurations over time.&lt;br&gt;
This task is normally carried with the aid of a version controll system.&lt;/p&gt;

&lt;h5&gt;
  
  
  AN EXAMPLE
&lt;/h5&gt;

&lt;p&gt;The best way to explain how git works is with a simple python example.&lt;br&gt;
On my first day in a data engineering class we created a small python file and named hello world. inside the file was this line of code.&lt;br&gt;
&lt;code&gt;print(" Hello World")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Towards the end of the lesson we chnaged the line of code to&lt;/p&gt;

&lt;p&gt;&lt;code&gt;'print(" Hello World, My name is AMOS and I am a data engineer.")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The lecturer gave us an assignement to modify the print statement above and make it print in two lines. After completeing this I had the following line of code.&lt;br&gt;
&lt;code&gt;Print(" Hello World! \n My name is AMOS and I am a data engineer.")&lt;/code&gt;&lt;br&gt;
After this exercise, I realized I needed to keep track of my small hello world project how it started and how it had evolved. I ended up creating 3 folders;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hello_world_1&lt;/li&gt;
&lt;li&gt;hello_world_2&lt;/li&gt;
&lt;li&gt;hello world_3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3aam3eoopyh72gko27a8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3aam3eoopyh72gko27a8.png" alt="Hello World Project" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In each of the folders, I saved a file named hello_world.py with the sample lines of code written above.&lt;/p&gt;

&lt;p&gt;This seemed like a great idea at the time, after all &lt;em&gt;if all you have is a hammer, everything looks like a nail&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What I had created here was a version control system of sorts, this alowed me to keep track track of chnages made to my python project. There are many problems with this approach;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The entire project is hosted on one machine (my laptop).&lt;/li&gt;
&lt;li&gt;Single point of failure (losing the laptop means losing all the code).&lt;/li&gt;
&lt;li&gt;Collaboration with other developers is very challenging (share files as email attachments).&lt;/li&gt;
&lt;li&gt;Its hectic to manage especially with big projects.&lt;/li&gt;
&lt;/ol&gt;

&lt;h5&gt;
  
  
  HELLO WORLD IN GIT
&lt;/h5&gt;

&lt;p&gt;GIT solves all these problems and provides us with many more features. To experience the power of GIT we have to download and install this software in our computer.&lt;/p&gt;

&lt;h6&gt;
  
  
  Installing git.
&lt;/h6&gt;

&lt;ol&gt;
&lt;li&gt;Visit the &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;git-scm&lt;/a&gt; site and download the latest release for your operating system. I am on windows and so I got version &lt;code&gt;Git-2.52.0-64-bit&lt;/code&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ppckobli7hql2x4zn5h.png" alt="GIT Webpage" width="800" height="646"&gt;
&lt;/li&gt;
&lt;li&gt;Double click on the downloaded file to open it. Being an executable, opening the file will run the installer for GIT.&lt;/li&gt;
&lt;li&gt;Your computer will ask you if you really want to allow the file that you have just openned to make chnages to your computer. click allow to agree.&lt;/li&gt;
&lt;li&gt;Read the GNU License agreement and click next if you agree to comply with the terms.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3j1i3y7m4mjwd4dx7flh.png" alt="GNU License" width="722" height="540"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to select a folder in which to install GIT. leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9quznaq9pwqwunc5wate.png" alt="Selecting folders" width="600" height="461"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to select the git components that you wish to install. leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpn8o122w4o4f0zvmcmq3.png" alt="Select Components" width="598" height="456"&gt;
&lt;/li&gt;
&lt;li&gt;On this screen, the installer will ask where it should place GIT's shortcut, leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90zsnuyyqhq5x8s56vyz.png" alt="Git Shortcuts" width="596" height="463"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer asks which code editor you would like to use for GIT, choose an appropriate one depending on your preference, I chose VS Code as depicted below and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnj547exp40ifd36lewcl.png" alt="Default Editor" width="596" height="461"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer asks how you would like to name your initial branch in git repositories, leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hb9s4q544b6b7b062bx.png" alt="Default Branch" width="595" height="457"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer asks how you would like to use Git from the command line. Leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fna3rl0g7qb51riju9o4q.png" alt="Git from the command line" width="594" height="455"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you which secure shell client you would like to use. Choose &lt;code&gt;Use bundled OpenSSH&lt;/code&gt; and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycenx7it688y940ivnk2.png" alt="Secure Shell" width="600" height="466"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you which SSL you would like to use, leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqfksc4swm7rjutafz7l.png" alt="GIT SSL preference" width="597" height="457"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to choose a line ending conversions. For reasons will not get into here ensure you select &lt;code&gt;checkout Windows-style, commit Unix-style&lt;/code&gt; and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo99qpyv5cb8vn7d5jp7n.png" alt="Line Ending conversions" width="597" height="460"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask which terminal emulator you would like to use,leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h9dsudq05p1cuqgqyih.png" alt="Terminal Emulator" width="600" height="458"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to choose the default behaviour of &lt;code&gt;git pull&lt;/code&gt; choose &lt;code&gt;rebase&lt;/code&gt; and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqfbbq59qf2osj6uwakyp.png" alt="Git Pull - Rebase" width="594" height="463"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to choose your credential manager of choice. leave it as default and click next.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6p18etz00hme0xhux4b.png" alt="Credential Manager" width="594" height="463"&gt;
&lt;/li&gt;
&lt;li&gt;On the next screen, the installer will ask you to choose which features you would like to enable, leave it as default and click on the install button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6s444jz7dyxlx94mc8e7.png" alt="Enable File System Caching" width="593" height="463"&gt;
&lt;/li&gt;
&lt;li&gt;The installer will run for about 30 seconds or more depending on the speed of your computer.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjaxxgn6bo3suhrh9hxnu.png" alt="Installer Running" width="595" height="459"&gt;
&lt;/li&gt;
&lt;li&gt;The installer will show you the screen below. uncheck view release notes, and click finish.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwl7i5iox8r9sq4ojyueo.png" alt="Finish" width="598" height="464"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that we have GIT installed we need to setup a few things;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A username.
Open git bash on your computer, on the prompt type the following command replacing myName with your actual name.
&lt;code&gt;git config --global user.name "myName"&lt;/code&gt; and press enter.&lt;/li&gt;
&lt;li&gt;An Email.
On git bash type the folowing command replacing &lt;a href="mailto:myemail@domain.com"&gt;myemail@domain.com&lt;/a&gt; with your actual email address.
&lt;code&gt;git config --global user.email "myemail@domain.com"&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With that done, we need to create a repository.&lt;/p&gt;

&lt;h4&gt;
  
  
  CREATING A REPO
&lt;/h4&gt;

&lt;p&gt;Think of a repository as a project, a container that contains all the code we have written so far upto this point and any other code that will ever write.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the hello world project. Right click on the file explorer and choose open git bash here.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbropjqli6dwpow64rq7.png" alt="Open Git Bash here" width="692" height="675"&gt;
&lt;/li&gt;
&lt;li&gt;Type the command &lt;code&gt;git init&lt;/code&gt; on git bash. You will get a message, initialized an empty Git repository .........
Create a new file named hello_world.py &lt;code&gt;touch hello_world.py&lt;/code&gt; this file will not be within any of the folders we had created earlier.
Edit the new file by typing nano &lt;code&gt;hello_world.py&lt;/code&gt;, this will open up a simple text editor, write your code print('Hello World') here and click ctrl + O folowed by enter to save it. Click ctrl + x to exit the edit.&lt;/li&gt;
&lt;li&gt;Stage the new file by typing the command &lt;code&gt;git add hello_world.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Commit the file by typing the command &lt;code&gt;git commit -m 'initial commit'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Make changes to the same file by folowing the steps 2 , 3 and 4 above updating the contents of the file to &lt;code&gt;'print(" Hello World, My name is AMOS and I am a data engineer.")&lt;/code&gt; the commit comand to &lt;code&gt;git commit -m 'added my name'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Follow step 5 above updating the contents of the file to &lt;code&gt;Print(" Hello World! \n My name is AMOS and I am a data engineer.")&lt;/code&gt; and the commit command to &lt;code&gt;git commit -m 'added new line'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;git log --oneline&lt;/code&gt; to see the history of the project.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpznfkbk0oy834tv712p4.png" alt="Git Log" width="800" height="800"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  DEFINATION OF TERMS - GITHUB
&lt;/h3&gt;

&lt;p&gt;This is a web based cloud platform where developers and artists come together to create software. As the name implies, it hosts a tonne of git projects but also provides other features such as CI-CD rule based collaboration, 2 factor authentication etc.&lt;/p&gt;

&lt;h5&gt;
  
  
  Creating a Github Account
&lt;/h5&gt;

&lt;p&gt;head over to &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;https://github.com/&lt;/a&gt; and create an account.&lt;/p&gt;

&lt;p&gt;On your localmachine;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure SSH is running &lt;code&gt;$ eval "$(ssh-agent -s)"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Generate an SSH Key pair &lt;code&gt;ssh-keygen -t rsa -b 4096 -C "myemail@domain.com"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add a passphrase for securing the SSH key pair.&lt;/li&gt;
&lt;li&gt;Add the SSH ID to the local SSH key manager. &lt;code&gt;ssh-add /c/Users/user/.ssh/id_rsa&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sometimes this step will return an error, repeat step 1 above.&lt;/li&gt;
&lt;li&gt;Copy the public key on windows &lt;code&gt;clip &amp;lt; /Users/user/.ssh/id_rsa.pub&lt;/code&gt; On Linux open the file via Nano and copy from there.&lt;/li&gt;
&lt;li&gt;Add the new key to the GitHub account and test the connection by executing &lt;code&gt;$ ssh -T git@github.com&lt;/code&gt; on git bash.&lt;/li&gt;
&lt;li&gt;Git will ask for your passphrase and then return a message as shown below;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user@machine MINGW64 ~/Documents/Hello_world (master)
$ ssh -T git@github.com
Enter passphrase for key '/c/Users/amoh/.ssh/id_rsa':
Hi [github_user_name]! You've successfully authenticated, but GitHub does not provide shell access.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next article:&lt;/p&gt;

&lt;p&gt;** Pushing your Local project to Github.**&lt;/p&gt;

&lt;p&gt;Keep on keeping on.&lt;/p&gt;




&lt;p&gt;Signed kiarieamos&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>datascience</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
