<?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: Manuel Blanco</title>
    <description>The latest articles on DEV Community by Manuel Blanco (@mblancodev).</description>
    <link>https://dev.to/mblancodev</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%2F174633%2F2650a2d6-0a3e-4fa0-8131-e341502b31ba.png</url>
      <title>DEV Community: Manuel Blanco</title>
      <link>https://dev.to/mblancodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mblancodev"/>
    <language>en</language>
    <item>
      <title>Scalable and Maintainable Frontends: A Deep Dive into Microfrontends and Webpack Module Federation - Part 1</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Thu, 26 Oct 2023 20:17:30 +0000</pubDate>
      <link>https://dev.to/mblancodev/scalable-and-maintainable-frontends-a-deep-dive-into-microfrontends-and-webpack-module-federation-part-1-co8</link>
      <guid>https://dev.to/mblancodev/scalable-and-maintainable-frontends-a-deep-dive-into-microfrontends-and-webpack-module-federation-part-1-co8</guid>
      <description>&lt;p&gt;In this article we will explain the main concepts behind webpack module federation and then we will continue into implementing a series of exposable components (We will explain what that means later on), that will help us have a better frontend architecture.&lt;/p&gt;

&lt;h5&gt;
  
  
  Requisites:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Git, Github&lt;/li&gt;
&lt;li&gt;Node, NPM&lt;/li&gt;
&lt;li&gt;React, JavaScript ES6+&lt;/li&gt;
&lt;li&gt;How to setup a minimal Webpack configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Considerations
&lt;/h5&gt;

&lt;ol&gt;
&lt;li&gt;Webpack Module Federation: it is a plugin; &lt;b&gt; It is not included when you first install Webpack itself&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;MF =&amp;gt; &lt;b&gt;Module Federation&lt;/b&gt; (not the other word haha - &lt;em&gt;sweats in GenZ&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;In order for to get the most out of MF Plugin you need to have your dependencies in sync. Otherwise Webpack is gonna complain about it (You can work around it, but the configuration changes a bit)&lt;/li&gt;
&lt;li&gt;This is not a beginners friendly tutorial. Although, I'll explain everything some things may not be fully comprehensible unless you have prior experience in Front End Development.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Concepts
&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;Configuration&lt;/b&gt;: You have to be specific about which modules of your application you want to share with other applications and either you want to consume from other applications or not. You'll have a webpack config for each different application.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Remote Entry Points&lt;/b&gt;: You've to create a remote entry point, this defines which modules you want to expose for remote use. These modules are packaged separately and made available as a remote entry point.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Consuming Remote Modules&lt;/b&gt;: The remote modules are fetched and executed at runtime. You can specify the remote entry points to be loaded asynchronously, and Webpack will take care of loading and managing them.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Runtime Integration&lt;/b&gt;: Webpack's runtime takes care of loading and integrating the remote modules. It handles various aspects like loading remote scripts, making remote modules available to the local application, and handling communication between the applications.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Versioning&lt;/b&gt;: Module Federation allows you to specify versions for shared modules. This helps ensure that the consuming application gets the correct version of a module and doesn't conflict with other versions used by different parts of your application.&lt;/p&gt;

&lt;p&gt;Alright without anything more to add. Let's start coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the project
&lt;/h2&gt;

&lt;p&gt;I have already created the starter projects we will be working with. You will see why we need two, in the following section.&lt;/p&gt;

&lt;p&gt;You can find then here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/mblancodev/MF-host-template"&gt;Webpack MF - HOST&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mblancodev/MF-remote-template"&gt;Webpack MF - REMOTE&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will need to create your own repo since these are templates (name them: &lt;code&gt;host_app&lt;/code&gt; and &lt;code&gt;remote1&lt;/code&gt; accordingly) and download the required dependencies, once you do that, come back, and we will start getting coding right away.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7TKUM3IgJBX2as9O/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7TKUM3IgJBX2as9O/giphy.gif" width="267" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello world, w/ microfrontends
&lt;/h2&gt;

&lt;p&gt;You know what is coming, yes! The mighty counter ;) ...&lt;/p&gt;

&lt;p&gt;Let's create a button in &lt;code&gt;remote1&lt;/code&gt; that updates the state inside the host app. Nothing too fancy :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Remote1 -- This one would be running in localhost:3000
&lt;/h3&gt;

&lt;p&gt;-- &lt;small&gt;Note: Is important to know where is running what. You'll see why later on :)&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Let's start creating our &lt;code&gt;Button.js&lt;/code&gt; in one of our folders inside &lt;code&gt;remote1&lt;/code&gt;:&lt;/p&gt;

