<?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: Christophe El-Khoury</title>
    <description>The latest articles on DEV Community by Christophe El-Khoury (@christopheek).</description>
    <link>https://dev.to/christopheek</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%2F119383%2F5b345354-a517-4894-9d68-f6f258fe06ca.jpeg</url>
      <title>DEV Community: Christophe El-Khoury</title>
      <link>https://dev.to/christopheek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christopheek"/>
    <language>en</language>
    <item>
      <title>Podcast Listings</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Sat, 19 Dec 2020 09:49:35 +0000</pubDate>
      <link>https://dev.to/christopheek/podcast-listings-52a</link>
      <guid>https://dev.to/christopheek/podcast-listings-52a</guid>
      <description>&lt;p&gt;So I'm looking for your recommendations for podcasts about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leadership&lt;/li&gt;
&lt;li&gt;Tech Leads&lt;/li&gt;
&lt;li&gt;Technology&lt;/li&gt;
&lt;li&gt;Startups&lt;/li&gt;
&lt;li&gt;Personal Development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I know I could Google it, which I have, but I'd like to know about individuals' opinions rather than simple "Top 10" articles based on one person's opinion.&lt;/p&gt;

</description>
      <category>healthydebate</category>
      <category>help</category>
      <category>podcast</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to: Google</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Mon, 07 Dec 2020 08:24:40 +0000</pubDate>
      <link>https://dev.to/christopheek/how-to-google-3igk</link>
      <guid>https://dev.to/christopheek/how-to-google-3igk</guid>
      <description>&lt;p&gt;If you don't care about this intro, jump down to the TLDR section.&lt;/p&gt;

&lt;p&gt;So I've recently joined this &lt;a href="https://www.facebook.com/groups/138906596809905"&gt;NodeJS Developers Group&lt;/a&gt; on Facebook. I expected the group to have relatively advanced topics of discussion. To my surprise, the group was, for the most part, treated as Google.&lt;br&gt;
I innocently wrote a &lt;a href="https://www.facebook.com/groups/138906596809905/permalink/695892391111320/"&gt;post&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;criticizing how people are Google-ifying the group. That post, surprisingly, had more interaction than any other post. Many people endorsed the criticism, others criticized it.&lt;/p&gt;

&lt;p&gt;Soon after writing the post, I'd realized that even though I should never expect any technical expertise from people I don't know, I should also expect that they know absolutely nothing.&lt;/p&gt;

&lt;p&gt;The purpose of my joining the group was to help people, so I'm writing this post to help those who don't know how to put Google to its best use.&lt;/p&gt;




&lt;h1&gt;
  
  
  TLDR
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Basics
&lt;/h2&gt;

&lt;p&gt;To further simplify the guide, let's assume you're a newbie, and you so happen want to start developing using NodeJS.&lt;br&gt;
Whenever you want to start learning anything, you should always read a couple of articles or watch a couple of videos explaining the basics of that technology. I'm not talking about the syntax, nor the capabilities, nor the use cases. Simply understand what the hell that technology is about.&lt;/p&gt;

&lt;p&gt;The main thing to understand about Google is, Google is not your teacher. It's a search directory. Though you most probably will get lucky when you ask it about the weather, because that's one of Google's many features, you won't get so lucky if you ask it about a syntax error you've encountered. Asking "How do I catch an error in NodeJS because I keep running into errors" might just not cut it for you.&lt;/p&gt;

&lt;p&gt;Google is a directory of data, articles, videos. You need to find these entries based on key-words that Google will use to find them in articles. So the above query would turn into "NodeJS catch errors". Google will take these words and search its whole directory for articles containing these words.&lt;/p&gt;

&lt;p&gt;So the first thing you might want to do before starting anything NodeJS-related, Google "NodeJS Introduction"&lt;/p&gt;

&lt;p&gt;You're going to have tons of results, but there are some key websites that are credible and concise enough for you to grasp what you need to grasp ASAP.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://nodejs.org"&gt;Node's Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FreeCodeCamp&lt;/li&gt;
&lt;li&gt;w3schools&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you've understood the technology you're about to start working with, you move to the second thing, starting to learn it. "NodeJS beginner tutorial". Instead of "How do I learn NodeJS".&lt;/p&gt;

