<?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: Mike Ekkel</title>
    <description>The latest articles on DEV Community by Mike Ekkel (@murkrage).</description>
    <link>https://dev.to/murkrage</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%2F52767%2F0186e29a-4b47-4294-baea-4f896cb04438.jpeg</url>
      <title>DEV Community: Mike Ekkel</title>
      <link>https://dev.to/murkrage</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/murkrage"/>
    <language>en</language>
    <item>
      <title>What do you think it means to be a Senior Developer?</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Thu, 15 Apr 2021 13:19:21 +0000</pubDate>
      <link>https://dev.to/murkrage/what-do-you-think-it-means-to-be-a-senior-developer-45jd</link>
      <guid>https://dev.to/murkrage/what-do-you-think-it-means-to-be-a-senior-developer-45jd</guid>
      <description>&lt;p&gt;Let's discuss what people's interpretation of a senior developer is.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Slice and splice: explained</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Sun, 31 Jan 2021 18:08:46 +0000</pubDate>
      <link>https://dev.to/murkrage/slice-and-splice-explained-5em5</link>
      <guid>https://dev.to/murkrage/slice-and-splice-explained-5em5</guid>
      <description>&lt;p&gt;While &lt;code&gt;.slice()&lt;/code&gt; and &lt;code&gt;.splice()&lt;/code&gt; are incredibly useful, the similarity of their names can cause a lot of confusion for beginner and seasoned developers alike. This post will explain the difference and, hopefully, give you the confidence to use them in your code!&lt;/p&gt;

&lt;h2&gt;
  
  
  Slice
&lt;/h2&gt;

&lt;p&gt;Slice is the easier of the two to explain, since it only does one thing, so I'll start there.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Array.slice(startIndex, endIndex)&lt;/code&gt; will return a copy of the array from &lt;code&gt;startIndex&lt;/code&gt; up until (not including) the &lt;code&gt;endIndex&lt;/code&gt; you've provided &lt;em&gt;without&lt;/em&gt; changing the original array. If you don't provide an &lt;code&gt;endIndex&lt;/code&gt;, it will go until the end of the array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;week&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Monday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tuesday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Wednesday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Thursday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Friday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Saturday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sunday&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;weekend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Will return ["Saturday", "Sunday"]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;weekdays&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&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="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Will return ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Splice
&lt;/h2&gt;

&lt;p&gt;There are &lt;em&gt;three&lt;/em&gt; things you can do with splice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove part of the array&lt;/li&gt;
&lt;li&gt;Replace part of the array with a new value&lt;/li&gt;
&lt;li&gt;Insert something new anywhere within the array&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The syntax for splice is: &lt;code&gt;Array.splice(startIndex, deleteCount, replacingItems)&lt;/code&gt;. I'll show you what they mean based on the three things you can do with splice. The only required parameter is &lt;code&gt;startIndex&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Splice has a major gotcha that you need to be aware of: &lt;strong&gt;splice changes the original array&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Removing part of the array
&lt;/h3&gt;

&lt;p&gt;Let’s say you are running a race and there are 6 finishers. To figure out who to give a trophy, you want to eliminate everyone except the top three. Everyone outside of the top three will get a medal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Top three trophies&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;finishers&lt;/span&gt; &lt;span class="o"&gt;=&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;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&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="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Medals outside of top three&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;finishers&lt;/span&gt; &lt;span class="o"&gt;=&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;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&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="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// [4, 5, 6]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above example can be done in a single go because &lt;code&gt;Array.splice()&lt;/code&gt; returns the deleted portion of the array. This is what that would look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;finishers&lt;/span&gt; &lt;span class="o"&gt;=&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;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;medals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;finishers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// [1, 2, 3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;medals&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// [4, 5, 6]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Replacing part of the array with a new value
&lt;/h3&gt;

&lt;p&gt;Let’s say you want to fix the following array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;months&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;January&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;September&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;March&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;April&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obviously, &lt;code&gt;"September"&lt;/code&gt; is wrong and you want to replace it with &lt;code&gt;"February".&lt;/code&gt; Here’s what that would look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Array.splice(startIndex, deleteCount, replacingItems)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;months&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;January&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;September&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;March&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;April&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;months&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&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;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;February&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;months&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// ['January', 'February', 'March', 'April']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Inserting something new anywhere within the array
&lt;/h3&gt;