&lt;h5&gt;
  
  
  Button.js
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export const Button = (props) =&amp;gt;
  &amp;lt;button type="button" onClick={props.onClick}&amp;gt; Click me! &amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we need to expose this component inside our &lt;code&gt;webpack.config.js&lt;/code&gt; as follow:&lt;/p&gt;

&lt;h5&gt;
  
  
  webpack.config.js
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; ...
  plugins: [
    ...other_plugins,
    new ModuleFederationPlugin({
      name: "app_name", // Change this
      filename: "remoteEntry.js",
      exposes: {
        // your custom components, functions, you wanna expose
        "./Button.js": "./src/Button.js",
      },
      shared: [
        deps,
        {
          react: {
            eager: true,
            singleton: true,
            requiredVersion: deps.react,
          },
        },
        {
          "react-dom": {
            eager: true,
            singleton: true,
            requiredVersion: deps["react-dom"],
          },
        },
      ],
    }),
  ],
 ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  HOST_APP -- This would be running in localhost:8080
&lt;/h3&gt;

&lt;p&gt;We switch over to our &lt;code&gt;host_app&lt;/code&gt;, and inside the &lt;code&gt;webpack.config.js&lt;/code&gt;, we read from &lt;code&gt;remote1&lt;/code&gt; at &lt;em&gt;&lt;code&gt;localhost:3000&lt;/code&gt;&lt;/em&gt; the &lt;code&gt;remoteEntry.js&lt;/code&gt; that exposes:&lt;/p&gt;

&lt;h5&gt;
  
  
  webpack.config.js
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
plugins: [
  ...other_plugins,
  new ModuleFederationPlugin({
      name: "host", // You can change this if you want :)
      remotes: {
        // Your known remotes
        "remote1": "app_name@http://localhost:3002/remoteEntry.js",
      },
      shared: [
        deps,
        {
          react: {
            eager: true,
            singleton: true,
            requiredVersion: deps.react,
          },
        },
        {
          "react-dom": {
            eager: true,
            singleton: true,
            requiredVersion: deps["react-dom"],
          },
        },
      ],
    }),
],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Finally, inside our &lt;code&gt;App.js&lt;/code&gt; in the &lt;code&gt;host_app&lt;/code&gt; we import the component from the &lt;code&gt;remote1&lt;/code&gt; app. I know it gets kinda confusing using the terms this app this other app, but please bear with me. I'll leave a &lt;code&gt;.dio&lt;/code&gt; example file that better explains it (in the resources panel is the link to the extension that allows you read &lt;code&gt;.dio&lt;/code&gt; files directly from VSCode)&lt;/p&gt;

&lt;h5&gt;
  
  
  App.js
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Button from 'remote1/Button';

const App = () =&amp;gt; {
  const [counter, setCounter] = React.useState(0);
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h5&amp;gt;Hello from HOST APP&amp;lt;/h5&amp;gt;
      &amp;lt;p&amp;gt;HOST Counter: {counter}&amp;lt;/p&amp;gt;
      &amp;lt;hr /&amp;gt;
      &amp;lt;div class="border border-gray-200 rounded-md"&amp;gt;
        &amp;lt;b&amp;gt;Container for remote components&amp;lt;/b&amp;gt;
        &amp;lt;Button onClick={() =&amp;gt; setCounter(counter+1)} /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  )
};

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;Once we do all of that we can run: &lt;code&gt;npm run dev&lt;/code&gt; inside each project and everything should be running as expected.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;PD:&lt;small&gt; If you run into issues please don't hesitate to message me or leave a comment :) I'll help as soon as I can&lt;/small&gt;&lt;/b&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusions
&lt;/h4&gt;

&lt;p&gt;As recap, we created one relatively small component that is being exposed from &lt;code&gt;remote1&lt;/code&gt; and read from what we called the &lt;b&gt;host&lt;/b&gt; application.&lt;/p&gt;

