<?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: Warda Liaqat</title>
    <description>The latest articles on DEV Community by Warda Liaqat (@wardaliaqat01).</description>
    <link>https://dev.to/wardaliaqat01</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%2F648594%2F477698cb-ea2f-414d-949f-2364f0b67e85.jpg</url>
      <title>DEV Community: Warda Liaqat</title>
      <link>https://dev.to/wardaliaqat01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wardaliaqat01"/>
    <language>en</language>
    <item>
      <title>Cloud 101 with AWS: From Concepts to a Real Serverless App</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Sun, 11 Jan 2026 13:57:03 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/cloud-101-with-aws-from-concepts-to-a-real-serverless-app-4a22</link>
      <guid>https://dev.to/wardaliaqat01/cloud-101-with-aws-from-concepts-to-a-real-serverless-app-4a22</guid>
      <description>&lt;p&gt;Cloud computing is often introduced through definitions, diagrams, and long explanations.&lt;br&gt;&lt;br&gt;
But cloud really &lt;em&gt;clicks&lt;/em&gt; when you build something real, something cool.&lt;/p&gt;

&lt;p&gt;Recently, I delivered a &lt;strong&gt;Cloud 101 with AWS&lt;/strong&gt; workshop for computer science students at UMT Lahore, with one clear goal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No boring demos. No heavy theory. Just real cloud building.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This post is a quick reflection on the session, what we built, and why this approach worked so well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "Cloud 101" Needed a Rethink
&lt;/h2&gt;

&lt;p&gt;Many beginner cloud sessions still focus on spinning up virtual machines or hosting static websites. While those concepts are important, they don't reflect how modern cloud applications are built today.&lt;/p&gt;

&lt;p&gt;Students don't just want to &lt;em&gt;understand&lt;/em&gt; cloud, they want to &lt;strong&gt;use it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So instead of starting with servers, we focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serverless computing&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Managed AI services&lt;/li&gt;
&lt;li&gt;Real-world cloud architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All within a 2-hour hands-on workshop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Big Questions We Started With
&lt;/h2&gt;

&lt;p&gt;Before touching AWS, we framed the session around three simple questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What&lt;/strong&gt; is cloud computing really?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why&lt;/strong&gt; does it matter for developers?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How&lt;/strong&gt; do modern applications actually use cloud services?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The answers became much clearer once we started building.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built in the Workshop
&lt;/h2&gt;

&lt;p&gt;During the session, we built a &lt;strong&gt;serverless backend application&lt;/strong&gt; using AWS services that are commonly used in real-world systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  The stack:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambda&lt;/strong&gt; – to run backend logic without managing servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon API Gateway&lt;/strong&gt; – to expose APIs over HTTP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Comprehend&lt;/strong&gt; – to add AI-based sentiment analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon S3&lt;/strong&gt; – to host a simple frontend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend had two buttons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One calling a &lt;strong&gt;Quote API&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;One calling a &lt;strong&gt;Sentiment Analysis API&lt;/strong&gt;
&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%2Fzl4vw1ha5zt3i7doyj7f.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%2Fzl4vw1ha5zt3i7doyj7f.png" alt="Frontend" width="787" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each button triggered a different API route, which invoked a different Lambda function.&lt;br&gt;&lt;br&gt;
This helped students understand routing, separation of concerns, and how services interact.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture (Big Picture)
&lt;/h2&gt;

&lt;p&gt;At a high level, the flow looked like this:&lt;/p&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%2F2j26dh8cc2gfy99rrcf7.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%2F2j26dh8cc2gfy99rrcf7.png" alt="High Level Architecture" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This wasn't just a demo architecture, it mirrors how many real production systems are designed today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Approach Worked
&lt;/h2&gt;

&lt;p&gt;This workshop format worked particularly well because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students didn't have to manage servers or infrastructure&lt;/li&gt;
&lt;li&gt;Everything felt immediate and interactive&lt;/li&gt;
&lt;li&gt;AI integration felt accessible, &lt;em&gt;not intimidating,&lt;/em&gt; and fun at the same time&lt;/li&gt;
&lt;li&gt;The architecture matched modern industry practices&lt;/li&gt;
&lt;li&gt;Students walked away with something &lt;em&gt;resume-worthy&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many participants were surprised by how little code was required to build a functional cloud-backed application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Beyond the Workshop
&lt;/h2&gt;

&lt;p&gt;To help students continue learning after the session, I've shared the complete project code on GitHub, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python Lambda functions&lt;/li&gt;
&lt;li&gt;API Gateway route structure&lt;/li&gt;
&lt;li&gt;Frontend example&lt;/li&gt;
&lt;li&gt;Setup and cleanup guidance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/WardaLiaqat01/cloud-101-aws-serverless-ai/tree/main" rel="noopener noreferrer"&gt;cloud-101-aws-serverless-ai&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Cloud is not just a technology, it's an enabler.&lt;/p&gt;

&lt;p&gt;For students and early-career developers, my biggest advice is simple:&lt;br&gt;
&lt;strong&gt;Build small, build often, and don't be afraid to experiment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud doesn't have to be overwhelming.&lt;br&gt;&lt;br&gt;
With the right starting point, it becomes empowering.&lt;/p&gt;

&lt;p&gt;If you're interested in similar workshops or hands-on cloud learning, feel free to connect with me.&lt;/p&gt;

&lt;p&gt;Thanks for reading ☁️&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>serverless</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building the Name Match Memory Game: My Experience with Amazon Q CLI</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Sun, 15 Jun 2025 18:08:21 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/building-the-name-match-memory-game-my-experience-with-amazon-q-cli-1982</link>
      <guid>https://dev.to/wardaliaqat01/building-the-name-match-memory-game-my-experience-with-amazon-q-cli-1982</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Have you ever been at a networking event, recognized someone's face, but completely blanked on their name? It's happened to all of us! This common social challenge inspired me to build the &lt;strong&gt;Name Match Memory Game&lt;/strong&gt; a simple but effective tool to help people practice connecting faces with names.&lt;/p&gt;

&lt;p&gt;The idea was straightforward: create a game that shows users face images, presents multiple name options, and helps them practice making the right connections. What started as a simple command-line tool evolved into a full-fledged web application, all with the help of &lt;strong&gt;Amazon Q CLI&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setting Up Amazon Q CLI
&lt;/h2&gt;

&lt;p&gt;Getting started with Amazon Q CLI on my Windows machine using WSL (Windows Subsystem for Linux) took a bit of setup, but was worth the effort.&lt;/p&gt;

&lt;p&gt;First, I needed to install the AWS CLI and configure it with my credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="s2"&gt;"awscliv2.zip"&lt;/span&gt;
unzip awscliv2.zip
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./aws/install
aws configure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I installed Amazon Q CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-Lo&lt;/span&gt; &lt;span class="s2"&gt;"/tmp/q-cli.deb"&lt;/span&gt; &lt;span class="s2"&gt;"https://d3op2l77j7wnti.cloudfront.net/releases/amazon-q-cli/v0.1.0/amazon-q-cli_0.1.0_amd64.deb"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dpkg &lt;span class="nt"&gt;-i&lt;/span&gt; /tmp/q-cli.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I faced a couple of challenges during setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting the shell initialization right (needed to add Q CLI to my PATH)&lt;/li&gt;
&lt;li&gt;Understanding the correct commands to start a chat session&lt;/li&gt;
&lt;li&gt;Ensuring my AWS credentials were properly configured&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After some troubleshooting, I was able to start Q CLI with a simple command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;q chat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Using Q CLI to Build the Game
&lt;/h2&gt;

&lt;p&gt;Once I had Q CLI running, the development process was surprisingly smooth. I started by describing my game idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a Python CLI game that helps users remember people's names and faces.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Q CLI immediately understood what I wanted and helped me design the core game logic. We started with a command-line version that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stored people's data in a JSON file&lt;/li&gt;
&lt;li&gt;Displayed "faces" (as file paths in the CLI version)&lt;/li&gt;
&lt;li&gt;Presented multiple-choice name options&lt;/li&gt;
&lt;li&gt;Tracked correct/incorrect answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a snippet of the initial game logic Q CLI helped me create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;play_game&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num_rounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Play the name matching game with multiple choice options.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;people_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You need at least 4 people in the database to play the game.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;

    &lt;span class="n"&gt;num_rounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_rounds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;people_data&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="c1"&gt;# Select people for this game session
&lt;/span&gt;    &lt;span class="n"&gt;sorted_people&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;people_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;times_shown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;game_people&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sorted_people&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="n"&gt;num_rounds&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;round_num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game_people&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# Generate options (3-4 name choices)
&lt;/span&gt;        &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
        &lt;span class="n"&gt;other_names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;people_data&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
        &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other_names&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;other_names&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
        &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;shuffle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Display options and get answer
&lt;/span&gt;        &lt;span class="c1"&gt;# ...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After testing the CLI version, I asked Q CLI to help me convert it to a web application using Flask. This was where Q CLI really shined—it generated the complete Flask application structure, HTML templates, and even CSS styling.&lt;/p&gt;




&lt;h2&gt;
  
  
  Game Features
&lt;/h2&gt;

&lt;p&gt;The final web-based game includes several key features:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Interactive Start Page
&lt;/h3&gt;

&lt;p&gt;Q CLI helped me create an engaging start page with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A gradient background&lt;/li&gt;
&lt;li&gt;Preview of random faces from the database&lt;/li&gt;
&lt;li&gt;Clear game instructions&lt;/li&gt;
&lt;li&gt;Animated "Start Playing" button&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Game Mechanics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Random Face Selection:&lt;/strong&gt; Each round shows a different face&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Choice:&lt;/strong&gt; 3-4 name options as radio buttons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immediate Feedback:&lt;/strong&gt; Users learn right away if they were correct&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score Tracking:&lt;/strong&gt; Progress is shown throughout the 5-round game&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final Results:&lt;/strong&gt; Accuracy and performance summary at the end&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Data Management
&lt;/h3&gt;

&lt;p&gt;The game uses two simple JSON files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;people_data.json&lt;/code&gt;: Stores person information with IDs and names&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;game_stats.json&lt;/code&gt;: Tracks game statistics across sessions
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Example&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;people_data.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"alice"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Alice Johnson"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bob"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bob Smith"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Image Handling
&lt;/h3&gt;