&lt;p&gt;Using the same example as above, let’s say you forgot to add a month in your array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;months&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;January&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;March&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;April&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to add &lt;code&gt;”February"&lt;/code&gt; to the array, you can use the exact same code as replacing part of the array but this time you set the &lt;code&gt;deleteCount&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Array.splice(startIndex, deleteCount, replacingItems)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;months&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;January&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;March&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;April&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;months&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&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;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;February&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;months&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// ['January', 'February', 'March', 'April']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Wrapping things up
&lt;/h2&gt;

&lt;p&gt;While slice and splice have incredibly similar names and return values, they are used entirely different and have different use cases. I hope this post has been helpful to you.&lt;/p&gt;

&lt;p&gt;Hit me up if you find anything unclear or confusing. I’d be happy to explain it to you in more detail and will update this post accordingly!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>What Javascript features are the most confusing to you?</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Sun, 17 Jan 2021 08:33:36 +0000</pubDate>
      <link>https://dev.to/murkrage/what-javascript-features-are-the-most-confusing-to-you-5fe1</link>
      <guid>https://dev.to/murkrage/what-javascript-features-are-the-most-confusing-to-you-5fe1</guid>
      <description>&lt;p&gt;In an effort to help out aspiring developers, I’m interested in hearing about what you think the most confusing parts of Javascript are.&lt;/p&gt;

&lt;p&gt;I’ll try my best to explain a concept and, hopefully, others will chime in 😊.&lt;/p&gt;

&lt;p&gt;This is a safe space, which means all questions are good questions! &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>discuss</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to work on dependency code using NPM link</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Fri, 21 Aug 2020 15:01:14 +0000</pubDate>
      <link>https://dev.to/murkrage/how-to-work-on-dependency-code-using-npm-link-1ckh</link>
      <guid>https://dev.to/murkrage/how-to-work-on-dependency-code-using-npm-link-1ckh</guid>
      <description>&lt;p&gt;You might, at some point, find yourself in a situation where you have to work in dependency code. There might be a bug in the dependency, functionality might be extended, or perhaps the code needs refactoring to be more performant.&lt;/p&gt;

&lt;p&gt;You could use &lt;code&gt;npm pack&lt;/code&gt; to create a &lt;code&gt;dependency.tgz&lt;/code&gt; package file when you're ready to test your changes. You would have to link to that file inside your &lt;code&gt;package.json&lt;/code&gt; like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"component-library"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./path/to/dependency.tgz"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem with this approach is that you would have to pack your files every single time you want to test your changes, and you have to remember to put your &lt;code&gt;package.json&lt;/code&gt; back the way it was.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing NPM link
&lt;/h2&gt;

&lt;p&gt;I personally think &lt;code&gt;npm link&lt;/code&gt; is a cool feature. It creates a symbolic link (symlink) between a package and where you want to use that package. In other words: it connects a package you have locally on your machine to the project you need it in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;Package linking is a two-step process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a symlink&lt;sup id="fnref1"&gt;1&lt;/sup&gt;, or symbolic link, in the global folder by running &lt;code&gt;npm link&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tell NPM in your application to use the global symlink using &lt;code&gt;npm link DEPENDENCY_NAME&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&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; ~/projects/dependency
npm &lt;span class="nb"&gt;link&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;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/application
npm &lt;span class="nb"&gt;link &lt;/span&gt;dependency
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From here on out you can make changes in your dependency's code as you would normally do. Meanwhile, your application will run with the changes you've made without having to update the dependency. Pretty cool, right?!&lt;/p&gt;

&lt;p&gt;When you decide your changes are good to go and you're ready to update the dependency, you may want to delete the symlink.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚠️ Unlinking a dependency with NPM unlink ⚠️
&lt;/h2&gt;