&lt;p&gt;Soon after you start learning, you will start running into errors, bugs, etc.&lt;br&gt;
You run to Google again.&lt;br&gt;
This time, you have to include more specific words, such as the error code or name you're encountering: "NodeJS syntax error unexpected identifier".&lt;/p&gt;

&lt;p&gt;When it comes to code-specific errors, your best bets into finding solutions are&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Documentation: official source of the package you're using&lt;/li&gt;
&lt;li&gt;StackOverflow&lt;/li&gt;
&lt;li&gt;Right here.&lt;/li&gt;
&lt;li&gt;Other channels such as Facebook, Telegram, Discord, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before asking another individual for help, rely on your own debugging skills to figure it out yourself. Software development isn't purely about writing code, it's about solving problems. And you need to learn to solve your own problems and bugs before solving those of others. Give yourself a good 20 minutes of debugging and research. If your error persists, you might need to consider &lt;a href="https://stackoverflow.com/help/how-to-ask"&gt;asking a question&lt;/a&gt; on StackOverflow.&lt;/p&gt;

&lt;p&gt;StackOverflow is one of the major placeholders for Q&amp;amp;A and debugged issues online.&lt;br&gt;
Sometimes, StackOverflow users might take some time to help you out, so you can move to individual questions by then. But keep in mind that whenever you do find the solution to your problem, give back to the community by answering your question on StackOverflow, Facebook, Telegram, etc.&lt;/p&gt;

&lt;p&gt;Moral of the story is, the developers' community is going to be your biggest ally. You need to give it as much as it's giving you.&lt;/p&gt;

&lt;p&gt;Also, stop undermining yourself. You can definitely figure it out on your own, just be patient.&lt;/p&gt;

&lt;h1&gt;
  
  
  Advanced
&lt;/h1&gt;

&lt;p&gt;As a software engineer, I know that almost always, a Minimum Viable Product should be released before developing all the way. I'm doing the same with this article. Before jumping into advanced Googling schemes, I need to know your opinions and recommendations. If pushed for it, I'll definitely expand and clean the article.&lt;/p&gt;

</description>
      <category>ama</category>
      <category>help</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Brain Freeze</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Tue, 09 Jun 2020 07:19:03 +0000</pubDate>
      <link>https://dev.to/christopheek/brain-freeze-4nl3</link>
      <guid>https://dev.to/christopheek/brain-freeze-4nl3</guid>
      <description>&lt;p&gt;Has anyone ever gone full &lt;code&gt;cd ../develop&lt;/code&gt; instead of &lt;code&gt;git checkout develop&lt;/code&gt;? Or am I the only one getting such brain freezes.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Open Source Support Group</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Sun, 05 Jan 2020 17:51:13 +0000</pubDate>
      <link>https://dev.to/christopheek/open-source-support-group-ch5</link>
      <guid>https://dev.to/christopheek/open-source-support-group-ch5</guid>
      <description>&lt;p&gt;Alright I'm going to make this short and sweet.&lt;/p&gt;

&lt;p&gt;Mental health is as essential as physical health. Better yet, many articles suggest that your mental health has a direct impact on your physical health (too lazy to find the sources).&lt;/p&gt;

&lt;p&gt;Many communities, especially those coming from developing countries, such as mine (Lebanon), don't promote the importance of mental health. Especially for men, where they're not even allowed to shed a tear, otherwise they'd be considered as weak, gay (which is also an insult in my country), etc etc.&lt;/p&gt;

&lt;p&gt;I know that on new year's eve, everybody got drunk, was ecstatic, celebrating and whatnot. Then, the next day as the hangover started easing off, they'd start having a different sort of headache, an existential crisis, remembering a breakup, or even simply bothered by how they're being treated at this start up they'd just started working at. That is, if they have a job.&lt;/p&gt;

&lt;p&gt;To that reason, I've decided to start a small community. The Open Source Support Group. Aside from the endless groups that already exist for JS, Go, Linux, etc. I'd like this group to have a special type of bond, where we have ups and downs together. We get to know one another and we, unjudgmentally (I don't know if that's even a word), help each other out. Whether it's technical or mental or emotional or you just don't know what kind of whisky to pick at the bar.&lt;/p&gt;

&lt;p&gt;Telegram Link: &lt;a href="https://t.me/opensourcesupportgroup"&gt;https://t.me/opensourcesupportgroup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions or concerns, throw them here.&lt;/p&gt;