&lt;p&gt;Images are stored in the &lt;code&gt;static/images/&lt;/code&gt; directory and named according to person IDs (e.g., &lt;code&gt;alice.jpg&lt;/code&gt;). The Flask application dynamically loads these images during gameplay.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running the Game
&lt;/h2&gt;

&lt;p&gt;Getting the game running required a few steps:&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.6+&lt;/li&gt;
&lt;li&gt;Flask&lt;/li&gt;
&lt;li&gt;Virtual environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup Process
&lt;/h3&gt;

&lt;p&gt;I created a virtual environment and installed Flask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
pip &lt;span class="nb"&gt;install &lt;/span&gt;flask
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was another area where I faced challenges—initially getting a &lt;code&gt;ModuleNotFoundError: No module named 'flask'&lt;/code&gt; error. Q CLI helped me troubleshoot this by explaining I needed to install Flask in my virtual environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting the Game
&lt;/h3&gt;

&lt;p&gt;Once everything was set up, starting the game was simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I could access the game by opening a browser and navigating to:&lt;br&gt;&lt;br&gt;
&lt;code&gt;http://127.0.0.1:5000/&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding New People
&lt;/h3&gt;

&lt;p&gt;To add new people to the game:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add their information to &lt;code&gt;people_data.json&lt;/code&gt; with a unique ID&lt;/li&gt;
&lt;li&gt;Place their image in &lt;code&gt;static/images/&lt;/code&gt; with the filename matching their ID&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My Learnings and Reflections
&lt;/h2&gt;

&lt;p&gt;Working with Amazon Q CLI to build this game taught me several valuable lessons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted coding is powerful:&lt;/strong&gt; Q CLI helped me go from concept to working application much faster than I could have alone. It understood my requirements and generated well-structured code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive problem-solving:&lt;/strong&gt; When I hit roadblocks (like Flask installation issues), Q CLI provided clear, step-by-step solutions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning by doing:&lt;/strong&gt; The conversational nature of Q CLI allowed me to learn Flask web development concepts as we built the application together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterative development:&lt;/strong&gt; I could easily request changes or enhancements, like adding the start page, and Q CLI would help implement them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I enjoyed most was how Q CLI maintained context throughout our conversation. It remembered what we had built earlier and could refer back to previous code when making improvements.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This project is just the beginning! With the foundation in place, I'm planning several enhancements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User Authentication: Allow multiple users to track their individual progress&lt;/li&gt;
&lt;li&gt;Upload Interface: Web form to add new people and images directly&lt;/li&gt;
&lt;li&gt;Database Integration: Replace JSON files with a proper database&lt;/li&gt;
&lt;li&gt;Leaderboard: Compare performance with other users&lt;/li&gt;
&lt;li&gt;Difficulty Levels: Add timed challenges and harder modes&lt;/li&gt;
&lt;li&gt;Mobile Optimization: Make the game fully responsive for on-the-go practice&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building the Name Match Memory Game with Amazon Q CLI was both educational and enjoyable. The tool helped me transform a simple idea into a functional web application, even as someone relatively new to Flask development.&lt;/p&gt;

&lt;p&gt;If you have a project idea but aren't sure how to implement it, I highly recommend giving Amazon Q CLI a try. The interactive, conversational approach to coding makes development more accessible and helps bridge knowledge gaps as you build.&lt;/p&gt;

&lt;p&gt;Have you used Amazon Q CLI for any of your projects? I'd love to hear about your experiences in the comments!&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ready to improve your name-face memory?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Check out the &lt;a href="https://github.com/WardaLiaqat01/Name-Face-Memory-Game" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to try the game yourself!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>flask</category>
      <category>aws</category>
      <category>amazonq</category>
    </item>
    <item>
      <title>Revolutionize Your AWS App Development: AWS Application Composer and Our Helpdesk Project</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Wed, 31 Jan 2024 17:38:58 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/revolutionize-your-aws-app-development-aws-application-composer-and-our-helpdesk-project-2o9f</link>
      <guid>https://dev.to/wardaliaqat01/revolutionize-your-aws-app-development-aws-application-composer-and-our-helpdesk-project-2o9f</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;On November 30, 2023, Amazon Web Services (AWS) unveiled a groundbreaking enhancement to its development toolkit – the general availability of AWS Application Composer in Visual Studio Code (VS Code). This integration brings forth a powerful Integrated Development Environment (IDE) extension, empowering developers to streamline and expedite the application development lifecycle. In this article, we will explore the features and benefits of the AWS Application Composer IDE extension, how we utilized it in our Helpdesk project and delve into real-world scenarios where it can significantly enhance the development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visual Studio Code: Install AWS Application Composer Extension
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Getting Started:
&lt;/h4&gt;

&lt;p&gt;To start leveraging the AWS Application Composer IDE extension, developers can access it through the AWS Toolkit for Visual Studio Code. &lt;/p&gt;

&lt;h4&gt;
  
  
  Pre-requisites:
&lt;/h4&gt;

&lt;p&gt;VS code and it's version should be &lt;code&gt;1.7.3 or later&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If VS code is not installed then please Install it's latest version from VS code website:&lt;br&gt;
 &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://code.visualstudio.com/download" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--33x0A6QM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://code.visualstudio.com/opengraphimg/opengraph-home.png" height="400" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer" class="c-link"&gt;
          Download Visual Studio Code - Mac, Linux, Windows
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.  Download Visual Studio Code to experience a redefined code editor,  optimized for building and debugging modern web and cloud applications.
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Atq7DdQP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://code.visualstudio.com/favicon.ico" width="256" height="256"&gt;
        code.visualstudio.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you already running the VS code then make sure to check the version before installing the AWS tool kit.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\warda.liaqat&amp;gt;code --version
1.85.2
8b3775030ed1a69b13e4f4c628c612102e30a681
x64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Or&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\warda.liaqat&amp;gt;code --help
Visual Studio Code 1.85.2
Usage: code.exe [options][paths...] 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;If it’s less than &lt;code&gt;1.7.3&lt;/code&gt; then please upgrade it to the latest version.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Install the AWS toolkit from Visual Studio Marketplace:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/visualstudiocode/"&gt;AWS Toolkit from Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39hzi0i1804nzhqqx26a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39hzi0i1804nzhqqx26a.png" alt="toolkit from Visual Studio Marketplace" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Install the AWS toolkit directly from VS code Extensions page:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fis0wv7g3mw0dx7bg2krk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fis0wv7g3mw0dx7bg2krk.png" alt="Toolkit from VS Code Extensions Page" width="720" height="831"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  How to get started with AWS Application composer in VS Code?
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Options to sign in to AWS tool kit:
&lt;/h4&gt;

&lt;p&gt;You need to login either with AWS Builder ID or SSO(single sign-on). And that’s it. You have it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For further details on the authentication methods, Please have a look at: &lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html" rel="noopener noreferrer"&gt;
      docs.aws.amazon.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vzzqe4jtl5hz0hcjzgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vzzqe4jtl5hz0hcjzgi.png" alt="Authentication Methods" width="624" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Access Application Composer from the Toolkit for VS Code
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Application Composer can be accessed through various avenues&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. VS Code Command Palette:&lt;/strong&gt;&lt;br&gt;
Open the VS Code Command Palette and navigate to Application Composer for quick and direct access.&lt;br&gt;
Use &lt;code&gt;CTRL+SHIFT+P&lt;/code&gt; to open the AWS Application Composer extension in VS code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa81q8knidb44c1nh7jpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa81q8knidb44c1nh7jpo.png" alt="VS Code Command Palette" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Context Menu:&lt;/strong&gt;&lt;br&gt;
Right-click on your AWS CloudFormation or AWS SAM template to reveal a context menu, where you can conveniently access Application Composer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4togyplwrxbu22hinvfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4togyplwrxbu22hinvfe.png" alt="Context Menu" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. AWS CloudFormation or AWS SAM Template:&lt;/strong&gt;&lt;br&gt;
Select the Application Composer button directly within any AWS CloudFormation or AWS SAM template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj55i0pn9saynof2r0yt3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj55i0pn9saynof2r0yt3.png" alt="AWS CloudFormation or AWS SAM Template" width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Overview of us utilizing AWS Application Composer in VS Code for our Helpdesk Project
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Integration with AWS Services
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. Seamless Integration:&lt;/strong&gt;&lt;br&gt;
Utilizing AWS Application Composer, we seamlessly integrated AWS services into our AP Helpdesk project. Dragging AWS service components directly onto our visual canvas, we effortlessly connected EKS, EFS, RDS, and other vital services to their corresponding sections within our Drupal application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx52bsqet4m1pozousmj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdx52bsqet4m1pozousmj.png" alt="Seamless Integration" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages Realized:&lt;/strong&gt; This approach simplified the integration process, eliminating potential hurdles and offering a visually intuitive experience for our developers. The result was a harmonious fusion of our application with AWS services, ensuring optimal performance and scalability.&lt;/p&gt;
&lt;h4&gt;
  
  
  Syncing Prototypes with Development Environment
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;2. Prototype Synchronization:&lt;/strong&gt;&lt;br&gt;
AWS Application Composer's push-button sync feature became our secret weapon for bridging the gap between prototyping and development. We used the tool to synchronize prototypes, ensuring that changes made during the prototyping phase seamlessly translated into our actual development environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12z9n0yvk9fq49jhr8op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12z9n0yvk9fq49jhr8op.png" alt="Syncing Prototypes" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In order to do the sync you must be authenticated to AWS with your IAM credentials. For more details please visit:&lt;br&gt;
 &lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html" rel="noopener noreferrer"&gt;
      docs.aws.amazon.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Smooth Development Cycles
&lt;/h4&gt;

&lt;p&gt;This streamlined transition from prototyping to development minimized discrepancies and expedited our development cycles. The push-button sync feature became a catalyst for maintaining consistency and accelerating the implementation of new features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Scenarios
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario 1:&lt;/strong&gt; &lt;br&gt;
Rapid Prototyping for a New Feature: Consider a scenario where a development team needs to prototype a new feature for an existing application. With AWS Application Composer in VS Code, developers can rapidly create a prototype by visually designing the new feature's architecture. The generative AI code suggestions provide a head start, allowing the team to quickly iterate and fine-tune the prototype before integrating it into the main application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 2:&lt;/strong&gt; &lt;br&gt;
Infrastructure Changes and Visual Debugging: In a scenario where an application undergoes significant infrastructure changes, developers can leverage Application Composer to visually debug and validate the alterations. The drag-and-drop interface simplifies the process of modifying the architecture, while the real-time visualization helps identify any potential issues or misconfigurations before deployment.&lt;/p&gt;

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

