<?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: Sal Hernandez</title>
    <description>The latest articles on DEV Community by Sal Hernandez (@clickclickonsal).</description>
    <link>https://dev.to/clickclickonsal</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%2F8091%2Fb8b13f95-9426-4e48-af12-c9e887661b50.jpg</url>
      <title>DEV Community: Sal Hernandez</title>
      <link>https://dev.to/clickclickonsal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/clickclickonsal"/>
    <language>en</language>
    <item>
      <title>I learned React Fragments</title>
      <dc:creator>Sal Hernandez</dc:creator>
      <pubDate>Mon, 26 Feb 2018 12:36:34 +0000</pubDate>
      <link>https://dev.to/clickclickonsal/i-learned-reactfragments--1oaj</link>
      <guid>https://dev.to/clickclickonsal/i-learned-reactfragments--1oaj</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2bC_f3W9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5p3r4ze0bgzbg1uoxsim.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2bC_f3W9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5p3r4ze0bgzbg1uoxsim.jpg" alt="What are React Fragments"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I bet you read that title &amp;amp; thought “Whoa that sentence is a Fragment!” 😜 Haha what the title should say is “I learned about React Fragments”. Anyways I know what you’re asking “What are React Fragments?!?” They are a common pattern for a component to return a list of children.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: React 16 added support for returning an array of elements from a component’s &lt;code&gt;render&lt;/code&gt; method &amp;amp; as of React 16.2 provides a first-class &lt;code&gt;Fragment&lt;/code&gt; component that can be used in place of arrays.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I just learned about them (I know I’m a little late to the game) &amp;amp; ran into a good use case where it came in handy!&lt;/p&gt;

