<?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: Maedah Batool 👩‍💻</title>
    <description>The latest articles on DEV Community by Maedah Batool 👩‍💻 (@maedahbatool).</description>
    <link>https://dev.to/maedahbatool</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%2F33795%2F774f8c37-f11d-4225-b869-64744f77a836.jpeg</url>
      <title>DEV Community: Maedah Batool 👩‍💻</title>
      <link>https://dev.to/maedahbatool</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maedahbatool"/>
    <language>en</language>
    <item>
      <title>What Is Dwell Time &amp; Why It’s Important for SEO</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Thu, 25 Mar 2021 15:23:50 +0000</pubDate>
      <link>https://dev.to/maedahbatool/what-is-dwell-time-why-it-s-important-for-seo-1bi8</link>
      <guid>https://dev.to/maedahbatool/what-is-dwell-time-why-it-s-important-for-seo-1bi8</guid>
      <description>&lt;p&gt;To browse something from Google, you know the drill. Type inside the search bar with the most related keyword, and Google generously delivers hundreds and thousands of results.&lt;/p&gt;

&lt;p&gt;The chances are that you’ll click the very first URL that appears in the SERPs (Search Engine Result Pages). Why? Because your brain tells that the first link is the most related and authentic out of the lot.&lt;/p&gt;

&lt;p&gt;You click the URL, and after scrolling through the site content, you decide to return to the search page because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You didn’t get the desired info&lt;/li&gt;
&lt;li&gt;You had a bad site experience, or&lt;/li&gt;
&lt;li&gt;Diversity — you want to find out what other sites offer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cME1A0uv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://maedahbatool.com/wp-content/uploads/2021/03/dhztnlvne8m-scaled.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cME1A0uv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://maedahbatool.com/wp-content/uploads/2021/03/dhztnlvne8m-scaled.jpg" alt="dwell time seo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what is dwell time?
&lt;/h2&gt;

&lt;p&gt;This entire loop of time which started from &lt;strong&gt;clicking on a web URL till you return to SERPs&lt;/strong&gt; for some other website, is called the “ &lt;strong&gt;Dwell Time&lt;/strong&gt;.”&lt;/p&gt;

&lt;p&gt;See, you’ve done this several times, and in the context of SEO, dwell time is an important metric that websites need to monitor.&lt;/p&gt;

&lt;h3&gt;
  
  
  How dwell time works?
&lt;/h3&gt;

&lt;p&gt;Basically, the duration of dwell time helps Google understands how likable is your website’s content. E.g., for the first SERP result (website A), you spend 5 seconds on a website. The second search result (website B) brings more value and piques your interest. This makes you spend good solid 5 minutes before you jump to another site (website C).&lt;/p&gt;

&lt;p&gt;Your 5 minutes stay on website B is far more impactful than website A. This user-generated feedback helps Google learn that the second website adds more value for readers. Now let’s consider that the same trend continues by other readers as well. The result will be that Google will improve website B’s ranking and places it in the first spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to measure dwell time?
&lt;/h2&gt;

&lt;p&gt;There isn’t any hard and fast rule to measure the dwell time since Google Analytics does not offer an exclusive filter to calculate it. On the contrary, with Google Analytics, you can learn about your website’s &lt;strong&gt;Avg. Session Duration,&lt;/strong&gt; i.e., the average time a site visitor spends after they land on that page.&lt;/p&gt;

&lt;p&gt;This span is relatively quite close to your website’s dwell time. To do so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to Google Analytics&lt;/li&gt;
&lt;li&gt;Go to Behavior ❯ Site Content ❯ Landing Pages&lt;/li&gt;
&lt;li&gt;Create a segment that lets you view only the Organic Traffic&lt;/li&gt;
&lt;li&gt;Done! Now you can view the time visitors spend on each page of your site&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips to improve dwell time
&lt;/h2&gt;

&lt;p&gt;Dwell time is quite subjective in that it gets affected by the entire SEO strategy of a website. So, if you ask me what are the tips to improve the dwell time, then here are some of the best practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embed videos in your site content&lt;/li&gt;
&lt;li&gt;Improve page load time if the site loads slowly&lt;/li&gt;
&lt;li&gt;Write long-form content approx. more than 1000 words&lt;/li&gt;
&lt;li&gt;Website content should be mobile friendly and optimized for different screen sizes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Was this piece helpful? I have also written a piece about why i&lt;a href="https://maedahbatool.com/invest-in-a-good-seo-suite-for-writing-web-content/"&gt;nvesting in a good SEO suite is important&lt;/a&gt;. Reading it might be helpful.&lt;/p&gt;

&lt;p&gt;Also, please share your feedback through the comments section below, and for any further queries you can reach out to me through my &lt;a href="https://twitter.com/MaedahBatool"&gt;Twitter account&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://maedahbatool.com/what-is-dwell-time/"&gt;What Is Dwell Time &amp;amp; Why It’s Important for SEO&lt;/a&gt; appeared first on &lt;a href="https://maedahbatool.com"&gt;Maedah Batool&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>techwriting</category>
      <category>google</category>
      <category>pagerank</category>
      <category>seo</category>
    </item>
    <item>
      <title>3 Projects To Have in Your Technical Writing Portfolio</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Tue, 05 Jan 2021 08:39:53 +0000</pubDate>
      <link>https://dev.to/maedahbatool/3-projects-to-have-in-your-technical-writing-portfolio-5bmd</link>
      <guid>https://dev.to/maedahbatool/3-projects-to-have-in-your-technical-writing-portfolio-5bmd</guid>
      <description>&lt;p&gt;Growing your career in &lt;strong&gt;technical content writing&lt;/strong&gt; can be somewhat tricky. Because there isn’t a well-defined route that is accustomed to other tech positions like full-stack web developer, solution architect, or web designer.&lt;/p&gt;

&lt;p&gt;However, you can build a technical writing portfolio worthy of being hand-picked by recruiters and hiring managers quite easily. This is possible if you have at least these &lt;strong&gt;three types of projects&lt;/strong&gt; in your content portfolio.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hands-on tutorial&lt;/li&gt;
&lt;li&gt;Long-form reviews&lt;/li&gt;
&lt;li&gt;Guides/reference documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Hands-on Tutorial
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;hands-on tutorial&lt;/strong&gt; is a step-by-step learning material that teaches your audience about how you use a product and build something with it.&lt;/p&gt;

&lt;p&gt;Generally, this is an &lt;strong&gt;800-1200 words&lt;/strong&gt; piece that includes a detailed explanation of all the important steps of the build process. Coupled with explanatory &lt;strong&gt;screenshots&lt;/strong&gt; , &lt;strong&gt;code configurations&lt;/strong&gt; , and &lt;strong&gt;GIFs&lt;/strong&gt; , this type of content is the best way to explain your perspective and experience of using a particular product.&lt;/p&gt;

&lt;p&gt;Content of this type is titled generally as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to do &lt;em&gt;this&lt;/em&gt; …&lt;/li&gt;
&lt;li&gt;Building &lt;em&gt;this&lt;/em&gt; with …&lt;/li&gt;
&lt;li&gt;Creating your first &lt;em&gt;this&lt;/em&gt; with …&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Long-Form Content
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Long-form content&lt;/strong&gt; is a lengthy piece anywhere between &lt;strong&gt;1000 and 3000&lt;/strong&gt; words. It’s aimed to provide in-depth analysis and lots of information about a given &lt;strong&gt;product&lt;/strong&gt; , a &lt;strong&gt;concept&lt;/strong&gt; , or some on-going &lt;strong&gt;tech trend&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Apart from just length, long-form content also requires you to think &lt;strong&gt;critically&lt;/strong&gt; about a topic. Other than the key details, readers would want to learn about your perspective and opinion. And this matters significantly if you are a published and a featured author.&lt;/p&gt;