&lt;p&gt;Introducing AWS Application Composer in Visual Studio Code—a game-changer for application development. Its drag-and-drop interface, seamless AWS integration, and AI code suggestions streamline development, addressing common challenges. In our AP Helpdesk project, Application Composer became our guiding force, bringing architectural vision to life with visualizations and prototype synchronization. This tool is a testament to transformative power, setting a precedent for how we approach AWS application development—blending visual artistry and robust functionality for unparalleled success.&lt;/p&gt;

&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/aws/ide-extension-for-aws-application-composer-enhances-visual-modern-applications-development-with-ai-generated-iac/#:~:text=The%20IDE%20extension%20for%20AWS,focus%20on%20your%20application%20code."&gt;AWS Blog&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/application-composer/latest/dg/setting-up-composer.html"&gt;AWS Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/about-aws/whats-new/2023/11/ide-extension-aws-application-composer/"&gt;AWS What's New - IDE Extension AWS Application Composer&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/application-composer/"&gt;Application Composer - AWS Website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do share your feedback and do Follow me on LinkedIn and Facebook:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pk.linkedin.com/in/warda-liaqat"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.facebook.com/WardaLiaqat.01/"&gt;Facebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Cheers, Happy Clouding and Articling!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>awsapplicationcomposer</category>
      <category>vscode</category>
      <category>devops</category>
      <category>aws</category>
    </item>
    <item>
      <title>CI/CD Pipeline Hands-on | AWS Code Pipeline, Elastic Beanstalk, GitHub</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Sun, 21 Aug 2022 11:31:33 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/cicd-pipeline-hands-on-aws-code-pipeline-elastic-beanstalk-github-35n3</link>
      <guid>https://dev.to/wardaliaqat01/cicd-pipeline-hands-on-aws-code-pipeline-elastic-beanstalk-github-35n3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this article we are going to see how to use AWS code pipeline to set up a a very simple CI/CD pipeline for your developments with three products:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Code Pipeline&lt;/li&gt;
&lt;li&gt;Elastic Beanstalk (EB)&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I already have written some article covering each and everything  about CI/CD, Do have a look to previous articles to have a better understanding of this one. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/wardaliaqat01/why-cicd-how-was-a-life-without-cicd-how-is-it-now-46bl"&gt;Why CI/CD? How was a life without CI/CD &amp;amp; how is it now?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=""&gt;Getting intimate with CI/CD and CI/CD Pipeline&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contents:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Intro to AWS Code pipeline&lt;/li&gt;
&lt;li&gt;Architecture of Our Code Pipeline&lt;/li&gt;
&lt;li&gt;Let’s start building our Pipeline&lt;/li&gt;
&lt;li&gt;Environment Setup&lt;/li&gt;
&lt;li&gt;Set up Pipeline&lt;/li&gt;
&lt;li&gt;Testing Our Code Pipeline&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Intro to AWS Code pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;AWS Code Pipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. &lt;code&gt;Code Pipeline automates the build, test, and deploy phases of your release process every time there is a code change,&lt;/code&gt; based on the release model you define. This enables you to rapidly and reliably deliver features and updates. You can easily integrate AWS Code Pipeline with &lt;code&gt;third-party services such as GitHub or with your own custom plugin&lt;/code&gt;. With AWS Code Pipeline, you only pay for what you use. There are no upfront fees or long-term commitments.&lt;/p&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%2Fdy0ob3p6eypr64uzrrxo.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%2Fdy0ob3p6eypr64uzrrxo.PNG" alt=" " width="642" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture of Our Code Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;We are going to deploy a code pipeline on AWS. Below is architecture of our pipeline&lt;/p&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%2F0k628j472jk2nhq7kz16.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%2F0k628j472jk2nhq7kz16.png" alt=" " width="710" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We will be using sample node.js application located in the GitHub Repo.&lt;/li&gt;
&lt;li&gt;Setup a pipeline so, whenever we commit any changes to our code in GitHub it will trigger AWS code pipeline instance to kick-in and start deployment process&lt;/li&gt;
&lt;li&gt;Finally code pipeline will deploy our application to our target Web Server which will be setup in AWS Elastic Beanstalk which essentially means our code will live on EC2 instances behind the scene. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, that's it very simple one stage pipeline.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to GitHub and host your application there. &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%2Fbod62e8347qj8qsn5yso.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%2Fbod62e8347qj8qsn5yso.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s start building our Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Login AWS console&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Environment Setup &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to elastic beanstalk&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;In a nutshell Elastic Beanstalk is just a way to deploy our resources to AWS. In this case it's gonna deploy resources to EC2 instances behind the scene. if this were a great prod application i may directly go to ec2 and set it up directly there just to have a little bit of more control but at the expense of little bit of control it allows us to deploy very quickly.&lt;br&gt;
You will be landed to this page. Just click on Get started/create application&lt;/p&gt;
&lt;/blockquote&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%2Fmqik1zzy8hvshfy098j5.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%2Fmqik1zzy8hvshfy098j5.png" alt=" " width="602" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name your application&lt;/li&gt;
&lt;li&gt;Choose platform&lt;/li&gt;
&lt;li&gt;I’ll go with the sample code. I’m not gonna upload our code because I want our pipeline to do it for us. &lt;/li&gt;
&lt;li&gt;Click on create Application&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%2F7vb3594p71sblbmlbnnb.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%2F7vb3594p71sblbmlbnnb.PNG" alt=" " width="602" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will take several minutes to create and you can see all the logs to get to know what’s happening. &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%2F5nr581ugwjzsy0yx1hax.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%2F5nr581ugwjzsy0yx1hax.png" alt=" " width="603" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will be deployed successfully after some time with &lt;code&gt;health status OK&lt;/code&gt;. It has also deployed sample application into that as well. We used ec2, s3 behind this but you really don’t look at that, we can see in the logs. Elastic beanstalk take care of provisioning of those resources for us. &lt;/li&gt;
&lt;li&gt;One more thing you &lt;code&gt;don’t need to install any package for your application&lt;/code&gt;, if Elastic beanstalk detects any package in our application it will automatically install for us. Everything about this process is very automatic where the convenience factor comes in. &lt;/li&gt;
&lt;li&gt;So, just for the test if it’s working. EB gives us a &lt;code&gt;URL&lt;/code&gt; at the top to test your running application&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%2F5dotwwpxqo9dycgsnfwe.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%2F5dotwwpxqo9dycgsnfwe.png" alt=" " width="602" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;And there we go, our first application is running and our very first deployment was successful. &lt;/p&gt;
&lt;/blockquote&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%2Fktj5hd6vqr8yzklcm15g.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%2Fktj5hd6vqr8yzklcm15g.PNG" alt=" " width="602" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next step is to go to AWS pipeline and setup a pipeline for our application.&lt;/li&gt;
&lt;li&gt;Go to the code pipeline from AWS management console. &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%2Ftzgmcsuaf7pldkxaluh5.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%2Ftzgmcsuaf7pldkxaluh5.png" alt=" " width="602" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now go ahead and click on create pipeline.&lt;br&gt;
You will see 5 stages to complete in order to create your pipeline.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 1&lt;br&gt;
Choose pipeline settings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 2&lt;br&gt;
Add source stage &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 3&lt;br&gt;
Add build stage &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 4&lt;br&gt;
Add deploy stage &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 5&lt;br&gt;
Review&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Let's explore all 5 steps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Just name your pipeline and leave all the settings as it is. &lt;/li&gt;
&lt;li&gt;And click on next&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%2Fqbmdyccy2nojx0o34ql6.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%2Fqbmdyccy2nojx0o34ql6.PNG" alt=" " width="602" height="299"&gt;&lt;/a&gt;&lt;/p&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%2F6eriywwvjq3yj2pjvivb.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%2F6eriywwvjq3yj2pjvivb.PNG" alt=" " width="760" height="762"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect option this is saying how you want to trigger your pipeline. Go with the default for better ease. Because default one is more event driven model.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Version 1:&lt;/p&gt;
&lt;/blockquote&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%2Ft0zctwww57ext810bgei.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%2Ft0zctwww57ext810bgei.png" alt=" " width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Version 2:&lt;/p&gt;
&lt;/blockquote&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%2Fikgnaxn8d0iub343oz50.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%2Fikgnaxn8d0iub343oz50.PNG" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build stage is optional so, we are going to skip it for this project.&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%2F2m994vdgx7yo6iz67v5l.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%2F2m994vdgx7yo6iz67v5l.PNG" alt=" " width="602" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy provider is elastic beanstalk which is our target. &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%2F21jpykqe192m7dt2j4x5.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%2F21jpykqe192m7dt2j4x5.PNG" alt=" " width="602" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then just review everything and click on create pipeline.&lt;/li&gt;
&lt;li&gt;Now we can see pipeline has been created and now it’s deploying to elastic beanstalk.&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%2Fr5bk8jk1k1ywvy94umhk.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%2Fr5bk8jk1k1ywvy94umhk.png" alt=" " width="602" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will take minute or two then we can verify if it’s been deployed. &lt;/li&gt;
&lt;li&gt;Now go to EB by clicking the URL&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%2Fen9yqzdybgao54gju47w.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%2Fen9yqzdybgao54gju47w.png" alt=" " width="602" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You will see your app is running in browser&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%2F4pvctzbv13wxzhvjy8fi.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%2F4pvctzbv13wxzhvjy8fi.png" alt=" " width="602" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing Our Code Pipeline &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Now let’s do some updates in your code from GitHub and see if our pipeline detect those changes and populate them automatically to our application that is running on Elastic Beanstalk. &lt;br&gt;
You can update and commit your changes from directly GitHub or you can do it also by cloning your repo, updating your changes and them committing them locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update changes in code from GitHub:
&lt;/h2&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%2Fjmbveo5piq3dka02prh6.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%2Fjmbveo5piq3dka02prh6.png" alt=" " width="602" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Update changes in code locally &amp;amp; then commit to online repo:
&lt;/h2&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%2Ffq3li9mlx3h0fmfhmsx9.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%2Ffq3li9mlx3h0fmfhmsx9.png" alt=" " width="602" height="311"&gt;&lt;/a&gt;&lt;/p&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%2F9x4xezjhy6j0l65wollc.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%2F9x4xezjhy6j0l65wollc.png" alt=" " width="602" height="223"&gt;&lt;/a&gt;&lt;/p&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%2Fan5z9n15v4xg1896wn5m.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%2Fan5z9n15v4xg1896wn5m.png" alt=" " width="602" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After updating your changes in code either from GitHub or Locally, when you'll go to your code pipeline you will observe that your pipeline is in action, It will detect changes and then update the source and will deploy changes to EB automatically.&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%2F36qhhaibfa1j5d8gduqv.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%2F36qhhaibfa1j5d8gduqv.png" alt=" " width="602" height="317"&gt;&lt;/a&gt;&lt;/p&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%2Fum7441c97y8fhds7e5gu.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%2Fum7441c97y8fhds7e5gu.png" alt=" " width="602" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you observe that pipeline is successfully done then if you open/refresh the URL of your application in the browser you will observe that changes have been deployed successfully.&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%2Fl8fwoh7jjh4t6thyh6ia.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%2Fl8fwoh7jjh4t6thyh6ia.png" alt=" " width="602" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;See, how code pipeline can make things easy for you when you are working on your development projects, now you don't have to manually write test cases after each change and update those changes manually. Code pipeline will handle all of that automatically for you. Now you just need to relax and focus on adding more new features to your application and do lots of advancements. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&amp;gt; Let me know what do you think about it or if you are already using Code Pipeline for your developments?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>aws</category>
      <category>github</category>
      <category>elastic</category>
    </item>
    <item>
      <title>Getting intimate with CI/CD and CI/CD Pipeline</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Mon, 13 Jun 2022 09:19:17 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/getting-intimate-with-cicd-and-cicd-pipeline-5f8</link>
      <guid>https://dev.to/wardaliaqat01/getting-intimate-with-cicd-and-cicd-pipeline-5f8</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In my previous article &lt;a href="https://dev.to/wardaliaqat01/why-cicd-how-was-a-life-without-cicd-how-is-it-now-46bl"&gt;Why CI/CD? How was a life without CI/CD &amp;amp; how is it now?&lt;/a&gt; I talked about the &lt;code&gt;Why&lt;/code&gt; of CI/CD. If you read that, got the concept and wanna hear more about CI/CD then In this article we are going to ding more into the concepts of CI/CD.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, &lt;/p&gt;