&lt;p&gt;While there is a command called &lt;code&gt;unlink&lt;/code&gt;, it doesn't actually behave as you might expect. The &lt;code&gt;npm unlink&lt;/code&gt; command is an alias for &lt;code&gt;npm uninstall&lt;/code&gt;&lt;sup id="fnref2"&gt;2&lt;/sup&gt; and you want to be very careful when using it to delete the symlink.&lt;/p&gt;

&lt;p&gt;If you want to properly remove the symlink without uninstalling the package, you'll have to run the command with the &lt;code&gt;--no-save&lt;/code&gt; flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;unlink&lt;/span&gt; &lt;span class="nt"&gt;--no-save&lt;/span&gt; dependency
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will uninstall the dependency without removing it from your &lt;code&gt;package.json&lt;/code&gt;. All that's left to do now is to install the dependency as it's listed inside &lt;code&gt;package.json&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;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Good to know
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;List all linked packages&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you want to find out what packaged you have linked, run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm list &lt;span class="nt"&gt;-g&lt;/span&gt; &lt;span class="nt"&gt;--depth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0 &lt;span class="nt"&gt;--link&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Speed up unlinking&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This might seem obvious for a CLI power-user, but you can unlink and install in one go by chaining commands! Here's how to do that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;unlink&lt;/span&gt; &lt;span class="nt"&gt;--no-save&lt;/span&gt; dependency &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final words
&lt;/h2&gt;

&lt;p&gt;I use &lt;code&gt;npm link&lt;/code&gt; all the time while working on dependencies for my team. We rely on a bunch of libraries that we've created ourselves and using &lt;code&gt;npm link&lt;/code&gt; makes improving them a whole lot easier and faster.&lt;/p&gt;

&lt;p&gt;It's been a while since I've written a post, but I hope you've enjoyed it and found it useful!&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;A symlink is a reference, or shortcut, to another file or directory on your system. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://docs.npmjs.com/cli/uninstall.html"&gt;NPM: npm - uninstall&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>npm</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>CSS Combinators: explained and visualized</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Sun, 07 Jun 2020 14:00:38 +0000</pubDate>
      <link>https://dev.to/murkrage/css-combinators-explained-and-visualized-4i6k</link>
      <guid>https://dev.to/murkrage/css-combinators-explained-and-visualized-4i6k</guid>
      <description>&lt;p&gt;Selectors help us target a specific HTML element we want to apply styling to on our page. There are many selectors available to us, allowing for very precise control over styling. The &lt;strong&gt;combinator&lt;/strong&gt; is a type of selector that combines different selectors and gives them a useful relationship to each other.&lt;/p&gt;

&lt;p&gt;Sometimes we want to style based on the relationship between two elements. On my blog, for example, paragraphs have different styling when it immediately follows a heading. This is exactly what combinators allow us to do.&lt;/p&gt;

&lt;p&gt;In this post, we're going to take a closer look at each of the four combinators: descendent, child, general sibling, and adjacent sibling. We'll look at example code as well as visualizations of how the combinators work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Descendent combinator
&lt;/h2&gt;

&lt;p&gt;The descendent combinator — represented by a &lt;code&gt;‎‏‏‎ ‎&lt;/code&gt;‎ (space) — will select all elements that are descendants of the first element. This is useful for when you want to change the styling of a component for a specific part of the page but not anywhere else on the page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;An example of this would be &lt;code&gt;div.content span&lt;/code&gt; will match all &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; elements inside the &lt;code&gt;&amp;lt;div class='content'&amp;gt;&lt;/code&gt;. Let's say we have the following CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.content&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element has a red background in the above example. However, when a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is inside of a &lt;code&gt;&amp;lt;div class='content'&amp;gt;&lt;/code&gt; it will have a green background. To give you a better understanding of this, I've visualized it:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft0woaoqkn0s0jakchyby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft0woaoqkn0s0jakchyby.png" alt="Visualization of the descendant combinator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It doesn't matter if a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is a direct descendant of &lt;code&gt;&amp;lt;div.content&amp;gt;&lt;/code&gt; or not. As long as a parent, somewhere up the DOM tree, is &lt;code&gt;&amp;lt;div.content&amp;gt;&lt;/code&gt; it will have a green background color. This is not the case for our next combinator, though.&lt;/p&gt;