&lt;p&gt;So I’m setting up my routes &amp;amp; want to make certain routes are available only when a User is Logged &amp;amp; vice-versa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--au5eoEim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AnHMDhLMLaBbkezB1AqjTHg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--au5eoEim--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AnHMDhLMLaBbkezB1AqjTHg.png" alt="Routes Setup Example #1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I come up with something like &amp;amp; this works perfectly but this brings up a small issue. When running the above setup if you open up your browser console you will notice the error below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x3ITj_U2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AKpZyhhtrCH6zgAn1W4uE4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x3ITj_U2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AKpZyhhtrCH6zgAn1W4uE4A.png" alt="Warning: React does not recognize the `computedMatch` prop on a DOM element"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reason React is throwing this error is because the &lt;code&gt;Switch&lt;/code&gt; component only expects &lt;code&gt;Route&lt;/code&gt; components children. 🤔 Hmmmm so lets try this. Let’s wrap each Route in it’s own conditional &amp;amp; see if this fixes our error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jndlSBOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AfD70WVaTz4FnLCkROEyi3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jndlSBOC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AfD70WVaTz4FnLCkROEyi3g.png" alt="Routes setup Example #2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Andddd yup it fixes our error! Hmm but this doesn’t seem like the best solution because it isn’t &lt;a href="https://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;DRY&lt;/a&gt; &amp;amp; contains &lt;a href="https://en.wikipedia.org/wiki/Code_smell"&gt;code smells&lt;/a&gt;. If we go with this solution we’ll have to include the &lt;code&gt;isLoggedIn&lt;/code&gt; conditional for every single new Route. Also our code will be computing the same condition for x amount of routes that we have(This is a code smell 😷). So what can we do? I really like our first example because it was DRY &amp;amp; it didn’t contain a code smell but wrapping our routes in a &lt;code&gt;div&lt;/code&gt; gives us an ugly looking error. I know what your saying to yourself, “I wish there was a way you can wrap stuff in React magically!”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vlwNHKBg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2oFH4ZWIpYwu5bb8uuGaZQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vlwNHKBg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2oFH4ZWIpYwu5bb8uuGaZQ.png" alt="Your Wish is my command!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html"&gt;React Fragment&lt;/a&gt; to the Rescue!!! We can now keep what we had in our first example &amp;amp; just replace the &lt;code&gt;div&lt;/code&gt; with Fragment (imported from ‘react’).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;See note below on why we’re importing a custom Switch component.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z78zD2rg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/q13k5nlejj3ql661ywtt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z78zD2rg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/q13k5nlejj3ql661ywtt.png" alt="Routes Setup Example #3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;See a live example here: &lt;a href="https://codesandbox.io/s/7k9rn30jmq?module=%2Fsrc%2Fconfig%2Froutes.js&amp;amp;view=editor"&gt;https://codesandbox.io/s/7k9rn30jmq?module=%2Fsrc%2Fconfig%2Froutes.js&amp;amp;view=editor&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yay No more errors! That about WRAPS up this post! 😉&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For more puns and code tips follow my journey on twitter &lt;a href="https://twitter.com/clickclickonsal"&gt;@clickclickonsal&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article originally published on my &lt;a href="https://medium.com/@clickclickonsal/i-learned-react-fragment-6db6d482cb1c"&gt;Medium publication&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Edit (February 27th, 2018)&lt;br&gt;
Note: &lt;a href="https://medium.com/@leandroaps"&gt;@leandroaps&lt;/a&gt; ran into a issue where his  route was always getting rendered. It turns out React-Router’s  Component doesn’t have support for routes wrapped in Fragments. While the code “seems” to work fine it breaks when trying to add a “catch all” route. I looked into this and found a Github related issue &amp;amp; came across a workaround for this problem &lt;a href="https://github.com/ReactTraining/react-router/issues/5785#issuecomment-359427800"&gt;here&lt;/a&gt;. The workaround is to wrap the react-router Switch component that includes logic to flatten the routes out. I’ve updated the code sandbox above to include this fix so you can see how it’s implemented. Thanks &lt;a href="https://github.com/bripkens"&gt;@bripkens&lt;/a&gt; for the your Open Source contributions! 😃&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Git Hooks aren't so Ruff! I'll tail you all about it!</title>
      <dc:creator>Sal Hernandez</dc:creator>
      <pubDate>Wed, 11 Oct 2017 17:49:52 +0000</pubDate>
      <link>https://dev.to/clickclickonsal/git-hooks-arent-so-ruff-ill-tail-you-all-about-it-dko</link>
      <guid>https://dev.to/clickclickonsal/git-hooks-arent-so-ruff-ill-tail-you-all-about-it-dko</guid>
      <description>&lt;p&gt;Yo dog! I’m going to tail you how to use git hooks (with yarn/npm) to help maintain code quality across your team before stuff gets pushed to a &lt;a href="https://help.github.com/articles/about-remote-repositories/" rel="noopener noreferrer"&gt;remote repository&lt;/a&gt; (ex. Github).&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%2F9755ajtscgtsg1wcev99.jpg" 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%2F9755ajtscgtsg1wcev99.jpg" alt="Picture of doge wearing glasses and code words around him" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you aren’t familiar with Git Hooks, they’re a way to execute scripts before committing, after committing, before pushing, after pushing, etc. In the past when I looked into this, it was kind of a pain to set up locally, and then even more of a pain setting it up across a team. ðŸ˜£&lt;/p&gt;

&lt;p&gt;I came across a library on GitHub called &lt;a href="https://github.com/typicode/husky" rel="noopener noreferrer"&gt;husky&lt;/a&gt;, that makes it super easy to implement Git Hooks in your project using npm!Â &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%2Fl89pcnmfs1d1yxhlgtmb.png" 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%2Fl89pcnmfs1d1yxhlgtmb.png" alt="Screen shot of husky Github title" width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Heres’s a super quick walkthrough of husky.&lt;br&gt;
&lt;code&gt;yarn add husky --dev&lt;/code&gt; or &lt;code&gt;npm install husky --save-dev&lt;/code&gt;&lt;br&gt;
In your package.jsonÂ add &lt;a href="https://github.com/typicode/husky/blob/master/HOOKS.md" rel="noopener noreferrer"&gt;husky hooks&lt;/a&gt; in the scripts object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "husky-demo",
  "version": "1.0.0",
  "description": "Husky demo, woof woof.",
  "main": "index.js",
  "scripts": {
    "precommit": "yarn lint",
    "prepush": "yarn test",
    "test": "jest",
    "lint": "eslint . --cache",
  },
  "author": "ðŸ¶",
  "license": "ISC"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  precommit