&lt;p&gt;And in case anyone's having a bad day, here's a pic of my doggo.&lt;/p&gt;

</description>
      <category>help</category>
      <category>ama</category>
      <category>mentalhealth</category>
      <category>support</category>
    </item>
    <item>
      <title>Why?</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Tue, 17 Dec 2019 08:21:02 +0000</pubDate>
      <link>https://dev.to/christopheek/why-5eoa</link>
      <guid>https://dev.to/christopheek/why-5eoa</guid>
      <description>&lt;p&gt;Why? &lt;a class="mentioned-user" href="https://dev.to/devto"&gt;@devto&lt;/a&gt; Why are your clothes overpriced? I mean. I like this community. I like what it promotes. I like to show it off. But I don't want to pay the equivalent of 27 beers for a hat.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>help</category>
      <category>fashion</category>
    </item>
    <item>
      <title>Javascript Linting / Formatting standards</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Tue, 24 Sep 2019 07:21:46 +0000</pubDate>
      <link>https://dev.to/christopheek/javascript-linting-formatting-standards-2629</link>
      <guid>https://dev.to/christopheek/javascript-linting-formatting-standards-2629</guid>
      <description>&lt;p&gt;How the heck can I standardize JavaScript across my organization's projects?&lt;br&gt;
Hint: We're using VSCode &amp;lt;3&lt;/p&gt;

</description>
      <category>help</category>
      <category>healthydebate</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How do I manage my time?</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Tue, 06 Aug 2019 07:04:02 +0000</pubDate>
      <link>https://dev.to/christopheek/how-do-i-manage-my-time-5c0p</link>
      <guid>https://dev.to/christopheek/how-do-i-manage-my-time-5c0p</guid>
      <description>&lt;p&gt;So I've got a girlfriend, 2 groups of friends, my family, my health, my full-time job and a 2-hour daily commute.&lt;/p&gt;

&lt;p&gt;Y'all wanna suggest something?&lt;/p&gt;

</description>
      <category>healthydebate</category>
    </item>
    <item>
      <title>What I learned on my own | Implementing JWT Authentication on SailsJS (v1)</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Fri, 02 Aug 2019 05:38:22 +0000</pubDate>
      <link>https://dev.to/christopheek/what-i-learned-on-my-own-sailsjs-implementing-middleware-authentication-i16</link>
      <guid>https://dev.to/christopheek/what-i-learned-on-my-own-sailsjs-implementing-middleware-authentication-i16</guid>
      <description>&lt;p&gt;&lt;strong&gt;What this article will teach you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to apply JWT Authentication in your SailsJS &lt;em&gt;v1&lt;/em&gt; backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What this article will NOT teach you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to create a SailsJS application.&lt;/li&gt;
&lt;li&gt;How to understand the mechanisms behind these functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason why I won't go in-depth with the mechanisms of some functions and how they work in the background is because there's a whole lot of articles and documentations out there, written by people who are much much more qualified than I am.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is this article intended for?&lt;/strong&gt; Anyone who just needs to implement some JWT Authentication into SailsJS because they have a deadline and have no time to do prolonged research.&lt;/p&gt;

&lt;p&gt;If you've been developing with Sails, you're going to realize that you won't be able to get all the answers you want, mainly because of Sails' migration from &lt;code&gt;v0&lt;/code&gt; to &lt;code&gt;v1&lt;/code&gt;, their not-so-&lt;a href="https://laravel.com/docs/5.8"&gt;laravel&lt;/a&gt;ish-documentation and the rather small community accompanying Sails.&lt;/p&gt;

