<?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>Forem: Owais Ali</title>
    <description>The latest articles on Forem by Owais Ali (@ows_ali).</description>
    <link>https://forem.com/ows_ali</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%2F112931%2Ff4981974-171f-4fd8-8362-2a716d2c4dd2.jpeg</url>
      <title>Forem: Owais Ali</title>
      <link>https://forem.com/ows_ali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ows_ali"/>
    <language>en</language>
    <item>
      <title>A Free Instagram Bot for Growing Your Follower Base</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Sat, 12 Dec 2020 09:14:24 +0000</pubDate>
      <link>https://forem.com/ows_ali/a-free-instagram-bot-for-growing-your-follower-base-5843</link>
      <guid>https://forem.com/ows_ali/a-free-instagram-bot-for-growing-your-follower-base-5843</guid>
      <description>&lt;p&gt;&lt;a href="https://medium.com/python-in-plain-english/a-free-instagram-bot-for-growing-your-follower-base-f7c52d8ad0ab?source=rss-a5279e4f0964------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GtHKNVkE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1614/1%2AQreiDxx1BoDr9_VfAc99nw.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The bot will follow people, like the posts and comment as well&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/python-in-plain-english/a-free-instagram-bot-for-growing-your-follower-base-f7c52d8ad0ab?source=rss-a5279e4f0964------2"&gt;Continue reading on Python In Plain English »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>selenium</category>
      <category>automation</category>
      <category>python</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>9 must-have Chrome extensions to make your life easier in 2020</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Tue, 22 Sep 2020 11:16:54 +0000</pubDate>
      <link>https://forem.com/ows_ali/9-must-have-chrome-extensions-to-make-your-life-easier-in-2020-1gmj</link>
      <guid>https://forem.com/ows_ali/9-must-have-chrome-extensions-to-make-your-life-easier-in-2020-1gmj</guid>
      <description>&lt;p&gt;&lt;a href="https://medium.com/an-idea/9-must-have-chrome-extensions-to-make-your-life-easier-in-2020-e467dda7390e?source=rss-a5279e4f0964------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hSiIEzIr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2600/0%2AlyDspnyjChhnBQDA" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A listicle of Chrome extensions for everyone&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/an-idea/9-must-have-chrome-extensions-to-make-your-life-easier-in-2020-e467dda7390e?source=rss-a5279e4f0964------2"&gt;Continue reading on An Idea »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>chrome</category>
      <category>google</category>
      <category>growth</category>
    </item>
    <item>
      <title>11 Facebook Groups of Medium Members to Join Today to Increase Readership</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Sat, 22 Aug 2020 14:53:52 +0000</pubDate>
      <link>https://forem.com/ows_ali/11-facebook-groups-of-medium-members-to-join-today-to-increase-readership-5bga</link>
      <guid>https://forem.com/ows_ali/11-facebook-groups-of-medium-members-to-join-today-to-increase-readership-5bga</guid>
      <description>&lt;p&gt;&lt;a href="https://medium.com/illumination/11-facebook-groups-of-medium-members-to-join-today-to-increase-readership-7c92c2aadddf?source=rss-a5279e4f0964------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C1R9aJpw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2600/0%2ARvmuXw-BHKm3wql4" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Market your articles through Facebook to thousands of Medium Members&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/illumination/11-facebook-groups-of-medium-members-to-join-today-to-increase-readership-7c92c2aadddf?source=rss-a5279e4f0964------2"&gt;Continue reading on ILLUMINATION »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>socialmedia</category>
      <category>facebook</category>
      <category>mediumwriters</category>
    </item>
    <item>
      <title>A Web Developer’s Roadmap to Learning React Native</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Mon, 27 Jul 2020 15:57:52 +0000</pubDate>
      <link>https://forem.com/ows_ali/a-web-developer-s-roadmap-to-learning-react-native-15ke</link>
      <guid>https://forem.com/ows_ali/a-web-developer-s-roadmap-to-learning-react-native-15ke</guid>
      <description>&lt;p&gt;&lt;a href="https://blog.bitsrc.io/a-web-developers-roadmap-to-learning-react-native-9e52f5d5d38e?source=rss-a5279e4f0964------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t5Y0kswj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2600/0%2AZsedY4osF1TVnLZS" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Is it really an easy switch from web to mobile development?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.bitsrc.io/a-web-developers-roadmap-to-learning-react-native-9e52f5d5d38e?source=rss-a5279e4f0964------2"&gt;Continue reading on Bits and Pieces »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>programming</category>
      <category>javascript</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>How to Host a Static Website on Github for Free</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Fri, 24 Jul 2020 13:01:01 +0000</pubDate>
      <link>https://forem.com/ows_ali/how-to-host-a-static-website-on-github-for-free-2pd1</link>
      <guid>https://forem.com/ows_ali/how-to-host-a-static-website-on-github-for-free-2pd1</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AAp-jYUPXcscYdYeJocJIUQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AAp-jYUPXcscYdYeJocJIUQ.jpeg" alt="cover photo showing a girl using laptop"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@soundtrap?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Soundtrap&lt;/a&gt; on &lt;a href="https://unsplash.com/t/business-work?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah, that’s right. Unlike many websites that require you to purchase hosting and domain, GitHub lets you upload a static website on their platform using Github Pages for free. Let’s make it clear that a static website means the content will not frequently change, i.e., a basic HTML and CSS site, which is a good starting point for beginners as well as experienced programmers. Let’s start by discussing why it is a good idea to host your website on GitHub.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reasons/Advantages to host your website on Github Page