&lt;p&gt;In that case, your take on the matter would affect your audience the most. You have the power to gauge several leads into conversions.&lt;/p&gt;

&lt;p&gt;The titles of long-form content are &lt;strong&gt;statement-based&lt;/strong&gt; and &lt;strong&gt;facts-based&lt;/strong&gt; like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Will Next.js Be Like In 10 Years?&lt;/li&gt;
&lt;li&gt;15 of the Best VSCode Themes for You in 2021&lt;/li&gt;
&lt;li&gt;Build a Blog with Next.js: A Beginner’s Guide for 2021&lt;/li&gt;
&lt;li&gt;AWS vs Vercel vs Netlify: What Are the Differences and When to Use Which Platform?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. User Guides &amp;amp; Reference Documentation
&lt;/h2&gt;

&lt;p&gt;A  &lt;strong&gt;user guide/reference docs&lt;/strong&gt; are generally a detailed book-length content showcasing all the essential information and instruction about a software product. It features sections like &lt;strong&gt;installation&lt;/strong&gt; , &lt;strong&gt;usage&lt;/strong&gt; , &lt;strong&gt;configuration&lt;/strong&gt; , &lt;strong&gt;customization&lt;/strong&gt; , &lt;strong&gt;error handling&lt;/strong&gt; , &lt;strong&gt;troubleshooting&lt;/strong&gt; , in short, everything possible that can be built using a product.&lt;/p&gt;

&lt;p&gt;A user guide is considered short if it is about 10 pages and long otherwise. But writing projects like these aren’t easy to get. Developers tend to write it themselves since they know the product best or hire some pro-tech writer with good experience.&lt;/p&gt;

&lt;p&gt;In this case, a great opportunity that can be tapped on is to start contributing to free and open-source software. Jump over to GitHub and start helping developers document their open-source work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are these three project types enough?
&lt;/h2&gt;

&lt;p&gt;To grab a good technical writer position these three types of content projects are &lt;strong&gt;fairly&lt;/strong&gt; good. But you should never hold yourself from innovating and being versatile. Keep writing rich and informative content targeted at the right audience.&lt;a href="https://writy.io/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lLmDCsNQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://maedahbatool.com/wp-content/uploads/2021/01/Writy.png" alt="writy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Moreover, I am writing an e-book about a holistic content workflow that helps you to “ &lt;strong&gt;Write&lt;/strong&gt; , &lt;strong&gt;Publish&lt;/strong&gt; , and &lt;strong&gt;Market&lt;/strong&gt; ” your technical content. It’s called “ &lt;strong&gt;Content For Developers&lt;/strong&gt; “.&lt;/p&gt;

&lt;p&gt;Professional &lt;strong&gt;30+ Tips&lt;/strong&gt; from a featured author with 10+ years of experience.&lt;/p&gt;

&lt;p&gt;Currently, availble for pre-order sale at 65% discount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grab your copy → &lt;a href="https://Writy.io"&gt;https://Writy.io&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The post &lt;a href="https://maedahbatool.com/3-projects-to-have-in-your-technical-writing-portfolio/"&gt;3 Projects To Have in Your Technical Writing Portfolio&lt;/a&gt; appeared first on &lt;a href="https://maedahbatool.com"&gt;Maedah Batool&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>techwriting</category>
    </item>
    <item>
      <title>Invest in A Good SEO Suite for Writing Web Content</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Thu, 03 Sep 2020 10:00:39 +0000</pubDate>
      <link>https://dev.to/maedahbatool/invest-in-a-good-seo-suite-for-writing-web-content-3cc7</link>
      <guid>https://dev.to/maedahbatool/invest-in-a-good-seo-suite-for-writing-web-content-3cc7</guid>
      <description>&lt;p&gt;I call it a total waste of time, revenue, and effort if you are writing web content and not investing in a good SEO suite. The main idea to write and make it public is that you want the others to know about your thoughts, ideas, or your product and services from a business standpoint. And if it is not reaching your target audience then everything will go in vain.&lt;/p&gt;

&lt;h3&gt;
  
  
  How good should your SEO toolkit be?
&lt;/h3&gt;

&lt;p&gt;A good SEO suite should take care of all the essential SEO needs that your content requires. Some SEO toolkits are bombarded with so many configuration options that you need a good deal of time first to understand these options and then configuring them according to your needs. On the contrary, other solutions might carry so few options that you can’t even fulfill the basic requirements from it.&lt;/p&gt;

&lt;p&gt;An ideal way to make your pick is to first curate a list of essential SEO steps and they choose the suite wisely and accordingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic SEO needs
&lt;/h3&gt;

&lt;p&gt;Now I’ll help you understand what basic requirements should your SEO toolkit fulfills. I normally prefer a tool that helps me achieve the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical SEO&lt;/li&gt;
&lt;li&gt;Targetted keyword research&lt;/li&gt;
&lt;li&gt;Rank tracking mechanism&lt;/li&gt;
&lt;li&gt;Backlink analysis&lt;/li&gt;
&lt;li&gt;Video SEO&lt;/li&gt;
&lt;li&gt;Link building&lt;/li&gt;
&lt;li&gt;Content optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on the above-mentioned features, I then narrow down my search to going for either a &lt;em&gt;free&lt;/em&gt; or a &lt;em&gt;paid&lt;/em&gt; solution.&lt;/p&gt;

&lt;p&gt;Following these steps can help you choose an intuitive SEO suite. Choosing an SEO suite is a one-time effort that you should do to ensure that your content reaches your targetted audience. Also, you should keep searching for better options with time because SEO companies continue and innovate with new and exciting features. So, if you are sticking with a paid solution chances are that you find the same variant for free or a much better variant at less price.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://maedahbatool.com/invest-in-a-good-seo-suite-for-writing-web-content/"&gt;Invest in A Good SEO Suite for Writing Web Content&lt;/a&gt; appeared first on &lt;a href="https://maedahbatool.com"&gt;Maedah Batool&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>development</category>
      <category>seo</category>
      <category>seotools</category>
      <category>wordpressseo</category>
    </item>
    <item>
      <title>My Closed Captions Writing Workflow in ScreenFlow</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Tue, 07 Apr 2020 13:46:20 +0000</pubDate>
      <link>https://dev.to/maedahbatool/my-closed-captions-writing-workflow-in-screenflow-200c</link>
      <guid>https://dev.to/maedahbatool/my-closed-captions-writing-workflow-in-screenflow-200c</guid>
      <description>&lt;p&gt;Every time I write closed captions for my videos I tend to forget how I did that the last time. So, this post is not only a reference guide for myself but also for my awesome readers who want to learn how you can add closed captioning to your videos.&lt;/p&gt;

&lt;p&gt;First, let's start with the basics.&lt;/p&gt;

&lt;h2&gt;What are closed captions?&lt;/h2&gt;

&lt;p&gt;Closed captioning is essentially the subtitles or simply an overlaid text written on top of any video as it plays. This means that apart from just the audio and video you also get to read as you walk through any tutorial. Closed captions are super helpful from the accessibility point of view and are always considered as a good a11y practice.&lt;/p&gt;

&lt;h2&gt;My closed captioning workflow&lt;/h2&gt;

&lt;p&gt;I use ScreenFlow to record and edit my videos. So, this article will primarily focus on how you can write closed captions in ScreenFlow.&lt;/p&gt;

&lt;p&gt;ScreenFlow offers an awesome caption editor to add, edit, and publish subtitles as caption tracks to a project. The closed captions track is not included by default at the time of recording a new video you need to enable it whenever needed.&lt;/p&gt;

&lt;p&gt;I include captions in the screencast when I export the project into one of the suitable video formats (generally it is mp4).&lt;/p&gt;

