<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Martin Nordström</title>
    <description>The latest articles on Forem by Martin Nordström (@martinnrdstrm).</description>
    <link>https://forem.com/martinnrdstrm</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%2F53250%2F65dbed33-679a-4e52-a071-0759ffca1d30.jpg</url>
      <title>Forem: Martin Nordström</title>
      <link>https://forem.com/martinnrdstrm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/martinnrdstrm"/>
    <language>en</language>
    <item>
      <title>Javascript Algorithms Challenges | Part 2</title>
      <dc:creator>Martin Nordström</dc:creator>
      <pubDate>Sat, 07 Apr 2018 21:46:31 +0000</pubDate>
      <link>https://forem.com/martinnrdstrm/javascript-algorithms-challenges--part-2-344e</link>
      <guid>https://forem.com/martinnrdstrm/javascript-algorithms-challenges--part-2-344e</guid>
      <description>&lt;p&gt;Hey again! &lt;/p&gt;

&lt;p&gt;This is the second part of my Javascript coding challenges and I'm super excited to get into it. I want to thank you all for the very kind response that I got in my first article and I especially want to thank the Dev.to team for featuring it on their Twitter!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bmRIGXKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1461749280684-dccba630e2f6%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3De5a31d03ddee66863a599421f792e07b%26auto%3Dformat%26fit%3Dcrop%26w%3D1350%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bmRIGXKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1461749280684-dccba630e2f6%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3De5a31d03ddee66863a599421f792e07b%26auto%3Dformat%26fit%3Dcrop%26w%3D1350%26q%3D80" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you haven't read the first one, you can do it here: &lt;a href="https://dev.to/martinnrdstrm/javascript-algorithms-challenges--part-1--hc7"&gt;Javascript Algorithms Challenges | Part 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's get into the challenges now! :-)&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;I will be using Node.js to run the Javascript code, so you should install that before continuing.&lt;/p&gt;

&lt;p&gt;I have created some start code for this article so you can get started quick! Here it is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*
Author: Martin Nordström
Created: 2018/04/07 
Keep coding!
*/

// MAX CHARACTER CHALLENGE
// Return the character that is most common in a string
function maxCharacter(str) {}

// FIZZBUZZ CHALLENGE
// Write a program that prints all the numbers from 1 to 100. For multiples of 3, instead of the number, print "Fizz", for multiples of 5 print "Buzz". For numbers which are multiples of both 3 and 5, print "FizzBuzz".
function fizzBuzz() {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you have Node.js installed and the start code you are ready to go! :-)&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Challenge 1 — Max character&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;There's a lot of different ways you can approach and solve this problem. I want to show you one that is kinda complicated, but I believe it's a really good way to better up your skills and show off if you are getting this problem at an interview. &lt;/p&gt;