&lt;h2&gt;
  
  
  Child combinator
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;child combinator&lt;/strong&gt; — represented by a &lt;code&gt;&amp;gt;&lt;/code&gt; — will select all elements that are &lt;strong&gt;direct&lt;/strong&gt; descendants, known as children, of the parent element. This is perfect for when you want to style, for example, a list within a list. Perhaps to-do items need to be bold and nested to-do items need to be a normal weight*.*&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Going back to our previous example, the descendant combinator, we can easily highlight the behavior by changing the combinator! So let's use the exact same code, but this time we're going to use the &lt;strong&gt;child combinator&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.content&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just like before, the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element has a red background. When a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is a child of a &lt;code&gt;&amp;lt;div class='content'&amp;gt;&lt;/code&gt; it will have a green background. However, if the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is nested deeper it will still be red. Let's visualize that:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnguzii6nq9ztf7pxc1m7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnguzii6nq9ztf7pxc1m7.png" alt="Visualization of the child combinator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As soon as the &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is separated from its parent by being nested a level deeper, it will not be selected by the child combinator.&lt;/p&gt;

&lt;h3&gt;
  
  
  General sibling combinator
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;general sibling combinator&lt;/strong&gt; — represented by a &lt;code&gt;~&lt;/code&gt; — will select all siblings that follow the first element. The sibling element doesn't have to directly follow the first element but they need to share the same parent element.&lt;/p&gt;

&lt;p&gt;An example of this could be styling the paragraphs differently after using the first &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element of an article. Usually, the content before that first &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element is an introduction and you may want to have that in italics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Let's apply different styling to the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements after using the first &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element after &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;, as a sibling, will have a green background. All other &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements will have a red background. Just like before, it's easier to see what's going on by visualizing it:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuu0dm7m9ke7wa8ldri4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fuu0dm7m9ke7wa8ldri4v.png" alt="Visualization of the general sibling combinator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's not much else to it. All &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements after the &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element, provided they share the same &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; element as a parent, will have a green background. If a &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element is used before, or if it's nested, it will have a red background.&lt;/p&gt;

&lt;p&gt;What if we just want to style the first &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element that follows the &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element? Well, that's where our final combinator comes into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adjacent sibling combinator
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;adjacent sibling combinator&lt;/strong&gt; — represented by a &lt;code&gt;+&lt;/code&gt; — will only select the &lt;strong&gt;direct&lt;/strong&gt; sibling of the first element. This means that, unlike the general sibling combinator, the sibling needs to immediately follow the first element and share the same parent element.&lt;/p&gt;

&lt;p&gt;A use case for this is when you want to change the &lt;code&gt;margin-top&lt;/code&gt; of the first &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element following an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element. On my blog, for example, the first paragraph following a heading has less margin at the top than the others. This allows the &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element to sit more closely to the content it's the heading of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Using the previous example of &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements following an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element, let's apply a different style to the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; that immediately follows an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements will be red, except for the ones that immediately follow an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;. Again, to visualize this:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ryhsut7850jlksn5n5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ryhsut7850jlksn5n5a.png" alt="Visualization of the adjacent sibling combinator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the final &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element returns to the default red background.&lt;/p&gt;

&lt;p&gt;The adjacent sibling combinator is probably my favorite of the four combinators outlined in this post. My blog converts my markdown written posts into HTML, which means all content elements are siblings of one another. The adjacent sibling combinator allows for fine control over styling in specific scenarios related to my content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Combinators &amp;amp; CSS Specificity
&lt;/h2&gt;

&lt;p&gt;Combinators have &lt;strong&gt;no&lt;/strong&gt; impact on the specificity of your styling.&lt;/p&gt;

&lt;p&gt;That's it... that's all there is to know about combinators in relation to CSS specificity. Not much of an exciting ending. I feel it's important to know that it doesn't, though. At first glance, using combinators appears to make your CSS more specific. While this is definitely true for you, the writer/reader of the code, this isn't true for calculating CSS specificity.&lt;/p&gt;