&lt;/h4&gt;

&lt;p&gt;There can be a lot of reasons and advantages to hosting your website, the most prominent are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To make your profile, as many developers prefer to host their profile on Github&lt;/li&gt;
&lt;li&gt;To create a portfolio and showcase your skills to potential clients especially your front-end skills&lt;/li&gt;
&lt;li&gt;You want to set up your blog where you can share articles or how-to tutorials&lt;/li&gt;
&lt;li&gt;You already know basic Git, and you want to enhance your learning about Git further. In that case, I will suggest you learn about GitHub gist, GitHub actions, and CI/CD tools as well&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this article, we will discuss how to set up a website for free, what tools you need to have, what will be the URL when the site is published, how many sites you create on Github. So let’s keep moving.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let’s get started
&lt;/h3&gt;

&lt;p&gt;Hosting a website on GitHub page is not rocket science; instead, it is so simple that even if you have just started programming and knows basic HTML and CSS and basic Git commands like add, commit and push you can do that. If you do not see these git commands don’t worry, the commands we ll use will be explained as well. If you want to learn Git then I will suggest you read my another article to get yourself familiar with git basics:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/ows_ali/learn-git-and-github-step-by-step-18gm"&gt;Learn Git and Github Step By Step&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will be discussing two variants of hosting a website on Github. You can work on either one or both of them because most of the procedure is the same in variant 2. The difference is in the domain name when your site is live. So if you are creating a personal profile, then choose variant 1, its URL will be shorter, and if you are doing any other website, its URL will be longer, then choose variant 2.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variant 1: Hosting a personal page on GitHub with domain https://.github.io
&lt;/h3&gt;

&lt;p&gt;First, we will create a demo application, that works on our desktop PC&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Setup Git, Register GitHub account, and create a repository
&lt;/h4&gt;

&lt;p&gt;Go to &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;https://git-scm.com/downloads&lt;/a&gt; and download Git by choosing your operating system: Windows, Mac, or Linux and install.&lt;/p&gt;

&lt;p&gt;Then, go to &lt;a href="https://github.coma" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt; and sign up. After signing up, click on the plus sign and choose a new repository (a repository is like GitHub gives you a folder/directory where you keep your code files and folders on GitHub). When it asks you to enter a name, type the name in the format .github.io so since my username on GitHub is ows-ali, I will write ows-ali.github.io&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7On34IeWyc9aIZeSZo7gRg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7On34IeWyc9aIZeSZo7gRg.gif" alt="gif showing how to create a repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2: Clone the repository in your computer
&lt;/h4&gt;

&lt;p&gt;Now my repository will be created at https:/github.com/ows-ali/ows-ali.github.io. Now, in your laptop, create a new folder and in command prompt type:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

git clone https://github.com/&amp;lt;your\_username&amp;gt;/&amp;lt;your\_username&amp;gt;.github.io


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

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ANrln3TA1rplqNClvJQU3PA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ANrln3TA1rplqNClvJQU3PA.gif" alt="gif showing how to clone a repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: Add your website pages
&lt;/h4&gt;

&lt;p&gt;You will get an empty folder created on your laptop. Go inside the folder and add your project files. It can simply be a single index.html file or more project files like I have as below (yours will be different of course)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWqrQKMdAFDis46MGctxyYQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWqrQKMdAFDis46MGctxyYQ.png" alt="image of project files"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4: Push to GitHub
&lt;/h4&gt;

&lt;p&gt;Now the code is on your computer/laptop until now. We want to push the code on GitHub. For that, we use three commands: add, commit, and push. Now open the command prompt again and type the following commands as it is in order.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

git add .
git commit -m "my first commit"
git push origin master


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

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AE4Cu2AHo0SYQjJWtBR3kMQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AE4Cu2AHo0SYQjJWtBR3kMQ.gif" alt="gif showing how to push code on GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5: Boom! Access the published website on the internet
&lt;/h4&gt;

&lt;p&gt;Now, type the repository name from step 1 in your browser, and you will see your site live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ApzQxFWu8-pNIteKLSor-sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ApzQxFWu8-pNIteKLSor-sg.png" alt="image showing live site"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also visit my hosted site at &lt;a href="https://ows-ali.github.io" rel="noopener noreferrer"&gt;https://ows-ali.github.io&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Variant 2: Hosting any static website from your GitHub account with domain https://.github.io/
&lt;/h3&gt;

&lt;p&gt;If you want to host more than one website, you can do so easily and as many as you want. You can make a new repository or use an existing repository that has an index.html file.&lt;/p&gt;

&lt;p&gt;The hosted URL will be in the format https://.github.io/. Deploying any other repository is the same as we learned in variant 1 with the difference in the final step.&lt;/p&gt;