&lt;p&gt;Consider that I have one such video opened in my ScreenFlow editor ready to be closed captioned.&lt;/p&gt;

&lt;p&gt;The first step is to enable the Captions track. Two settings need to be configured:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Go to the menu [&lt;strong&gt;View&lt;/strong&gt;] ❯ [&lt;strong&gt;Show Captions&lt;/strong&gt;] enable it.&lt;/li&gt;
    &lt;li&gt;Then again go to [&lt;strong&gt;View&lt;/strong&gt;] ❯ [&lt;strong&gt;Show Caption Track&lt;/strong&gt;] enable it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These will add another track called the Caption Track right on top of the video.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XFFMLJee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/maedahbatool/image/upload/v1586263071/Image-2020-04-07-at-5.36.44-PM.png" class="article-body-image-wrapper"&gt;&lt;img class="aligncenter size-full wp-image-3063" src="https://res.cloudinary.com/practicaldev/image/fetch/s--XFFMLJee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/maedahbatool/image/upload/v1586263071/Image-2020-04-07-at-5.36.44-PM.png" alt="" width="1865" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, it's time to define some shortcuts to add these captions. To do so:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Select the [&lt;strong&gt;ScreenFlow&lt;/strong&gt;] menu&lt;/li&gt;
    &lt;li&gt;Click [&lt;strong&gt;Preferences&lt;/strong&gt;].&lt;/li&gt;
    &lt;li&gt;Click the [&lt;strong&gt;Shortcuts&lt;/strong&gt;] tab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following are my shortcuts for quickly writing the closed captions.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Play Caption Track: &lt;strong&gt; Command (⌘) + P&lt;/strong&gt;
&lt;/li&gt;
    &lt;li&gt;Next Caption Track: &lt;strong&gt;Command (⌘) + ]&lt;/strong&gt;