&lt;p&gt;If you want to know more about CSS specificity and what does, or doesn't, have an impact, read &lt;a href="https://dev.to/emmabostian/css-specificity-1kca"&gt;this amazing post about CSS Specificity by Emma Bostian&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Sometimes code snippets don't help me figure out what's going on. This is when I start visualizing the behavior of my code. Visualizing it helps me figure out how it works and hopefully it's been helpful to you too!&lt;/p&gt;

&lt;p&gt;I hope you've enjoyed reading this post. Until next time 😊&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Five Git commands I started using that might be helpful to you</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Sat, 30 May 2020 14:15:33 +0000</pubDate>
      <link>https://dev.to/murkrage/five-git-commands-i-started-using-that-might-be-helpful-to-you-536e</link>
      <guid>https://dev.to/murkrage/five-git-commands-i-started-using-that-might-be-helpful-to-you-536e</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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs8qfhvl65x1ty4gg516o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs8qfhvl65x1ty4gg516o.png" alt="Version control illustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git is a powerful tool I use every single day. Up until a few months ago I only used the bare minimum to get my job done. When I moved to a different company, with a much larger team, I quickly figured out there was so much of Git I didn’t know about and wasn’t using.&lt;/p&gt;

&lt;p&gt;Nowadays I feel much more confident and I’ve learned a bunch of helpful new things! While I won’t go into the basics of Git, because there are many great resources out there to help you with that, I’d like to show you five commands that I think are very useful and may save you a few headaches. They certainly saved some for me.&lt;/p&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Amend: changing the commit after committing
&lt;/h2&gt;

&lt;p&gt;You commit something and you immediately realize your commit message isn’t clear enough or doesn’t adhere to the commit message formatting rules of the project. Maybe you realized you needed to add one small change, like removing that silly little &lt;code&gt;console.log()&lt;/code&gt;, or maybe you forgot to add a new file. &lt;/p&gt;

&lt;p&gt;Does any of the above sound familiar? It definitely sounds familiar to me and has happened a few times! Luckily, there is a way for you to change, or rather update, your latest commit before you push it using &lt;code&gt;--amend&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There are two parts to a commit that you may want to change, the first one is the commit message and the second one is a file. Let’s start with changing the commit message. &lt;/p&gt;

&lt;h3&gt;
  
  
  Changing the commit message
&lt;/h3&gt;

&lt;p&gt;In it’s most basic form, the command to change your commit message looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will open your configured code editor for Git and allow you to change the commit message. You can, however, change the commit message without opening the editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Your updated commit message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding the &lt;code&gt;-m&lt;/code&gt; flag, followed by the updated message in quotes, allows you to change the message without opening the editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Amending a change or file
&lt;/h3&gt;

&lt;p&gt;Let’s say you notice a rogue &lt;code&gt;console.log()&lt;/code&gt; after you’ve committed and you want to remove it. Edit the file and stage it like you normally would for a commit. Then run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;--no-edit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will amend the file to the commit. The &lt;code&gt;—no-edit&lt;/code&gt; flag allows you to do this without changing the commit message.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ Caveat
&lt;/h3&gt;

&lt;p&gt;Using &lt;code&gt;—amend&lt;/code&gt; doesn’t change the commit. Instead, it replaces the commit with a brand new one. As such it is incredibly important you &lt;strong&gt;don’t&lt;/strong&gt; amend public commits. Your local commits are perfectly fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checkout: reverting a single file
&lt;/h2&gt;

&lt;p&gt;Recently I did a pull request for a new feature I was working on. Part of my work was to remove some old styling in a legacy file. When I deleted the 8 lines of styling and hit save, I automatically ran prettier because that’s how I’ve set up my IDE.&lt;/p&gt;

&lt;p&gt;The result was a little over a thousand changes making it impossible to figure out what it was that I actually changed myself. I completely missed this had happened and joyfully opened a pull request ready for review. Oops 😅.&lt;/p&gt;

&lt;p&gt;I had to revert that file, make sure prettier wasn’t running, make my changes, save it, and commit it to the branch so it could be reviewed properly. Luckily &lt;code&gt;git checkout&lt;/code&gt; comes to the rescue!&lt;/p&gt;