&lt;p&gt;What we need to do is show the most common character in a string. For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maxCharacter('lollipop') == 'l'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As you can see the most used character in the string &lt;code&gt;lollipop&lt;/code&gt; is &lt;code&gt;l&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;We are first going to create an object as a map. So we will be creating an empty object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function maxCharacter(str) {
  const charMap = {};
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, we want to loop through the string as an array. We first use the &lt;code&gt;split()&lt;/code&gt; method to make the string into an array and then use &lt;code&gt;forEach()&lt;/code&gt; to loop through every index in the array. Note that we need to provide &lt;code&gt;forEach()&lt;/code&gt; a function that it will call each iteration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function maxCharacter(str) {
  const charMap = {};

  str.split('').forEach((char) =&amp;gt; {

  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We want to look through each key-value pair since it's going to be key-value pairs of the actual character and how many of them that are inside. So if the key exists we want to add 1 to it so we can see which one is the biggest. And if no character has been found yet, like the first character of the string, we just want to add 1 to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function maxCharacter(str) {
  const charMap = {};

  str.split('').forEach((char) =&amp;gt; {
    if (charMap[char]) {
      charMap[char]++; // This will add 1
   } else { // If no letter has been found yet
       charMap[char] = 1;
      }
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we try to run this function with the string &lt;code&gt;lollipop&lt;/code&gt; we will get:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{ l: 3, o: 2, i: 1, p: 2 }&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;As you can see it does notice wich character is most used in the string! Which is &lt;code&gt;l&lt;/code&gt; in this case.&lt;/p&gt;

&lt;p&gt;By the way! I'm calling the function like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const output = maxCharacter('lollipop');

console.log(output);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since it doesn't work if I don't and if you know why please let me know!!&lt;/p&gt;

&lt;p&gt;Now we have to return the character that is most common in the string. For that, I will be using a &lt;code&gt;for in loop&lt;/code&gt;, which is used to loop through an object, instead of an array.  We also going to add two more variables. &lt;code&gt;maxChar&lt;/code&gt; and &lt;code&gt;maxNum&lt;/code&gt;. They will both equal "nothing", meaning empty string an just a 0.  &lt;code&gt;maxChar&lt;/code&gt; is going to be the actual number that has the most occurrences and &lt;code&gt;maxNum&lt;/code&gt; will be that number. So for &lt;code&gt;lollipop&lt;/code&gt; &lt;code&gt;maxNum&lt;/code&gt; will be 2 and &lt;code&gt;maxChar&lt;/code&gt; is going to be &lt;code&gt;l&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I should also say that we will create the variables with &lt;code&gt;let&lt;/code&gt; and not &lt;code&gt;const&lt;/code&gt; since the values of the variables will change.&lt;/p&gt;

&lt;p&gt;We can check that with an if statement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (let char in charMap) {
  if (charMap[char] &amp;gt; maxNum) {
    maxNum = charMap[char];
    maxChar = char;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we are checking if the key is greater than the &lt;code&gt;maxNum&lt;/code&gt; (which it will be the first iteration). So we will set &lt;code&gt;maxNum&lt;/code&gt; to the actual value and then we will set the &lt;code&gt;maxChar&lt;/code&gt; to the actual character. And then just return the &lt;code&gt;maxChar&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;What we will have is this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function maxCharacter(str) {
  const charMap = {};
  let maxNum = 0;
  let maxChar = '';

  str.split('').forEach((char) =&amp;gt; {
    if (charMap[char]) {
      charMap[char]++; // This will add 1
   } else { // If no letter has been found yet
       charMap[char] = 1;
      }
  });

  for (let char in charMap) {
    if (charMap[char] &amp;gt; maxNum) {
      maxNum = charMap[char];
      maxChar = char;
    }
  }
  return maxChar;
}

const output = maxCharacter('lollipop');

console.log(output); // Gives us l in this case
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congrats! You now know how to check the most common character in a string with Javascript!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HotpEzbX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1517867134921-7623876aaaa9%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3D9537af3ea320f060f19d6b70efab7ef8%26auto%3Dformat%26fit%3Dcrop%26w%3D500%26q%3D60" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HotpEzbX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1517867134921-7623876aaaa9%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3D9537af3ea320f060f19d6b70efab7ef8%26auto%3Dformat%26fit%3Dcrop%26w%3D500%26q%3D60" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Challenge 2 — Fizzbuzz&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The last challenge for this article is a popular one and you probably have heard of this. It's super popular in interviews and in schools. I did this in C++ once in my programming class for example. &lt;/p&gt;

&lt;p&gt;What we first going to do is create a for loop. And in the for loop we are going to set a variable to 1 and say that as long as that variable is less, or equal to 100 we will keep looping and lastly we also want to increment that variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function fizzBuzz() {
  for (let i = 1; i &amp;lt;= 100; i++) {
    console.log(i) // 1,2,3,4,5,6,7,8....100
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What we want to happen is every multiple of 3 (3, 6, 9, 12 etc) we want to print the word &lt;code&gt;fizz&lt;/code&gt;. And every multiple of 5 (5, 10, 15, 20 etc) we want to print the word &lt;code&gt;buzz&lt;/code&gt;. And every time we get the same multiple for the two numbers, like 15 we want to print &lt;code&gt;fizzbuzz&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you know how to use the modulus operator you can solve this pretty quickly and easily. &lt;/p&gt;

&lt;p&gt;We are just going to create an if statement that looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (i % 3 === 0) {
  console.log('fizz');
} else {
  console.log(i);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modulus will just give us a remainder and if there's no remainder it's a multiple. Otherwise, we will just output the number. If we run this we will get the following output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
fizz
4
5
fizz
7
8
fizz
10
11
fizz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And as you can see, no 3 or 6 or 9 etc!&lt;/p&gt;

&lt;p&gt;For the number 5, we can just create an else if` statement inside of the if statement. And replace the 3 with 5 in this case. Like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
if (i % 3 === 0) {&lt;br&gt;
  console.log('Fizz');&lt;br&gt;
} else if (i % 5 === 0) {&lt;br&gt;
  console.log('Buzz');&lt;br&gt;
} else {&lt;br&gt;
  console.log(i);&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that will give us:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
1&lt;br&gt;
2&lt;br&gt;
Fizz&lt;br&gt;
4&lt;br&gt;
Buzz&lt;br&gt;
Fizz&lt;br&gt;
7&lt;br&gt;
8&lt;br&gt;
Fizz&lt;br&gt;
Buzz&lt;br&gt;
11&lt;br&gt;
Fizz&lt;br&gt;
13&lt;br&gt;
14&lt;br&gt;
Fizz // Gotta fix this!!&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It works! But we need to fix that every time there's a multiple of 3 and 5 together we want to print put FizzBuzz. As you can see, the number 15 is being printed out as Fizz which is no bueno. &lt;/p&gt;

&lt;p&gt;What we can do is make our current if statement an else if statement, because we want to check if there are any "FizzBuzz" numbers out there first. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
if (i % 3 === 0 &amp;amp;&amp;amp; i % 5 === 0) {&lt;br&gt;
  console.log('FizzBuzz');&lt;br&gt;
} else if (i % 3 === 0) {&lt;br&gt;
  console.log('Fizz');&lt;br&gt;
} else if (i % 5 === 0) {&lt;br&gt;
  console.log('Buzz');&lt;br&gt;
} else {&lt;br&gt;
  console.log(i);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will give us:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
1&lt;br&gt;
2&lt;br&gt;
Fizz&lt;br&gt;
4&lt;br&gt;
Buzz&lt;br&gt;
Fizz&lt;br&gt;
7&lt;br&gt;
8&lt;br&gt;
Fizz&lt;br&gt;
Buzz&lt;br&gt;
11&lt;br&gt;
Fizz&lt;br&gt;
13&lt;br&gt;
14&lt;br&gt;
FizzBuzz&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that's it! You have now completed the famous FizzBuzz challange! &lt;/p&gt;

&lt;p&gt;Also, you can shorten this up a little bit by replacing&lt;br&gt;
&lt;code&gt;if (i % 3 === 0 &amp;amp;&amp;amp; i % 5 === 0)&lt;/code&gt; with &lt;code&gt;if (i % 15 === 0)&lt;/code&gt;&lt;br&gt;
Because if it's a multiple of 15 it will be a multiple by 3 and 5. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l7MiZPU6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1467647160393-708009aefd5c%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3Dfddd029035159a61b775445d138e6aed%26auto%3Dformat%26fit%3Dcrop%26w%3D500%26q%3D60" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l7MiZPU6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1467647160393-708009aefd5c%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3Dfddd029035159a61b775445d138e6aed%26auto%3Dformat%26fit%3Dcrop%26w%3D500%26q%3D60" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Last Remarks&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Thank you for reading the second part of my “Javascript Algorithms Challenges” series. I hope you have learned something new that you might be able to use later in the future! I will try to find more fun and instructive challenges. So please follow me here or on my other social media platforms to get news about the upcoming articles!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Martin Nordström&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/martinnordstromcode/"&gt;Instagram&lt;/a&gt; | &lt;a href="https://twitter.com/martinnrdstrm"&gt;Twitter&lt;/a&gt; | &lt;a href="https://github.com/martinnord"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>algorithms</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Javascript Algorithms Challenges | Part 1</title>
      <dc:creator>Martin Nordström</dc:creator>
      <pubDate>Tue, 13 Mar 2018 09:24:56 +0000</pubDate>
      <link>https://forem.com/martinnrdstrm/javascript-algorithms-challenges--part-1--hc7</link>
      <guid>https://forem.com/martinnrdstrm/javascript-algorithms-challenges--part-1--hc7</guid>
      <description>&lt;p&gt;This is the beginning of a series I will be writting about coding challanges in Javascript and how to solve them (in SOME ways).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpxwnxe2wz1pvhji3g9z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpxwnxe2wz1pvhji3g9z.jpeg" alt="Alt text of image" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Why even bother with reading this?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;If you are planning on becoming a good programmer I bet some of you have plans on getting a job in the future. And when getting a job you have to go through a process, of which contains interviews and probably coding challenges. Some can be on a whiteboard at the company or on your computer at home. Companies usually do these types of tests because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It shows that you know your programming logic&lt;/li&gt;
&lt;li&gt;It shows that you have critical thinking skills&lt;/li&gt;
&lt;li&gt;It shows how you can work under pressure&lt;/li&gt;
&lt;li&gt;It just shows the company a general picture of how you code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore it’s good to know and get better at writing algorithms since it’s probably those the company want’s you to write.&lt;/p&gt;

&lt;p&gt;I have therefore decided to start a series, “Javascript Algorithms Challenges”, where I will bring up different challenges and show how to solve them (in some ways) to make you get a better understanding about writing algorithms and understand them.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;I will be using Node.js to run the Javascript code, so you should install that before continuing.&lt;/p&gt;

&lt;p&gt;I have created a Gist for this article so you can get started quick! Here it is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*
Author: Martin Nordström
Created: 2018/03/09 
Keep coding!
*/

// REVERSE A STRING CHALLENGE
// Return string in reverse
function reverseString(str) {}

// PALINDROME CHALLENGE
// Return true if palindrome and false if not
function isPalindrome(str) {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you have Node.js installed and the Gist downloaded you are ready to go! :-)&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Challenge 1 — Reverse a string&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Since this challenge is pretty simple I will include a couple of ways on how to solve it so you can get an idea that there’s a lot of different ways to accomplish the same results. Here’s what we will start with:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function reverseString(str) {}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The first thing we could do is create a new variable and we’re going to set that to the string that’s passed in with &lt;code&gt;split()&lt;/code&gt;. Since &lt;code&gt;split()&lt;/code&gt; turns a string into an array and takes in a parameter of a separator. And because we want each character to be put in its own array value we will just be setting the parameter to &lt;code&gt;''&lt;/code&gt;. It will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  const strArray = str.split('');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we could use the array prototype method reverse() which will just reverse the array (&lt;em&gt;smart right?&lt;/em&gt;). So let’s overwrite the current value.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function reverseString(str) {&lt;br&gt;
  const strArray = str.split('');&lt;br&gt;
  strArray.reverse();&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;To test this we can call the function and pass in a string to see what this gives us. And let’s not forget to put a &lt;code&gt;console.log()&lt;/code&gt; at the bottom of the function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  const strArray = str.split('');
  strArray.reverse();
  console.log(strArray);
}
reverseString('Hello Medium');
// Output:
[ 'm', 'u', 'i', 'd', 'e', 'M', ' ', 'o', 'l', 'l', 'e', 'H' ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we get the array in reversed order we can just turn it back to a regular string. And we can do this with &lt;code&gt;join()&lt;/code&gt; which joins the elements of an array into a string and returns the string. We can also specify a separator like we did with &lt;code&gt;split()&lt;/code&gt;. So let’s return the new string with the &lt;code&gt;join()&lt;/code&gt; method applied. The code will then look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  const strArray = str.split('');
  strArray.reverse();
  return strArray.join('');
}
reverseString('hello');
// Output: muideM olleH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works fine, but it is really messy. We honestly don’t even need the strArray variable! What we can do to clean this up is to just chain these methods together, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  return str.split('').reverse().join('');
}
reverseString('Hello Medium');
// Output: muideM olleH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of using these methods we could also use the good old FOR loop! For this example we will be using a &lt;em&gt;decrementing&lt;/em&gt; FOR loop.&lt;/p&gt;

&lt;p&gt;The first thing we should do is create a new variable that contains an empty string that will host the new created string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  let revString = "";  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second step is to create the actual for loop. We will be using the str length, but like this: &lt;code&gt;str.length — 1&lt;/code&gt; since that it will correspond to the last letter in the string. In our case, “m”. We will also loop as long as &lt;code&gt;i&lt;/code&gt; is greater than or equals 0 and decrement i after each iteration. Then add the &lt;code&gt;newString&lt;/code&gt; variable to it’s self and to the index value of the array &lt;code&gt;str&lt;/code&gt;. We also have to return the &lt;code&gt;revString&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function reverseString(str) {
  let revString = "";

  for (let i = str.length - 1; i &amp;gt;= 0; i--) {
    revString += str[i];
  }

  return revString;

}
reverseString('Hello Medium');
// Output: muideM olleH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congrats! You now know two ways to reverse a string in Javascript!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffd2lzps4csrzebrsupra.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffd2lzps4csrzebrsupra.jpeg" alt="Alt text of image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Challenge 2— Palindrome&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;First, a palindrome is a word or a phrase that’s the same whether it’s forward or backward. Some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anna&lt;/li&gt;
&lt;li&gt;A but tuba&lt;/li&gt;
&lt;li&gt;Are we not pure? “No sir!” Panama’s moody Noriega brags. “It is garbage!” Irony dooms a man; a prisoner up to new era&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So what we are going to do is to return true if the word or phrase is a palindrome or return false if it’s not a palindrome. Pretty simple stuff!&lt;/p&gt;

&lt;p&gt;This is our starting block of code:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function isPalindrome(str) {}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The first we could do is reverse the string, set it’s value to a variable and since we already know how to do it this one will be super easy! I will go with our first solution since it’s the most practical (in my opinion).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function isPalidrom(str) {
  const revString = str.split('').reverse().join('');
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And since a palindrome is the same thing forward as it is backward we can just check if the two different strings are equal!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function isPalidrom(str) {
  const revString = str.split('').reverse().join('');

  return revString === str;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can also tidy up the code a little bit and of course call the function and pass in a string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function isPalidrom(str) {
  return str === str.split('').reverse().join('');
}
isPalidrom('Hello Medium');
// Output: false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see this will return &lt;code&gt;false&lt;/code&gt; since &lt;em&gt;“Hello Medium”&lt;/em&gt; is &lt;strong&gt;not&lt;/strong&gt; a palidrom! But &lt;em&gt;“Are we not pure? “No sir!” Panama’s moody Noriega brags. “It is garbage!” Irony dooms a man; a prisoner up to new era”&lt;/em&gt; is!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function isPalidrom(str) {
  return str === str.split('').reverse().join('');
}
isPalidrom('Are we not pure? “No sir!” Panama’s moody Noriega brags. “It is garbage!” Irony dooms a man; a prisoner up to new era');
// Output: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One quick note thought! If we type in &lt;code&gt;rAceCar&lt;/code&gt; it will return false since we have a capital &lt;code&gt;C? and a capital&lt;/code&gt;A`. But don’t worry, the fix is super easy!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
function isPalidrom(str) {&lt;br&gt;
  str = str.toLowerCase(); &lt;br&gt;
  return str === str.split('').reverse().join('');&lt;br&gt;
}&lt;br&gt;
isPalidrom('Are we not pure? “No sir!” Panama’s moody Noriega brags. “It is garbage!” Irony dooms a man; a prisoner up to new era');&lt;br&gt;
// Output: true&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here we are just making the string to be lowercase and then compare them two.&lt;/p&gt;

&lt;p&gt;Congratulations again! You now know how to check after palindromes with Javascript as well!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qank3wxc0xslpcy55zh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qank3wxc0xslpcy55zh.jpeg" alt="Alt text of image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Last Remarks&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;I hope you found this helpful. This is the first part of my “Javascript Algorithms Challenges” series. I will try to find more fun and instructive challenges. So please follow me here or on my other social media platforms to get news about the upcoming articles!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Goals&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;I have many goals this year. The most important one is to become a better developer in general, but also reach 100 followers on Medium and publish more content here that will help others to learn new things. Knowledge is power!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Martin Nordström&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/martinnordstromcode/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; | &lt;a href="https://twitter.com/martinnrdstrm" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; | &lt;a href="https://github.com/martinnord" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article was originally posted on Medium. If you want to check it out there, follow this link: &lt;a href="https://medium.com/@martinnord/javascript-algorithms-challanges-part-1-a56ba47ff43f" rel="noopener noreferrer"&gt;Original Article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>algorithms</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Callback Functions in NodeJS</title>
      <dc:creator>Martin Nordström</dc:creator>
      <pubDate>Tue, 06 Mar 2018 00:05:57 +0000</pubDate>
      <link>https://forem.com/martinnrdstrm/callback-functions-innodejs--2607</link>
      <guid>https://forem.com/martinnrdstrm/callback-functions-innodejs--2607</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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdjcef43bckrb6yijykao.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdjcef43bckrb6yijykao.jpeg" alt="a lot of code!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Node.js?
&lt;/h3&gt;

&lt;p&gt;NodeJS is a runtime for server side “Javascripting”. You probably already know that we have Javascript in thr client side (browser) that pretty much power everything we see online. And there’re a lot of different client side frameworks that runs on Javascript, like React, Angular, Vue etc. But what NodeJS lets us do is to run it on the server side.&lt;br&gt;
NodeJS is also an asynchronous platform, it doesn’t wait around for things to finish, it’s non-blocking. But how does it do that? Callbacks!&lt;br&gt;
Callback is a function that is called at the completion of any given task. So if I tell Node to go and to something, once that task is completed we can have a callback function to do something else. It basically allows other code to run in the meantime.&lt;br&gt;
So I’d like to show what that does and what it looks like.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;We can start off by brining in the file system package because I want to work with some files on my disk. I’ve pre-written a file named helloWorld.txt in the same directory as my &lt;code&gt;app.js&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const fs = require('fs')&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Now we’re going to make an anonymous function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const fs = require('fs')
let results = (path) =&amp;gt; {
  fs.readFile(path, 'utf8', function(err, contents) {
    console.log(contents)
  })
}
results('./helloworld.txt')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first thing we do is passing in the path. Then we want to asynchronously read in a file, so we give it a path, an encoding utf8 and finally we pass in a callback function (I didn’t use an arrow function because it will easier if you see the keyword function). That function will execute once the read file is &lt;em&gt;completed&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is the order once more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;readFile()&lt;/code&gt; will run.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;function(err, contents)&lt;/code&gt; will run after &lt;code&gt;readFile()&lt;/code&gt; is completed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In our callback function, we are passing in an error, not because we’ll get one, but because we follow the standard callback pattern. We also pass in the contents that will come back from reading the file.&lt;/p&gt;

&lt;p&gt;So far we’ve created a very standard anonymous function (we haven’t given it a name) that takes a path and we store it in the let &lt;em&gt;results&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Finally we can call &lt;code&gt;reader&lt;/code&gt; just by calling the function with &lt;code&gt;()&lt;/code&gt; and passing in a path.&lt;/p&gt;

&lt;p&gt;Hit &lt;code&gt;CMD + S&lt;/code&gt; or &lt;code&gt;Ctrl + S&lt;/code&gt; , bring up your console and then type &lt;code&gt;node app.js&lt;/code&gt; (or whatever you named your file). Your output should be what’s inside of your text file.&lt;/p&gt;

&lt;p&gt;And your done!&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How I Landed My First Developer Job After 78 Days.</title>
      <dc:creator>Martin Nordström</dc:creator>
      <pubDate>Mon, 05 Mar 2018 22:09:42 +0000</pubDate>
      <link>https://forem.com/martinnrdstrm/how-i-landed-my-first-developer-job-after-78-days--jnd</link>
      <guid>https://forem.com/martinnrdstrm/how-i-landed-my-first-developer-job-after-78-days--jnd</guid>
      <description>&lt;p&gt;“Life is like riding a bicycle. To keep your balance you must keep moving.” — Albert Einstein.&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%2Fimages.unsplash.com%2Fphoto-1484807352052-23338990c6c6%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3D6f3cb0473315ed1eca1b47d280bb2ab1%26auto%3Dformat%26fit%3Dcrop%26w%3D2700%26q%3D80" 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-1484807352052-23338990c6c6%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3D6f3cb0473315ed1eca1b47d280bb2ab1%26auto%3Dformat%26fit%3Dcrop%26w%3D2700%26q%3D80" alt="Credit: https://unsplash.com/photos/_UeY8aTI6d0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;It wasn't till I got into high school my interest for programming started to develop, before that. I hated it. My friend Oskar introduced me to web development about one year ago and I started to enjoy it. I never became a pro, but I managed to create some websites, i.e. my own. So, I first touched code about one year ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related experience
&lt;/h2&gt;

&lt;p&gt;Before I got into development I was a web developer, but after some time I got tired of it and wanted a change. So I downloaded Xcode from the App store and booted up the playground. After some time I started to get comfortable with Swift. I believe that you never know when you are ready for something, you just need to take the shot, so I started to apply for internships over the summer, even though I’ve been coding with Swift for about 1,5 months (crazy, I know).&lt;/p&gt;

&lt;h2&gt;
  
  
  I took the shot
&lt;/h2&gt;

&lt;p&gt;I applied to a lot of companies, too many for me to remember. My inbox was filled with emails containing: “Sorry, but we can’t take in you right now”, “There’s no space here”, “You need more experience” etc. But I never gave up, I continued to search and apply, till one startup was interested and wanted to meet me. The first thought I got was; “What the f*ck have I done?!”, but I acted cool and went on their meeting.&lt;/p&gt;

&lt;p&gt;They liked me (I think) and decided to send me a test. The test was related to what they’re doing and if I pass the test I will have good prerequisites to get the job. I won’t go into too much detail about the test, but I wanted to rip my hair off because I had no idea what I was doing. But again, I didn’t give up, I continued to work and learn because I wanted the job so bad.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“You can do anything you set your mind to”, Benjamin Franklin.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And I passed it and got the job. I got the agreement, signed it and &lt;strong&gt;poof&lt;/strong&gt;, I was a hired as a developer. I went from watching videos and reading about software development and used my self-taught knowledge to get a job as a developer. I was so proud and the feeling was amazing.&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%2Fimages.unsplash.com%2Fphoto-1444850264539-b1371b0d28e1%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3Da20b147796b736ee6c42e1b94797d3f2%26auto%3Dformat%26fit%3Dcrop%26w%3D1567%26q%3D80" 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-1444850264539-b1371b0d28e1%3Fixlib%3Drb-0.3.5%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26s%3Da20b147796b736ee6c42e1b94797d3f2%26auto%3Dformat%26fit%3Dcrop%26w%3D1567%26q%3D80" alt="Test:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I did it
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Step 1 — Teaching Myself Software Development
&lt;/h4&gt;

&lt;p&gt;The first and oblivious part is to teach yourself software development. I actually began with buying a course on Udemy. I followed along on some videos, but I wanted a different kind of learning recourse, so I started to read Hacking with Swift. A really great book with a lot of small projects which gives you a foundation around software development. But after some time I realized that the most effective way to learn is by doing. Try different things, make small apps and just hack along!&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2 — Showcasing Myself
&lt;/h4&gt;

&lt;p&gt;I began to upload my projects to my Github profile so I have somewhere to showcase them and show that I am an active developer. I also started to build up my LinkedIn profile so I would look more professional.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3 — Introducing Myself to the Company
&lt;/h4&gt;

&lt;p&gt;When I started to feel comfortable with software development, I started reaching out to companies in my area. At first, everything felt hopeless, no one responded to my email and those who did ditch me. But after a while, one startup responded and wanted to meet me.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4 — The Interview
&lt;/h4&gt;

&lt;p&gt;The final, scariest and most important part in the process. I watched countless of hours how to nail an interview and how to act cool, but nothing helped. This is where you will talk about the apps you’ve built, the skills you have and why want to be an software developer. If the interview went well, they will probably send you a test that they want you to pass, and if you pass it, you’re home safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Last Remarks
&lt;/h2&gt;

&lt;p&gt;I hope you got some insights about how to take your coding career to the next level and that you found at least one thing valuable!&lt;/p&gt;

&lt;h2&gt;
  
  
  Martin Nordström
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/martinnordstromcode/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; | &lt;a href="https://twitter.com/martinnrdstrm" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; | &lt;a href="https://github.com/martinnord" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article was originally posted on Medium. If you want to check it out there, follow this link: &lt;a href="https://medium.com/@martinnord/how-i-landed-my-first-ios-job-after-78-days-1faf69403fc6" rel="noopener noreferrer"&gt;Original Article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>work</category>
      <category>inspiration</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