&lt;p&gt;That's all for now. Let me know in the comments if this was helpful :).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/jp2WuL1VB53ZTs5FJo/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/jp2WuL1VB53ZTs5FJo/giphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In PART II we will explore more how to extend an customize the webpack configuration of Module Federation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Resources:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://webpack.js.org/plugins/module-federation-plugin/"&gt;https://webpack.js.org/plugins/module-federation-plugin/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://martinfowler.com/articles/micro-frontends.html"&gt;https://martinfowler.com/articles/micro-frontends.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.aplyca.com/en/blog/micro-frontends-what-are-they-and-when-to-use-them"&gt;https://www.aplyca.com/en/blog/micro-frontends-what-are-they-and-when-to-use-them&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio"&gt;https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>react</category>
    </item>
    <item>
      <title>List of great resources for your next Software Engineer Interview Prep - Front End Focused</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Thu, 05 Oct 2023 18:12:00 +0000</pubDate>
      <link>https://dev.to/mblancodev/list-of-great-resources-for-your-next-software-engineer-interview-prep-front-end-focused-3aln</link>
      <guid>https://dev.to/mblancodev/list-of-great-resources-for-your-next-software-engineer-interview-prep-front-end-focused-3aln</guid>
      <description>&lt;p&gt;Front-end development and technical interviews can be challenging, but they're also incredibly rewarding. In this post, I've compiled a set of resources to help you navigate these challenges effectively. Whether you're a newcomer to front-end development or preparing for technical interviews, these resources will provide you with the knowledge and tools you need to succeed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Front-End Development Resources List
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.frontendinterviewhandbook.com/"&gt;Frontend Interview Handbook&lt;/a&gt;: A comprehensive guide to frontend development interview preparation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.greatfrontend.com/"&gt;Great Frontend&lt;/a&gt;: A collection of resources, articles, and tools for frontend developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithm and Data Structures
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/studyplan/leetcode-75/"&gt;LeetCode - 75 LeetCode Problems&lt;/a&gt;: A study plan on LeetCode that covers 75 essential coding problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  JavaScript Interview Preparation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://techdevguide.withgoogle.com/paths/interview/?programming_languages=javascript"&gt;Google Tech Dev Guide - JavaScript&lt;/a&gt;: Google's technical interview preparation guide with a focus on JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  General Software Engineering Interviews
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.techinterviewhandbook.org/software-engineering-interview-guide/"&gt;Tech Interview Handbook&lt;/a&gt;: A comprehensive handbook covering software engineering interview topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  React Technical Interview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/prepare-for-react-technical-interviews/"&gt;Prepare for React Technical Interviews&lt;/a&gt;: A guide to help you prepare for technical interviews focused on React.&lt;/p&gt;

&lt;p&gt;Feel free to explore these resources to enhance your front-end development and interview preparation skills. Remember these resources are your companions on the exciting journey of front-end development and technical interview mastery. As you navigate through the code and algorithms, always keep in mind that every challenge you face is an opportunity to grow. Stay curious, stay persistent, and let your passion for learning light your way to success. The tech world is yours to conquer!&lt;/p&gt;

&lt;p&gt;Cover Photo by &lt;a href="https://unsplash.com/@thisisengineering?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;ThisisEngineering RAEng&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/woman-in-blue-tank-top-standing-beside-white-wall-TXxiFuQLBKQ?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;sup id="fnref1"&gt;1&lt;/sup&gt;.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Attribution: This photo is provided by &lt;a href="https://unsplash.com/@thisisengineering"&gt;ThisisEngineering RAEng&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/woman-in-blue-tank-top-standing-beside-white-wall-TXxiFuQLBKQ"&gt;Unsplash&lt;/a&gt;. Used under the Unsplash License. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>interview</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Getting started with python</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Mon, 07 Oct 2019 19:52:09 +0000</pubDate>
      <link>https://dev.to/mblancodev/getting-started-with-python-5dej</link>
      <guid>https://dev.to/mblancodev/getting-started-with-python-5dej</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1mLKiNHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1569012871812-f38ee64cd54c%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26raw%3Dtrue" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1mLKiNHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1569012871812-f38ee64cd54c%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26raw%3Dtrue" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When first started with python I noted some patterns that seem to have python and javascript although their syntaxis is quite not the same, you can relate writing python with javascript as a way to learn it way more efficiently. We will be creating a small terminal app so you can learn the basics of python&lt;/p&gt;

&lt;p&gt;Goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to create variables&lt;/li&gt;
&lt;li&gt;Define functions&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;While&lt;/code&gt; and &lt;code&gt;For&lt;/code&gt; loops&lt;/li&gt;
&lt;li&gt;Get input from the user using the terminal&lt;/li&gt;
&lt;li&gt;Understand range() method&lt;/li&gt;
&lt;li&gt;Interpolation&lt;/li&gt;
&lt;li&gt;Use if/else statements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python -v 3.7.4&lt;/li&gt;
&lt;li&gt;Code editor - I'll be using VSCode&lt;/li&gt;
&lt;li&gt;Terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Acknowledgments:&lt;/p&gt;