&lt;/blockquote&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%2F85ir7n66ufgirbnp7c74.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%2F85ir7n66ufgirbnp7c74.png" alt=" " width="316" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CI/CD?
&lt;/h2&gt;

&lt;p&gt;CI/CD is simply a method to frequently deliver apps to customers by introducing automation into the stages of app development. The main concepts attributed to CI/CD are &lt;code&gt;continuous integration, continuous delivery, and continuous deployment.&lt;/code&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CI/CD is a solution to the problems integrating new code can cause for development and operations teams (AKA "integration hell").&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Specifically, CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment. &lt;/p&gt;

&lt;p&gt;So, there are three terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous Integration&lt;/li&gt;
&lt;li&gt;Continuous Delivery&lt;/li&gt;
&lt;li&gt;Continuous Deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's look into them one by one&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Integration
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you have a team of developers, each of whom is responsible for a separate feature, you need to integrate the different features before you’re ready for a release. By integrating so frequently, your team can surface errors earlier. And when those are caught, the amount of backtracking needed to find the cause is also much reduced. Therefore, your team can resolve the integration errors much faster.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove&lt;br&gt;
— Martin Fowler, Chief Scientist, ThoughtWorks&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How to Practice Continuous Integration
&lt;/h3&gt;

&lt;p&gt;If you want to practice CI, the steps roughly go like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers check out code from the repository to work on it locally. Ideally, they create a new branch for the feature they want to implement.&lt;/li&gt;
&lt;li&gt;When their feature branch is ready, they run tests locally in their development environments.&lt;/li&gt;
&lt;li&gt;Once all tests pass, they push the commits to the single source repository.&lt;/li&gt;
&lt;li&gt;Whenever there are changes on the repository, a CI server checks out the changes and performs a “build and test.” A build and test is when the CI server builds the entire system on the developer’s feature branch and runs all the unit and integration tests.&lt;/li&gt;
&lt;li&gt;The CI server notifies the team of the integration result. There should generally be four outcomes: failed build, successful build, failed tests, successful tests.&lt;/li&gt;
&lt;li&gt;If there’s a failure, the team fixes the issue ASAP.&lt;/li&gt;
&lt;li&gt;When the feature branch is merged to the main branch, they repeat steps 2–6.&lt;/li&gt;
&lt;li&gt;They continue to develop and repeat the steps 2–6 whenever there’s new code to be checked in to the repository.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are minor variations of the steps, depending on the tools you chose and the processes you agree upon within the team. &lt;code&gt;**The main principles of CI**&lt;/code&gt; are that you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check in code in frequently.&lt;/li&gt;
&lt;li&gt;Automate the build and test portion.&lt;/li&gt;
&lt;li&gt;Always test the code locally before checking it in.&lt;/li&gt;
&lt;li&gt;Never merge any failed branches to the main branch.&lt;/li&gt;
&lt;li&gt;Return its status back to successful if you’re the developer who causes the failed build or test.&lt;/li&gt;
&lt;li&gt;Make it your top priority to do so once the fail happens.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Continuous Deployment (CD)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Continuous Deployment is closely related to Continuous Integration and refers to the release into production of software that passes the automated tests.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So why do you need to care about continuous deployment as part of your development process? Well, when there are releases, there will be deployment steps. These deployment steps tend to repeat for each release. Instead of performing the deployment manually for each release, why not have the deployment steps be executed automatically? Of course, ideally, this code has been built and tested successfully by the CI server too.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Essentially, it is the practice of releasing every good build to users&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;SO, What’s the Difference Between Continuous Deployment and Continuous Delivery? Aren't they same thing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You may be confused by the fact that there’s another term &lt;strong&gt;CD&lt;/strong&gt; can stand for: &lt;strong&gt;continuous delivery.&lt;/strong&gt; So what’s the difference between the two? &lt;/p&gt;

&lt;p&gt;According to &lt;em&gt;Jez Humble&lt;/em&gt;, &lt;strong&gt;continuous deployment&lt;/strong&gt; is &lt;code&gt;about automating the release of a good build to the production environment&lt;/code&gt;. In fact, Humble thinks it might be more accurate to call it &lt;em&gt;“continuous release.”&lt;/em&gt; On the other hand, &lt;strong&gt;continuous delivery&lt;/strong&gt; is about &lt;code&gt;ensuring that every good build is potentially ready for production release.&lt;/code&gt; At the very least, it’s sent to the user acceptance test (UAT) environment. Your business team can then decide when a successful build in UAT can be deployed to production and they can do so at the push of a button.&lt;/p&gt;

&lt;p&gt;Sometimes it’s unwise to have every build be an actual release. Such is the case with embedded software. So we need a slightly different definition for builds that potentially can be releases but need not be automatically deployed—hence the existence of “continuous delivery.”&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To keep it simple, here’s a diagram.&lt;/p&gt;
&lt;/blockquote&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%2F9p4dhc86p2zbvgr1ydx7.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%2F9p4dhc86p2zbvgr1ydx7.png" alt=" " width="651" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you’ve successfully implemented continuous deployment, it implies that continuous delivery is achieved as well. &lt;em&gt;But the converse isn’t true.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The term &lt;em&gt;“continuous deployment”&lt;/em&gt; came before the term &lt;em&gt;“continuous delivery.”&lt;/em&gt; However, do note that in most enterprise setups, the business side of the company prefers to manually trigger the deployment. So, chances are your organization will actually be implementing continuous delivery, which is a good enough solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now let's move onto the concept of CI/CD Pipeline
&lt;/h2&gt;

&lt;p&gt;Now that we have understood the concepts of CI and CD, it’s time we get more into the weeds of what a CI/CD pipeline is.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;CI/CD pipeline&lt;/em&gt; can be easily understood as the process pathway through which we can deliver a single unit of production-ready software. Your team will choose which services they’ll use to build this; there’s no single canonical implementation of a CI/CD pipeline.&lt;br&gt;
The simplest version of the pipeline can best be described by this activity chain:&lt;/p&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%2F3dl6ndztcp97pf4tiah1.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%2F3dl6ndztcp97pf4tiah1.png" alt=" " width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each of these steps in the activity chain can be handled by a single service or piece of software. Alternatively, you can split the tasks into several different tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD Pipeline Phases
&lt;/h2&gt;

&lt;p&gt;While each stage of a CI/CD pipeline may be performed manually, the actual benefit of CI/CD pipelines is achieved via automated processes. A CI/CD pipeline is made up of discrete subgroups of operations which are organized into pipeline phases. &lt;/p&gt;

&lt;p&gt;Following are some common pipeline phases:&lt;br&gt;
&lt;strong&gt;Source&lt;/strong&gt; &lt;br&gt;
The source contains the initial source code repository and any change in the code triggers CI/CD tools to automatically apply modifications. User-initiated processes, programmed timelines, and the outcomes of other pipelines are other typical triggers. The process begins with a Push-request, written manually, which causes the development of Webhooks to run the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build&lt;/strong&gt; &lt;br&gt;
At this stage complies an app with its source code repository. But, in fact, the build stage is not necessarily used for such languages as Python, JavaScript, and Ruby. Inability to pass the build phase indicates a basic project malfunction, which should be addressed as soon as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt; &lt;br&gt;
The implementation of automated tests to check the validity of code and the functionality of the program is included in the test phase. This stage’s automation facilitates the quality assurance for the running code. Testing eliminates potentially repeatable issues from making their way to the customers. Besides, here happens the Merge stage, which is responsible for the finalization of the assessment, needed before the release to the source code repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy&lt;/strong&gt; &lt;br&gt;
This is the last step of the CI/CD pipeline, and it’s done if the previous testing and merging go without conflicts and errors. Deployment means your code goes to the servers, like Azure or AWS to make it functional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of a CI/CD Pipeline Toolchain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To better illustrate a pipeline, I’ll conjure up a fictional example involving an enterprise web software written in Java. Suppose I want to start from scratch and I want to keep things easy. I’d make the following choices:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source code control:&lt;/strong&gt; I’ll host the code on GitHub (hosted service) as a private repository. This way, I can use its integrations with major software and services to establish triggers whenever code commits are checked in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous integration:&lt;/strong&gt; I’ll get CircleCI and connect it with GitHub integrations. This allows every code commit to notify CircleCI via webhooks. When code changes notify CircleCI, it will then pull the code from the GitHub repository and proceed to build and run the tests. Any failures or successes can be sent by email or Slack notification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy to UAT:&lt;/strong&gt; Suppose my UAT is running on a server in AWS ECS. I’ll configure CircleCI to deploy automatically to the AWS UAT server when the build and tests are successful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy to Production:&lt;/strong&gt; For deployment to production, I’ll reuse the integration steps for deploying to UAT.&lt;br&gt;
With sufficient configuration at the start and by employing three major services, I’ve designed a good enough CI/CD pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD pipeline principles and best practices
&lt;/h2&gt;