&lt;p&gt;Once you have pushed the code on Github go to Settings, navigate to Github Pages section, and select source as ‘master branch’ and then your repo will live as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AHRJQHBd7jritWxH2Uqa4sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AHRJQHBd7jritWxH2Uqa4sg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s all it in this tutorial. Also, I have listed a few important points below, hope it helps further.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your project must have an index.html file, for Github to recognize and host it.&lt;/li&gt;
&lt;li&gt;It is free. You don’t have to pay for hosting and not even domain.&lt;/li&gt;
&lt;li&gt;Even after your site is live, you can make as many updates as you want and they will go live. But it some times several minutes to reflect updated changes so please be patient.&lt;/li&gt;
&lt;li&gt;Unfortunately, it does not support any programming language like JAVA, PHP, Node, etc&lt;/li&gt;
&lt;li&gt;It does not support any databases&lt;/li&gt;
&lt;li&gt;Luckily, you can host as many sites on GitHub pages as you want for free.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hope you liked the article and it helped you in hosting a site on GitHub.&lt;/p&gt;

&lt;p&gt;Have a good day.&lt;/p&gt;




</description>
      <category>coding</category>
      <category>website</category>
      <category>programming</category>
      <category>live</category>
    </item>
    <item>
      <title>Build forms in React Native with tcomb-form-native</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Tue, 25 Feb 2020 13:40:02 +0000</pubDate>
      <link>https://forem.com/ows_ali/build-forms-in-react-native-with-tcomb-form-native-4abh</link>
      <guid>https://forem.com/ows_ali/build-forms-in-react-native-with-tcomb-form-native-4abh</guid>
      <description>&lt;p&gt;Building forms from scratch is hectic than we may imagine. tcomb-form-native is one powerful library, that helps building complex input forms having validation, maintain state on input or submit, or initializing the form with default values, styling the input fields etc. Here is the official link as well:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gcanti/tcomb-form-native"&gt;gcanti/tcomb-form-native&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, we will explore the library while writing example codes to see how it practically works.&lt;/p&gt;

&lt;p&gt;Let’s get started with obvious steps:&lt;/p&gt;

&lt;p&gt;Initializing new RN project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;react-native init tcombFormNativeTutorial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installing tcomb library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i --save tcomb-form-native
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Building first form:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lets build a new component in Tcomb.js which renders our form. tcomb automatically generates a form based on provided domain model, ‘PersonModel’ in our case, as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from 'react';
import { View } from 'react-native';
import t from 'tcomb-form-native'