&lt;p&gt;I'm a beginner in python so I'm just sharing what I recently learned. In this tutorial, I use a lot of escape characters in case you don't know what they are or you need to remember them:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Escape character&lt;/th&gt;
&lt;th&gt;How it formats&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;td&gt;New line in a multi-line string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;td&gt;Backslash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'&lt;/td&gt;
&lt;td&gt;Apostrophe or single quote&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"&lt;/td&gt;
&lt;td&gt;Double quote&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\n&lt;/td&gt;
&lt;td&gt;Line break&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\t&lt;/td&gt;
&lt;td&gt;Tab (horizontal indentation)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;Go ahead and open your editor of choice and without further, let's start!&lt;/p&gt;

&lt;p&gt;We will imagine that we work at a coffee shop and several clients approach us at the same time, and they all want a cup of coffee so we as software developers need to configure out a bot to prepare them as soon as possible because making it ourselves would take much time, and configure it so it can remember each client name for they feel well attended :)&lt;/p&gt;

&lt;p&gt;Create a python file and call it as you wish. I'll call it &lt;code&gt;coffeePrepBot.py&lt;/code&gt;. We will need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a variable for storing clients name's&lt;/li&gt;
&lt;li&gt;Have a way to know (like a Boolean) when we finished all the requests&lt;/li&gt;
&lt;li&gt;Make the bot to ask each client for the type of coffee they want and give them the coffee
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;coffee_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;is_done&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;span class="n"&gt;clients&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you created these three variables in the next line copy/paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_client_name&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;How&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;s the client name? &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What we did up there was to define a function that returns the name that the client gives up to make up his/her coffee. The &lt;code&gt;input(string)&lt;/code&gt; method receives a text string for context about what we want.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;coffee_clients_listing&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;coffees&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coffee_count&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
      &lt;span class="n"&gt;clients&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get_client_name&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After defining the &lt;code&gt;coffee_clients_listing()&lt;/code&gt; function, we notice something new: range()&lt;/p&gt;

&lt;h3&gt;
  
  
  What the range() function does?
&lt;/h3&gt;

&lt;p&gt;The range() function returns a series of numbers making it an iterable, and it has two sets of parameters, as follows: &lt;code&gt;range([start], stop[, step])&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;start: Starting number of the sequence.&lt;/li&gt;
&lt;li&gt;stop: Generate numbers up to, but not including this number.&lt;/li&gt;
&lt;li&gt;step: Difference between each number in the sequence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Let's say we want to print to the console the numbers from 1 to 5. We create the following variable&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;range_numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# number 6 not included
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we do &lt;code&gt;print(range_numbers)&lt;/code&gt; we get: &lt;code&gt;range(1, 6)&lt;/code&gt; but if we use a for loop like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;range_numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# number 6 not included
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range_numbers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# We get
&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, let's keep going. We were defining &lt;code&gt;coffee_clients_listing()&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;coffee_clients_listing&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;coffees&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coffee_count&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
      &lt;span class="n"&gt;clients&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get_client_name&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What &lt;code&gt;coffee_clients_listing()&lt;/code&gt; does is that it receives &lt;code&gt;coffee_count&lt;/code&gt; which is the number of coffees we need to make, and add to the list (or array as you prefer to call them) the name of the client, calling the &lt;code&gt;get_client_name()&lt;/code&gt; function.&lt;/p&gt;

&lt;p&gt;In the next line copy/paste the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;is_coffees_done&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;coffee_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;[BOT]: How many coffee&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;s you need to make? &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[BOT]: Bip Bop Bup... Okay! we will create a list &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;with the name of the clients who asked for a coffee &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;so we can start preparing them wink wink&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;coffee_clients_listing&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;We have the list with all the clients who asked for coffee: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;clients&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;clients&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;coffee&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[BOT]: Hi &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, we have &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;- Expresso&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;- Capuchino&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;- Late&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;-and American &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;What type of coffee you want? &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;[BOT]: Coming out a &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;coffee&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; for: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; :) &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="n"&gt;is_coffees_done&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;[BOT]: You need to make more coffees? &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;is_coffees_done&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;yes&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;is_coffees_done&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;is_coffees_done&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;That&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;s all for me. Call me again when you need me :] bip bup shutting down...&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What we just did:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We defined a while loop that will run over and over until the variable &lt;code&gt;is_coffees_done&lt;/code&gt; becomes &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We're asking each client for their name and saluting then when giving them their coffee back&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interpolation it's done with the &lt;code&gt;f&lt;/code&gt; property inside the print function. It's a feature of Python v3 &lt;code&gt;print(f'String {variable} whatever follows...')&lt;/code&gt; You can learn more at the useful resources section.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The last three lines are important because if not the bot would make coffees infinitely, we're saying: hey! ask your supervisor (or whatever) I'm done? or there are more coffees to serve? If yes, we start from the top of the while loop and if not the bot shuts down itself&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's all for now folks! :)&lt;/p&gt;

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