&lt;p&gt;There are no ironclad rules that define the best ways to create CI/CD pipelines. However, there are certain guidelines to follow while building these pipelines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the build is broken, &lt;code&gt;fix it immediately&lt;/code&gt;. Teams should drop any work if the changes introduced break the pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift left in testing.&lt;/strong&gt; If the team has a large number of tests, first run fundamental and faster tests such as code quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a consistent environment&lt;/strong&gt;. An application deployed to a handcrafted environment is most likely to fail when it hits the production environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bake in code quality checks.&lt;/strong&gt; You can easily integrate many open source tools into the CI/CD pipeline to provide comprehensible documentation for developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gauge your CI/CD pipeline's speed.&lt;/strong&gt; How long does the build sit in queue before it's picked up by an agent? How long does it take to provision a new pipeline for an application? As a general rule of thumb, if it takes longer than grabbing a coffee to build, test and deploy the changes, that's a signal that the pipeline is not providing fast feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document everything.&lt;/strong&gt; Describe how the pipeline functions. If something fails and there is documentation around how the pipeline works developers can attempt to fix the issues by reading the pipeline documentation and issuing pull requests. This enhances collaboration across teams as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Overall considerations to build a CI/CD pipeline
&lt;/h2&gt;

&lt;p&gt;CI/CD pipelines aim to streamline software development and delivery, but real-world implementations can widely differ from the theoretical concepts. Organizations have specific problems to tackle, resources to draw upon and technology decisions to weigh.&lt;/p&gt;

&lt;p&gt;Consider investments in time and resources to manage the infrastructure that supports CI/CD pipelines. On-premises repos and version control such as Git, along with build servers such as Jenkins, require a lot of effort to patch and maintain.&lt;/p&gt;

&lt;p&gt;If a team chooses to run the CI/CD pipelines with hosted providers, such as GitHub and Azure DevOps, there are additional considerations. A CI/CD pipeline in the cloud typically deploys the application as a hosted workload on that cloud's platform and will require the team to assign underlying infrastructure resources (IaaS, PaaS or SaaS).&lt;/p&gt;

&lt;p&gt;There are also many security questions to answer with CI/CD in the cloud. How do you authenticate users and grant them appropriate access to resources? How does the provider store credentials or service connection strings to access outside resources? How do CI/CD pipelines with a cloud provider access internal resources if required? Many providers allow organizations to run the hosted agent in their internal network, but this requires outbound connections to allow egress traffic, which may require a security review and exception.&lt;/p&gt;

&lt;p&gt;There is no one-size-fits-all answer to implementing a CI/CD pipeline. However, there are common attributes and CI/CD best practices that can help you design, implement and continuously improve your software delivery process. Start with very basic pipelines and then continuously gather feedback and improve them over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now you can tell others that:&lt;/strong&gt; &lt;/p&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%2Fjf608syrxo1sledf5pmu.jpg" 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%2Fjf608syrxo1sledf5pmu.jpg" alt=" " width="289" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://incora.software/insights/what-is-the-role-of-ci-cd-pipeline-in-software-development/75" rel="noopener noreferrer"&gt;https://incora.software/insights/what-is-the-role-of-ci-cd-pipeline-in-software-development/75&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.redhat.com/en/topics/devops/what-is-ci-cd" rel="noopener noreferrer"&gt;https://www.redhat.com/en/topics/devops/what-is-ci-cd&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.plutora.com/blog/understanding-ci-cd-pipeline" rel="noopener noreferrer"&gt;https://www.plutora.com/blog/understanding-ci-cd-pipeline&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.techtarget.com/searchsoftwarequality/CI-CD-pipelines-explained-Everything-you-need-to-know" rel="noopener noreferrer"&gt;https://www.techtarget.com/searchsoftwarequality/CI-CD-pipelines-explained-Everything-you-need-to-know&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.techtarget.com/searchitoperations/tip/How-to-build-a-CI-CD-pipeline-with-examples" rel="noopener noreferrer"&gt;https://www.techtarget.com/searchitoperations/tip/How-to-build-a-CI-CD-pipeline-with-examples&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why CI/CD? How was a life without CI/CD &amp; how is it now?</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Mon, 16 May 2022 14:58:10 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/why-cicd-how-was-a-life-without-cicd-how-is-it-now-46bl</link>
      <guid>https://dev.to/wardaliaqat01/why-cicd-how-was-a-life-without-cicd-how-is-it-now-46bl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;I'm planning to publish a series of article on CI/CD including the CI/CD basics, life with CI/CD, why CI/CD is important, how to implement CI/CD, and a guided tutorial to help you create your own pipeline. In this write-up, I will cover CI/CD basics, life with CI/CD and how is it now. &lt;/p&gt;

&lt;h2&gt;
  
  
  An overview to CI/CD
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;As a software developer what would you like to achieve with your development?&lt;/strong&gt; Obviously a &lt;code&gt;timely delivery of your product&lt;/code&gt; or put simply, &lt;code&gt;early time to market.&lt;/code&gt;&lt;/p&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%2Fje3arspnfas92mjn42z6.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%2Fje3arspnfas92mjn42z6.png" alt=" " width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt; is the key to modern software development. All traditional &lt;strong&gt;waterfall&lt;/strong&gt; software development has largely been replaced by rapid &lt;strong&gt;iterative&lt;/strong&gt; techniques that support development and release. These techniques go by several names, including &lt;code&gt;continuous integration, continuous delivery, and continuous deployment.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Even though each technique has slight differences, the importance placed on continuous iteration has drastically altered the way software is developed. By reducing risk and cost, businesses can &lt;code&gt;quickly get products to market&lt;/code&gt; and refine them over time in a cost-effective manner.&lt;/p&gt;

&lt;p&gt;In addition, such iterations require well-designed and active development pipelines that support multiple staged iterations simultaneously and keep entire development teams busy.&lt;br&gt;
Once a build is deployed, the next build undergoes testing, while the very latest build is being coded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Life Without Devops/CICD:
&lt;/h2&gt;

&lt;p&gt;Let's take an example and look at a life of developers who aren't using CI/CD as SDLC.&lt;/p&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%2Fyi7hun17amw6i2o3tgg7.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%2Fyi7hun17amw6i2o3tgg7.png" alt=" " width="297" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;e.g., There's a team comprise of &lt;strong&gt;10 members&lt;/strong&gt; and each is given a model to work on for app development. After development they generate a zip file and upload to aws environment &lt;strong&gt;manually&lt;/strong&gt; and then while testing the environment they detect a bug and to address it they decide to write a test case. They wrote a test case and then executed it manually. It's done and again they generate a zip file and upload to aws environment &lt;strong&gt;manually&lt;/strong&gt; and again while testing the environment they detect a bug and cycle keep on continue. You can see it's such a &lt;code&gt;manual and slow process&lt;/code&gt;which a developer feel and some of them what they do, they &lt;strong&gt;skip&lt;/strong&gt; writing test cases and test cases never get executed to. so, the developers feeling helpless, productivity also reduces so, see how the life has become for developer. &lt;/p&gt;

&lt;h2&gt;
  
  
  Life With Devops/CICD:
&lt;/h2&gt;

&lt;p&gt;Now let's switch to the life of developer with DevOps. Developer push the code to source control service and there are automated build and test phases and then deployment also happen very easily. Now the life of developer is eased up right.&lt;/p&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%2Fjncgrx3tyvaswt6mhw2e.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%2Fjncgrx3tyvaswt6mhw2e.png" alt=" " width="300" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why CI/CD?
&lt;/h2&gt;

&lt;p&gt;Both &lt;code&gt;CI and CD&lt;/code&gt; form the backbone of the modern DevOps environment. You can think of &lt;code&gt;CI/CD&lt;/code&gt; processes as like a &lt;strong&gt;software development lifecycle.&lt;/strong&gt;&lt;/p&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%2Fhsha59w1t1o37o1eq6qh.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%2Fhsha59w1t1o37o1eq6qh.png" alt=" " width="279" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The concept of CI/CD enables enterprises to ship software quickly and effectively. By implementing CI/CD, products can reach the market faster than ever before, releasing code continuously into production, and ensuring bugfixes and new features are released using the most effective delivery system. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Extends beyond test automation.&lt;/strong&gt;&lt;br&gt;
A quality assurance engineer writes, executes and automates various sorts of tests to inform development teams whether a software build succeeds or fails using automated testing frameworks. During each sprint, functionality tests are created and combined into an application-wide regression test. I am sure you can see that this goes far beyond the above mentioned testing, but as a fast and convenient solution of automated processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allows deploying code frequently.&lt;/strong&gt;&lt;br&gt;
For enterprises that &lt;code&gt;wish to upgrade&lt;/code&gt; their apps on a regular basis and demand a reliable delivery method, CI/CD pipelines are the best option. Production is the process of organizing builds, performing tests, and automating deployments in order to distribute code changes. As soon as it is established, a team can focus more on improving apps rather than the technical details of transporting them to computing environments. The result may be that developers are now more likely to push updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enables to get the continuous improvement.&lt;/strong&gt;&lt;br&gt;
Continuous integration and continuous delivery is a &lt;code&gt;never-ending cycle&lt;/code&gt; of development, testing, and deployment. When code is tested, developers can respond quickly to feedback and upgrade the code as needed. Each member of the team is capable of changing code and solving any issues that may arise. Due to the fact that this cycle can continue infinitely, developers can improve the original code in the most efficient manner possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduces time to deployment.&lt;/strong&gt;&lt;br&gt;
CI/CD pipelines allow for substantially faster time to market for new product features, which leads to happier customers and less burden on development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  DevOps service providers:
&lt;/h2&gt;