&lt;p&gt;Enough with the small talk. Let me have a smoke and I'll come back to the technicalities.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclaimer: some of this code is inspired from &lt;a href="https://github.com/vonWolfehaus/sails-jwt-login"&gt;this repo&lt;/a&gt; written by &lt;a href="https://github.com/vonWolfehaus"&gt;Corey Birnbaum&lt;/a&gt;. So props for this guy.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The way this is going to be implemented is as follows, in a general, non-sails-terms sentences: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Request (requires authentication) hits your backend&lt;/li&gt;
&lt;li&gt;The Request is intercepted by &lt;a href="https://stackoverflow.com/questions/2904854/what-is-middleware-exactly"&gt;middleware&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Authentication Valid
-- Redirect to controller&lt;/li&gt;
&lt;li&gt;Authentication invalid
-- &lt;a href="https://httpstatuses.com/401"&gt;401&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Okay great, but how do we implement this in Sails?&lt;br&gt;
For this, I'm going to assume you've already set up your &lt;a href="https://sailsjs.com/documentation/concepts/actions-and-controllers/routing-to-actions"&gt;routes and actions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In simple terms, a &lt;em&gt;middleware&lt;/em&gt; in Sails is called a &lt;a href="https://sailsjs.com/documentation/concepts/policies"&gt;policy&lt;/a&gt;. Which means, you're going to assign to a controller/action a set of rules, which basically tells that controller/action "Hey! I know you're expecting this HTTP Request to be redirected to you, but first I need to make a few checks. If these checks pass, I'll send it over. If not, I'm taking that piece of candy away from ya."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Prerequisite: for JWT Authentication here, I'm using a package called &lt;a href="https://www.npmjs.com/package/jsonwebtoken"&gt;jsonwebtoken&lt;/a&gt;. Make sure to install it in your project directory.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So start by defining that policy by going to &lt;code&gt;config/policies.js&lt;/code&gt; and adding the following line within the &lt;code&gt;module.exports.policies&lt;/code&gt; body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   controllerName: {
      'action-name': 'isAuthenticated'
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That way, you told &lt;code&gt;action-name&lt;/code&gt; that &lt;code&gt;isAuthenticated&lt;/code&gt; will make a few checks on HTTP Requests directed to you before it decides whether or not the action can act upon that request.&lt;/p&gt;

&lt;p&gt;Next up, you'll have to actually write that policy. Sails' CLI provides a command to &lt;a href="https://sailsjs.com/documentation/reference/command-line-interface/sails-generate"&gt;generate&lt;/a&gt; just about anything, including policies. So run the following command in your command line:&lt;br&gt;
&lt;code&gt;sails generate policy isAuthenticated&lt;/code&gt;&lt;br&gt;
if all goes well, you will see a &lt;code&gt;isAuthenticated.js&lt;/code&gt; file inside &lt;code&gt;api/policies/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Write the following code inside the &lt;code&gt;isAuthenticated.js&lt;/code&gt; policy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CODE&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/**
 * isAuthenticated
 *
 * @module      :: Policy
 * @description :: Simple policy to require an authenticated user, or else redirect to login page
 *                 Looks for an Authorization header bearing a valid JWT token
 * @docs        :: http://sailsjs.org/#!documentation/policies
 *
 */