&lt;p&gt;We learned that in python:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables follow the pattern: &lt;code&gt;variable_name = value&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Functions are declared with : &lt;code&gt;def myFunction()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Briefly that comments can be made with &lt;code&gt;#&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We can add items to a list(or array) with the method &lt;code&gt;.append()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;How to declare while loops and exit them&lt;/li&gt;
&lt;li&gt;Use if/else statements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/python/python_ref_keywords.asp"&gt;https://www.w3schools.com/python/python_ref_keywords.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/python/exercise.asp"&gt;https://www.w3schools.com/python/exercise.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/python/python_quiz.asp"&gt;https://www.w3schools.com/python/python_quiz.asp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.programiz.com/python-programming/string-interpolation"&gt;https://www.programiz.com/python-programming/string-interpolation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6"&gt;https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

</description>
      <category>python</category>
      <category>webdev</category>
      <category>todayilearned</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>#hacktoberfest progress 🐢</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Wed, 02 Oct 2019 14:59:26 +0000</pubDate>
      <link>https://dev.to/mblancodev/hacktoberfest-progress-53d5</link>
      <guid>https://dev.to/mblancodev/hacktoberfest-progress-53d5</guid>
      <description>&lt;p&gt;Hi folks!&lt;/p&gt;

&lt;p&gt;I have been quite busy at work so I haven't finished the #hacktoberfest yet, but here is my progress so far:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nx5L4IWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vs4pvml9dfe13bm5485w.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nx5L4IWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vs4pvml9dfe13bm5485w.JPG" alt="Alt Text" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both PRs made to module 2 of my friend's project &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/N0obCoding"&gt;
        N0obCoding
      &lt;/a&gt; / &lt;a href="https://github.com/N0obCoding/Expanding-on-HTML-and-CSS"&gt;
        Expanding-on-HTML-and-CSS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Noob Coding - Module 2
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Noob Coding&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3f5c018a1fdb0e216117c6437c44661b55c93128a091834079d26aa644842124/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f6c2f62792d73612f332e302f38307831352e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/3f5c018a1fdb0e216117c6437c44661b55c93128a091834079d26aa644842124/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f6c2f62792d73612f332e302f38307831352e706e67" alt="CC BY-SA 4.0 International"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/N0obCoding/Courses/blob/master/assets/NoobCoding-500x175.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nAohCRc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/N0obCoding/Courses/raw/master/assets/NoobCoding-500x175.png%3Fraw%3Dtrue" width="200"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Community Built Web Development Courses&lt;/p&gt;

&lt;h1&gt;
&lt;strong&gt;Module 3:&lt;/strong&gt; Expanding on HTML and CSS&lt;/h1&gt;

&lt;p&gt;This module aims to provide Noob Coders with a good understanding of HTML and CSS. The module guides a developer through the steps of building a simple static website, exploring the use of different HTML tags and styling techniques.&lt;/p&gt;

&lt;p&gt;When completing the module, Noob Coders are expected to be able to build a replica of the &lt;a href="https://github.com/N0obCoding/Expanding-on-HTML-and-CSS/tree/master/assets/website"&gt;sample website&lt;/a&gt; provided in this repo.&lt;/p&gt;

&lt;h3&gt;
Pre-requisites&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Estimated duration: &lt;strong&gt;?? hours&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Computer&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="nofollow"&gt;VS Code&lt;/a&gt; or similar Text Editor&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Course Contents&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML
&lt;ul&gt;
&lt;li&gt;The anatomy of the HTML Element&lt;/li&gt;
&lt;li&gt;The anatomy of the HTML Document&lt;/li&gt;
&lt;li&gt;Semantic HTML
&lt;ul&gt;
&lt;li&gt;Why should we use it?&lt;/li&gt;
&lt;li&gt;Accessibility from day one!&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Consuming external resources through links&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building the skeleton of our webpage.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Cascade style sheets (CSS)