&lt;p&gt;Among the most used and popular DevOps services, namely &lt;code&gt;Amazon Web Services, Azure DevOps services, and Google Cloud services&lt;/code&gt;, there is a battle going on in the market. Based on Statista analytics, &lt;strong&gt;Amazon Web Services&lt;/strong&gt;, &lt;code&gt;the most prominent provider in the cloud computing industry&lt;/code&gt;, held 32% of the total market in the 3rd quarter of 2021. Microsoft Azure comes in 2nd place with a 21% market share, followed by Google Cloud with an 8%. Therefore, in the 3rd quarter of 2021, these three cloud suppliers are undoubtedly leading within the statistics.&lt;/p&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%2Fn40xy1n0yypbjz33wl15.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%2Fn40xy1n0yypbjz33wl15.png" alt=" " width="246" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wanna hear more? Just wait for my next write up on this topic... Till then Happy learning &amp;amp; Clouding!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Working with Git Branches!</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Mon, 25 Apr 2022 10:26:29 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/working-with-git-branches-5fem</link>
      <guid>https://dev.to/wardaliaqat01/working-with-git-branches-5fem</guid>
      <description>&lt;p&gt;Git Branches are quite handy when you are working on large projects and collaborating in teams. So, I just wanted to explore and share my thoughts/findings on it. &lt;br&gt;
I have had two article on basics and getting started with Git &amp;amp; GitHub. Have a look below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/wardaliaqat01/git-github-best-version-control-and-source-code-hosting-platforms-respectively-1m8b"&gt;Git &amp;amp; GitHub - Best Version Control and Source Code hosting platforms respectively!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/wardaliaqat01/get-your-way-started-towards-git-github-47fh"&gt;Get your way started towards Git &amp;amp; GitHub!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Using GitHub we usually deal with three types of Branches:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Master Branch&lt;/li&gt;
&lt;li&gt;Feature branch&lt;/li&gt;
&lt;li&gt;Hot Fix Branch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Master Branch &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Master branch is the naming convention for the main or default branch, all your code and commits will be in that branch&lt;/p&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%2F33pfdwxqd995evbk3gin.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%2F33pfdwxqd995evbk3gin.png" alt=" " width="411" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature branch &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;At first the code at master and feature branch will be the same but when we make updates to feature branch those changes will only be seen into feature branch.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful:&lt;/strong&gt; it is useful if you are working on new features of app and you want a kind of sandbox area to work on your code, test it, make it correct and merge into main branch so, you can't affect the functionalities of main app.&lt;/p&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%2Fyuivpt597f24wc61471c.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%2Fyuivpt597f24wc61471c.png" alt=" " width="561" height="291"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Hot Fix Branch &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This branching type/method is useful if you have many people working on a same repository and lots of branches going on at once. one very common thing that you will see in dev. is that let's see you will be working on this feature branch for 4 weeks or more and you have all those changes that you have made and then you find out there's this major bug that you have to fix  real quick. then we made a new branch called Hot Fix Branch, you can see I made the change in one commit to  fix whatever bug was wrong with the code and make sure it's working correctly and then merge back to master branch. &lt;/p&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%2Fic95rhaz8zytz6t7xzav.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%2Fic95rhaz8zytz6t7xzav.png" alt=" " width="721" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;I hope you have found this article helpful in some way.&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have any comments, do let me know!&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>gitbranching</category>
    </item>
    <item>
      <title>GitHub VS Local Git Workflow</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Fri, 22 Apr 2022 15:50:25 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/github-vs-local-git-workflow-3d3g</link>
      <guid>https://dev.to/wardaliaqat01/github-vs-local-git-workflow-3d3g</guid>
      <description>&lt;p&gt;I have had three article on basics, getting started and branches in Git &amp;amp; GitHub. Have a look below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/wardaliaqat01/git-github-best-version-control-and-source-code-hosting-platforms-respectively-1m8b"&gt;Git &amp;amp; GitHub - Best Version Control and Source Code hosting platforms respectively!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/wardaliaqat01/get-your-way-started-towards-git-github-47fh"&gt;Get your way started towards Git &amp;amp; GitHub!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=""&gt;Working with Git Branches!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We observe a significant difference between Local Git and GitHub workflows. To illustrate my point, I made a comparison.&lt;/p&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%2Fcsd5h1on665e8la4li8k.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%2Fcsd5h1on665e8la4li8k.png" alt=" " width="676" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let me know what do you think about it????
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>workflow</category>
      <category>comparison</category>
    </item>
    <item>
      <title>Get your way started towards Git &amp; GitHub!</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Tue, 19 Apr 2022 10:51:58 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/get-your-way-started-towards-git-github-47fh</link>
      <guid>https://dev.to/wardaliaqat01/get-your-way-started-towards-git-github-47fh</guid>
      <description>&lt;p&gt;In my previous article, I covered a brief introduction to Git and GitHub. &lt;a href="https://dev.to/wardaliaqat01/git-github-best-version-control-and-source-code-hosting-platforms-respectively-1m8b"&gt;Have a look here if you haven't yet&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;My goal for this article is to cover how you can easily get started with Git &amp;amp; GitHub, how to install it, and some basic/IMP commands. So, let's start!&lt;/p&gt;

&lt;h2&gt;
  
  
  Contents:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Setting up the environment (Git, VS code installation, GitHub account creation, SSH key generation etc.)&lt;/li&gt;
&lt;li&gt;Basic Commands&lt;/li&gt;
&lt;li&gt;Cloning GitHub Repo on your local machine&lt;/li&gt;
&lt;li&gt;Creating Repo locally and initializing on GitHub&lt;/li&gt;
&lt;li&gt;Undoing in Git&lt;/li&gt;
&lt;li&gt;Forking in GitHub&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up the environment &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Code editor – I prefer VS Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer"&gt;You can download from here if you don’t have&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git installation on your system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;You can download from here if you don’t have&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Create your GitHub account by following few simple steps&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH keys for authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using the SSH protocol, you can connect and authenticate to remote servers and services. With SSH keys, you can connect to GitHub without supplying your username and personal access token at each visit.&lt;/p&gt;

&lt;p&gt;After installing Git on your system and Creating GitHub account, to connect to your GitHub account from your local machine via SSH you need to generating a new ssh key for the authentication. Follow the below documentation for detail overview on creating and adding SSH keys.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent" rel="noopener noreferrer"&gt;Generating a new SSH key and adding it to the SSH agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you set up SSH, you will need to generate a new SSH key and add it to the ssh-agent. It will generate two keys, one public and one private. You must add the public SSH key to your account on GitHub before you use the key to authenticate.&lt;br&gt;
Follow the below documentation for the process of &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" rel="noopener noreferrer"&gt;Adding public SSH key to your GitHub account&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Commands &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Now that everything is set up, let's look at some common Git commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git Clone&lt;/code&gt;: Bring a repository that is hosted somewhere like github into a folder on your local machine&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git add:&lt;/code&gt; Track your files and changes in git&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit:&lt;/code&gt; Save your files in Git&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git pull:&lt;/code&gt; Download changes from remote repo to your local machine, the opposite to push&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git add .&lt;/code&gt; To track all unsaved files and changes for github&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit -m "title" -m "description"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push:&lt;/code&gt; Upload git commits to a remote repo, like github&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloning GitHub Repo on your local machine &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;It's similar to downloading or cloning someone else's open source project and updating/modifying it or even working with your own online repository. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;In Visual Studio code, open an empty folder and from the top of that folder open a terminal window&lt;/li&gt;
&lt;li&gt;Clone with SSH that we just set up&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%2F7ov3c9ovvj0r8m9wgypq.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%2F7ov3c9ovvj0r8m9wgypq.PNG" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run the following command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Git clone git@github.com:WardaLiaqat01/Test\-Repo.git&lt;/code&gt; (Repo will be cloned with all files and folders)&lt;/li&gt;
&lt;li&gt;You can view all hidden files using &lt;code&gt;ls&lt;/code&gt; command&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%2F9fpjmgm2vft53xbnmbe9.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%2F9fpjmgm2vft53xbnmbe9.PNG" alt=" " width="685" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make some changes to the file and run &lt;code&gt;git status&lt;/code&gt; command, it will show you all modified and untracked created files to be saved and commit. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git add .&lt;/code&gt; will save all new changes. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit -m&lt;/code&gt; “message you want to add with commit” -m “add description of commit” will save your changes locally. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push origin master&lt;/code&gt; will add update your changes on your GitHub Repo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due to the recent "Replacing master with main in GitHub" action, you may notice that there is a &lt;code&gt;refs/heads/main&lt;/code&gt;. As a result, the following command may change from &lt;code&gt;git push origin HEAD:master&lt;/code&gt; to &lt;code&gt;git push origin HEAD:main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can try &lt;code&gt;git push origin HEAD:master&lt;/code&gt; as a more local-reference-independent solution. This explicitly states that you want to push the local ref HEAD to the remote ref master.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://git-scm.com/docs/git-push#git-push-ltrefspecgt82308203" rel="noopener noreferrer"&gt;Git push documentation for detailed overview&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After successful push you can see your all code changes are live on GitHub. &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%2Fayc6emnpcx9djuzh8g8y.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%2Fayc6emnpcx9djuzh8g8y.PNG" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also see all the commits&lt;/p&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%2Fs4wrnixdolweoa2ygv4j.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%2Fs4wrnixdolweoa2ygv4j.PNG" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&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%2Fvi46ocsjxxgbym23tegt.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%2Fvi46ocsjxxgbym23tegt.PNG" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are all the changes, green means it was added and red means it was removed. It's quite handy to be able to revert back to the previous version in case you don't like the changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Repo locally and initializing on GitHub &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Essentially, it is just as if you were creating your development project locally and then uploading it to Git&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Create any Repo/Project locally in VS code&lt;/li&gt;
&lt;li&gt;It won’t be a part of GitHub Repo as for now&lt;/li&gt;
&lt;li&gt;After adding files your project and updating them we need to initialize our Repo so Git can recognize it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git init&lt;/code&gt; (To initialize local git Repo)&lt;/li&gt;
&lt;li&gt;After your Repo is initialized then you can follow all the steps that we performed above (including status, add, commit etc.)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push origin master:&lt;/code&gt; Here this command will through you an error&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%2Fx2d7c69pku7oip3axdyv.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%2Fx2d7c69pku7oip3axdyv.PNG" alt=" " width="676" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s because we didn’t clone this down from GitHub repository. We didn’t create this Repo on GitHub, we created it locally. So git is saying &lt;code&gt;I don’t have any idea where to push this&lt;/code&gt; because it doesn’t connect to anything. So, we need to create that connection.&lt;br&gt;
The easiest way is to do it from GitHub online interface&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an empty GitHub repository with name and description and as a public repo&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%2Fvt91b0dnssl8y2uzquv9.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%2Fvt91b0dnssl8y2uzquv9.PNG" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;br&gt;
Now let's add that Repo as a origin so, git can recognize it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git remote add origin [repo SSH/clone link]&lt;/code&gt;
We are using this to add a reference to remote repo on GitHub&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git remote -v&lt;/code&gt; will show all the remote repos &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push -u origin HEAD:main&lt;/code&gt; (-u for upstream, that means I can push simply by "git push" command in future)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Undoing in Git &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Undoing can be quite helpful. In some cases, if you made some changes mistakenly and want to revert them, for example if you want to revert a commit, the &lt;em&gt;git reset&lt;/em&gt; command can prove very helpful.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git reset :&lt;/code&gt; To undo add/stage changes. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git reset HEAD~1 :&lt;/code&gt; To undo commit  (will undo the last/most recent commit)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git log :&lt;/code&gt; If we want yo undo any previous commit then this command will help&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git reset (hash of that commit) :&lt;/code&gt; You will get this from logs but it won't remove data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git reset --hard (hash of that commit) :&lt;/code&gt; It will remove the code as well&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Forking in GitHub &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In a nutshell, forking means copying someone else's code into your own local repository to make updates and then create a pull request to the original repository after successful changes or create a pull request in your own local repository. &lt;/p&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%2Fdqs6d9uy5gr2bgw3jpuu.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%2Fdqs6d9uy5gr2bgw3jpuu.PNG" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;As a programmer, you'll find Git and GitHub quite useful. Thus, we learned how to get started using Git &amp;amp; GitHub with a few basic commands. I hope you have found this article helpful in some way.&lt;br&gt;
&lt;strong&gt;&lt;code&gt;If you have any comments, let me know.&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;if you would like to explore some more handy Git commands then visit the below URL.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/WardaLiaqat01/Git-Commands" rel="noopener noreferrer"&gt;Git Commands&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with me:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/warda-liaqat/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/warda_Liaqat01"&gt;Instagram&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/CreativityWarda" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>vscode</category>
      <category>codereview</category>
    </item>
    <item>
      <title>What do you think about a developer without having a Github account?</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Mon, 18 Apr 2022 07:25:54 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/what-do-you-think-about-a-developer-without-having-a-github-account-1fi9</link>
      <guid>https://dev.to/wardaliaqat01/what-do-you-think-about-a-developer-without-having-a-github-account-1fi9</guid>
      <description>&lt;p&gt;As per my thoughts, For being a solo developer, it is important to have feedback on your code so, you can make it better and open sourcing is a great practice to explore the world of different minds who are coding differently. Having a GitHub account and contributing to open source will let you do that.&lt;/p&gt;