module.exports = async function (req, res, next) {
    sails.helpers.verifyJwt.with({
        req: req,
        res: res
    })
        .switch({
            error: function (err) {
                return res.serverError(err)
            },
            invalid: function (err) {
                // if this is not an HTML-wanting browser, e.g. AJAX/sockets/cURL/etc.,
                // send a 401 response letting the user agent know they need to login to
                // access this endpoint.
                if (req.wantsJSON) {
                    return res.sendStatus(401)
                }
                // otherwise if this is an HTML-wanting browser, do a redirect.
                return res.redirect('/login')
            },
            success: function () {
                // user has been attached to the req object (ie logged in) so we're set, they may proceed
                return next()
            }
        })
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;EXPLANATION&lt;/strong&gt;&lt;br&gt;
First off, this policy is getting some help from a helper called &lt;code&gt;verifyJwt&lt;/code&gt;, which we'll write in a minute. It's also giving it two parameters. The request &lt;code&gt;req&lt;/code&gt; and response &lt;code&gt;res&lt;/code&gt;. At first I was confused as to how am I going to pass these parameters to &lt;code&gt;isAuthenticated&lt;/code&gt; from my &lt;code&gt;policies.js&lt;/code&gt; definition? As it turns out, sails takes care of that automatically, since policies are intended, by nature, to take &lt;code&gt;req&lt;/code&gt; and &lt;code&gt;res&lt;/code&gt;, and they are only needed for HTTP Requests.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;verifyJwt&lt;/code&gt; will return either &lt;code&gt;error&lt;/code&gt;, or &lt;code&gt;invalid&lt;/code&gt;, or &lt;code&gt;success&lt;/code&gt;. Each one of these possible returns has its own handling.&lt;br&gt;
If an &lt;code&gt;error&lt;/code&gt; is returned, bad news. You've got a problem in your code or in your request.&lt;br&gt;
If an &lt;code&gt;invalid&lt;/code&gt; is returned, good news for you. Your code's working, but the request won't be forwarded to your action because the request is not authenticated.&lt;br&gt;
If a &lt;code&gt;success&lt;/code&gt; is returned, the user is authenticated, the request is forwarded to your action and everybody's happy.&lt;/p&gt;

&lt;p&gt;Now onto the &lt;code&gt;verifyJwt&lt;/code&gt; helper function. This is going to be the bulk of your authentication logic.&lt;/p&gt;

&lt;p&gt;To do that, we'll have to create a helper&lt;br&gt;
&lt;code&gt;sails generate helper verify-jwt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;inside &lt;code&gt;api/helpers/verify-jwt.js&lt;/code&gt;, we will write&lt;br&gt;
&lt;strong&gt;CODE&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var jwt = require('jsonwebtoken')

module.exports = {
  friendlyName: 'Verify JWT',
  description: 'Verify a JWT token.',
  inputs: {
    req: {
      type: 'ref',
      friendlyName: 'Request',
      description: 'A reference to the request object (req).',
      required: true
    },
    res: {
      type: 'ref',
      friendlyName: 'Response',
      description: 'A reference to the response object (res).',
      required: false
    }
  },
  exits: {
    invalid: {
      description: 'Invalid token or no authentication present.',
    }
  },
  fn: function (inputs, exits) {
    var req = inputs.req
    var res = inputs.res
    if (req.header('authorization')) {
      // if one exists, attempt to get the header data
      var token = req.header('authorization').split('Bearer ')[1]
      // if there's nothing after "Bearer", no go
      if (!token) return exits.invalid()
      // if there is something, attempt to parse it as a JWT token
      return jwt.verify(token, process.env.JWT_KEY, async function (err, payload) {
        if (err || !payload.sub) return exits.invalid()
        var user = await User.findOne(payload.sub)
        if (!user) return exits.invalid()
        // if it got this far, everything checks out, success
        req.user = user
        return exits.success(user)
      })
    }
    return exits.invalid()
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;EXPLANATION&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly, the helper is checking for an &lt;code&gt;authorization&lt;/code&gt; header inside the request. If it doesn't exist, then the request is unauthenticated and will `return exits.invalid();&lt;/li&gt;
&lt;li&gt;If an &lt;code&gt;authorization&lt;/code&gt; header &lt;strong&gt;does&lt;/strong&gt; exist, we extract the &lt;code&gt;token&lt;/code&gt;, and run &lt;code&gt;jsonwebtoken&lt;/code&gt;'s &lt;code&gt;verify&lt;/code&gt; function. This function will return a &lt;code&gt;payload&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;sub&lt;/code&gt; property inside the &lt;code&gt;payload&lt;/code&gt; should exist, as per the &lt;a href="https://jwt.io/"&gt;JWT Anatomy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If it does, it will most likely hold a key identifier for the user (e.g. ID).&lt;/li&gt;
&lt;li&gt;Once we have that &lt;code&gt;sub&lt;/code&gt;, we need to use it to try to find a user, to whom this JWT belongs.&lt;/li&gt;
&lt;li&gt;If this user is found, assign it to your &lt;code&gt;req&lt;/code&gt;. The reason why we're doing that is, if, for some reason  in our code, we need to verify that a certain operation is being requested by userA, who indeed is authenticated, on some belongings to userB. So even though userA is authenticated, they should not be allowed to perform any actions concerning userB (such as, editing a userB's blog post).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And voilà. You've got authentication up and running.&lt;/p&gt;

&lt;p&gt;If you have any questions, feedback, corrections from any misinformation I might have provided (including typos), my direct messages are open for anyone but I strongly urge you to post them in the comments section for everyone to benefit from them.&lt;/p&gt;

&lt;p&gt;Happy coding fellas!&lt;/p&gt;

</description>
      <category>node</category>
      <category>api</category>
      <category>microservices</category>
      <category>jwt</category>
    </item>
    <item>
      <title>NodeJS Frameworks - The Whats and the Whys</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Mon, 29 Jul 2019 09:54:31 +0000</pubDate>
      <link>https://dev.to/christopheek/nodejs-frameworks-the-whats-and-the-whys-291j</link>
      <guid>https://dev.to/christopheek/nodejs-frameworks-the-whats-and-the-whys-291j</guid>
      <description>&lt;p&gt;I've been assigned a task to find the best NodeJS Framework for our API microservice.&lt;br&gt;
The internet is full, overly-saturated if I may, with articles telling you what the top 10 NodeJS frameworks are. Needless to say, I've seen the words Express and Sails in 2 hours more than I've seen my Girlfriend's name IM'ing me in a week.&lt;/p&gt;

&lt;p&gt;Every time I read an article it says MVC-framework, FullStack-framework, RESTful-framework and quite frankly I can't figure out what the hell is going on!&lt;/p&gt;

&lt;p&gt;So, for the NodeJS gurus out there, can someone please write an article about how to pick the right NodeJS Framework? Depicting what the types of frameworks are, and why we need to use each type?&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;

</description>
      <category>help</category>
      <category>discuss</category>
      <category>node</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Framework vs. skeleton. Your move as a #codenewbie</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Mon, 15 Jul 2019 06:56:28 +0000</pubDate>
      <link>https://dev.to/christopheek/framework-vs-skeleton-your-move-as-a-codenewbie-2m46</link>
      <guid>https://dev.to/christopheek/framework-vs-skeleton-your-move-as-a-codenewbie-2m46</guid>
      <description>&lt;p&gt;I've been reading a lot of articles advising newbies about how to start their dev career. Some articles advise for frameworks such as Angular and React, others advise for going native and learning the language itself (e.g. JavaScrtipt, TypeScript).&lt;/p&gt;

&lt;p&gt;What do you experts think?&lt;/p&gt;

&lt;p&gt;In my opinion, learning the fundamentals of any language is always preferred over digging right into the framework itself.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>newbie</category>
      <category>advice</category>
      <category>help</category>
    </item>
    <item>
      <title>Podcasts. How? Why? And When?</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Wed, 03 Jul 2019 06:50:31 +0000</pubDate>
      <link>https://dev.to/christopheek/podcasts-how-why-and-when-1no</link>
      <guid>https://dev.to/christopheek/podcasts-how-why-and-when-1no</guid>
      <description>&lt;p&gt;So my morning routine is all about reading articles while having my cup of coffee before I start coding, and I almost always read the word &lt;code&gt;podcast&lt;/code&gt; in arguably every article.&lt;/p&gt;

&lt;p&gt;A lot of people listen to podcasts. But I've never known why.&lt;/p&gt;

&lt;p&gt;So here's a question for everyone willing to help me out.&lt;/p&gt;

&lt;p&gt;Why the heck would I listen to 1-hour-long podcasts? And where would I do that? Is it possible for me to do it while coding? What are they usually about? Seriously. Just, like. Help pls.&lt;/p&gt;

</description>
      <category>podcast</category>
    </item>
    <item>
      <title>A Guide to DevOps</title>
      <dc:creator>Christophe El-Khoury</dc:creator>
      <pubDate>Wed, 05 Dec 2018 08:44:40 +0000</pubDate>
      <link>https://dev.to/christopheek/a-guide-to-devops-1f02</link>
      <guid>https://dev.to/christopheek/a-guide-to-devops-1f02</guid>
      <description>&lt;p&gt;The other day I stumbled upon a &lt;a href="https://dev.to/joehobot/devops-roadmap-5d0"&gt;Post here concerning DevOps&lt;/a&gt;, which I've been genuinely interested in for a while. To my amateurism, my curiosity and uncertainty weren't satisfied with the article itself. So I asked a &lt;a href="https://dev.to/christopheelkhoury/comment/7b2b"&gt;question&lt;/a&gt;, the answer to which, didn't satisfy my curiosity and, well, uncertainty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Luckily&lt;/strong&gt;, after being stuck in two hours of rain traffic on my way to work, I finished my smoke, got to work and found that &lt;a href="https://github.com/jadsalhani" rel="noopener noreferrer"&gt;one of my co-workers&lt;/a&gt; was kind enough to send us a very, beautiful, &lt;a href="https://github.com/Leo-G/DevopsWiki" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That's how Christmas came early for me.&lt;/p&gt;

&lt;p&gt;I hope it helps you guys!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>wiki</category>
      <category>guide</category>
    </item>
  </channel>
</rss>