&lt;ul&gt;
&lt;li&gt;Why that name?&lt;/li&gt;
&lt;li&gt;CSS Syntax&lt;/li&gt;
&lt;li&gt;CSS basic selectors (with a note about specificity)&lt;/li&gt;
&lt;li&gt;The Box Model&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling our Webpage&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Positioning…&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/N0obCoding/Expanding-on-HTML-and-CSS"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;With only 2 PRs left, I think I'll be finishing by tomorrow night.&lt;/p&gt;

&lt;p&gt;How is your progress going?... or I'm the only turtle who hasn't finished? &amp;gt;n&amp;lt;&lt;/p&gt;

&lt;p&gt;PS: Is there a list of how many people have finished the event? If so, please link me&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>discuss</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Hacktoberfest is ON!</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Mon, 30 Sep 2019 14:24:03 +0000</pubDate>
      <link>https://dev.to/mblancodev/hacktoberfest-is-on-4066</link>
      <guid>https://dev.to/mblancodev/hacktoberfest-is-on-4066</guid>
      <description>&lt;p&gt;I'm very excited about the #hacktoberfest that's coming in the next 24 hours. It's my first time participating and will be helping a friend with one of his projects: &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/N0obCoding"&gt;
        N0obCoding
      &lt;/a&gt; / &lt;a href="https://github.com/N0obCoding/Introduction-to-the-web"&gt;
        Introduction-to-the-web
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Noob Coding - Module 1
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="MD"&gt;
&lt;h1&gt;
Noob Coding&lt;/h1&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/N0obCoding/Courses/blob/master/assets/NoobCoding-500x175.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nAohCRc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/N0obCoding/Courses/raw/master/assets/NoobCoding-500x175.png%3Fraw%3Dtrue" width="200"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Community Built Web Development Courses&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3f5c018a1fdb0e216117c6437c44661b55c93128a091834079d26aa644842124/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f6c2f62792d73612f332e302f38307831352e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/3f5c018a1fdb0e216117c6437c44661b55c93128a091834079d26aa644842124/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f6c2f62792d73612f332e302f38307831352e706e67" alt="CC BY-SA 4.0 International"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
&lt;strong&gt;Module 1:&lt;/strong&gt; Introduction to the Web&lt;/h1&gt;

&lt;p&gt;This module presents an introduction to the web from a developer's perspective. It covers basic concepts that every aspiring Web Developer must understand in order to design and build web solutions.&lt;/p&gt;

&lt;p&gt;After taking this course you will understand the client-server model, how data is transmited throught the web and how the browser interprets, draws and presents information to your users. You will learn the basics of the Hyper Text Transfer Protocol (HTTP) and how the browser will help you find and fix errors in your application.&lt;/p&gt;

&lt;h3&gt;
Pre-requisites&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Estimated duration: &lt;strong&gt;?? hours&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Computer&lt;/li&gt;
&lt;li&gt;Chrome (or similar modern browser)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Course Contents&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./1_clientServer"&gt;The client-server Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./2_browser#understanding-the-browser"&gt;Understanding the browser&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./2_browser#the-evolution-of-the-web-browser"&gt;The evolution of the Web Browser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./2_browser#how-does-a-web-browser-work"&gt;How does a web browser work?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./2_browser#domain-name-server"&gt;Domain Name Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web2_browser#different-browsers-different-worlds"&gt;Different Browsers, different worlds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./2_browser#key-take-away-points"&gt;Key Take-away points&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./3_dom"&gt;The Document Object Model (DOM)&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/N0obCoding/Introduction-to-the-web./3_dom#what-is-the-dom"&gt;What is the DOM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/N0obCoding/Introduction-to-the-web"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;The idea behind all of his is to help newbies to have all the tools they need to build a complete web application successfully and with ease. &lt;/p&gt;

&lt;p&gt;If you guys want to help us, just reach out, we will be glad to see those PRs :)&lt;/p&gt;

&lt;p&gt;Also, have you guys participated before? and if so, how was your experience? &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>github</category>
      <category>contributorswanted</category>
    </item>
    <item>
      <title>Type of music you listen to when coding?</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Mon, 23 Sep 2019 15:08:49 +0000</pubDate>
      <link>https://dev.to/mblancodev/type-of-music-you-listen-to-when-coding-5dfn</link>
      <guid>https://dev.to/mblancodev/type-of-music-you-listen-to-when-coding-5dfn</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%2Fimages.unsplash.com%2Fphoto-1510915228340-29c85a43dcfe%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1050%26q%3D80raw%3Dtrue" 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%2Fimages.unsplash.com%2Fphoto-1510915228340-29c85a43dcfe%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1050%26q%3D80raw%3Dtrue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have found that some types of music really gets me into the flow zone, but others just distract me easily.&lt;/p&gt;