&lt;p&gt;Let me know what do you think about it?  &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git &amp; GitHub - Best Version Control and Source Code hosting platforms respectively!</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Fri, 15 Apr 2022 14:34:28 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/git-github-best-version-control-and-source-code-hosting-platforms-respectively-1m8b</link>
      <guid>https://dev.to/wardaliaqat01/git-github-best-version-control-and-source-code-hosting-platforms-respectively-1m8b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Version controlling and Open-sourcing are quite hot terms nowadays. Git &amp;amp; GitHub are leading the market with rich offerings in these domains. Thought to share some thoughts/findings on it.  &lt;/p&gt;

&lt;h2&gt;
  
  
  How did it all get started?
&lt;/h2&gt;

&lt;p&gt;Thousands of lines of code are written every day by developers. Some of that code becomes part of the actual application, while other parts may be eliminated because of errors, ambiguities, and inconsistencies. Sometimes when developers add a new piece of functionality to the application they notice that it doesn't work as expected and we need to go back to the stage where this functionality wasn't present. As when they didn't use a &lt;code&gt;version control system&lt;/code&gt;, it was not feasible or difficult to do so as they weren't keeping track of previous versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  We Talked about &lt;strong&gt;"A Version Control System"&lt;/strong&gt; but What is a version control System?
&lt;/h2&gt;

&lt;p&gt;The purpose of version control systems is to &lt;code&gt;keep track&lt;/code&gt; of and manage all the amendments made to the source code during the project's development. This ensures that all the changes are recorded. Also, if any mistakes are made in the current version of the code, we can roll back to the previous version. &lt;/p&gt;

&lt;p&gt;Being a developer, especially a &lt;code&gt;very productive and smart developer&lt;/code&gt;, you should keep track of all the changes that you make to your code, so that if you need to go back to a previous version. In this case, &lt;strong&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/strong&gt; can come in handy and provide a lot of value.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; and &lt;strong&gt;GitHub&lt;/strong&gt; are the best version control and source code hosting platforms respectively among others&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  So, what is Git?
&lt;/h2&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%2F5y2ivdqjdgamvfa0t0px.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%2F5y2ivdqjdgamvfa0t0px.PNG" alt="Git Login/Signup Page" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git is a free, open-source software distributed version control system &lt;code&gt;(DVCS)&lt;/code&gt; designed to manage all source code history.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Open source is a term that originally referred to open source software. Open source software is code that is designed to be publicly accessible—anyone can see, modify, and distribute the code as they see fit - By RedHat&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;You can go back to any of the previous versions of your source code &lt;/li&gt;
&lt;li&gt;It can keep a history of commits, can reverse changes, and lets developers share code&lt;/li&gt;
&lt;li&gt;Each developer must have Git installed on his or her local device to collaborate&lt;/li&gt;
&lt;li&gt;It is commonly referred to as one of the best DevOps tools to understand and use in the developer space, and it’s among the most widely used tools today&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What about GitHub?
&lt;/h2&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%2Fj4x0nn26i7r2w9f22fsy.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%2Fj4x0nn26i7r2w9f22fsy.PNG" alt="GitHub Login/Signup Page" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub, on the other hand, is a web-based platform for &lt;code&gt;hosting Git repositories&lt;/code&gt;. In addition to &lt;em&gt;Git's DVCS (Distributed version control system), SCM (Source code management)&lt;/em&gt;, GitHub has some additional capabilities. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your source code can be stored online, but you can also contribute to open-source projects, discuss another's work with other contributors, and have your work improved by others&lt;/li&gt;
&lt;li&gt;You can also refer to GitHub as your dev project's online portfolio builder&lt;/li&gt;
&lt;li&gt;Another reason why devs use GitHub is because of its powerful Actions which make it really simple to automate software workflows. &lt;/li&gt;
&lt;li&gt;Additionally, users can easily set up a CI/CD, so once they commit changes, the CI/CD quickly pulls them from the GitHub repo and applies them to the developers’ own deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When &lt;strong&gt;Tom Preston-Werner&lt;/strong&gt;, &lt;strong&gt;Chris Wanstrath&lt;/strong&gt; and &lt;strong&gt;PJ Hyett&lt;/strong&gt; founded GitHub in 2008, they entered a tough market, with established services such as SourceForge and offerings Google and Microsoft. Despite this, &lt;code&gt;GitHub gained traction and, in July 2010, passed the 1m repository milestone.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;GitHub broke through the &lt;strong&gt;10m repository&lt;/strong&gt; mark in &lt;strong&gt;December 2016&lt;/strong&gt; and is adding &lt;strong&gt;20,000 repositories per day&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Now GitHub is known as a best open-source contribution platform&lt;/p&gt;

&lt;p&gt;By putting it simply, GitHub is an online platform for hosting source code repositories (Git repositories), while Git is a free open-source version control tool.&lt;br&gt;
Git doesn’t require GitHub, but GitHub requires Git.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Do you have any thoughts on it???&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.analyticsvidhya.com/blog/2021/09/git-and-github-tutorial-for-beginners/#:%7E:text=Image%204-,Difference%20between%20Git%20and%20GitHub,GitHub%20but%20GitHub%20requires%20Git" rel="noopener noreferrer"&gt;https://www.analyticsvidhya.com/blog/2021/09/git-and-github-tutorial-for-beginners/#:~:text=Image%204-,Difference%20between%20Git%20and%20GitHub,GitHub%20but%20GitHub%20requires%20Git&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://kinsta.com/knowledgebase/git-vs-github/" rel="noopener noreferrer"&gt;https://kinsta.com/knowledgebase/git-vs-github/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.newelectronics.co.uk/content/blogs/it-s-hard-for-software-developers-to-imagine-life-without-github" rel="noopener noreferrer"&gt;https://www.newelectronics.co.uk/content/blogs/it-s-hard-for-software-developers-to-imagine-life-without-github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>opensource</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>Big Data Processing, EMR with Spark and Hadoop | Python, PySpark</title>
      <dc:creator>Warda Liaqat</dc:creator>
      <pubDate>Sun, 27 Mar 2022 19:03:00 +0000</pubDate>
      <link>https://dev.to/wardaliaqat01/big-data-processing-emr-with-spark-and-hadoop-python-pyspark-4jo4</link>
      <guid>https://dev.to/wardaliaqat01/big-data-processing-emr-with-spark-and-hadoop-python-pyspark-4jo4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;AWS's cool data analysis services can be of significant help when it comes to processing and analyzing large amounts of data. &lt;/p&gt;

&lt;h2&gt;
  
  
  Use Case:
&lt;/h2&gt;

&lt;p&gt;To demonstrate our data processing job, we will use EMR cluster and S3 (as a storage medium for data) along with Python code and the PySpark library. We will execute python code on a data set of Stack Overflow Annual Developer Survey 2021 and print out some results based on that data. Those results will then be stored in S3.&lt;/p&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%2F08n764po1jnvtvmfwmne.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%2F08n764po1jnvtvmfwmne.png" alt=" " width="561" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In case you are just starting with Big Data, I would like to introduce you to some terms we are going to work with, You may skip below few lines if you're already familiar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  EMR (Elastic MapReduce):
&lt;/h3&gt;

&lt;p&gt;Amazon EMR is a managed cluster platform that simplifies running big data frameworks, such as Apache Hadoop and Apache Spark , on AWS to process and analyze vast amounts of data. &lt;a href="https://aws.amazon.com/emr/" rel="noopener noreferrer"&gt;Wanna dig more dipper?&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Amazon S3:
&lt;/h3&gt;