&lt;p&gt;To revert a single file back to a previous commit, you run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;commit_hash&amp;gt; &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;path/to/file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First find the commit that holds the changes you need to revert to, this is most likely 1 commit before the commit you need reverting, then figure out what the path to that file is (easiest way is to copy the relative path in your code editor). &lt;/p&gt;

&lt;p&gt;Your file is now reverted to what it was on the commit you picked out. In my case: before I removed the styling and ran prettier. Phew, crisis solved 🥳.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote: add another remote repo
&lt;/h2&gt;

&lt;p&gt;I’m going to outline this part with a hypothetical situation based on real events.&lt;/p&gt;

&lt;p&gt;Imagine you are currently working on a new feature and you’ve got a co-worker, let’s call her Kate, who’s working on something that you need to integrate into your feature. You are both working in a fork of the central repository of your team and you need to pull in the latest changes Kate has made on her fork.&lt;/p&gt;

&lt;p&gt;When you cloned your forked repository to your system, Git automatically created a remote connection named: origin. You may already know this, but did you know you can add Kate’s repository as a remote connection as well? This is great for when you want to pull in changes Kate made without her having to push to the central repository.&lt;/p&gt;

&lt;p&gt;Let’s look at how to add Kate’s repository to your list of remote connections, we’ll go into fetching her changes in the next section. Here’s how to add her repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;name&lt;/code&gt; can be anything you want. I usually stick to using my co-worker’s names or Github usernames. The &lt;code&gt;url&lt;/code&gt; is the URL to her repository, for example: &lt;code&gt;git@github.com:Kate/acme-fork.git&lt;/code&gt;. Putting that together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add kate git@github.com:Kate/acme-fork.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run &lt;code&gt;git remote&lt;/code&gt;, which will list all of the remote connections, you’ll see Kate’s remote repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote: fetching a branch from the remote branch
&lt;/h2&gt;

&lt;p&gt;To fetch a specific branch from a specific remote, you run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch &amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the previous section we talked about adding Kate’s repository to your remote connections. Kate was working on something in a branch called &lt;code&gt;new-feature&lt;/code&gt;. Using the above command, that would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch kate new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running the command will fetch Kate’s branch and save them locally in &lt;code&gt;kate/new-feature&lt;/code&gt;.  What’s going on here is that remote branches you fetch are available using &lt;code&gt;&amp;lt;remote-name&amp;gt;/&amp;lt;branch-name&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;To merge Kate’s changes into your branch, you have to &lt;code&gt;git checkout&lt;/code&gt; your branch and then merge the branch you just fetched:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge kate/new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kate’s branch is now merged into your branch 👍.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checkout: creating a branch based on another branch
&lt;/h2&gt;

&lt;p&gt;I was recently working on rewriting a feature using a different library than the one in use on production. Aside from rewriting the code, new functionality needed to be added as well. I tackled this in two steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rewrite the feature as it currently works in production and have my code reviewed to make sure I didn’t miss anything.&lt;/li&gt;
&lt;li&gt;Add new functionality.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For step one I created a branch for the rewrite called &lt;code&gt;feature-rewrite&lt;/code&gt;. Well it was a little more elaborate than that, but you get the point! You may be familiar with doing this from the CLI, but if not this is how you’d do that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; feature-rewrite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-b&lt;/code&gt; flag tells Git to run &lt;code&gt;git branch feature-rewrite&lt;/code&gt; if the branch doesn’t exist yet before checking out that branch, pretty neat 😄.&lt;/p&gt;

&lt;p&gt;While I was waiting for the code to be reviewed, I continued with adding new functionality. This had to be done based on the rewrite I just did. In other words: I had to create a new branch based off of the &lt;code&gt;feature-rewrite&lt;/code&gt; branch. Here’s how to do that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; new-functionality feature-rewrite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The checkout command takes a second parameter to let Git know what branch to base the new branch off of. To give you a clearer picture of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final words
&lt;/h2&gt;

&lt;p&gt;Over the past few months I have learned a lot of new things about Git and how you can use it to your advantage. The commands outlined in this post are by far the most useful and have been a real lifesaver for me.&lt;/p&gt;