let Form = t.form.Form
class Tcomb extends Component {
  constructor(props){
    super(props)
  }
  render() {
    let PersonModel = t.struct({
      name: t.String, // a required string
      surname: t.maybe(t.String), // an optional string
      age: t.Number, // a required number
      rememberMe: t.Boolean, // a boolean
    });
    return (
      &amp;lt;View&amp;gt;
       &amp;lt;Form
         ref='form'
         type={PersonModel}
         // options={{}}
         // value={{}}
         // onChange={{}}
       /&amp;gt;
      &amp;lt;/View&amp;gt;
    )
  }
}
export default Tcomb;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eT6h1g72--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ARbwa79HIukI-iA0d8CfvVQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eT6h1g72--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ARbwa79HIukI-iA0d8CfvVQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above form adds Text Input, Numeric and Boolean input fields. And notice, it adds labels on its own, and it adds mandatory validation by default and you need to use t.maybe() for optional fields (i.e. ‘surname’ in the above form).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validating input:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To verify the fields we call &lt;strong&gt;getValue()&lt;/strong&gt; function on form using ref. We will add a submit button and its handler which ultimately triggers the validation of the fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;submitForm() {
  var value = this.refs.personForm.getValue();
  if (value) {
    // if validation fails, value will be null
    ToastAndroid.show('Validation successful', ToastAndroid.SHORT);
  } else {
    ToastAndroid.show('Please fix errors', ToastAndroid.SHORT);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and in render&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;TouchableOpacity style={styles.button} onPress={this.submitForm}&amp;gt;
  &amp;lt;Text style={styles.buttonText}&amp;gt;Submit&amp;lt;/Text&amp;gt;
&amp;lt;/TouchableOpacity&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here is the result&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9lJPSL_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AifSu_J39f_NcLumATvqEcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9lJPSL_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AifSu_J39f_NcLumATvqEcg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Adding default values:
&lt;/h4&gt;

&lt;p&gt;Let’s add default values to our form. We add this.state.value in our constructor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;this.state = {
  value: {
    name: 'First',
    surname: 'Last',
    age: 25,
    rememberMe: true,
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and update form as follows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Form
  ref='personForm'
  type={PersonModel}
  // options={{}}
  value={this.state.value}
  // onChange={{}}
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Changing labels&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To change the label from ‘Name’ to ‘First Name’, we add options inside render:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let options = {
  fields: {
    name: {
      label: 'First Name',
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and update our form&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Form
  ref='personForm'
  type={PersonModel}
  options={options}
  value={this.state.value}
  // onChange={{}}
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Hint/Help Text:&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;let options = {
  fields: {
    name: {
      label: 'First Name',
      help: 'Must be less than 20 characters',
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---omBE79M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AVQwkGO21X7pz-BRUIhW_LQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---omBE79M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AVQwkGO21X7pz-BRUIhW_LQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Dropdown field:
&lt;/h4&gt;

&lt;p&gt;Let us add a dropdown field of gender:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let PersonModel = t.struct({
  name: t.String, // a required string
  surname: t.maybe(t.String), // an optional string
  age: t.Number, // a required number
  rememberMe: t.Boolean, // a boolean
  gender: t.enums({M: 'Male', F: 'Female'}, 'gender'),
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S8nPBadn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A3vWRI8L_XSMoPoOHH_mCYA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S8nPBadn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A3vWRI8L_XSMoPoOHH_mCYA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disabling fields:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here we disable the fields ‘age’, ‘rememberMe’ and ‘gender’. Notice, we sometimes use ‘editabale’ and sometimes ‘disabled’ configuration variables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let options = {
  fields: {
    name: {
      label: 'First Name',
    },
    age: {
      editable: false,
    },
    rememberMe: {
      editable: false,
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZTD6ceLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AgfHLmdYarhykVCj7WxykrA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZTD6ceLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AgfHLmdYarhykVCj7WxykrA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Conclusion:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;We built a simple form using tcomb-form-native library. We used textinput, dropdown, toggle switch, we also added mandatory validation and added a form submission handler. There will be another tutorial in the continuation where I will show how can you add custom advanced validation to the fields. This project is also uploaded on Github for reference:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ows-ali/tcombFormNativeTutorial"&gt;https://github.com/ows-ali/tcombFormNativeTutorial&lt;/a&gt;&lt;/p&gt;

</description>
      <category>forms</category>
      <category>mobileappdevelopment</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Set up a Yii 2.0 Application in Windows</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Wed, 07 Nov 2018 16:15:06 +0000</pubDate>
      <link>https://forem.com/ows_ali/set-up-a-yii-20-application-in-windows-52oa</link>
      <guid>https://forem.com/ows_ali/set-up-a-yii-20-application-in-windows-52oa</guid>
      <description>

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mSrwC8Ag--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/650/0%2A0Ci9Hikv6--WF2Dq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mSrwC8Ag--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/650/0%2A0Ci9Hikv6--WF2Dq.jpg" alt=""&gt;&lt;/a&gt;PHP Yii 2.0 Framework&lt;/p&gt;

&lt;p&gt;Let’s setup a Yii 2.0 Application on local PC. We will setup Yii 2.0 advanced application on Windows alongwith:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connection with MySQl&lt;/li&gt;
&lt;li&gt;Enabling Pretty URLs&lt;/li&gt;
&lt;li&gt;Virtual Hosts (for backend and frontend)&lt;/li&gt;
&lt;li&gt;Installing AdminLTE Theme&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Installing the project&lt;/h3&gt;

&lt;p&gt;Let’s install the application in our PC using Composer (you should install composer first if you don’t have already).&lt;/p&gt;

&lt;p&gt;Head over to your xampp/htdocs folder and run this command in cmd:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer create-project --prefer-dist yiisoft/yii2-app-advanced ows-yii2-application
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The application will be installed in ‘ows-yii2-application’ directory/folder. You can rename it according to your project name&lt;/p&gt;

&lt;p&gt;Enter into the folder ‘ows-yii2-application’ in cmd and then run the command:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;init
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Choose ‘0’ or ‘dev’ to initialize the application in development environment.&lt;/p&gt;

&lt;p&gt;Run the following command to install dependencies:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer install 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You now have the working application in your local PC. Turn on your Apache server using XAMPP/WAMP or any other server that you use and headover to&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;localhost/ows-yii2-application/backend/web&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;localhost/ows-yii2-application/frontend/web&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;DB Connection with MySQL&lt;/h3&gt;

&lt;p&gt;Make a database in your local machine with name ‘ows_database’. To connect to this database, go to common/config/main-local.php and set dbname to&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'dsn' =&amp;gt; 'mysql:host=localhost;dbname=ows\_database',
'username' =&amp;gt; 'root',
'password' =&amp;gt; ''
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;(and edit the username and password also if you have changed them otherwise leave it as it is)&lt;/p&gt;

&lt;p&gt;Now, run the command&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yii migrate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This will generate the user table in your database and RBAC tables as well for future use.&lt;/p&gt;

&lt;p&gt;Now, Go to&lt;br&gt;&lt;br&gt;
&lt;a href="http://localhost/practice/ows-application/frontend/web/index.php?r=site%2Fsignup"&gt;http://localhost/ows-yii2-application/frontend/web/index.php?r=site%2Fsignup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And create a user with&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;username&lt;/em&gt;&lt;/strong&gt; : &lt;em&gt;testusername&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;password&lt;/em&gt;&lt;/strong&gt; : &lt;em&gt;testpassword&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, you can login into the application using these credentials.&lt;/p&gt;

&lt;h3&gt;Enabling Pretty URLs&lt;/h3&gt;

&lt;p&gt;Currently, the URL looks like:&lt;br&gt;&lt;br&gt;
&lt;a href="http://localhost/ows-application/backend/web/index.php?r=site%2Flogin"&gt;http://localhost/ows-yii2-application/backend/web/index.php?r=site%2Flogin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;but we want it to be as follows:&lt;br&gt;&lt;br&gt;
&lt;a href="http://localhost/ows-application/backend/web/login"&gt;http://localhost/ows-yii2-application/backend/web/login&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to enable pretty URLs, go to backend\config\main.php and uncomment the following code in $components&lt;a href="do%20not%20forget%20to%20add%20the%20rules%20as%20well"&gt;‘urlManager’&lt;/a&gt;:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'urlManager' =&amp;gt; [
            'enablePrettyUrl' =&amp;gt; true,
            'showScriptName' =&amp;gt; false,
            'rules' =&amp;gt; [
                '&amp;lt;alias:\w+&amp;gt;' =&amp;gt; 'site/&amp;lt;alias&amp;gt;',
            ],
        ],
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Make a .htaccess file with the following code and place it in backend/web folder:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RewriteEngine on

RewriteCond %{REQUEST\_FILENAME} !-f
RewriteCond %{REQUEST\_FILENAME} !-d
RewriteRule . index.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Do the same in frontend application.&lt;/p&gt;

&lt;h3&gt;Virtual Hosts&lt;/h3&gt;

&lt;p&gt;Now, we want to run our backend and frontend applications from two different and easy to remember domains/server names. Like:&lt;/p&gt;

&lt;p&gt;admin.ows-yii2-application.com for backend application&lt;br&gt;&lt;br&gt;
and&lt;br&gt;&lt;br&gt;
ows-yii2-application.com for frontend application.&lt;/p&gt;

&lt;p&gt;In order to achieve that, copy and paste the following in your httpd-vhosts file, most likely on ‘xampp\apache\conf\extra\httpd-vhosts’ (Make sure to change the DocumentRoot to set it as your own web directory)&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;VirtualHost \*:80&amp;gt;
       ServerName admin.ows-yii2-application.com
       DocumentRoot "E:\xampp\htdocs\ows-yii2-application\backend\web"
&amp;lt;/VirtualHost&amp;gt;

&amp;lt;VirtualHost \*:80&amp;gt;
       ServerName ows-application.com
       DocumentRoot "E:\xampp\htdocs\ows-yii2-application\frontend\web"
&amp;lt;/VirtualHost&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and the following in your hosts file at C:\Windows\System32\drivers\etc (you may be required to open the file in Administrator mode):&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;127.0.0.1 admin.ows-yii2-application.com
127.0.0.1 ows-yii2-application.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Restart your Apache server.&lt;/p&gt;

&lt;p&gt;Now, you can access your backend and frontend applications on admin.ows-yii2-application.com and ows-yii2-application.com respectively.&lt;/p&gt;

&lt;h3&gt;Installing AdminLTE Theme in Yii 2.0 Application&lt;/h3&gt;

&lt;p&gt;Let’s now setup the AdminLTE Theme with our application as well. Run the following command&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composer require dmstr/yii2-adminlte-asset "^2.1"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now, go to frontend/config/main.php and add this in components[‘view’]&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'view' =&amp;gt; [
            'theme' =&amp;gt; [
                'pathMap' =&amp;gt; [
                    '@app/views' =&amp;gt; '@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'
                 ],
             ],
        ],
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Follow the similar steps for the backend application if you want to enable the AdminLTE theme in backend application too.&lt;/p&gt;

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

&lt;p&gt;So we have successfully set up our Yii 2.0 Application, a great PHP Framework. You can find all this stuff in my repository at:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/ows-ali/ows-yii2-application"&gt;https://github.com/ows-ali/ows-yii2-application&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you don’t understand anything. Also, if you are new to Github and want to learn the basics, then give it a read:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/ows_ali/learn-git-and-github-step-by-step-536i-temp-slug-5321610"&gt;Learn Git and Github Step By Step&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading. If you liked the article, please give it a clap.&lt;/p&gt;


</description>
      <category>framework</category>
      <category>phpdevelopers</category>
      <category>php</category>
      <category>yii2</category>
    </item>
    <item>
      <title>My first experience of Hacktoberfest</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Fri, 02 Nov 2018 10:47:51 +0000</pubDate>
      <link>https://forem.com/ows_ali/my-first-experience-of-hacktoberfest-4abf</link>
      <guid>https://forem.com/ows_ali/my-first-experience-of-hacktoberfest-4abf</guid>
      <description>

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kptyviQk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A6yIP3uJ_WYBQ0k60AzChaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kptyviQk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A6yIP3uJ_WYBQ0k60AzChaw.png" alt=""&gt;&lt;/a&gt;Starting contribution after Hacktoberfest&lt;/p&gt;

&lt;p&gt;I read about &lt;a href="https://hacktoberfest.digitalocean.com"&gt;Hacktoberfest&lt;/a&gt; on Yii 2 Twitter group. From getting confused to is it about hacking, to knowing what is PR, to start contributing a little and finally to opening my own repository &lt;a href="https://github.com/Hacktoberfest"&gt;ows-ali/Hacktoberfest&lt;/a&gt; dedicated for Hacktoberfest exclusively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MA__rm5G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ak3YWePugK1JR-Lw2LMgu8A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MA__rm5G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ak3YWePugK1JR-Lw2LMgu8A.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond my expectation, my repository got:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;80 Contributors (Around half lot of them were those who made their first ever contribution)&lt;/li&gt;
&lt;li&gt;514 Commits&lt;/li&gt;
&lt;li&gt;105 Forks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8pBMjgPD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/816/1%2AHFGBDLgTsyIF2kEILCJpxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8pBMjgPD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/816/1%2AHFGBDLgTsyIF2kEILCJpxw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, on 27th October since I had already completed more than 5 Pull Requests, I received the email (I did not wait to write article after receiving my shirt because I wanted to write all memories as soon as possible before they get blurred)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pEc9xxw8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/551/1%2AAM0zM0y2YhR46qL4DWS8Lw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pEc9xxw8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/551/1%2AAM0zM0y2YhR46qL4DWS8Lw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Learning Github&lt;/h3&gt;

&lt;p&gt;I have used Github before and already knew its basic commands since I have maintained some projects on Bitbucket. But I did not use it as open source platform before as you can see in the first image. Only in October I have been contributing consistently and will take this further Inshallah. During this month I learnt a lot of things that are worth sharing.&lt;/p&gt;

&lt;h4&gt;Issues, PR, Merging, Closing and Reverting a PR&lt;/h4&gt;

&lt;p&gt;Learnt the most important components required to contribute on open source projects i.e. Issues and PRs and how labels support the issue tracking.&lt;/p&gt;

&lt;h4&gt;Github Pages&lt;/h4&gt;

&lt;p&gt;Learnt about Github pages. Made my own &lt;a href="https://ows-ali.github.io"&gt;online profile&lt;/a&gt; on Github page and also added Jekyll theme to the &lt;a href="https://ows-ali.github.io/Hacktoberfest"&gt;repository&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Github Bots&lt;/h4&gt;

&lt;p&gt;Learnt about wonderful bots on Github. And used the bots (with the contribution of others of course to write messages) that welcome and appreciate the contributors when they create an issue, make their first ever PR on my repo or their first ever PR is merged on my repo.&lt;/p&gt;

&lt;h4&gt;Files like PR Template, Issue Template, Contributing, CodeOfConduct&lt;/h4&gt;

&lt;p&gt;Before participating in Hacktoberfest, I was not clearly aware of the need and concept behind these files but now I appreciate the repositories should have these files and I will try to make these files in my future repositories as well.&lt;/p&gt;

&lt;p&gt;If you are a beginner in Git and Github, you can learn the basics on my following article:&lt;/p&gt;

&lt;p&gt;&lt;a href="mailto:medium.com/@owaisali.cs"&gt;medium.com/@owaisali.cs&lt;/a&gt;/path-to-learning-git-and-github-be93518e06dc&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Mistakes&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Since it was my first repository opened for Hacktoberfest and my plan to improve my own learning, I knew that mistakes would be inevitable. So, it happened of course. Here are some of them.&lt;/p&gt;

&lt;h4&gt;Structure of files kept on changing&lt;/h4&gt;

&lt;p&gt;Initially, I started accepting contributions from those who have code on HackerRank only but seeing the interest all around the world I decided to accept others code as well so i had to make a folder for HackerRank and asked to make a new folder if they want to add code from a new platform.&lt;/p&gt;

&lt;p&gt;Besides that I created issues asking contributors to change the README file a lot of time to make it look better. You can see below how it started and how it looks now.&lt;/p&gt;

&lt;p&gt;From this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xS73HyVB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/758/1%2AaxDLszVPKgB6ELiBlNp8yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xS73HyVB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/758/1%2AaxDLszVPKgB6ELiBlNp8yg.png" alt=""&gt;&lt;/a&gt;Contributors v1&lt;/p&gt;

&lt;p&gt;To this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--arSz0G4d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/753/1%2AnhJYURXXeJTO4Gny4CtItQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--arSz0G4d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/753/1%2AnhJYURXXeJTO4Gny4CtItQ.png" alt=""&gt;&lt;/a&gt;Contributors v2&lt;/p&gt;

&lt;p&gt;And finally to this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6HPP0oAr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/808/1%2A2n5ITSpAHuuSvKYeDFFJiA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6HPP0oAr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/808/1%2A2n5ITSpAHuuSvKYeDFFJiA.png" alt=""&gt;&lt;/a&gt;Contributors v3&lt;/p&gt;

&lt;h4&gt;PR and Issue Templates were not defined earlier&lt;/h4&gt;

&lt;p&gt;It is a great way to remind people to check if they have fulfilled all the requirements of the PR or not. A lot of times I had to ask them that they have forgotten to add their names and info in README file.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;Exposure&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;During participating in Hacktoberfest, I also started using Twitter more and I came across some great trends there.&lt;/p&gt;

&lt;h4&gt;Trends&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;#100DaysOfCode (Interestingly I have also started this challenge but since I do not know whether I will be able to complete it or not, I did not mention it and you don’t know it)&lt;/li&gt;
&lt;li&gt;#301DaysOfCode&lt;/li&gt;
&lt;li&gt;#momscancode (A great initiative and startup to beat imposter syndrome faced by moms. If you are a busy house wife and want to learn coding then this is the best opportunity to learn with fun and other moms)&lt;/li&gt;
&lt;li&gt;#100DaysOfDataScience&lt;/li&gt;
&lt;li&gt;#DataScienceIn3Months&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Learning Platforms&lt;/h4&gt;

&lt;p&gt;I also came across a lot of learning platforms which are great for the beginners as well as the experts. I learnt over there, build projects there, fixed issues and contributed something in their repositories as well. Some of those platforms are&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;FreeCodeCamp (the most active, beginner friendly, user friendly, and completely free platform where anyone can learn Full Stack Web Development even from 0 experience in programming literally. I am also on my way to gain a certificate of Api and Microservices)&lt;/li&gt;
&lt;li&gt;TheOdinProject (Great for learning ROR)&lt;/li&gt;
&lt;li&gt;Exercism (Great for learning languages and getting your code reviewed from mentors)&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;I started contributing to Github, my October went almost all green and this is just the beginning. I will be doing a lot on open source from now onwards, to learn and grow myself, and to give back to the society. If you are looking for similar fun filled activities, I will recommend you to check the following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://24pullrequests.com/"&gt;24 Pull Requests&lt;/a&gt; (similar to Hacktoberfest but in December)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://summerofcode.withgoogle.com/"&gt;GSOC&lt;/a&gt; (If you are an undergrad student then this is a great opportunity for you to work on open source with big companies and earn some cash as well)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codein.withgoogle.com/"&gt;Google CodeIn&lt;/a&gt; (If you are pre university students then this one is great to expand your coding skills)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.theodinproject.com/"&gt;TheOdinProject&lt;/a&gt; (If you want to learn web development on ROR platform, from 0 to job ready, this one is great)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.momscancode.com/"&gt;MomsCan:Code&lt;/a&gt; ( As mentioned earlier, if you are a mom you can learn with other moms wherever you are)&lt;/li&gt;
&lt;li&gt;You can also earn cash prizes, T-shirts and other souvenirs by participating in the online coding platforms like &lt;a href="https://topcoder.com"&gt;TopCoder&lt;/a&gt;, &lt;a href="https://www.codechef.com"&gt;CodeChef&lt;/a&gt;, &lt;a href="https://www.hackerrank.com"&gt;HackerRank&lt;/a&gt; etc welcoming all skill levels and all programming languages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you liked the article, learnt something or found yourself motivated then you can appreciate with claps.&lt;/p&gt;


</description>
      <category>freecodecamp</category>
      <category>github</category>
      <category>opensource</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>Learn Git and Github Step By Step</title>
      <dc:creator>Owais Ali</dc:creator>
      <pubDate>Mon, 29 Oct 2018 13:08:57 +0000</pubDate>
      <link>https://forem.com/ows_ali/learn-git-and-github-step-by-step-18gm</link>
      <guid>https://forem.com/ows_ali/learn-git-and-github-step-by-step-18gm</guid>
      <description>

&lt;p&gt;Hey! In this post I am going to show you how you can start using the best version/revision control software today, none other than, Git.&lt;/p&gt;

&lt;p&gt;If you are starting with coding or you already know coding but not yet used Git before, then it is time to introduce yourself to this wonderful technology and this article is a good start to embark on your Git journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this article is a good read:&lt;/strong&gt;  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;This article is not going to tell you the syntax only, I am going to focus on what is the concept/working behind that command.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why even do Git/Github:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The best way to maintain/manage your project. You can access your project anywhere anytime&lt;/li&gt;
&lt;li&gt;When you work with a team then the issues of working on same files and other conflicts are handled carefully by Git&lt;/li&gt;
&lt;li&gt;Almost all Open Source world knows Git and since the code will be visible to everyone, people will be interested in contributing to your code as well&lt;/li&gt;
&lt;li&gt;It is free&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is my first post on Medium so there may be some mistakes or not up to the mark with Medium, so please bear with me.&lt;/p&gt;

&lt;p&gt;Enough now! Let’s begin the real stuff here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Github repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with a simple PHP project in your say ‘E:\’ drive and directory ‘E:\xampp\htdocs\testing’. (See below images)&lt;/p&gt;

&lt;p&gt;The target is to upload this project on Github.&lt;/p&gt;

&lt;p&gt;You need to have an account on Github which is free to create of course, so you must sign up if you haven’t. After signing in, click on ‘New repository’ and you will see a screen like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J6fDMkBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/694/1%2Afsa8yWFmIo4kVNGCzzF5RA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J6fDMkBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/694/1%2Afsa8yWFmIo4kVNGCzzF5RA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add the repository name of your choice (add description if you want) and click ‘create repository’.&lt;/p&gt;

&lt;p&gt;Now, open Command Prompt, by typing ‘cmd’ in start menu, and change directory to the ‘testing’ directory like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YIZJrcX2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/668/1%2AQD5Rz3nusJwuTb1wLx8PjQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YIZJrcX2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/668/1%2AQD5Rz3nusJwuTb1wLx8PjQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type ‘dir’ and you can see in the following picture we have only one file ‘index.php’ which we will be pushing to Github&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iNQQr6Nu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/675/1%2AjX30hbUV0QIc8bpIvDgIpA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iNQQr6Nu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/675/1%2AjX30hbUV0QIc8bpIvDgIpA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git on local&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, you need to tell the ‘testing’ folder that this is going to be a Github project. So, you need to initiate the ‘testing’ folder as local git repository. This simple command will do it&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git init&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will create a .git folder in testing folder and it means you are now ready to play with remote Github project. You probably be thinking how should I tell git that where my repository on Github is, so here is the command which tells what is the url of your Github repository:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git remote add origin &lt;a href="https://github.com/ows-ali/testing"&gt;https://github.com/ows-ali/testing&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In your case ows-ali/testing will be replaced by [your_username]/[your_repository_name]&lt;/p&gt;

&lt;p&gt;Now, you do&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git add .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This stages your files (&lt;em&gt;add&lt;/em&gt; command means you are prepared to make a commit to git and then push it, files can be removed after adding so this extra layer comes handy a lot of time).&lt;/p&gt;

&lt;p&gt;Now few things are useful to know about this command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;git add .&lt;/em&gt; add all the edited or new files to stage&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;git add index.php&lt;/em&gt; will only add index.php to stage and only this will be pushed to Github ultimately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, you are ready to make a commit&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git commit -m “first commit”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The commit is what takes the changes from your local repo to remote repository on Github (a commit can contain changes in one file, or many file, or creation or deletion of files etc)&lt;/p&gt;

&lt;p&gt;So, finally the most awaited command that will finally push your code on Github is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git push origin master&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now go ahead, check your repository, the index.php will be visible on your repository and it will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_lHx6wWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/723/1%2AZQNPVEwOYRpbmGDg7rzrxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_lHx6wWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/723/1%2AZQNPVEwOYRpbmGDg7rzrxw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introducing README Markdown file&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, in the above picture you see below that it is asking you to create a README file. Wait! that was not in the plan, I haven’t heard of it and probably my project does not have it. No worries, it is another beautiful and important file about Git projects and it is totally worth it to understand it. README.md is a markdown language which you can use to provide description about your project, also you need to follow a specific markdown styling to write. Oh but is that it? No, the most wonderful thing about README file is whenever you open your repository on Github, the Github will automatically show you the README.md file if it has any. Pretty Good, right.&lt;/p&gt;

&lt;p&gt;So well you can go back and create a file and push it following the above steps but we can also create files right from the repository as well. So, click on ‘Add a README’ and add your content as following or anything you like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a5-C0s3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/683/1%2AUG2CB4MIPTc5rJE1lYNrIQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a5-C0s3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/683/1%2AUG2CB4MIPTc5rJE1lYNrIQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on preview and you can see the changes before finalizing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rjOXD-Ot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/736/1%2A_SiG_ayYz89q8XHBm2awoA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rjOXD-Ot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/736/1%2A_SiG_ayYz89q8XHBm2awoA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can learn few styling here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;# is equivalent to &lt;h1&gt; tag in html (no closing required though like in html)&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;## is equivalent &lt;h2&gt; and so on&lt;/h2&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="link"&gt;text&lt;/a&gt; acts similar to &lt;a&gt; tag&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looks fine, now go ahead and type your commit message (remember commit is used to carry in all kind of changes to repository) and click commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b2b-nCtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/717/1%2AW-nELDyvKWz8BjJIma9Xww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b2b-nCtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/717/1%2AW-nELDyvKWz8BjJIma9Xww.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, your repository will look like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zMeBy_d3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/888/1%2Au0w2Is9xK9e9dMjcZ9xyTA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zMeBy_d3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/888/1%2Au0w2Is9xK9e9dMjcZ9xyTA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lovely! Looks much better.&lt;/p&gt;

&lt;p&gt;Ok, wait, there is a problem. Right! this README.md file is not in your local computer. Hmm..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull from remote Github repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here comes the command &lt;em&gt;pull.&lt;/em&gt; Open the command prompt in the project directory and type&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;git pull origin master&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mH_HTtjl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/667/1%2AcpgKvBuYeROJuOYXi9CdoQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mH_HTtjl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/667/1%2AcpgKvBuYeROJuOYXi9CdoQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seems wonderful. Now, the remote and local repositories are in sync. So this concludes our article here. You can have a glass of water if you feel like it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Going Beyond&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you got this, you can go ahead and learn about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learngitbranching.js.org/"&gt;Branching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github-bot-tutorial.readthedocs.io/en/latest/"&gt;Github Bots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.github.com/articles/what-is-github-pages/"&gt;Github Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://jekyllthemes.org/"&gt;Jekyll theme&lt;/a&gt; etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will hopefully write more on how can you dive into contributing into open source so stay tuned.&lt;/p&gt;

&lt;p&gt;It’s my first article but you already know that Medium has a wonderful clap feature, right? :)&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;


</description>
      <category>hacks</category>
      <category>markdown</category>
      <category>opensource</category>
      <category>github</category>
    </item>
  </channel>
</rss>