&lt;/h1&gt;

&lt;p&gt;With this hook, whenever I commit (ex. &lt;code&gt;git commit -m “woof, woof"&lt;/code&gt;), the script &lt;code&gt;precommit&lt;/code&gt; will be executed before &lt;code&gt;git commit&lt;/code&gt; runs. In this scenario, we have eslint run, so if any linting errors occur then &lt;code&gt;git commit&lt;/code&gt; will not run and those errors would need to be addressed before trying to commit again.  &lt;/p&gt;

&lt;h1&gt;
  
  
  prepush
&lt;/h1&gt;

&lt;p&gt;With this hook, whenever I attempt to push new commits (ex. &lt;code&gt;git push origin master&lt;/code&gt;) to Github, the script &lt;code&gt;prepush&lt;/code&gt; will be executed before &lt;code&gt;git push&lt;/code&gt; runs. In this scenario, we have the script run our test suite, so if any tests fail, it would prevent the code that broke the tests from making it's way up to Github. &lt;/p&gt;




&lt;center&gt;Summary&lt;/center&gt;

&lt;p&gt;======&lt;br&gt;
Doing things like this is really cool because it can prevent stuff like linting errors &amp;amp;/or broken tests from getting to master if you're like me who's working on a project by yourself ðŸ˜›, but this is also beneficial when working in a pull request flow because it helps really focus on reviewing the actual code &amp;amp; not having to go back &amp;amp; forth on things that the linting tool could have caught.&lt;/p&gt;

&lt;p&gt;I've always wanted to do stuff like this in previous projects but never did because it wasn't a quick simple thing to do, but then if I did set it up, would it still work consistently across the team regardless of their operating system? ðŸ¤” Then when I stumbled across &lt;a href="https://www.npmjs.com/package/husky" rel="noopener noreferrer"&gt;husky&lt;/a&gt; &amp;amp; saw how simple it was to implement into my npm project I was hooked! I've been using it for a couple weeks now &amp;amp; it's saved me a bunch of times already! Including almost accidentally pushing broken tests to master! ðŸ˜…&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Special thanks to &lt;a href="https://twitter.com/typicode" rel="noopener noreferrer"&gt;typicode&lt;/a&gt; for creating this awesome open source tool! Thanks dog!&lt;/em&gt;ðŸ˜‰&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>git</category>
    </item>
    <item>
      <title>These are a few of my favorite: Terminal Shortcuts</title>
      <dc:creator>Sal Hernandez</dc:creator>
      <pubDate>Fri, 28 Jul 2017 18:44:36 +0000</pubDate>
      <link>https://dev.to/clickclickonsal/these-are-a-few-of-my-favorite-terminal-shortcuts</link>
      <guid>https://dev.to/clickclickonsal/these-are-a-few-of-my-favorite-terminal-shortcuts</guid>
      <description>&lt;p&gt;Terminal: an interface where the user types and executes text based commands.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AgqrgBeHFb3--L-EvyTefiw.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AgqrgBeHFb3--L-EvyTefiw.png" alt="ISSA Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll admit that when I first opened the terminal in 2014, I disliked it. At the time, I strongly believed that using a Graphical User Interface, such as Finder on Mac, was much faster for things like deleting, copying, and creating files and folders. The tutorials and articles I would read kept insisting that the terminal was ðŸ”‘, though, so I kept going.&lt;br&gt;
I’m glad I pushed through and kept learning to use the terminal! Eventually, with practice and consistency, the understanding and speed came. Now I barely use the GUI for managing my file system.&lt;br&gt;
That said, the road wasn’t all smooth. There were a lot of terminal commands thrown at me during my journey. How was I supposed to memorize all of them??!!? At once?!?!&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AjFqEKlJaxyIW4d6tYFaLoQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AjFqEKlJaxyIW4d6tYFaLoQ.png"&gt;&lt;/a&gt;&lt;br&gt;
To prevent you from going through the same anxieties. I compiled a list of my Top Fave â¤ï¸ Terminal shortcuts. ðŸ˜&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt; List files and directories (Folders)&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AWVpJFhZJSNYuKUCsn7nigw.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AWVpJFhZJSNYuKUCsn7nigw.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; Change directory&lt;br&gt;
&lt;code&gt;pwd&lt;/code&gt; Print Working Directory (Shows the full pathname of the current working directory)&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AohlYTlQQNLIY6kw9-LBhKA.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AohlYTlQQNLIY6kw9-LBhKA.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;touch&lt;/code&gt; Create a new file&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A2BSEFMDP86UIGBqy4VOeAg.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A2BSEFMDP86UIGBqy4VOeAg.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;mkdir&lt;/code&gt; Create a new directory&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2An4mBGc-qUP0e24kd4tIa8Q.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2An4mBGc-qUP0e24kd4tIa8Q.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;cp&lt;/code&gt; Copy files or directories&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AeIvuvVo1fJiXCE0TCMmg0w.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AeIvuvVo1fJiXCE0TCMmg0w.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;mv&lt;/code&gt; Move (rename) files or directories&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AfodlHdNmGnlwZnyjTEy07Q.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AfodlHdNmGnlwZnyjTEy07Q.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;rm&lt;/code&gt; Remove files&lt;br&gt;
&lt;code&gt;rm -r&lt;/code&gt; Remove Directories &amp;amp; files in&lt;br&gt;
Note: Therm command is really powerful. It deletes files/directories without recovery. (It doesn’t go to the trash bin)&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A8kSU6qpk_lJiDiUkc9k9OQ.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A8kSU6qpk_lJiDiUkc9k9OQ.png"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;Ctrl + A&lt;/code&gt; Gets the cursor at the beginning of the line&lt;br&gt;
&lt;code&gt;Ctrl + E&lt;/code&gt; Gets the cursor to the end.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A8Nx-FAiARb4ja5141k647w.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A8Nx-FAiARb4ja5141k647w.gif"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;Cmd + k&lt;/code&gt; (Mac) `Ctrl + L (Linux/Mac) Clears the Terminal Screen&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2Au8oeI0D27nFfA_G--kz9zg.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2Au8oeI0D27nFfA_G--kz9zg.gif"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;And now for my absolute favorite â¤ï¸: Tab auto-completion!&lt;/p&gt;

&lt;p&gt;If you’re trying to remember a command, type at least one letter and hit tab twice and it will show you all the commands available based on the typed characters. If you type enough characters and only one match is left then it’ll auto-complete it for you. This works with all UNIX commands and even your file system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ASw5i7Fnc0-y9GbjDrMCeag.gif"&gt;
&lt;/h2&gt;

&lt;p&gt;Now go on and jump into your terminal, start playing with it &amp;amp; work your way towards becoming the terminal-ator. ðŸ˜Ž&lt;/p&gt;




&lt;p&gt;If you liked this post, make sure to hit the hit the green heart! ðŸ’š&lt;br&gt;
For more puns and code tips follow my journey on twitter &lt;a href="https://twitter.com/clickclickonsal" rel="noopener noreferrer"&gt;@clickclickonsal&lt;/a&gt;&lt;br&gt;
Join the Color Coded slack community by visiting our &lt;a href="http://wearecolorcoded.us/#mc_embed_signup_scroll" rel="noopener noreferrer"&gt;site&lt;/a&gt; and stay in the loop.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article originally published on the &lt;a href="https://medium.com/@clickclickonsal/am-i-still-a-junior-developer-1cb0a00ae7ea#.32xfkg8dn" rel="noopener noreferrer"&gt;Color Coded Medium publication&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>terminal</category>
      <category>programming</category>
      <category>devtips</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Am I still a Junior Developer?</title>
      <dc:creator>Sal Hernandez</dc:creator>
      <pubDate>Sun, 26 Feb 2017 22:06:03 +0000</pubDate>
      <link>https://dev.to/clickclickonsal/am-i-still-a-junior-developer</link>
      <guid>https://dev.to/clickclickonsal/am-i-still-a-junior-developer</guid>
      <description>&lt;p&gt;I started to learn how to code in August 2014 at General Assembly. After finishing the 3 month Web Development Immersive course there I was able to claim the title “Junior Full Stack Developer”. I landed my first job as a Junior Full Stack Developer at Skyline Technology Solutions in February 2015.&lt;br&gt;
A couple of weeks ago I started asking my self “Am I still a Junior Developer?”, because It's been 2.5 years now that I've been coding and 2 years of coding professionally. How do I know when I leveled up? Am I going to be a Junior Developer forever???&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AT-VmyFjh4tqGpCcRidA9ng.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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AT-VmyFjh4tqGpCcRidA9ng.png" title="Scared Kermit" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I started to reflect back to when I started and where I am today and I remember not fully understanding callbacks, this, and prototypes in JavaScript. Not knowing why I would need to use JavaScript's .call() or .apply() methods. Or what were tools such as requireJS, webpack, grunt, or gulp actually doing for me. I can't recall when, but I remember everything was starting to click and I finally understood this (Pun Intended)!&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AmHtTVyi5EIB_y9IlF9mjrw.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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AmHtTVyi5EIB_y9IlF9mjrw.jpeg" title="Alan from the Hangover Thinking, hard, difficult, math" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before I answer the question in the title of this post, I'll list out some bullet points on what I think determines the difference between a Junior &amp;amp; Mid-Level Developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Junior
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understands basic programming concepts&lt;/li&gt;
&lt;li&gt;Will produce code without keeping performance or maintainability in mind sometimes&lt;/li&gt;
&lt;li&gt;Can use libraries &amp;amp; frameworks but will not always understand what the tools are actually doing for them and/or how's it doing them.&lt;/li&gt;
&lt;li&gt;Might copy &amp;amp; paste code from the web (such as Stack Overflow) without understand it, if it just works&lt;/li&gt;
&lt;li&gt;Will need occasional mentorship&lt;/li&gt;
&lt;li&gt;Sometimes won't ask for help when stuck because of fear thinking you're not good enough (You are good! It's ok to ask for help ðŸ˜Š)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mid-Level
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understands one or more languages more deeply&lt;/li&gt;
&lt;li&gt;Will produce code with thinking about performance &amp;amp; maintainability&lt;/li&gt;
&lt;li&gt;Understands what the tools are doing for them, digs into the source code often to understand how it works &amp;amp; also finds undocumented usage of tools.&lt;/li&gt;
&lt;li&gt;Will understand code found on the Web before even thinking about copying &amp;amp; pasting code.&lt;/li&gt;
&lt;li&gt;Will ask for help when they know they're stuck (because asking for help is ok!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above bullet points are just high level bullet points I gathered with the help of the internet &amp;amp; talking to my co-workers. So I am proud &amp;amp; confident to say that I am now a Mid-Level Developer ðŸ¤“!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;WAIT! Can I seriously just answer this question myself and change my title on my own? You actually can because there is no piece of paper you need to claim any title in this field. In my opinion what you should do before changing your title is discuss this question with the people you work with or even the people you interact with in the tech community.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'll definitely write a blog post when I feel I've reached Senior Level! :-)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article originally published on my &lt;a href="https://medium.com/@clickclickonsal/am-i-still-a-junior-developer-1cb0a00ae7ea#.32xfkg8dn" rel="noopener noreferrer"&gt;Medium publication&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>juniordeveloper</category>
      <category>code</category>
    </item>
  </channel>
</rss>