&lt;p&gt;Thank you for reading this post and I hope it’s been helpful!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on my own blog: &lt;a href="https://www.mikedecodes.com/blog/five-git-commands-i-started-using-that-might-be-helpful-to-you" rel="noopener noreferrer"&gt;https://www.mikedecodes.com/blog/five-git-commands-i-started-using-that-might-be-helpful-to-you&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Seven lessons learned during my first year of being a developer</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Fri, 22 May 2020 17:38:58 +0000</pubDate>
      <link>https://dev.to/murkrage/seven-lessons-learned-during-my-first-year-of-being-a-developer-3n5e</link>
      <guid>https://dev.to/murkrage/seven-lessons-learned-during-my-first-year-of-being-a-developer-3n5e</guid>
      <description>&lt;p&gt;This month marks my first anniversary of being a frontend developer after switching over from design. There are so many things I learned along the way. Things from a technical point of view, a professional point of view, and from a personal point of view. In this post I want to share seven things I learned during my first year of being a developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Google is your best friend
&lt;/h2&gt;

&lt;p&gt;Okay, you got me. This one’s a bit of an easy hit. As cliché as it sounds, though, it’s true! You will be googling a lot and that’s okay. It will help you learn new things, it will help you find things you need faster and it will help you remember some things faster.&lt;/p&gt;

&lt;p&gt;I’ll be honest, there are things you will be googling from now until the end of time. In my experience it’s the things you use once every couple of months that need googling the most. The worst part about it isn’t having to use Google, it’s the fact Google will show you that you’ve been there before and you just can’t seem to remember 😅.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Take notes
&lt;/h2&gt;

&lt;p&gt;I don’t know about you, but I can’t remember every single thing that was discussed in a meeting, said to me at some point in time, or everything I’ve discovered about a topic I am researching. So I started taking notes. About everything.&lt;/p&gt;

&lt;p&gt;There are many different ways of taking notes and not all of them will work for you. I’ve tried a lot of methods and I finally found one that works well for me. I’ve also tried many different note-taking apps and notebooks. Eventually finding the one that works for me.&lt;/p&gt;

&lt;p&gt;A quick Google search will help you find all the different methods of taking notes. I use a combination of the outline method, sentence method, and mapping method. I picked out the parts that worked for me and combined them!&lt;/p&gt;

&lt;p&gt;I use a Moleskine squared notebook for handwritten notes as it gives me a grid to work with if I ever need to structure stuff and I use Bear for my digital note-taking needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Ask for help
&lt;/h2&gt;

&lt;p&gt;I’ve fallen into this trap a few too many times; not asking for help sooner. Sometimes you just can’t figure it out on your own. You’ll feel like you’ve read every single link on Google, tried every solution and it just won’t work. That’s where your fellow developers come in!&lt;/p&gt;

&lt;p&gt;Don’t be afraid to ask for help, because there’s a good chance they have run into the same problem and will be able to help you. Even if they haven’t experienced the same problem, they will be your extra pair of eyes and you can pair program the solution or they can even be your rubber duck!&lt;/p&gt;

&lt;p&gt;No, seriously, I have solved so many problems by simply explaining to someone what is going on and while I was doing so I realized what the problem was and how to solve it.&lt;/p&gt;

&lt;p&gt;Asking for help isn’t the only way to help you solve your problems, tho.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Step away from the code
&lt;/h2&gt;

&lt;p&gt;There’s something magical about spending hours and hours on something, coming back the next day, and all of a sudden it makes sense so now you spend two minutes solving it.&lt;/p&gt;

&lt;p&gt;I’ve discovered I can sort of force this moment by taking regular breaks from coding. The problem with grinding away at your code is that you start to develop tunnel vision and you lose sight of the bigger picture. This makes problem-solving a little more difficult. To counter this I’ll get up and go for a short walk around the office every hour or so.&lt;/p&gt;

&lt;p&gt;Not only is this great for your health, but you will come back to your code with a fresh pair of eyes and things will make a lot more sense! At least to me it does. This means my productivity has, despite taking more breaks, gone up.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. You will learn from failing
&lt;/h2&gt;