&lt;p&gt;I have made this playlist: &lt;a href="https://open.spotify.com/playlist/2SQ0oXoCwri2IHQXCcTyo2" rel="noopener noreferrer"&gt;Meta&lt;/a&gt; that I really enjoy listening when creating a feature. &lt;/p&gt;

&lt;p&gt;While in other scenarios (fixing bugs), I rather listen to a more relaxin' ones for example: &lt;a href="https://open.spotify.com/playlist/37i9dQZF1DZ06evO4mQXlS" rel="noopener noreferrer"&gt;This is Joe Hisaishi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What do you guys listen to when coding?&lt;/p&gt;

&lt;p&gt;Share me your playlists on the comments👨‍💻&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Writing your first bash script</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Wed, 28 Aug 2019 01:07:51 +0000</pubDate>
      <link>https://dev.to/mblancodev/writing-your-first-bash-script-344a</link>
      <guid>https://dev.to/mblancodev/writing-your-first-bash-script-344a</guid>
      <description>&lt;p&gt;Bash scripting is an extremely useful and powerful part of system administration and development. It might seem scary the first time you do it as it was for me but bear with me as this is not meant to be an extensive guide to bash scripting, but just a straightforward guide to getting started with making your first script and learning some basic bash syntax.&lt;/p&gt;

&lt;p&gt;Bash is a Unix shell, which is a command-line interface (CLI) for interacting with an operating system (OS) is available by default on Linux and macOS operating systems but it can also be turned on as a feature on Windows 10. Any command that you can run from the command line can be used in a bash script and the other way around too.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A basic command line knowledge is required. Although I'll be explaining what command does what, as I go.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Goals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, we're going to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a bash script that can be run from any directory on the computer.&lt;/li&gt;
&lt;li&gt;Learn about variables, conditions, looping, and user input with bash.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll be using &lt;code&gt;/Users/mblanco&lt;/code&gt; for all examples, but it will be &lt;code&gt;/Users/your_username&lt;/code&gt; for you. So without anything more to say let's get into it&lt;/p&gt;

&lt;h2&gt;
  
  
  1) &lt;strong&gt;Create a bin directory&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The first step is to create a bin directory. bin is the standard naming convention of a subdirectory that contains executable programs.&lt;/p&gt;

&lt;p&gt;You can make sure you're in the main user directory by navigating to ~ with &lt;code&gt;cd ~&lt;/code&gt; (cd stands for "change directory" and &lt;code&gt;~&lt;/code&gt; is a shortcut for current user home directory, or /Users/mblanco). You can type &lt;code&gt;pwd&lt;/code&gt; to confirm your current location, as well.&lt;/p&gt;

&lt;p&gt;Create a bin folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~      &lt;span class="c"&gt;# this takes us to /Users/mblanco&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;bin &lt;span class="c"&gt;# this creates /Users/mblanco/bin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2) &lt;strong&gt;Export your bin directory to the PATH&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Open the file .bash_profile by typing &lt;code&gt;.bash_profile&lt;/code&gt;, which will be located at /Users/mblanco/.bash_profile, and add this line to the file. If .bash_profile doesn't exist, create it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:/Users/mblanco/bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3) &lt;strong&gt;Create a script file&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Go to your bin folder located in &lt;code&gt;/Users/mblanco&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file called hello-world with no extension.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the file in your text editor of choice and type the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A bash script must always begin with #!/bin/bash to signify that the script should run with bash as opposed to any other shell.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo &lt;/span&gt;Hello, World!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4) &lt;strong&gt;Execute the bash file&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We can run the file in the terminal with &lt;code&gt;hello-world&lt;/code&gt;. If it doesn't work we have to make it an executable file by changing the permissions &lt;code&gt;chmod u+x hello-world&lt;/code&gt;. When you run the command, it will output whatever you put after the &lt;code&gt;echo&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mblanco@dev:~/bin

&lt;span class="nv"&gt;$ &lt;/span&gt;hello-world