&lt;/li&gt;
    &lt;li&gt;Previous Caption Track: &lt;strong&gt;Command (⌘) + [&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a quick 1-minute illustration of how I close captions my videos.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/rY96ABZsfkQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The workflow goes like this:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;After importing the video file enable [&lt;strong&gt;View&lt;/strong&gt;] ❯ [&lt;strong&gt;Show Captions&lt;/strong&gt;] and &lt;span&gt;[&lt;/span&gt;&lt;strong&gt;View&lt;/strong&gt;&lt;span&gt;] ❯ [&lt;/span&gt;&lt;strong&gt;Show Caption Track&lt;/strong&gt;&lt;span&gt;]&lt;/span&gt; option from the View menu.&lt;/li&gt;
    &lt;li&gt;This adds another grey-colored track right at the top of your timeline. This is the captions track which we just enabled.&lt;/li&gt;
    &lt;li&gt;Try clicking through it and you find it divided into several sections.&lt;/li&gt;
    &lt;li&gt;Each section can be treated as a caption block.&lt;/li&gt;
    &lt;li&gt;Click one section and a writing box pops up where you can write the captions.&lt;/li&gt;
    &lt;li&gt;To play the caption track hit &lt;strong&gt;Command (⌘) + P&lt;/strong&gt; write the text and then hit &lt;strong&gt;Command (⌘) + ]&lt;/strong&gt; to jump to the next caption track. Anytime, you want to jump back to the previous caption track hit &lt;strong&gt;Command (⌘) + [&lt;/strong&gt; shortcut.&lt;/li&gt;
    &lt;li&gt;In this way continue with this sequence and start filling your captions track. It will take some time to get yourself accustomed to this flow.&lt;/li&gt;
    &lt;li&gt;Finally, try playing your track and the captions appear successfully with your playing video.&lt;/li&gt;
    &lt;li&gt;Now go to [&lt;strong&gt;Edit&lt;/strong&gt;] ❯ [&lt;strong&gt;Captions&lt;/strong&gt;] ❯ [&lt;strong&gt;Export to SRT&lt;/strong&gt;] and export the SRT file to be uploaded with the video.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caption tracks can be created in multiple languages. You can also export captions as an SRT subtitle file. Now with your own personalized shortcuts configuration, you can close caption your videos quite easily.&lt;/p&gt;

&lt;p&gt;Do you find this article helpful? Let me know by posting your comments in the field below.&lt;/p&gt;

</description>
      <category>video</category>
      <category>screenflow</category>
      <category>closedcaptions</category>
    </item>
    <item>
      <title>Embedding Videos in Your Gatsby.js Sites</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Wed, 09 Oct 2019 14:12:30 +0000</pubDate>
      <link>https://dev.to/maedahbatool/embedding-videos-in-your-gatsby-js-sites-46e0</link>
      <guid>https://dev.to/maedahbatool/embedding-videos-in-your-gatsby-js-sites-46e0</guid>
      <description>&lt;p&gt;Media elements like images, videos, and GIFs in blog posts and websites are becoming prominent day by day. Also, Gatsby-powered websites are the recent trend and people are very excited about #JAMstack. &lt;/p&gt;

&lt;p&gt;When we talk about embedding/rendering these media elements we find different ways of doing it. Moreover, the process is not the same. It varies from one framework to another. &lt;/p&gt;

&lt;p&gt;Talking about Gatsby specifically, then videos can be embedded either through a custom  solution or by using &lt;code&gt;remark&lt;/code&gt; plugins.&lt;/p&gt;

&lt;p&gt;I'll be sharing an easier way of doing it. There is this incredible Gatsby plugin called &lt;code&gt;gatsby-remark-embed-video&lt;/code&gt; which helps you embed videos from multiple video hosts like YouTube, Vimeo, etc.&lt;/p&gt;

&lt;p&gt;I have written an in-depth tutorial where you can learn the entire process. &lt;strong&gt;&lt;a href="https://scotch.io/tutorials/embedding-videos-in-your-gatsbyjs-sites"&gt;You can find it here →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go through it and trying adding videos yourself. Let me know if you come across any difficulty. I'll be glad to assist.&lt;/p&gt;

&lt;p&gt;I also tweeted about it and you can follow me &lt;a href="https://twitter.com/MaedahBatool"&gt;@MaeadhBatool&lt;/a&gt;&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--lp4ncyze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/546347319407280128/xHQ-ILS3_normal.jpeg" alt="Maedah.dev 👩‍💻 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Maedah.dev 👩‍💻
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/maedahbatool"&gt;@maedahbatool&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      ⚡️ Videos are rendered differently and the process varies from one framework to another.&lt;br&gt;&lt;br&gt;Learn how to embed videos in your @Gatsbyjs sites&lt;br&gt;&lt;br&gt;🔘 Use `gatsby-remark-embed-video` plugin&lt;br&gt;🔘 With easy config options&lt;br&gt;&lt;br&gt;Wrote an in-depth tutorial &lt;a href="https://twitter.com/scotch_io"&gt;@scotch_io&lt;/a&gt; ⬇️&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/GplIigcyWn"&gt;scotch.io/tutorials/embe…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      13:35 PM - 09 Oct 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1181926159505907712" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1181926159505907712" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      1
      &lt;a href="https://twitter.com/intent/like?tweet_id=1181926159505907712" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      1
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>gatsby</category>
      <category>react</category>
      <category>jamstack</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Solving Queries About Gatsby.js and WordPress</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Mon, 07 Oct 2019 15:22:30 +0000</pubDate>
      <link>https://dev.to/maedahbatool/solving-queries-about-gatsby-js-and-wordpress-3d8e</link>
      <guid>https://dev.to/maedahbatool/solving-queries-about-gatsby-js-and-wordpress-3d8e</guid>
      <description>&lt;p&gt;Last month I had a chance to speak about my favorite JAMstack framework &lt;strong&gt;Gatsby.js&lt;/strong&gt; on the &lt;em&gt;&lt;a href="https://twitter.com/MaedahBatool/status/1176875419368329218"&gt;WordSesh EMEA 2019 edition&lt;/a&gt;&lt;/em&gt;. In case, you'd been following me and my work then, you must know that for the last 2.5 years I had been shifting gears to JavaScript and had been doing JAMstack consultancy.&lt;/p&gt;

&lt;p&gt;I just love &lt;strong&gt;JAMstack with Gatsby and Netlify&lt;/strong&gt;. This is why I write about it regularly in magazines like &lt;a href="https://scotch.io/@MaedahBatool"&gt;Scotch.io&lt;/a&gt; and have delivered talks on events like &lt;a href="https://wordsesh.com/"&gt;WordSesh&lt;/a&gt; and &lt;a href="https://2018.theopendev.com/"&gt;TheOpenDevCon&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎙 Speaking Engagements About Gatsby
&lt;/h2&gt;

&lt;p&gt;This year, I presented twice on WordSesh and both talks were about Gatsby. The topics are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡️ &lt;a href="https://www.youtube.com/watch?v=CzdMT7K2y9c"&gt;Fast Web With Gatsby &amp;amp; WordPress&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;👾 &lt;a href="https://www.youtube.com/watch?v=vFQEhEhtJyo"&gt;Optimizing Your Gatsby.js Site for Production&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have uploaded both these sessions on my YouTube channel. Feel free to subscribe and view these.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚴‍♀️ Optimizing Gatsby.js Site for Production
&lt;/h2&gt;

&lt;p&gt;The topic primarily covered all the important steps which should be implemented and configured before your Gatsby-powered website goes live.&lt;/p&gt;

&lt;p&gt;I discussed the implementation of functionalities like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding custom sitemaps&lt;/li&gt;
&lt;li&gt;Support for rendering markdown pages&lt;/li&gt;
&lt;li&gt;Embedding videos from multiple video sources&lt;/li&gt;
&lt;li&gt;Adding an RSS Feed file making your site content subscribable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I plan to write individual blog posts about each of these features which I’ll share some time later.&lt;/p&gt;

&lt;p&gt;For now, here are the links to the demo project’s GitHub repo and the presentation deck.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌟 GitHub repo → &lt;a href="https://github.com/MaedahBatool/WordSesh-Sept-2019"&gt;https://Maedah.dev/WDSEPGH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;👩‍🏫 Slides → &lt;a href="https://www.slideshare.net/MaedahBatool/wordsesh-emea-2019"&gt;https://Maedah.dev/WDSlidesSep19&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐦 Tweet → &lt;a href="https://twitter.com/MaedahBatool/status/1176875419368329218"&gt;https://twitter.com/MaedahBatool/stat...&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⁉️ Async Q&amp;amp;As
&lt;/h3&gt;

&lt;p&gt;This time, Brian experimented with the async Q&amp;amp;A session. Event attendees were provided with a questionnaire through which they asked written questions.&lt;/p&gt;

&lt;p&gt;So, I thought about sharing the answers to these queries from which you folks can benefit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can We Make Complex Woocommerce Sites With Gatsby? Is It Worth to Do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, you can definitely build WooComerce-powered WordPress sites with Gatsby that will pull the data from a REST API. Some time back, I tried building one such website using the &lt;strong&gt;&lt;a href="https://github.com/marcaaron/gatsby-source-woocommerce"&gt;gatsby-source-woocommerce&lt;/a&gt;&lt;/strong&gt; plugin. This package helps to fetch data from protected routes using the &lt;a href="http://woocommerce.github.io/woocommerce-rest-api-docs/"&gt;WooCommerce REST API&lt;/a&gt; with all the required credentials.&lt;/p&gt;

&lt;p&gt;WooCommerce offers a pretty robust API for handling stuff like products, orders, customers, reports, and discount coupons. By using this plugin, you can implement simple GraphQL filters and data variations as a set state to filter products according to your site requirements.&lt;/p&gt;

&lt;p&gt;Moreover, since Gatsby does not has a default back-end you might face difficulty in handling the dynamic side of an eCommerce site like the checkout process. For it, you need to run ajax calls which are easier to handle with Gatsby since it is built with React.js.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Our Website Has No WordPress Admin System, How We Can Provide Access for Editors to Publish New Content?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If there is WordPress there is &lt;strong&gt;always going to be an admin system&lt;/strong&gt;. That's one of the key reasons for using WordPress with Gatsby that it provides a very powerful and strong back-end since Gatsby only offers blazing-fast front-end with modern cutting edge technologies.&lt;/p&gt;

&lt;p&gt;But at the same time, you can always code a custom admin system for your website. Just feed in data to Gatsby and generate this functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  👋 That's about it!
&lt;/h2&gt;

&lt;p&gt;If you have any further queries do share your feedback via the comments section below. You can also reach out to me through my Twitter account. Follow me here → &lt;a href="https://twitter.com/MaedahBatool"&gt;@MaedahBatool&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>react</category>
      <category>jamstack</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Optimizing Your Gatsby.js Site for Production</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Mon, 30 Sep 2019 07:19:47 +0000</pubDate>
      <link>https://dev.to/maedahbatool/optimizing-your-gatsby-js-site-for-production-57om</link>
      <guid>https://dev.to/maedahbatool/optimizing-your-gatsby-js-site-for-production-57om</guid>
      <description>&lt;p&gt;I spoke about &lt;strong&gt;“Optimizing Your Gatsby.js Site for Production”&lt;/strong&gt; at WordSesh EMEA 2019 edition. Thanks a ton to my friend &lt;a href="https://twitter.com/rzen"&gt;Brian Richards&lt;/a&gt; for having me once again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talk Highlights
&lt;/h2&gt;

&lt;p&gt;The topic primarily covered all the important steps which should be implemented and configured before your Gatsby-powered website goes live. The reason why I specifically chose Gatsby sites is that I love JAMstack and being the latest trend developers are now shifting gears to it.&lt;/p&gt;

&lt;p&gt;I discussed the implementation of functionalities like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding custom sitemaps&lt;/li&gt;
&lt;li&gt;Support for rendering markdown pages&lt;/li&gt;
&lt;li&gt;Embedding videos from multiple video sources&lt;/li&gt;
&lt;li&gt;Adding an RSS Feed file making your site content subscribable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I plan to write individual blog posts about each of these features which I’ll share some time later.&lt;/p&gt;

&lt;p&gt;For now, here are the links to the demo project’s GitHub repo and the presentation deck.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌟 GitHub repo → &lt;a href="https://Maedah.dev/WDSEPGH"&gt;https://Maedah.dev/WDSEPGH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;👩‍🏫 Slides → &lt;a href="https://Maedah.dev/WDSlidesSep19"&gt;https://Maedah.dev/WDSlidesSep19&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I even tweeted about it:&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--lp4ncyze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/546347319407280128/xHQ-ILS3_normal.jpeg" alt="Maedah.dev 👩‍💻 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Maedah.dev 👩‍💻
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/maedahbatool"&gt;@maedahbatool&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      👩‍🏫Had a great &lt;a href="https://twitter.com/WordSesh"&gt;@WordSesh&lt;/a&gt; talk about optimizing your @Gatsbyjs site for production.&lt;br&gt;&lt;br&gt;🎙Highlights&lt;br&gt;&lt;br&gt;👾 Sitemaps&lt;br&gt;📰 RSS Feed&lt;br&gt;📼 Embed Videos&lt;br&gt;✍️ Markdown Pages&lt;br&gt;&lt;br&gt;GitHub repo → &lt;a href="https://t.co/xpcwtB0am7"&gt;Maedah.dev/WDSEPGH&lt;/a&gt;&lt;br&gt;Slides → &lt;a href="https://t.co/8c64cvPgjJ"&gt;Maedah.dev/WDSlidesSep19&lt;/a&gt;&lt;br&gt;&lt;br&gt;Kudos &amp;amp; thanks to &lt;a href="https://twitter.com/rzen"&gt;@rzen&lt;/a&gt; for a successful event. 💯
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:05 PM - 25 Sep 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1176875419368329218" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1176875419368329218" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      12
      &lt;a href="https://twitter.com/intent/like?tweet_id=1176875419368329218" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      19
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>gatsby</category>
      <category>react</category>
      <category>jamstack</category>
      <category>development</category>
    </item>
    <item>
      <title>Generating A New SSH Key and Adding It to Github</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Tue, 02 Apr 2019 13:18:33 +0000</pubDate>
      <link>https://dev.to/maedahbatool/generating-a-new-ssh-key-and-adding-it-to-github-137j</link>
      <guid>https://dev.to/maedahbatool/generating-a-new-ssh-key-and-adding-it-to-github-137j</guid>
      <description>&lt;p&gt;Sometimes I behave like a crazy weird nerd. The developer instinct has always made me learn new things be it skimming through some random code, a tip or some dev-workflow. There are concepts which I just keep dumping in my brain without trying them. But the only motivation is that if needed I will definitely do it someday.&lt;/p&gt;

&lt;p&gt;Each time I clone a GitHub repo I come across the option to clone it via SSH. I had an idea about SSH keys but never came across a situation where I had to generate one and add it to my GitHub account.&lt;/p&gt;

&lt;p&gt;Today, I confronted the scenario where I had to connect my GitHub account with an SSH key since my GitHub repo couldn't be cloned locally. After figuring out the process, I finally did it and thought about writing my experience with you folks.&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%2F0m677b9721duefmo2esz.jpg" 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%2F0m677b9721duefmo2esz.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, if you're finding it difficult to create an SSH key and connect it with your GitHub account, then this article is definitely for you.&lt;/p&gt;

&lt;p&gt;Let's start with some basic concepts about SSH keys.&lt;/p&gt;

&lt;h2&gt;What are SSH Keys?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SSH (Secure Shell)&lt;/strong&gt;, is an encrypted protocol to communicate with servers allowing users to avail several network-services. SSH keys, in turn, provide a secured mechanism against brute force attacks which may occur while logging into a server with a password.&lt;/p&gt;

&lt;p&gt;When cloning a GitHub repo, you sometimes come across an error saying:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Permission denied (publickey).&lt;br&gt;
fatal: Could not read from remote repository.&lt;br&gt;
Please make sure you have the correct access rights&lt;br&gt;
and the repository exists.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This calls for the creation of an SSH key. Generating an SSH key results in &lt;em&gt;two long string of characters&lt;/em&gt; which includes a &lt;strong&gt;public&lt;/strong&gt; and a &lt;strong&gt;private&lt;/strong&gt; key. The public key is used to unlock any server and then connect it with the client (typically your computer) where the private part of the SSH key resides.&lt;/p&gt;

&lt;h2&gt;Figuring Out Any Existing SSH Keys&lt;/h2&gt;

&lt;p&gt;Before you generate an SSH key, you must check if you have any existing SSH keys stored in your computer. To do so, open your terminal, type the following command and hit Enter.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -al ~/.ssh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It displays a list of files in your .ssh directory. Go through this list to find the existence of any public SSH keys. By default, public keys are stored with the .pub file extension.&lt;/p&gt;

&lt;p&gt;Normally, public keys appear against the following names:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;id_rsa.pub&lt;/li&gt;
    &lt;li&gt;id_dsa.pub&lt;/li&gt;
    &lt;li&gt;id_ecdsa.pub&lt;/li&gt;
    &lt;li&gt;id_ed25519.pub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there aren't any public keys, it's time to create a new SSh key which I will teach shortly. On the contrary, if you find an existing public/private key pair (e.g., &lt;code&gt;id_rsa.pub&lt;/code&gt; and &lt;code&gt;id_rsa&lt;/code&gt;), you can use it to add to the GitHub account and get started.&lt;/p&gt;

&lt;p&gt;I checked for the presence of SSH keys and here's the GIF:&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%2Fhxo4ht7aorw7mv0qr8my.gif" 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%2Fhxo4ht7aorw7mv0qr8my.gif" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In case, no public key exists or you want to create a new key for your GitHub, type the following command in the terminal and hit Enter.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh-keygen&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The process of key generation will start. It asks for the file in which to save the key with other related info. Fill these details. However, you can leave it empty, and it'll generate your first key with the default name as &lt;code&gt;id_rsa.pub&lt;/code&gt;. Remember I didn't change any defualts here and just pressed enter or return key for all options like password and key path.&lt;/p&gt;

&lt;p&gt;Here's the GIF:&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%2F4wqr67kfhlvebupcu6un.gif" 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%2F4wqr67kfhlvebupcu6un.gif" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Copying the SSH Key&lt;/h3&gt;

&lt;p&gt;Now it's time to copy the contents of the SSH key and add to the GitHub account. Type the following:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat ~/.ssh/id_rsa.pub&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The SSH key appears as follow. Just copy it!&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%2Fqjfx4654tfxvtlq2mvbd.gif" 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%2Fqjfx4654tfxvtlq2mvbd.gif" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Adding SSH Key to GitHub&lt;/h3&gt;

&lt;p&gt;Now heading to the final part where I'll add the SSH key to my GitHub account. In your GitHub &lt;strong&gt;Profile&lt;/strong&gt; open &lt;strong&gt;Settings&lt;/strong&gt;. Go to the section for &lt;strong&gt;SSH and GPG Keys&lt;/strong&gt;. Click the &lt;strong&gt;New SSH key&lt;/strong&gt; button, write a suitable &lt;strong&gt;Title&lt;/strong&gt;, paste the copied &lt;strong&gt;Key&lt;/strong&gt; and hit the &lt;strong&gt;Add SSH key&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;🤜 BOOM! Here you go. You have successfully added your first SSH to GitHub. Now the GitHub repo can be easily cloned. Moreover, you also get a confirmatory email to inform you about the addition of this new key. This is to make sure no unauthorized keys get added.&lt;/p&gt;

&lt;p&gt;I am uploading the GIF to explain the aforementioned process.&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%2F9mtl1yb03kbb4dhtpvpb.gif" 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%2F9mtl1yb03kbb4dhtpvpb.gif" width="943" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;👩‍🏫 Your Turn!&lt;/h2&gt;

&lt;p&gt;See how simple and easy it is to create an SSH key. You can generate multiple SSH keys and add to your GitHub account. But I'll recommend you to keep it as less as possible to support simplicity. Now it's your turn to replicate the process and share your feedback in the comments section below.&lt;/p&gt;

&lt;p&gt;Moreover, you can &lt;a href="https://twitter.com/intent/tweet?text=%23TIL%20%E2%80%94%20How%20to%20generate%20an%20SSH%20key%20and%20add%20to%20a%20GitHub%20account.%0A%0AGive%20this%20%23GirlDevMinute%20a%20try!%20%0A%0Avia%20%40MaedahBatool%20%0A%0ARead%20here%20%0Ahttps%3A//maedahbatool.com/generating-a-new-ssh-key/%0A" rel="noopener noreferrer"&gt;Share on Twitter&lt;/a&gt; with the hashtag &lt;strong&gt;#GirlDevMinute&lt;/strong&gt; or reach out to me through my twitter account (&lt;a href="https://twitter.com/MaedahBatool" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt;).&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>github</category>
      <category>girldevminute</category>
    </item>
    <item>
      <title>If You're A #CodeNewbie Learning #JavaScript This Is What You Should Learn Today! </title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Thu, 28 Mar 2019 18:09:36 +0000</pubDate>
      <link>https://dev.to/maedahbatool/if-you-re-a-codenewbie-learning-javascript-this-is-what-you-should-learn-19m1</link>
      <guid>https://dev.to/maedahbatool/if-you-re-a-codenewbie-learning-javascript-this-is-what-you-should-learn-19m1</guid>
      <description>&lt;p&gt;Beginners who want to learn JavaScript find it hard to get started. Some would dive into the immediate basics while others may choose to do start with more technical stuff. However, today I am sharing with you folks a piece of handy advice. &lt;/p&gt;

&lt;p&gt;So, if you're a #CodeNewbie learning #JavaScript this piece is definitely for you.&lt;/p&gt;

&lt;p&gt;This is what you should start learning today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔘 What are JS Objects?&lt;/li&gt;
&lt;li&gt;🔘 How to access JS Objects?&lt;/li&gt;
&lt;li&gt;🔘 Convert JS Objects to JSON&lt;/li&gt;
&lt;li&gt;🔘 Convert JSON to JS Objects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To learn all of that, I made a quick video tutorial featuring you can convert JavaScript Objects to JSON and vice versa. While watching this video you'll learn the concepts about &lt;code&gt;console.log()&lt;/code&gt; and how to access any member of JS Objects.&lt;/p&gt;

&lt;p&gt;📺 You can watch my #GirlDevMinute Video tutorial here ⬇️&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nG5TXyyaeDs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ICYMI I started my edutaining series called #GirlDevMinute where I'll share what I know about development and program management. Feel free to &lt;a href="https://twitter.com/hashtag/GirlDevMinute"&gt;tweet&lt;/a&gt; about it and say hi (and follow) me &lt;a href="https://twitter.com/MaedahBatool"&gt;@MaedahBatool&lt;/a&gt; on Twitter.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>json</category>
      <category>codenewbie</category>
      <category>womenwhocode</category>
    </item>
    <item>
      <title>Nevertheless, Maedah Coded! Announcing #GirlDevMinute</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Fri, 08 Mar 2019 16:08:38 +0000</pubDate>
      <link>https://dev.to/maedahbatool/nevertheless-maedah-coded-announcing-girldevminute--4c3m</link>
      <guid>https://dev.to/maedahbatool/nevertheless-maedah-coded-announcing-girldevminute--4c3m</guid>
      <description>&lt;p&gt;Today, when I look back, it's hard to believe that it has been ten years since I joined the tech industry. This is so overwhelming, but at the same time the feeling is so humble that I feel patting my back and say Maedah, you did great...keep going! 👍&lt;/p&gt;

&lt;p&gt;Life seemed pretty simple. Future looked quite obvious which meant four years of graduation with a degree in Electrical Engineering and finally ending up in a corporate 9 to 5 job in a local telecommunication company. I had never thought that my crude passion for writing will take me this far and will help me find a new ME. &lt;/p&gt;

&lt;p&gt;🙌 I am Maedah Batool an Electrical Engineer turned Open-Source evangelist. Who started from penning down a simple piece about "Health of a Pro-blogger" till today where I lead #GirlsWhoCode and #ReactJS local meetup chapters in Lahore. I have recently started contributing to &lt;code&gt;Nodejs.dev&lt;/code&gt; part of the new Node.js website redesign project. &lt;/p&gt;

&lt;p&gt;I'm currently one of the Marketing Representatives for the &lt;a href="https://make.wordpress.org/marketing/" rel="noopener noreferrer"&gt;official Make WordPress Marketing Team&lt;/a&gt;. I'm also a WordPress Core Contributor, Open-source Journalist, and a teacher. While working as an OSS Content Program Manager, I’m a published author at TorqueMag, Envato Tuts+, SitePoint, Creative Market, and more.&lt;/p&gt;

&lt;p&gt;A huge part of who I am and what I do comes from my passion for teaching. I have taught &lt;strong&gt;2,500+ Girls #HowToCode&lt;/strong&gt; through my startup — FinkTanks. And my journey continues. I have been planning and refining my idea for quite some time but then realized that I couldn't find a better opportunity than to announce it on this &lt;strong&gt;#InternationalWomensDay&lt;/strong&gt;. So, instead of running after perfection I have decided to share the news today.&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%2Fon.ahmda.ws%2Fe3a0cbb22dcb%2Fc" 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%2Fon.ahmda.ws%2Fe3a0cbb22dcb%2Fc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👩‍🏫 #GirlDevMinute...
&lt;/h2&gt;

&lt;p&gt;I am starting an edutaining series under the name &lt;strong&gt;#GirlDevMinute&lt;/strong&gt;. The idea behind it is to celebrate womanhood and empower all the beautiful women and aspiring girls out there who are part of the tech community by sharing what I know about development and program management. I am going to take it on myself to share more than I ever did. Help make the tech industry more accessible to women. And while at it, I am going to be taking on one apprentice every year. Now to see how it goes — I have already started &lt;a href="https://twitter.com/hashtag/GirlDevMinute" rel="noopener noreferrer"&gt;tweeting&lt;/a&gt; it on my Twitter profile. Say hi (and follow) me &lt;a href="https://twitter.com/MaedahBatool" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 What's It All About?
&lt;/h3&gt;

&lt;p&gt;I’m sharing what I know about the development and management of open source development and content. Next steps include setting up its website and then sharing short video/audio tutorials, tips &amp;amp;, tricks, exchange workflows, and more.&lt;/p&gt;

&lt;p&gt;Recently, I have purchased a &lt;code&gt;.dev&lt;/code&gt; domain against my name i.e., &lt;a href="https://maedahbatool.com" rel="noopener noreferrer"&gt;Maedah.dev&lt;/a&gt;. Currently, it is redirected to my website but I plan to build a JAMstack site with GatsbyJS and then host #GirlDevMinute site on this domain.  &lt;/p&gt;

&lt;p&gt;I know we all run after perfection. I am one of those who'll hold an idea to herself until I know it is perfect. But I am just trying to make an effort here to not do that anymore. I’ll launch early and improve daily. 🤞&lt;/p&gt;

&lt;p&gt;If this has touched you and you are one of the #GirlsInTech then I'd love to hear your feedback. You can follow me on my &lt;a href="https://twitter.com/MaedahBatool" rel="noopener noreferrer"&gt;Twitter account&lt;/a&gt; and/or post your comments below.&lt;/p&gt;

&lt;p&gt;Wish me luck, peace! ✌️&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. A huge thanks to my better-half &lt;a href="https://twitter.com/MrAhmadAwais/" rel="noopener noreferrer"&gt;Ahmad Awais&lt;/a&gt; who has been a great support and a mentor throughout this time. He has always motivated me and made me believe that I can do things right. He’s too kind with words&lt;/em&gt; ⬇️&lt;/p&gt;



&lt;blockquote&gt;
&lt;br&gt;
&lt;p&gt;👩‍💻 I don't need &lt;a href="https://twitter.com/hashtag/InternationalWomensDay?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#InternationalWomensDay&lt;/a&gt; to tell y'all that my better half &lt;a href="https://twitter.com/MaedahBatool?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt; is an incredibly awesome developer. If you've ever benefited from my open source work — &lt;a href="https://twitter.com/MaedahBatool?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt; is the reason for it. She makes it all possible. Go ahead and follow her &lt;a href="https://twitter.com/MaedahBatool?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt; 👌&lt;/p&gt;— Awais.dev (@MrAhmadAwais) &lt;a href="https://twitter.com/MrAhmadAwais/status/1104014007097311233?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;March 8, 2019&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt; 

</description>
      <category>wecoded</category>
      <category>girldevminute</category>
      <category>diversity</category>
    </item>
    <item>
      <title>Introducing Pudl: An Easy to Use JavaScript-Based Static Site Generator</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Fri, 19 Oct 2018 07:40:36 +0000</pubDate>
      <link>https://dev.to/maedahbatool/introducing-pudl-an-easy-to-use-javascript-based-static-site-generator-3h0d</link>
      <guid>https://dev.to/maedahbatool/introducing-pudl-an-easy-to-use-javascript-based-static-site-generator-3h0d</guid>
      <description>&lt;p&gt;Today, I am super excited to release my dev-friendly starter toolkit &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;code&gt;pudl&lt;/code&gt;&lt;/a&gt;. In this post, I am going to share what is &lt;code&gt;pudl&lt;/code&gt;, what is the motivation &amp;amp; philosophy behind building this dev-tooling, and the story of how I got started till its launch. Let’s start with intro first…&lt;/p&gt;

&lt;h2&gt;
  
  
  🐶 Introducing &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;code&gt;pudl&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;/a&gt; &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F09%2Fpudl-image.jpg"&gt;&lt;/a&gt;  &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; is a JavaScript-based static site generator for quick prototyping of awesome little static demos while teaching/presenting. Packed inside &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; you'll find workflows for &lt;strong&gt;Gulp&lt;/strong&gt;, &lt;strong&gt;Sass&lt;/strong&gt;, and &lt;strong&gt;Pug&lt;/strong&gt; to get you started. It is aimed at both beginners and professionals who are looking forward to getting a solid start for any static site. So basically, &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; is a simple implementation of Gulp which helps to perform the following tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  ⚡️ Use Pug to generate HTML files&lt;/li&gt;
&lt;li&gt;  🎯 Handles Sass to CSS conversion&lt;/li&gt;
&lt;li&gt;  🔥 Live reloads the browser with BrowserSync&lt;/li&gt;
&lt;li&gt;  👊 Watch files for changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎩 How It All Began?
&lt;/h2&gt;

&lt;p&gt;For the past 9 years, I have been working with WordPress and during all this time I have transitioned myself through different roles like from &lt;em&gt;Content Strategist&lt;/em&gt; to &lt;em&gt;Program Manager&lt;/em&gt; and to an aspiring &lt;em&gt;Developer&lt;/em&gt;. But particularly for the last 2 years since I got married to the incredible &lt;a href="https://twitter.com/MrAhmadAwais" rel="noopener noreferrer"&gt;Ahmad Awais&lt;/a&gt; — who's a huge &lt;a href="https://github.com/ahmadawais/" rel="noopener noreferrer"&gt;open-source developer advocate&lt;/a&gt; I have been handling the pre-development workflows for his projects. During all this time I encountered a pretty monotonous work routine which included configuring tools which rendered &lt;code&gt;pug&lt;/code&gt; to &lt;code&gt;html&lt;/code&gt;, &lt;code&gt;sass&lt;/code&gt; to &lt;code&gt;css&lt;/code&gt; and integrate live reload with BrowserSync. Moreover, I realized that at least &lt;strong&gt;20% of my time&lt;/strong&gt; would go into this process every time I got started with any new project. So, to stop me from reinventing the wheel daily and follow the DRY (Don’t Repeat Yourself) philosophy, I decided to build a site generator with just the right features I need. When I got started, I only wanted it to cater my web-dev workflow needs. As I went ahead developing it, I realized that it could serve the purpose of several other developers as well. So, here I present &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; which is a simple implementation of Gulp for performing the following tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  ✅ Pug to HTML conversion&lt;/li&gt;
&lt;li&gt;  ✅ Sass to CSS conversion&lt;/li&gt;
&lt;li&gt;  ✅ Watch files for changes&lt;/li&gt;
&lt;li&gt;  ✅ Error handling and notify messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔥 Getting Started
&lt;/h2&gt;

&lt;p&gt;Getting started with &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; is way too easy. In just 4 simple steps you can §set up a basic web architecture for your development projects. And the best thing is that you don't have to repeatedly.&lt;/p&gt;

&lt;h3&gt;
  
  
  → Step #0: Install Node &amp;amp; NPM Package Manager
&lt;/h3&gt;

&lt;p&gt;In case you are an absolute beginner to the world of &lt;code&gt;Node.js&lt;/code&gt;, JavaScript, and &lt;code&gt;npm&lt;/code&gt; packages — all you need to do is go to the Node's site &lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;download + install&lt;/a&gt; Node on your system. This will install both &lt;code&gt;Node.js&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt;, i.e., node package manager — the command line interface of Node.js. You can verify the install by opening your terminal app and typing... &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  → Step #1: Download the Required Files
&lt;/h3&gt;

&lt;p&gt;Download &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/gulpfile.js" rel="noopener noreferrer"&gt;&lt;code&gt;gulpfile.js&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/package.json" rel="noopener noreferrer"&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/.gitignore" rel="noopener noreferrer"&gt;&lt;code&gt;.gitignore&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/config.js" rel="noopener noreferrer"&gt;&lt;code&gt;config.js&lt;/code&gt;&lt;/a&gt; files inside the root folder of your project. You can also use your terminal to browse your desired folder and run the following command which will download all the required files for you via cURL. &lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  → Step #2: Editing the Project Variables
&lt;/h3&gt;

&lt;p&gt;The next step is to change the project variables in the &lt;code&gt;config.js&lt;/code&gt; file according to your folder structure. &lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  → Step #3: Installing Node Dependencies
&lt;/h3&gt;

&lt;p&gt;The next step is that in your root folder install the Node dependencies. In the terminal run this command and wait for it to download all the &lt;code&gt;node.js&lt;/code&gt; dependencies. It's a one-time process and can take about 5 minutes depending on the speed of your internet connection. &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  → Step #4: Run &lt;code&gt;npm start&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Finally, run the following command to get up and running with pudl. &lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now &lt;code&gt;gulp&lt;/code&gt; will start watching your &lt;code&gt;pug&lt;/code&gt; and &lt;code&gt;sass&lt;/code&gt; files for any changes and provides you with a link through which you can access your site locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  👊 &lt;code&gt;pudl&lt;/code&gt; Folder Structure
&lt;/h2&gt;

&lt;p&gt;Let’s now run through the most important parts of the &lt;a href="https://gist.github.com/MaedahBatool/b16176adfaba444bcdf9bc83df81a0ae" rel="noopener noreferrer"&gt;&lt;code&gt;pudl&lt;/code&gt;&lt;/a&gt; project.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ &lt;code&gt;dist&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Instead of several tiers, I preferred compiling all the key files into one single folder and that is the &lt;a href="https://github.com/MaedahBatool/pudl/tree/master/dist" rel="noopener noreferrer"&gt;&lt;code&gt;dist&lt;/code&gt;&lt;/a&gt; folder. The overall folder architecture is pretty much simple and easy to comprehend since the two primary files which pique your interest is the &lt;code&gt;gulpfile.js&lt;/code&gt; and &lt;code&gt;config.js&lt;/code&gt;. The remaining files are the &lt;code&gt;package.json&lt;/code&gt; and &lt;code&gt;.gitignore&lt;/code&gt;. Let's quickly study the contents of &lt;code&gt;gulpfile.js&lt;/code&gt; and &lt;code&gt;config.js&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☑️ &lt;a href="https://github.com/MaedahBatool/pudl/blob/master/dist/gulpfile.js" rel="noopener noreferrer"&gt;&lt;code&gt;gulpfile.js&lt;/code&gt;&lt;/a&gt; File
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;gulpfile.js&lt;/code&gt; is built in such a way that it can be used with any dev project. It consists of the following portions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Configuration &amp;amp; Load Plugins&lt;/strong&gt;: Handles project configuration for gulp tasks and load gulp plugins for it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Task &lt;code&gt;view&lt;/code&gt;&lt;/strong&gt;: Compiles Pug into HTML, Error Handling and Notifies for the success message.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Task &lt;code&gt;styles&lt;/code&gt;&lt;/strong&gt;: Compiles Sass into CSS, Error Handling and Notifies for the success message.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Task &lt;code&gt;bsync&lt;/code&gt;&lt;/strong&gt;: Injects changes and automatically open the browser with BrowserSync live server.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Watch &lt;code&gt;default&lt;/code&gt; Task&lt;/strong&gt;: Watch for file changes and run specific tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the complete source code of the &lt;code&gt;gulpfile.js&lt;/code&gt; file: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  ☑️ &lt;a href="https://github.com/MaedahBatool/pudl/blob/master/dist/config.js" rel="noopener noreferrer"&gt;&lt;code&gt;config.js&lt;/code&gt;&lt;/a&gt; File
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;config.js&lt;/code&gt; has all the settings for project configuration. When you are integrating &lt;code&gt;pudl&lt;/code&gt; in your development workflow editing of these project variables is a must thing to do because the folder architecture may vary from one project to another. However, I have tried to name these project variables in a way which are used quite consistently. Here is the complete source code of the &lt;code&gt;config.js&lt;/code&gt; file. &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  ✅ Running &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;code&gt;pudl&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;If you have been following this post thoroughly then by now I am sure you've understood the basic setup and working of &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt;. So, before I end this piece let me show you how it works in a real-time environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  → Step #1
&lt;/h3&gt;

&lt;p&gt;I created a simple testing project called &lt;code&gt;demo-with-pudl&lt;/code&gt; in which I directly ran the curl command which I have mentioned in the getting started steps. &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F10%2Fezgif.com-optimize.gif"&gt;&lt;/a&gt; [/wt_extendImage] This command will download the &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/gulpfile.js" rel="noopener noreferrer"&gt;&lt;code&gt;gulpfile.js&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/package.json" rel="noopener noreferrer"&gt;&lt;code&gt;package.json&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/.gitignore" rel="noopener noreferrer"&gt;&lt;code&gt;.gitignore&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://raw.githubusercontent.com/MaedahBatool/pudl/master/dist/config.js" rel="noopener noreferrer"&gt;&lt;code&gt;config.js&lt;/code&gt;&lt;/a&gt; files inside this root folder. Likewise, I edited my project variables in the &lt;code&gt;config.js&lt;/code&gt; file and my folder architecture looks something like this: [wt_extendImage] &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F10%2FImage-2018-10-01-at-2.15.41-PM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  → Step #2
&lt;/h3&gt;

&lt;p&gt;Now I will install the node dependencies by running the &lt;code&gt;npm install&lt;/code&gt; command in my terminal. This adds a new folder for node modules in the root folder. &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F10%2FImage-2018-10-01-at-2.25.09-PM.png"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  → Step #3
&lt;/h3&gt;

&lt;p&gt;Now it's the final part of the setup where you will run &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; to see how gulp handles all the described tasks for you. Simply type the command &lt;code&gt;npm start&lt;/code&gt; and hit Enter in your terminal. &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F10%2Fezgif.com-gif-maker.gif"&gt;&lt;/a&gt; You are notified by a successful completion of &lt;strong&gt;views&lt;/strong&gt; and &lt;strong&gt;styles&lt;/strong&gt; which means both pug and sass are being rendered perfectly. Likewise, you are provided with a localhost link which live reloads for every change you make.&lt;/p&gt;

&lt;h2&gt;
  
  
  And It's A Wrap!
&lt;/h2&gt;

&lt;p&gt;That's about it. The idea of &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; basically originated from my personal dev-workflow needs but later it got refined and has helped me open source it to the community on an advanced level. Now I am handing it over to you and look forward to your comments. Let me know if I missed something or if you didn’t understand a step or two. &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;pudl&lt;/a&gt; is now &lt;a href="https://github.com/MaedahBatool/pudl" rel="noopener noreferrer"&gt;available on GitHub&lt;/a&gt; and is free to use. Also, it'll be great to 🌟 its repository and share it across your network. Peace! ✌️&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>pug</category>
      <category>sass</category>
      <category>staticsitegenerator</category>
    </item>
    <item>
      <title>I’m Building A JS-Based Static Site Generator #WishMeLuck!</title>
      <dc:creator>Maedah Batool 👩‍💻</dc:creator>
      <pubDate>Thu, 20 Sep 2018 15:29:17 +0000</pubDate>
      <link>https://dev.to/maedahbatool/im-building-a-js-based-static-site-generator-wishmeluck-218b</link>
      <guid>https://dev.to/maedahbatool/im-building-a-js-based-static-site-generator-wishmeluck-218b</guid>
      <description>&lt;p&gt;Browse the term &lt;strong&gt;static site generators&lt;/strong&gt;, and you'll find plenty of them, in different languages, with lots of features, and what not. But if you're a developer then building your own is easier than you might think, and it's an excellent opportunity to learn some things in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Back Story
&lt;/h2&gt;

&lt;p&gt;When I looked at my work routine, then the setup of basic web architecture for a new project was something which took &lt;strong&gt;more than 20%&lt;/strong&gt; of my time. And reinventing the wheel daily was something which was bothering me a lot.&lt;/p&gt;

&lt;p&gt;I figured out the basic needs of my web-dev workflow and realized that it shouldn’t be that hard to build something small, with just the right features I need. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Requirements
&lt;/h3&gt;

&lt;p&gt;The requirements this generator must satisfy are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  🤝 It's for quick-prototyping of impressive little static demos for teaching, presenting and making landing pages,&lt;/li&gt;
&lt;li&gt;  ⚡️ Use Pug to generate HTML files — coz pug is awesome.&lt;/li&gt;
&lt;li&gt;  🎯 Handles Sass to CSS conversion — coz why not.&lt;/li&gt;
&lt;li&gt;  🔥 Live reloads the browser with BrowserSync.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Line of Action
&lt;/h2&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%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F09%2Fcool-background-1.jpg" 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%2Fmaedahbatool.com%2Fwp-content%2Fuploads%2F2018%2F09%2Fcool-background-1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here it is, I'm building a &lt;strong&gt;JavaScript-Based static site generator so wish me luck!&lt;/strong&gt; When I got started, I only wanted it to cater my web-dev workflow needs. As I went ahead developing it, I realized that it could serve the purpose of several other developers as well. &lt;/p&gt;

&lt;p&gt;But now I am working on some advanced functionalities. And after I get ready with its first version, I plan to open source it. This way I can contribute my effort to makes the lives of developers easy and effective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress
&lt;/h2&gt;

&lt;p&gt;If I track my project status currently, then here is the timeline of things that are left to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  ✅ Testing&lt;/li&gt;
&lt;li&gt;  📖 Updating the docs&lt;/li&gt;
&lt;li&gt;  🚀 Releasing updates/commits&lt;/li&gt;
&lt;li&gt;  ✍️ Working on its launching blog post&lt;/li&gt;
&lt;li&gt;  🎨 Designed its logo/name/featured image&lt;/li&gt;
&lt;li&gt;  🙌 Sending to some good folks for beta testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Launch Date
&lt;/h2&gt;

&lt;p&gt;Right now I am truly excited about this project, and it's been a great learning experience for myself. Still working out on some &lt;em&gt;tiny miny&lt;/em&gt; details so, it'll be tough to share an exact date with you folks. Precisely, if everything sticks to plan then I'll be able to open-source it by the end of this month (i.e., September 2018).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Till then stay tuned for more updates. You can drop in your feedback in the comments section below. Or you can also reach out to me through my Twitter account &lt;a href="https://twitter.com/MaedahBatool" rel="noopener noreferrer"&gt;@MaedahBatool&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>staticsitegenerator</category>
      <category>pug</category>
      <category>sass</category>
    </item>
  </channel>
</rss>