&lt;p&gt;Eventually, one way or another, you are going to fail. I know I did. Here’s the cool part, though. Moments of failure are moments of learning. Every time something doesn’t work out the way you thought it would, you know that’s not the way to do it. You go back into it, figure out why it went wrong and you’ll be better for it!&lt;/p&gt;

&lt;p&gt;Think of it like learning to walk. When we learned to walk as a little kid, we would fall… a lot. We got back up, put our foot in front of the other, and fall again and again. Until we didn’t fall anymore and ran away with our toys because they are mine.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Learn to read other people’s code
&lt;/h2&gt;

&lt;p&gt;I firmly believe that one of the most important skills you can have as a developer is the ability to learn other people’s code. Working in teams, working on a shared project, or even coming back to code you’ve written ages ago means you’ll be looking at code that is unfamiliar to you.&lt;/p&gt;

&lt;p&gt;It will help you do code reviews faster, it will help you learn new ways of doing things, it will help you think about how this person is solving problems and, most importantly, it will solidify some of the knowledge that you might be struggling with.&lt;/p&gt;

&lt;p&gt;Try and read other people’s code as soon as possible! I only started doing this recently, so I am still struggling at times, but it’s incredibly valuable already.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Celebrate your (tiny) wins
&lt;/h2&gt;

&lt;p&gt;Most of the time our job is about solving problems. How can you get that element to be over there while this element stays here? How can I get this data to that place? Is there a way I can make this bit of code run faster? How can I solve this bug?&lt;/p&gt;

&lt;p&gt;No matter how big or small the problem is, solving it feels like a win! Celebrate the wins by sharing them with your team, posting them on twitter, sharing them with your spouse, giving yourself time to do something else, relax, or whatever you can think of.&lt;/p&gt;

&lt;p&gt;By celebrating the wins I’ve built confidence and kept myself motivated to tackle the next problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final words
&lt;/h2&gt;

&lt;p&gt;This was just a small selection of what I've learned during my first year as a frontend developer. I hope you've enjoyed reading this post and found some use in the things I've learned.&lt;/p&gt;

</description>
      <category>career</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How do you keep track of your goals?</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Mon, 09 Mar 2020 15:20:13 +0000</pubDate>
      <link>https://dev.to/murkrage/how-do-you-keep-track-of-your-goals-mgf</link>
      <guid>https://dev.to/murkrage/how-do-you-keep-track-of-your-goals-mgf</guid>
      <description>&lt;p&gt;When it comes to getting things done there are so many sources to look for inspiration on how to manage and keep track of that. For your own goals, however, I haven’t really found a great resource just yet.&lt;/p&gt;

&lt;p&gt;This leads me to ask you all:&lt;br&gt;
&lt;strong&gt;How do you keep track of your goals?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They could be personal or professional. So basically ranging from “I want to read more” to “I want to write more technical blog posts”. Share your thoughts, tools and approaches and let’s discuss them.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Which productive activities are typically seen as unproductive?</title>
      <dc:creator>Mike Ekkel</dc:creator>
      <pubDate>Wed, 28 Aug 2019 11:44:21 +0000</pubDate>
      <link>https://dev.to/murkrage/which-productive-activities-are-typically-seen-as-unproductive-53ec</link>
      <guid>https://dev.to/murkrage/which-productive-activities-are-typically-seen-as-unproductive-53ec</guid>
      <description>&lt;p&gt;Inspired by the following post:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/ben" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Ff451a206-11c8-4e3d-8936-143d0a7e65bb.png" alt="ben"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ben/which-unproductive-activities-are-typically-mistaken-for-productivity-2n8j" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Which unproductive activities are typically mistaken for productivity?&lt;/h2&gt;
      &lt;h3&gt;Ben Halpern ・ Aug 27 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
 

&lt;p&gt;I sometimes find myself in a situation where I'm being called out for doing something that's 'unproductive' when in reality it's helping me be more productive. Be it reading about some sort of coding related problem I am facing or sorting out my backlog so I can get my priorities straight.&lt;/p&gt;

&lt;p&gt;So, what productive activities are typically seen as unproductive?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