Hello, World!
&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%2Fmedia.giphy.com%2Fmedia%2FhZj44bR9FVI3K%2Fgiphy.gif%3Fraw%3Dtrue" 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%2Fmedia.giphy.com%2Fmedia%2FhZj44bR9FVI3K%2Fgiphy.gif%3Fraw%3Dtrue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats!! We just made our first bash file :)&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Variables&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A variable is declared without a $, but has a $ when invoked. Let's edit our hello-world file to use a variable&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;word &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"world"&lt;/span&gt;
Hello, &lt;span class="nv"&gt;$word&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mblanco@dev:~/bin

&lt;span class="nv"&gt;$ &lt;/span&gt;hello-world

Hello, world!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Strings do not need to use single or double quotes by default. However, single and double quoted strings work as well. A single quoted string will not interpolate variables, but a double quoted string will&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Taking user input&lt;/strong&gt;
&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%2Fmedia.giphy.com%2Fmedia%2FDgLsbUL7SG3kI%2Fgiphy.gif%3Fraw%3Dtrue" 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%2Fmedia.giphy.com%2Fmedia%2FDgLsbUL7SG3kI%2Fgiphy.gif%3Fraw%3Dtrue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We declared a variable in the last example, but we can also have the user set the value of a variable dynamically using the &lt;code&gt;read&lt;/code&gt; command so instead of having the script to say Hello, World!, we can ask the name of the person calling the script and output that name&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo &lt;/span&gt;Who is this?

&lt;span class="nb"&gt;read who

echo &lt;/span&gt;Hello, &lt;span class="nv"&gt;$who&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mblanco@dev:~&lt;span class="nv"&gt;$ &lt;/span&gt;hello-world
Who is this?
Manuel
Hello, Manuel!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Conditionals&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;According to Wikipedia:&lt;/p&gt;

&lt;blockquote&gt;
Conditionals are features of a programming language, which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false
&lt;/blockquote&gt;

&lt;p&gt;Although bash is not a programming language but a command-line interface (CLI), you can do conditionals with it too. Here you can use if statements with the following keywords: if, then, else, and fi. With the condition inside square brackets.&lt;/p&gt;

&lt;p&gt;We can create another file or edit the previous example, as you prefer, and copy/paste the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo &lt;/span&gt;Are you sure you are allowed to drink kid? How older are you?

&lt;span class="nb"&gt;read &lt;/span&gt;age

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$age&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-ge&lt;/span&gt; 18 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;You are just fine. Drinks up! 🍻
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;Get out of here! 🏃🏻
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mblanco@dev:~/bin

&lt;span class="nv"&gt;$ &lt;/span&gt;hello-world

Are you sure you are allowed to drink kid? How older are you?
20
You are just fine. Drinks up! 🍻
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a list of operators for you to try different things:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bash Operators&lt;/th&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-eq&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;==&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-ne&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Not equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-lt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Less them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-le&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Less them or equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-gt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Greater them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-ge&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Greater than or equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-z&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;==null`&lt;/td&gt;
&lt;td&gt;Is null&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Looping&lt;/strong&gt;
&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%2Fmedia.giphy.com%2Fmedia%2F3GuP496Wrkos8%2Fgiphy.gif%3Fraw%3Dtrue" 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%2Fmedia.giphy.com%2Fmedia%2F3GuP496Wrkos8%2Fgiphy.gif%3Fraw%3Dtrue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll create a version of the command &lt;code&gt;ls&lt;/code&gt; (which makes a list of all the files and directories in your current address) but this one will only give us the names of the files.&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;!&lt;/span&gt;/bin/bash

&lt;span class="nv"&gt;FILES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/Users/mblanco/projects&lt;span class="k"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$FILES&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I hope this article has been helpful for you guys to get started with bash and see you next time🤘👋&lt;/p&gt;

</description>
      <category>commandline</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>bash</category>
    </item>
    <item>
      <title>Which podcasts to listen to stay tune in programming?</title>
      <dc:creator>Manuel Blanco</dc:creator>
      <pubDate>Mon, 03 Jun 2019 17:19:21 +0000</pubDate>
      <link>https://dev.to/mblancodev/which-podcasts-to-listen-to-stay-tune-in-programming-2n05</link>
      <guid>https://dev.to/mblancodev/which-podcasts-to-listen-to-stay-tune-in-programming-2n05</guid>
      <description>&lt;p&gt;Hi, which podcast you guys would recommend me for learning more about javascript and increase my productivity or enhance my understanding more about programming &lt;/p&gt;

&lt;p&gt;Thanks in advance! :D&lt;/p&gt;

</description>
      <category>podcast</category>
      <category>productivity</category>
      <category>javascript</category>
      <category>vue</category>
    </item>
  </channel>
</rss>