&lt;p&gt;Amazon S3 is object storage built to store and retrieve any amount of data from anywhere. &lt;br&gt;
S3 is a global service. &lt;code&gt;Simply say it works like Google drive.&lt;/code&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/s3/" rel="noopener noreferrer"&gt;Wanna dig more dipper?&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Apache Spark:
&lt;/h3&gt;

&lt;p&gt;Apache Spark is an open-source, distributed processing system used for big data workloads. &lt;a href="https://spark.apache.org/" rel="noopener noreferrer"&gt;Wanna dig more dipper?&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Apache Hadoop:
&lt;/h3&gt;

&lt;p&gt;Apache Hadoop is an open source framework that is used to efficiently store and process large datasets ranging in size from gigabytes to petabytes of data.&lt;a href="https://hadoop.apache.org/" rel="noopener noreferrer"&gt;Wanna dig more dipper?&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Hadoop&lt;/code&gt; is designed to handle batch processing efficiently whereas &lt;code&gt;Spark&lt;/code&gt; is designed to handle real-time data efficiently. Hadoop is a high latency computing framework, which does not have an interactive mode whereas Spark is a low latency computing and can process data interactively.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  PySpark:
&lt;/h3&gt;

&lt;p&gt;PySpark is the Python API for Apache Spark, an open source, distributed computing framework and set of libraries for real-time, large-scale data processing. &lt;a href="https://spark.apache.org/docs/latest/api/python/" rel="noopener noreferrer"&gt;Wanna dig more dipper?&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Outline
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Downloading a Data Set from Stack Overflow&lt;/li&gt;
&lt;li&gt;Setup an Amazon S3 bucket with different folders&lt;/li&gt;
&lt;li&gt;Setting up an EMR cluster&lt;/li&gt;
&lt;li&gt;Write a python code to perform some analysis on data and print results &lt;/li&gt;
&lt;li&gt;Connecting to Cluster via SSH and using PySpark to load data from Amazon S3&lt;/li&gt;
&lt;li&gt;Viewing analysis results&lt;/li&gt;
&lt;li&gt;Cleanup&lt;/li&gt;
&lt;li&gt;Recap&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Guided Procedure
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Downloading a Data Set from Stack Overflow
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://insights.stackoverflow.com/survey" rel="noopener noreferrer"&gt;Stack Overflow Annual Developer Survey&lt;/a&gt; and download the latest data set for 2021&lt;br&gt;
Ultimately, it will download four files, but in this case, we will only be using the &lt;code&gt;"Survey Results Public"&lt;/code&gt; file&lt;/p&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%2Faqc0tvw7hb7cz70i88qt.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%2Faqc0tvw7hb7cz70i88qt.PNG" alt=" " width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Setup an Amazon S3 bucket with different folders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Login to AWS Management Console&lt;/li&gt;
&lt;li&gt;Navigate to S3 and buckets&lt;/li&gt;
&lt;li&gt;Create a new bucket named as &lt;code&gt;big-data-demo-bucket&lt;/code&gt; with Versioning enabled and encryption true&lt;/li&gt;
&lt;li&gt;Click on your bucket once you've created it&lt;/li&gt;
&lt;li&gt;Create two folders named as &lt;code&gt;bigdata-emr-logs (for storing EMR logs)&lt;/code&gt; and &lt;code&gt;data-source (for storing our source data file)&lt;/code&gt; with encryption enabled&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%2F9c1jtwjvg6f8meqebb9s.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%2F9c1jtwjvg6f8meqebb9s.PNG" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Place your source data file in the source data folder&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%2Fgt8u7lyigah6pqdzzdv3.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%2Fgt8u7lyigah6pqdzzdv3.PNG" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Setting up an EMR cluster
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search for EMR&lt;/li&gt;
&lt;li&gt;Click on create cluster&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%2F3yxnil7w47ndh3qaxt63.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%2F3yxnil7w47ndh3qaxt63.PNG" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An S3 bucket is needed to store EMR logs. When you don't want to do it manually, EMR will automatically create a bucket for you to store logs. &lt;code&gt;Select a bucket and folder that we created in previous step&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select Spark with Hadoop and Zeppelin in the software configurations&lt;/li&gt;
&lt;li&gt;In terms of hardware configurations, you can choose EC2 type based on your needs&lt;/li&gt;
&lt;li&gt;For testing purposes, 3 instances would be sufficient. You may create as many as you need&lt;/li&gt;
&lt;li&gt;Enable auto-termination, which will terminate your cluster if any error occurs during the creation process&lt;/li&gt;
&lt;li&gt;You can also set the cluster to automatically terminate when it goes into idle state for long&lt;/li&gt;
&lt;li&gt;It is also completely up to you whether or not to scale&lt;/li&gt;
&lt;li&gt;Select a key pair under security and access to SSH after launching the cluster&lt;/li&gt;
&lt;li&gt;If you do not have a keypair, you can create easily from EC2 dashboard&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%2Fwo9p9goxlx2dnwy5luja.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%2Fwo9p9goxlx2dnwy5luja.PNG" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once you click on the Create Cluster button, your cluster will be created. It usually takes 10 to 15 minutes for the cluster to become operational&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%2Fayht7gskgr4zdmjsr0xk.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%2Fayht7gskgr4zdmjsr0xk.PNG" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Write a python code to perform some analysis on data and print results
&lt;/h3&gt;

&lt;p&gt;Now let's write some code. A spark job will run this code to analyze the data and print out the results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
from pyspark.sql import SparkSession
from pyspark.sql.functions import col

S3_DATA_SOURCE_PATH = 's3://big-data-demo-bucket/data-source/survey_results_public.csv'
S3_DATA_OUTPUT = 's3://big-data-demo-bucket/data-output'


def main():
    spark = SparkSession.builder.appName('BigDataDemoApp').getOrCreate()
    all_data = spark.read.csv(S3_DATA_SOURCE_PATH, header=True)
    print('Total number of records in dataset: %s' % all_data.count())
    selected_data = all_data.where((col('Country') == 'United States of America') &amp;amp; (col('Age1stCode') == '11 - 17 years'))
    print('Total number of engineers who work more than 45 hours in the US is : %s' % selected_data.count())
    selected_data.write.mode('overwrite').parquet(S3_DATA_OUTPUT)
    print('Selected data was successfully saved to: %s' % S3_DATA_OUTPUT)

if __name__ == '__main__':
    main()


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

&lt;/div&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%2Fk9x3cow4sv4xu0w5tqkf.jpg" 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%2Fk9x3cow4sv4xu0w5tqkf.jpg" alt=" " width="276" height="182"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;What does this code do?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up a Spark session&lt;/li&gt;
&lt;li&gt;Data reading from S3&lt;/li&gt;
&lt;li&gt;Printing some results based on certain conditions&lt;/li&gt;
&lt;li&gt;A S3 folder is created for storing the results&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Connecting to Cluster via SSH and using PySpark to load data from Amazon S3
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't forget to enable SSH connections before trying to SSH into your cluster. The port 22 needs to be added to the cluster's master security group&lt;/p&gt;
&lt;/blockquote&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%2Fgk0td450qk1xt1c2omu1.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%2Fgk0td450qk1xt1c2omu1.PNG" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow the instructions accordingly to connect to your cluster if you are using Windows or Mac&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%2Filacizlyc78mwaeisp08.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%2Filacizlyc78mwaeisp08.PNG" alt=" " width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I’m on windows so, I used putty for the connection&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%2Fi3ekw5637987goo0q6g4.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%2Fi3ekw5637987goo0q6g4.PNG" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;code&gt;vi main.py&lt;/code&gt; command to create a Python file using the Vim editor&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;I&lt;/code&gt; on your keyboard and paste your code&lt;/li&gt;
&lt;li&gt;Press the &lt;code&gt;ECS key&lt;/code&gt; to exit the insert mode&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;:wq&lt;/code&gt; to quite the editor with saving your changes&lt;/li&gt;
&lt;li&gt;If you type &lt;code&gt;cat main.py&lt;/code&gt;, you can view your code&lt;/li&gt;
&lt;li&gt;To submit this spark job use &lt;code&gt;spark-submit [filename]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Your job will begin executing&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%2Froagv5mw87myz23237ge.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%2Froagv5mw87myz23237ge.PNG" alt=" " width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Viewing analysis results
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Your three print results can be viewed in the logs after completion&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%2Fr7nkedx02ncfq8w11ant.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%2Fr7nkedx02ncfq8w11ant.PNG" alt=" " width="800" height="69"&gt;&lt;/a&gt;&lt;/p&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%2Fmm2rgzfdunykprbvpvp5.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%2Fmm2rgzfdunykprbvpvp5.PNG" alt=" " width="800" height="88"&gt;&lt;/a&gt;&lt;/p&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%2Fgrwjbmu0kv886dv74qjf.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%2Fgrwjbmu0kv886dv74qjf.PNG" alt=" " width="800" height="96"&gt;&lt;/a&gt;&lt;/p&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%2F741yzxm6tt2hfmbxlnuo.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%2F741yzxm6tt2hfmbxlnuo.PNG" alt=" " width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can now see that the latest logs are stored in the logs folder in S3. Additionally, you'll notice a new folder named data-output that contains all output results with success files has been created for you&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%2Fuclzc8ugzpbj6qjdwdnj.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%2Fuclzc8ugzpbj6qjdwdnj.PNG" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&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%2F4lmnhxpu9z3jixc8roi9.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%2F4lmnhxpu9z3jixc8roi9.PNG" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&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%2Fr9sn21tl42kqiqe48yai.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%2Fr9sn21tl42kqiqe48yai.PNG" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Cleanup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You can then terminate the cluster to save money&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%2F3ol5xkt1ev1ujl2cfdwl.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%2F3ol5xkt1ev1ujl2cfdwl.PNG" alt=" " width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you terminate a cluster, all EC2 associated with it will also be terminated&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%2Fn6pb3l4gswiicufyh90y.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%2Fn6pb3l4gswiicufyh90y.PNG" alt=" " width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Recap
&lt;/h3&gt;

&lt;p&gt;This article showed how you can use EMR and Amazon S3 to process and analyze a vast amount of data collected from Stack Overflow developer survey to extract some useful insights&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Welcome to the end of this article, &lt;strong&gt;&lt;code&gt;Happy Clouding!&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;Let me know what do you think about it??&lt;/code&gt;&lt;/p&gt;

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