<?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: Kevin Steele</title>
    <description>The latest articles on DEV Community by Kevin Steele (@kevindsteeleii).</description>
    <link>https://dev.to/kevindsteeleii</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%2F110471%2F94a463fd-4c55-4684-a4f3-0268fb68cdeb.jpg</url>
      <title>DEV Community: Kevin Steele</title>
      <link>https://dev.to/kevindsteeleii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kevindsteeleii"/>
    <language>en</language>
    <item>
      <title>What I learned my first week on the Job.</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Tue, 09 Apr 2019 11:01:40 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/what-i-learned-my-first-week-on-the-job-45g5</link>
      <guid>https://dev.to/kevindsteeleii/what-i-learned-my-first-week-on-the-job-45g5</guid>
      <description>&lt;h2&gt;
  
  
  Some things I Learned on my first week as a Dev
&lt;/h2&gt;

&lt;p&gt;I recently started my first job as a web developer and I would like to share a few things I've learned. I'll format this as a list, so here we go!&lt;/p&gt;

&lt;h3&gt;
  
  
  You belong
&lt;/h3&gt;

&lt;p&gt;It doesn't matter if it's your first job or your latest role. You were hired because your employers believed in you. So do yourself a favor and believe in yourself too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask clarifying questions
&lt;/h3&gt;

&lt;p&gt;If you don't understand something, your senior devs are not there to &lt;strong&gt;judge&lt;/strong&gt; you, they are there to do their &lt;strong&gt;job&lt;/strong&gt;. Part of which is to give and receive critique and help where they can. A gap in your knowledge base is not as embarrassing as not telling your lead when there is a problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Volunteer but don't overreach
&lt;/h3&gt;

&lt;p&gt;I suffer from a chronic need to prove myself. When things get too heavy on someone else's plate, you can help but don't overextend yourself if you know you've been given other directives to achieve. Your work takes priority!&lt;/p&gt;

&lt;h3&gt;
  
  
  Google stuff first!
&lt;/h3&gt;

&lt;p&gt;Yeah, this may feel like a bit of a no-brainer but some ask questions not about a codebase but about something that can be referenced easily. For example, if you don't know the name of an array method, you probably should look it up first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Function over perfection
&lt;/h3&gt;

&lt;p&gt;We often talk about ideal conditions, greenfield projects, professional coding practices. However, nobody can write the cleanest code to begin with. Just focus on writing small, effective functions and remember to name your variables reasonably. New and old devs alike, have to rewrite things. Writing imperfect code, to begin with, is not a cardinal sin.&lt;/p&gt;

&lt;h3&gt;
  
  
  You will fail but you're not your mistakes
&lt;/h3&gt;

&lt;p&gt;I'm not trying to be disparaging but it happens. Things fall apart. Even senior devs make mistakes and there are always things you may miss or were not told because specifications were not available. It just happens. And I want to tell you that it's okay. We learn far more from our mistakes than our successes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't lose yourself in work
&lt;/h3&gt;

&lt;p&gt;Ride a bike, play a video game, go on dates. You're a human before you're a developer and I know it's an exacting job. But that's the thing, it's a job. I do side projects but I also spend time with friends, do person stuff.&lt;/p&gt;

&lt;h3&gt;
  
  
  Have fun!
&lt;/h3&gt;

&lt;p&gt;I mean it. Enjoy the journey. Focusing on growth is fine but not at the cost of your personal relationships or health. We work to live not the reverse. And don't forget it!&lt;/p&gt;

&lt;h3&gt;
  
  
  In closing
&lt;/h3&gt;

&lt;p&gt;Sorry that this wasn't a technical blog but I feel that we tend to understate the importance of soft skills and emotional health. As always I welcome any comments, critiques, and feedback. Thanks for reading.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What should I write about next?</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 01 Apr 2019 01:15:53 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/what-should-i-write-about-next-1ejc</link>
      <guid>https://dev.to/kevindsteeleii/what-should-i-write-about-next-1ejc</guid>
      <description>&lt;p&gt;Hi all, I wanted to touch base with you all and ask everyone what topic(s) I can cover or you would like covered. Let me know in the comments.&lt;/p&gt;

</description>
      <category>ask</category>
      <category>advice</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I got my first job and it's a contract, what now?</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Tue, 26 Mar 2019 18:04:34 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/i-got-my-first-job-and-it-s-a-contract-what-now-n49</link>
      <guid>https://dev.to/kevindsteeleii/i-got-my-first-job-and-it-s-a-contract-what-now-n49</guid>
      <description>&lt;p&gt;Hi all! I didn't make my usual, weekly blog post because I've been busy onboarding and such. I want to ask the Dev.to community something. I recently started as a contractor with an at-will agreement and many of the people working there as salaried employees used to be contractors. What are some next steps I can take to become salaried there or find full-time work as a developer once the contract ends? I'm at a bit of a loss.&lt;/p&gt;

</description>
      <category>help</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Where do I start? Part 4: JavaScript OOP, Context and Class</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 18 Mar 2019 10:19:16 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/where-do-i-start-part-4-javascript-oop-context-and-class-36lc</link>
      <guid>https://dev.to/kevindsteeleii/where-do-i-start-part-4-javascript-oop-context-and-class-36lc</guid>
      <description>&lt;h2&gt;
  
  
  Didn't you just write something about this last week?
&lt;/h2&gt;

&lt;p&gt;No, I made a listing of resources for &lt;strong&gt;JavaScript&lt;/strong&gt; without the trickiness of its implementation of &lt;strong&gt;Object-Oriented Programming&lt;/strong&gt; included. Some of the resources cover it but not extensively, except for in the case of the Free Code Camp one I believe.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are we gonna learn about this time?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Object-Oriented Programming
&lt;/h3&gt;

&lt;p&gt;Yeah, I know I keep saying it but let's cover some vocab first. Last time, I mentioned &lt;strong&gt;Objects&lt;/strong&gt; as being a data type but I didn't really address the difference between an object and the other data types, or primitives. In JavaScript, everything is an object and that leads to some interesting problems. Namely binding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Primitives
&lt;/h3&gt;

&lt;p&gt;A primitive is an immutable or unchangeable data type that has no methods that mutate the primitive itself. Current year JavaScript has 6 kinds of primitives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;strings

&lt;ul&gt;
&lt;li&gt;"hello"&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;numbers

&lt;ul&gt;
&lt;li&gt;123.456, 1, -12&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;booleans

&lt;ul&gt;
&lt;li&gt;true, false&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;null

&lt;ul&gt;
&lt;li&gt;null pointer reference, a reference that points to nothing &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;undefined

&lt;ul&gt;
&lt;li&gt;default primitive value assigned to a variable when it's not defined&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;symbols

&lt;ul&gt;
&lt;li&gt;I could write a blog about these, I probably will. For now, they are used as dynamically produced distinct anonymous values. It's okay if you don't get it. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;There are sub-categories like integers and such but that's not that important at the moment.&lt;/p&gt;

&lt;h4&gt;
  
  
  If primitives are immutable, how come I can do this?
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;     &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; and goodbye&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// greeting equals "hello and goodbye" now&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this snippet, you're not actually changing the string primitive "hello" into "hello and goodbye" you're changing the &lt;strong&gt;assigned&lt;/strong&gt; value the variable &lt;em&gt;greeting&lt;/em&gt; has.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes Objects so special?
&lt;/h3&gt;

&lt;p&gt;Objects are typically used to group together related information. Be they values, functions, or otherwise. It's a data structure. Often objects are used to create abstractions of real-world things and concepts like shoes or dates. You may also hear words like dictionaries or hashes thrown around. These are all objects. The important through-line is that they all have key-value pairs.&lt;/p&gt;

&lt;h4&gt;
  
  
  Key-Value pairs
&lt;/h4&gt;

&lt;p&gt;Yes, key-value pairs. Objects have attributes that have different values and the keys are used to access the value whatever it may be in relation to the object. Ergo the name key-value pair. For example:&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;// initializing a shoe object&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shoe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
     &lt;span class="c1"&gt;// it's looking lonely let's give it a type or something&lt;/span&gt;
     &lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sneakers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="c1"&gt;// what's it made of ?&lt;/span&gt;
     &lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;materials&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;nubuck&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;rubber&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;EVA&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;     
     &lt;span class="c1"&gt;// and you can nest objects inside of objects indefinitely, you might not want to nest them too deeply&lt;/span&gt;
     &lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Anon shoe Corp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;address&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;123 None of your business Ave.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
     &lt;span class="c1"&gt;// and who makes them&lt;/span&gt;
     &lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;getCompany&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// prints out "sneakers"&lt;/span&gt;
     &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;shoe&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;materials&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;//prints out ["nubuck", "rubber", "EVA"];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'm swapping on purpose between the object.key and the object["key"] notations. They mean the same thing but have different uses. If you are iterating through an object with a for-in loop you had better use the square bracket object['key'] notation inside the loop, but you won't need the quotes because for-in supplies you with the key as a string. Bracket notation uses the literal key as a string to access the value. On the other hand, if you know the name of the key and it isn't something like, "I have spaces", you can assign or access its value with dot notation.&lt;/p&gt;

&lt;h3&gt;
  
  
  You said something about context, right?
&lt;/h3&gt;

&lt;p&gt;Yes, but first I'll show you some code and explain as we go.&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;function&lt;/span&gt; &lt;span class="nf"&gt;greetings&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="c1"&gt;// the this keyword refers to the object that the function resides inside or its context&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;greetings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// "Hello undefined"&lt;/span&gt;

     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;James&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;James Walker&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greetings&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;James&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// "Hello James Walker"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;this&lt;/strong&gt; keyword refers to the context the function is being invoked in. By context, I mean where the function resides or what it's bound to when called/executed. On the first invocation of greetings we get "Hello undefined" because the context of this first invocation is global. There is no value assigned to this name property globally so by default it's undefined. After we make another object that can provide context, we bind the function to that object to give it a defined execution context. &lt;strong&gt;Call&lt;/strong&gt; is one of three special methods that explicitly bind the greetings function to the James object which provides it context for the name property. So when it's invoked in that context, it returns "Hello James Walker". The first argument is always the invocation context followed by the remaining arguments that need to be passed. In other words &lt;strong&gt;this&lt;/strong&gt; in that execution context is the James object so &lt;em&gt;this.name&lt;/em&gt; on the second invocation is basically &lt;em&gt;James.name&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  That's nice and all, but what if I want to write a piece of code that makes the objects instead of coding each one by hand?
&lt;/h3&gt;

&lt;p&gt;We used to use classes for everything and there are cases where we still do but I'll show you this and then tell you why it's to be used sparingly. There's a famous example called the Gorilla Banana Problem.&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;// old-school ES5&lt;/span&gt;
     &lt;span class="c1"&gt;// creates an object with a constructor function&lt;/span&gt;
     &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Vehicle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="c1"&gt;// The prototype refers to an object inside of vehicle, all objects have a prototype object inside and it's used to pass down attributes or make new ones&lt;/span&gt;
     &lt;span class="c1"&gt;// we then create another attribute with the key of getInfo and its value is a function that prints out information about the Object.&lt;/span&gt;
     &lt;span class="nx"&gt;Vehicle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is a &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="c1"&gt;// Bicycle subclass, Vehicle being the superclass or parent&lt;/span&gt;
     &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Bicycle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="c1"&gt;// using call redefines the execution context to the Bicycle object, not the original Vehicle constructor&lt;/span&gt;
          &lt;span class="nx"&gt;Vehicle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
          &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;speed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;speed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="c1"&gt;// es6 style&lt;/span&gt;
     &lt;span class="c1"&gt;// much closer to traditional OOP languages in the "new" es6 syntax&lt;/span&gt;
     &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Vehicle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
               &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
               &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
               &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;

          &lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is a &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="c1"&gt;// let's make a subclass&lt;/span&gt;
     &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Bicycle&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Vehicle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
               &lt;span class="c1"&gt;// super is used to pass arguments to the class Bicycle is derived from&lt;/span&gt;
               &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;make&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
               &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;speed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;speed&lt;/span&gt;&lt;span class="p"&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;bike&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Bicycle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BMX&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;Stormbringer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1999&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="nx"&gt;bike&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getInfo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// logs "This is a 1999 BMX Stormbringer"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prototypes are objects that exist inside of all other objects as a sort of kernel. This kernel is where all your properties and functions reside. The prototype may also contain another prototype that it inherits functions and properties from ad infinitum. The access derived or sub-classes have is referred to as &lt;strong&gt;inheritance&lt;/strong&gt; which is provided by the &lt;strong&gt;prototype chain&lt;/strong&gt;. Prototype chain is just a reference to how all classes inherit from all the prototypes of their previous ancestors forming a chain or prototypal inheritance.&lt;/p&gt;

&lt;p&gt;The second, ES6 version is written in a fashion anyone with some OOP language experience can recognize. This was part of the reason this syntax was implemented. It makes it easier for JavaScript folks to get to grips with OOP coding and it gives folks who don't know it so well a foothold if they already know an OOP language or two. Plus explaining what prototypes are and the &lt;strong&gt;this&lt;/strong&gt; keyword means can get confusing. ES6 has made great progress in simplifying JavaScript syntax as a whole.&lt;/p&gt;

&lt;p&gt;Long story short, prototypal inheritance was a necessary evil and even with the new conventions, it's still there beneath the surface. That being said, OOP is still prone to certain problems and is by no means a panacea. I will address these issues next time as well as some solutions and more resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Parting words
&lt;/h3&gt;

&lt;p&gt;Next time, I'll bring you some more resources and as always I am not infallible, please comment, critique, and reach out. I am just starting my career and would love to get better and provide more value to my fellow comrades-in-keyboards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Videos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Traversy Media

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=vDJpGenyHaA" rel="noopener noreferrer"&gt;JavaScript OOP Crash Course - 40 mins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Programming with Mosh

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=PFmuCDHHpwk" rel="noopener noreferrer"&gt;Object-Oriented Programming in JavaScript - 1hr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Academind

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=9ooYYRLdg_g" rel="noopener noreferrer"&gt;Reference vs. Primitive Values/ types - 21 mins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Sites/ Reading Material&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MDN

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics" rel="noopener noreferrer"&gt;Object Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes" rel="noopener noreferrer"&gt;Object Prototypes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain" rel="noopener noreferrer"&gt;Inheritance and Prototypes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;W3Schools

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/js/js_object_definition.asp" rel="noopener noreferrer"&gt;JavaScript Objects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/js/js_this.asp" rel="noopener noreferrer"&gt;This keyword&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/js/js_object_prototypes.asp" rel="noopener noreferrer"&gt;Object Prototypes&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Tyler Mcginnis&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://tylermcginnis.com/this-keyword-call-apply-bind-javascript/" rel="noopener noreferrer"&gt;This keyword, call, apply, and bind&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Where do I start? Part 3: JavaScript</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 11 Mar 2019 03:28:16 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/where-do-i-start-part-3-javascript-f2n</link>
      <guid>https://dev.to/kevindsteeleii/where-do-i-start-part-3-javascript-f2n</guid>
      <description>&lt;h2&gt;
  
  
  This time
&lt;/h2&gt;

&lt;p&gt;Hi all, I'm back with another installment of these lists of lists. This time around I'm talking about JavaScript. So as always, I'm just some guy and by no means an expert please &lt;strong&gt;correct&lt;/strong&gt; me in the comments if I'm talking out of the side of my you-know-what.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript
&lt;/h2&gt;

&lt;p&gt;JavaScript is an amazing language. You can manipulate the DOM, build games, and make cool apps. There are many things you can do in this language but I'll highlight some of the things beginners need to learn and most of this will apply to other languages as well.&lt;/p&gt;

&lt;p&gt;I said in a previous post to learn JavaScript after all the other things like HTML and CSS. But, if you really want to learn JavaScript, do so in isolation and that's how I would tell you to practice, at first. But if you're already familiar with HTML and CSS, go for it! I believe in you!&lt;/p&gt;

&lt;h2&gt;
  
  
  Things to learn
&lt;/h2&gt;

&lt;p&gt;There's a lot to learn in any language and it can be confusing for your first so here are some personal favorite resources on learning JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  Topics to Study:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;variables&lt;/strong&gt;, how to define them

&lt;ul&gt;
&lt;li&gt;let &amp;amp; const (&lt;strong&gt;don't&lt;/strong&gt; use var, I mean it!!)&lt;/li&gt;
&lt;li&gt;variable scope (is the variable accessible)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;data types&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;number, string, boolean, symbol&lt;/li&gt;
&lt;li&gt;type conversion and testing, &lt;strong&gt;typeof&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;reference data types&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;objects, arrays, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;operators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;addition, subtraction, division, multiplication, and more!! (+, -, /, *)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;functions&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;a reusable piece of code that is sometimes called a procedure if it doesn't return anything, but everyone just says function, unless they're being fancy or pedantic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;control flow&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;loops&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;for, while, for-in, for-of&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;conditional statements&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;if, else if, else, [try, catch, finally] -&amp;gt; debugging&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;keyword &lt;strong&gt;this&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;call&lt;/strong&gt;, &lt;strong&gt;apply&lt;/strong&gt;, and &lt;strong&gt;bind&lt;/strong&gt; -&amp;gt; when/how to use them and where&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;arrow functions&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;DOM Manipulation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create, remove, modifying an &lt;strong&gt;element&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;adding CSS &lt;strong&gt;class&lt;/strong&gt; to element to modify it&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Courses&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/P1xt/p1xt-guides/blob/master/job-ready-javascript-edition-3.0.md" rel="noopener noreferrer"&gt;P1xt Get Job ready - JavaScript Edition - Version 3.0 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rithmschool.com/courses/javascript" rel="noopener noreferrer"&gt;Rithm School JavaScript&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rithmschool.com/courses/intermediate-javascript" rel="noopener noreferrer"&gt;Intermediate JS I&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rithmschool.com/courses/advanced-javascript-part-2" rel="noopener noreferrer"&gt;Intermediate JS II&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://javascript.info/" rel="noopener noreferrer"&gt;The Modern JavaScript Tutorial&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
 Free Code Camp&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=_y9oxzTGERs" rel="noopener noreferrer"&gt;Intro to JS - 1hr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=PkZNo7MFNFg" rel="noopener noreferrer"&gt;JS full course - 3.5hrs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=nZ1DMMsyVyI" rel="noopener noreferrer"&gt;Bleeding Edge JS ES6, ES7, ES8 - 1hr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=2ZphE5HcQPQ" rel="noopener noreferrer"&gt;JS Classes - 1hr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TraversyMedia&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=vEROU2XtPR8" rel="noopener noreferrer"&gt;JS Fundamentals for beginners - 1hr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=0ik6X4DJKCc" rel="noopener noreferrer"&gt;JS DOM Crash Course pt. 1 - 39mins&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=mPd2aJXCZ2g&amp;amp;t=3s" rel="noopener noreferrer"&gt;Pt. 2 - 21mins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=wK2cBMcDTss&amp;amp;t=3s" rel="noopener noreferrer"&gt;Pt. 3 - 33mins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=i37KVt_IcXw&amp;amp;t=3s" rel="noopener noreferrer"&gt;Pt. 4 - 22mins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Sites&lt;/strong&gt;    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learnxinyminutes.com/docs/javascript/" rel="noopener noreferrer"&gt;X in Y minutes JavaScript (A quick reference guide to JS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;MDN Javascript (Mozilla Developers Network ref)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/jsref/default.asp" rel="noopener noreferrer"&gt;W3Schools JavaScript &amp;amp; HTML DOM Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javascripture.com/" rel="noopener noreferrer"&gt;JavaScripture (Testing ground and reference for JS APIs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bonsaiden.github.io/JavaScript-Garden/" rel="noopener noreferrer"&gt;JavaScript Garden (gotchas, exceptions, and JS quirks)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Recommended Reading&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
 If a book has a legally free version, I will link it. Otherwise, I'll link to its Google books page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eloquentjavascript.net/" rel="noopener noreferrer"&gt;Eloquent JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS" rel="noopener noreferrer"&gt;You Don't Know JS Series&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://books.google.com/books/about/JavaScript_and_JQuery.html?id=LpctBAAAQBAJ" rel="noopener noreferrer"&gt;JavaScript and JQuery (oldie but decent visual aids IMHO)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Next time I'll share some links on learning OOP or object-oriented programming in JS and how their classes work. There is a wealth of resources online and I can't hope to cover them all but I think these are pretty good and as always I'm open to any comments, critiques, or call outs.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Where do I start? Part2: CSS Pre-Processors</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 04 Mar 2019 01:54:23 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/where-do-i-start-part2-css-pre-processors-4c58</link>
      <guid>https://dev.to/kevindsteeleii/where-do-i-start-part2-css-pre-processors-4c58</guid>
      <description>&lt;h2&gt;
  
  
  Last time...
&lt;/h2&gt;

&lt;p&gt;Last time I posted in &lt;strong&gt;&lt;a href="https://dev.to/kevindsteeleii/where-do-i-start-part-0-bash-terminal-git-and-github-version-control-3287"&gt;part-0&lt;/a&gt;&lt;/strong&gt; some of the things you may want to start doing before working on anything in &lt;strong&gt;&lt;a href="https://dev.to/kevindsteeleii/where-do-i-start-part1-ides-html-css--css-frameworkslibraries-3acb"&gt;part-1&lt;/a&gt;&lt;/strong&gt;. We'll start off with the assumption that you have a decent grasp of both HTML &amp;amp; CSS, you can use a text editor, and know enough git and command line commands to do most of what you need without using a UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  I know HTML, CSS, and all that, now what?
&lt;/h2&gt;

&lt;p&gt;So if you're feeling this way, you've probably done some if not all of the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Made a static website&lt;/li&gt;
&lt;li&gt;Learned Mobile first or Responsive styling&lt;/li&gt;
&lt;li&gt;Worked on &lt;strong&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/responsive-web-design-projects/" rel="noopener noreferrer"&gt;Free Code Camp Responsive Web Design Projects&lt;/a&gt;&lt;/strong&gt; or projects like them. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If not, you can start with these &lt;strong&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/basic-html-and-html5" rel="noopener noreferrer"&gt;HTML&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/basic-css" rel="noopener noreferrer"&gt;CSS&lt;/a&gt;&lt;/strong&gt; courses at Free Code Camp or use whatever resource/s that best suit your learning style and needs/goals. If you want to code as a hobby, that's fine too. I'll save the &lt;strong&gt;JavaScript&lt;/strong&gt; post for later because the length of this one has become a bit much.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS Pre-Processors &lt;del&gt;and JavaScript&lt;/del&gt;
&lt;/h2&gt;

&lt;p&gt;Modern CSS makes it much easier to style pages than compared with the bye-gone days of MySpace pages and Friendster. But even if you adopt amazing CSS architectures like &lt;strong&gt;&lt;a href="https://smacss.com/" rel="noopener noreferrer"&gt;SMACCSS&lt;/a&gt;&lt;/strong&gt; or stick to your basic &lt;strong&gt;&lt;a href="http://getbem.com/" rel="noopener noreferrer"&gt;BEM&lt;/a&gt;&lt;/strong&gt;, large or complex projects can make it harder to generate lean, effective CSS. Enter CSS Pre-Processors, they generate CSS thus the name and they have really neat functionality. Such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;less stuffy syntax&lt;/li&gt;
&lt;li&gt;nested selectors to simplify and cut down on classes and modifier use &lt;/li&gt;
&lt;li&gt;has data types you can use for better interaction&lt;/li&gt;
&lt;li&gt;functions w/ arguments&lt;/li&gt;
&lt;li&gt;control flow &lt;/li&gt;
&lt;li&gt;and more!!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  I'll give an example using SCSS
&lt;/h3&gt;

&lt;p&gt;You want to perfectly center a tag in relation to its height but it's also nested in another tag but the parent's positioning is absolute or relative to its own parent. What would we do?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scss"&gt;&lt;code&gt;  &lt;span class="cm"&gt;/* In CSS */&lt;/span&gt;
  &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="cm"&gt;/* Had to write a specific selector */&lt;/span&gt;
  &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.parent&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;--child-height--&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;35vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inherit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="cm"&gt;/* Seems like a lot to write just for this */&lt;/span&gt;
      &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;50vh&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;calc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;child-height--&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
      &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;35vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;child-height--&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="cm"&gt;/* In SASS */&lt;/span&gt;
  &lt;span class="nv"&gt;$child-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// reuseable in multiple places&lt;/span&gt;

  &lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.parent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&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;.child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inherit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50vh&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;$child-height&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="cm"&gt;/* Cleaner */&lt;/span&gt;
      &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;35vw&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$child-height&lt;/span&gt;&lt;span class="p"&gt;;&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;Now imagine adding more tags and styling where that came from. You can pretty much predict the mess that your CSS files could become. Before the advent of CSS Pre-Processors you had to write more selectors, use more classes, and it lacked the extensive functionality afforded by CSS Pre-Processors like SASS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Documentation

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sass-lang.com/documentation/file.SASS_REFERENCE.html" rel="noopener noreferrer"&gt;SASS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lesscss.org/#" rel="noopener noreferrer"&gt;LESS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lesscss.org/#" rel="noopener noreferrer"&gt;STYLUS lang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://postcss.org/" rel="noopener noreferrer"&gt;post CSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Videos

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=roywYSEPSvc&amp;amp;t=5s" rel="noopener noreferrer"&gt;Sass Crash Course by DesignCourse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=YD91G8DdUsw" rel="noopener noreferrer"&gt;LESS CSS Pre-Processor Tutorial by Traversy Media&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Next time
&lt;/h3&gt;

&lt;p&gt;Next time we'll finally look at JavaScript. A brief overview of the basic syntax and control-flow, recommended reading, and other resources. As always, I'm new so I acknowledge that I may make mistakes and am open to critique, discourse, or suggestions. Thank you!!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>sass</category>
      <category>css</category>
    </item>
    <item>
      <title>Where do I start? Part 0: Bash Terminal, Git and Github/ version control</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 25 Feb 2019 02:21:57 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/where-do-i-start-part-0-bash-terminal-git-and-github-version-control-3287</link>
      <guid>https://dev.to/kevindsteeleii/where-do-i-start-part-0-bash-terminal-git-and-github-version-control-3287</guid>
      <description>&lt;h1&gt;
  
  
  Where do I start? Part 0: The Terminal and Version Control
&lt;/h1&gt;

&lt;h2&gt;
  
  
  So where's Part 2?
&lt;/h2&gt;

&lt;p&gt;I did mention in &lt;a href="https://dev.to/kevindsteeleii/where-do-i-start-part1-ides-html-css--css-frameworkslibraries-3acb"&gt;Part 1&lt;/a&gt; that I would follow up with a prequel of sorts focused on things you should probably have at least a passing grasp of. In this installment, I will be covering resources for the terminal and version control. So without further ado, here we go.&lt;/p&gt;

&lt;h3&gt;
  
  
  So what's a terminal?
&lt;/h3&gt;

&lt;p&gt;The terminal is an application that directly interacts with the computer via typed commands as opposed to point-and-click GUI operations. The name terminal originates from the olden days of computing. Terminals were once a physical machine used to interface with computers the size of large rooms which you did by typing in commands literally and the idea kind of took root since then. By entering commands manually and strategically you can reduce the amount of time it takes to do fairly involved operations in the GUI with ease from the terminal. You may also hear terms like the command line, shell, bash, or console. However, in most cases, it's probably the terminal that's being discussed. If you want to get pedantic, look at &lt;strong&gt;&lt;a href="https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line" rel="noopener noreferrer"&gt;this&lt;/a&gt;&lt;/strong&gt;.    &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This is my personal opinion but I &lt;strong&gt;strongly&lt;/strong&gt; prefer git if I'm using a windows machine (I use Chromebooks, Windows machines, and a mac so...). While PowerShell is decent, the command prompt is pretty bad by comparison which is why unless you use .Net or something, it's generally not encouraged. But that does not mean you cannot be a unicorn and go ahead and buck the trend but you'll have to learn something &lt;em&gt;Linux-y&lt;/em&gt; eventually.&lt;/p&gt;

&lt;p&gt;The following are my recommendations for what terminal interface to use with which operating system and some links to educational resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Download Links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows (if you are using windows 10 look at the Linux subsystems links)

&lt;ul&gt;
&lt;li&gt;&lt;a href=""&gt;Powershell (windows better than command prompt)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitforwindows.org/" rel="noopener noreferrer"&gt;Git for windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/about" rel="noopener noreferrer"&gt;Windows Subsytems for Linux Docs&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Mac (the terminal it comes with is fine but if you're fancy..)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ohmyz.sh/" rel="noopener noreferrer"&gt;Oh My ZSH&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Linux (it comes with Linux, the GUI is the extra part!!)&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Sites/References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.learnenough.com/command-line-tutorial/basics" rel="noopener noreferrer"&gt;Learn Enough Command Line to be Dangerous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rithmschool.com/courses/terminal" rel="noopener noreferrer"&gt;Rithm School Terminal Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/powershell/scripting/learn/understanding-important-powershell-concepts?view=powershell-6" rel="noopener noreferrer"&gt;Learning Powershell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learntocodewith.me/command-line/unix-command-cheat-sheet/" rel="noopener noreferrer"&gt;Unix Command Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oxuRxtrO2Ag" rel="noopener noreferrer"&gt;Beginner's Guide to Bash - Joe Collins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=yz7nYlnXLfE" rel="noopener noreferrer"&gt;Command Line Crash Course - Free Code Camp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=v-F3YLd6oMw" rel="noopener noreferrer"&gt;Shell Scripting Crash Course - Beginner Level - Traversy Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Cvrqmq9A3tA" rel="noopener noreferrer"&gt;Windows 10 Bash &amp;amp; Linux Subsystem Setup - Traversy Media&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Version Control and Git
&lt;/h3&gt;

&lt;p&gt;Let's say you want to build a feature for a piece of software but you're working with a bunch of other people. How do you work on the same project together without messing each other's code up? Enter version control and git.&lt;/p&gt;

&lt;p&gt;Version control is a system that keeps a record of a file or several files over their lifetime. You can access older versions later on if you need to or completely overwrite things if you so wish. &lt;/p&gt;

&lt;h4&gt;
  
  
  Git and GitHub
&lt;/h4&gt;

&lt;p&gt;You'll hear Git and GitHub used interchangeably but the difference isn't that complicated. Git is a revision or version control system and GitHub is a service that hosts or stores projects that use Git. There are other hosting services like GitLab and GitBucket, but GitHub is the accepted standard in open source. It's ostensibly free (charges for private, team only accessible repos).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sites/References&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/docs" rel="noopener noreferrer"&gt;Git docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/book/en/v2" rel="noopener noreferrer"&gt;Pro Git Book Online Ver.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.learnenough.com/git-tutorial/getting_started" rel="noopener noreferrer"&gt;Learn Enough Git to be Dangerous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.git-tower.com/blog/git-cheat-sheet/" rel="noopener noreferrer"&gt;Git Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Videos&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=IHaTbJPdB-s" rel="noopener noreferrer"&gt;Learn Git in 20 minutes - Web Dev Simplified&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SWYqp7iY_Tc" rel="noopener noreferrer"&gt;Git &amp;amp; GitHub Crash Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=HVsySz-h9r4" rel="noopener noreferrer"&gt;Git Tutorial for Beginners: Command-Line Fundamentals - Corey Schafer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Next time I'll return to form with some short descriptions and resources for learning JavaScript and CSS preprocessors. As always any comments, concerns, and critiques are welcome.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>git</category>
      <category>bash</category>
    </item>
    <item>
      <title>Where do I start? Part1: IDES, HTML, CSS, &amp; CSS Frameworks/Libraries</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 18 Feb 2019 04:22:53 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/where-do-i-start-part1-ides-html-css--css-frameworkslibraries-3acb</link>
      <guid>https://dev.to/kevindsteeleii/where-do-i-start-part1-ides-html-css--css-frameworkslibraries-3acb</guid>
      <description>&lt;h1&gt;
  
  
  Who is this for?
&lt;/h1&gt;

&lt;p&gt;I would like to say everyone, but it's mostly for beginners who want to develop for a living. If you know something on this list or want to contribute, there's always the comments. I also love finding new resources.&lt;/p&gt;

&lt;h1&gt;
  
  
  Where to start?
&lt;/h1&gt;

&lt;p&gt;Just pick a thing. But if you want to do web development you're gonna have to tangle with HTML, CSS, and JavaScript eventually. If hearing things like front-end, back-end, or full-stack gives you anxiety, I would recommend starting with front-end development. Front-End is a great place to start and you can begin with just making static websites. So no tricky JavaScript or anything, at first. Just worry about building the structure, customizing the layout, and how it looks.&lt;/p&gt;

&lt;h3&gt;
  
  
  IDEs, REPLs &amp;amp; Text Editors
&lt;/h3&gt;

&lt;p&gt;To code you'll need either some sort of Interactive Development Environment or IDE, or a text editor like Notepad. But I would suggest you use a code editor.&lt;/p&gt;

&lt;p&gt;REPL stands for Read, Eval, Print, Loop and there are neat online ones customized to be used for whatever environment you're using. If you need to test out a function or code snippet, use them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Resources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop IDEs

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Atom&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Online IDEs/Editors

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codetasty.com/" rel="noopener noreferrer"&gt;Code Tasty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codesandbox.io/" rel="noopener noreferrer"&gt;Code Sandbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cloud9/?origin=c9io" rel="noopener noreferrer"&gt;AWS Cloud 9&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Online REPLs

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://repl.it/" rel="noopener noreferrer"&gt;Repl.it (only one you need, trust me)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Videos&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traversy Media

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fnPhJHN0jTE" rel="noopener noreferrer"&gt;VS Code Guide and Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=aiXNKHKWlmY" rel="noopener noreferrer"&gt;Atom Editor packages and set up&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  HTML &amp;amp; CSS
&lt;/h3&gt;

&lt;p&gt;So we start off with HTML and CSS. If you see things like HTML5, don't panic that's just the most recent iteration of HTML or &lt;em&gt;hyper text markup language&lt;/em&gt;. CSS stands for &lt;em&gt;cascading style sheets&lt;/em&gt;. You'll hear things about CSS frameworks and stuff but learn enough plain css to make basic cosmetic and layout changes to pages first. I would &lt;strong&gt;strongly&lt;/strong&gt; recommend you learn the following before using CSS frameworks or libraries for anything besides cosmetic changes (unforseen side-effects may occur):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning" rel="noopener noreferrer"&gt;position&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/z-index" rel="noopener noreferrer"&gt;z-index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/css/css_display_visibility.asp" rel="noopener noreferrer"&gt;display&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3schools.com/css/css3_flexbox.asp" rel="noopener noreferrer"&gt;flexbox&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" rel="noopener noreferrer"&gt;in-depth guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.w3schools.com/css/css_grid.asp" rel="noopener noreferrer"&gt;css-grid&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/" rel="noopener noreferrer"&gt;in-depth grid guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I'll be addressing CSS frameworks after this section. But below is a listing of links I find or found helpful on my journey.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sites/Reference&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mozilla Developers Network (dry but super thorough)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML" rel="noopener noreferrer"&gt;HTML Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="noopener noreferrer"&gt;CSS Docs &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;W3 Schools (beginner friendly)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/html/default.asp" rel="noopener noreferrer"&gt;Learn HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/css/default.asp" rel="noopener noreferrer"&gt;Learn CSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Rithm School (Free Online Curriculum w/ some videos)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rithmschool.com/courses/html-css-fundamentals" rel="noopener noreferrer"&gt; HTML &amp;amp; CSS Basics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Learn to Code HTML &amp;amp; CSS (online book)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.shayhowe.com/html-css/" rel="noopener noreferrer"&gt;Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.shayhowe.com/advanced-html-css/" rel="noopener noreferrer"&gt;Advanced&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS Tricks (advanced CSS tips and tricks, also good breakdowns)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://htmlcheatsheet.com/css/" rel="noopener noreferrer"&gt;CSS Interactive Cheat Sheet&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://htmlcheatsheet.com/" rel="noopener noreferrer"&gt;HTML Interactive Cheat Sheet&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt; (YouTube, Scrimba, etc):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traversy Media (king of crash courses)

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=UB1O30fR-EE" rel="noopener noreferrer"&gt;HTML CrashCourse for Absolute Beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=yfoY53QXEnI&amp;amp;t=1s" rel="noopener noreferrer"&gt;CSS Crash Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JJSoEo8JSnc&amp;amp;t=449s" rel="noopener noreferrer"&gt;Flexbox in 20 minutes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Free Code Camp Videos &lt;a href=""&gt;info&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=DPnqb74Smug" rel="noopener noreferrer"&gt;FCC HTML5 - full course w/ samples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=pQN-pnXPaVg" rel="noopener noreferrer"&gt;HTML Full Course - Build a Website Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ieTHC78giGQ" rel="noopener noreferrer"&gt;CSS Full Course w/ flexbox and css-grid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=t6CBKf8K_Ac" rel="noopener noreferrer"&gt;CSS Grid Course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://scrimba.com/g/ghtml" rel="noopener noreferrer"&gt;Scrimba Intro to HTML&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Interactive Tutorials &amp;amp; Drills&lt;/strong&gt;: Use these to sharpen your Flexbox and CSS-grid skills&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://flexboxfroggy.com/" rel="noopener noreferrer"&gt;Flexbox Froggy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.flexboxdefense.com/" rel="noopener noreferrer"&gt;Flexbox Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssgridgarden.com/" rel="noopener noreferrer"&gt;CSS Grid Garden&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  CSS Libraries/Frameworks and more, or Bootstrap and friends:
&lt;/h3&gt;

&lt;p&gt;So you've safely emerged from the tall grasslands of HTML and CSS on your web developer journey. What lies before you next is the expansive plains of CSS frameworks and libraries.&lt;/p&gt;

&lt;p&gt;There's a lot of confusion about what constitutes a CSS framework vs. a library and I'm not gonna get into that here. Instead I'll just show you some possibilites. This list will focus on what's popular and/or good. These are not necessarily the same thing. Popular libraries/frameworks almost always have a large, supportive community with robust documentaion, while the ones considered good may have the same support but solve a particular problem well or better than others.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sites/Reference&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap Docs&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.com/docs/4.3/examples/" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="http://getskeleton.com/" rel="noopener noreferrer"&gt;Skeleton (Simple and Clean)&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://materializecss.com/" rel="noopener noreferrer"&gt;Materialize CSS&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://materializecss.com/showcase.html" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Videos&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traversy Media

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=nVANwdryGVc&amp;amp;t=1s" rel="noopener noreferrer"&gt;Skeleton Landing Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=nqT8c5OFjEQ&amp;amp;t=24s" rel="noopener noreferrer"&gt;MaterializeCSS Crash Course pt. 1&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ZpduVPHZ5Aw" rel="noopener noreferrer"&gt;pt. 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;Design Course

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=hnCmSXCZEpU" rel="noopener noreferrer"&gt;Bootstrap 4 Crash Course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Online Curriculum:
&lt;/h2&gt;

&lt;p&gt;These links are complete repos, lists, and curriculum you can follow if you feel lost. But remember devs are paid for thinking so if you find something that doesn't work for you, pivot or come back to it later. Be kind to yourself!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn" rel="noopener noreferrer"&gt;MDN Learn Web Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rithmschool.com/courses" rel="noopener noreferrer"&gt;RithmSchool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/P1xt/p1xt-guides" rel="noopener noreferrer"&gt;P1xt Guides (Pick one!!)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3 Schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.freecodecamp.org/" rel="noopener noreferrer"&gt;Free Code Camp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theodinproject.com/" rel="noopener noreferrer"&gt;The Odin Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thoughtbot.com/upcase" rel="noopener noreferrer"&gt;Upcase by ThoughBot (Rails, Design, TDD)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://open.appacademy.io" rel="noopener noreferrer"&gt;App Academy Open (free version of App Academy Curriculum)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[Edit]: Next I'll add a part 0 where I'll talk about some resources for learning the bash terminal/command line and version control with git/github.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Database models and ERDs for Newbs Part: 5</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Wed, 06 Feb 2019 07:31:09 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-5-3f61</link>
      <guid>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-5-3f61</guid>
      <description>&lt;h1&gt;
  
  
  The CRUD operations
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;Last time we delved a bit into SQL using PostgreSQL's command line tool, psql. The database was created, tables made, and rows inserted.&lt;/p&gt;

&lt;h2&gt;
  
  
  What now?
&lt;/h2&gt;

&lt;p&gt;This is a bit unorthodox but I'm trying to ramp up to 2 posts a week on average so I'm concluding this series here. But, before I close on this, I'll be going over a few things in SQL. Specifically how we insert rows into our join tables, make instances/rows of the models the join table refers to, update a row, and finally delete a row and delete the whole dang database. So I'll write up some scenarios with them to justify doing the code.&lt;/p&gt;

&lt;p&gt;Let's access our database. &lt;br&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%2F88m5z0oqpwvvkzajixsi.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%2F88m5z0oqpwvvkzajixsi.png" alt="access database" width="254" height="189"&gt;&lt;/a&gt;&lt;br&gt;
Since we already have made the database in the last entry this is how we access it using psql.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating rows!
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Professors Elizabeth King and James Marshal just got hired to teach a couple of classes. They need to be entered into the database before their courses can be determined.&lt;br&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%2F536l7svt00sjjw8xab8g.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%2F536l7svt00sjjw8xab8g.png" alt="insert new professors" width="726" height="225"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Professors Table&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;first_name&lt;/th&gt;
&lt;th&gt;last_name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;James&lt;/td&gt;
&lt;td&gt;Marshal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Elizabeth&lt;/td&gt;
&lt;td&gt;King&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: The newly hired Professors Marshal and King teach an English and Math course respectively.&lt;br&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%2Faqt0z3j0rxrh41ak6akm.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%2Faqt0z3j0rxrh41ak6akm.png" alt="insert courses" width="800" height="217"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Courses&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;title&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;th&gt;professor_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Freshman Math&lt;/td&gt;
&lt;td&gt;A mathematical survey of the...&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Middle English&lt;/td&gt;
&lt;td&gt;Middle English, Chaucer and beyond&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Student ID number 1, Adam Bean registers for both of the new courses taught by the new professors. Student ID number 2, Clara Doe registers for only the Math class since she transferred with the appropriate pre-reqs. And Student ID number 3, Everett Franklin just wants to read Chaucer so he registers for Marshal's course.&lt;br&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%2Fe81pmh7fszc0nucfkx8x.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%2Fe81pmh7fszc0nucfkx8x.png" alt="insert course registrations" width="692" height="297"&gt;&lt;/a&gt;&lt;br&gt;
Here, we have inserted professors, courses, and the course_registrations. Pay close attention to the course_registrations table. It only has its own id number and two foreign keys, one refers to a course row and the other to a student.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Course_Registrations&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;course_id&lt;/th&gt;
&lt;th&gt;student_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Reading from a single student with ID of 2.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Clara needs to be looked up to confirm some information for the admins.&lt;br&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%2Fsfod1puw8yrnzfl7j5f3.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%2Fsfod1puw8yrnzfl7j5f3.png" alt="select student 2" width="380" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Updating a student's last name.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Clara gets married and wants to adjust her student info to reflect her legal status. This is how you would change her name.&lt;br&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%2Fh6p717zl5cia9vddl8ol.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%2Fh6p717zl5cia9vddl8ol.png" alt="update student 2 last name" width="566" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting a row.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Everett wants to transfer to a school that better fits his needs and so his record needs to be removed. We delete a row like this:&lt;br&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%2F2xlgxpnd5dltf9ujfr60.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%2F2xlgxpnd5dltf9ujfr60.png" alt="delete student 3" width="338" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Droping the database.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: The college is about to close down but their database contains sensitive information so the entire database needs to be deleted. The following code is how you would remove or &lt;em&gt;drop&lt;/em&gt; the database.&lt;br&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%2F5umaca6exaip1wsttjkd.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%2F5umaca6exaip1wsttjkd.png" alt="drop database" width="330" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there you have it CRUD! I had a lot of fun making the diagrams on such over the last 5 posts or so and would be open to any feedback. Thanks for reading!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Database models and ERDs for Newbs Part: 4</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 04 Feb 2019 03:17:16 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-4-4m0h</link>
      <guid>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-4-4m0h</guid>
      <description>&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;So last time we fixed up the students, professors, and courses relationship. This was done by the amazing application of &lt;em&gt;join tables&lt;/em&gt;. Join tables basically, hold references for 2 or more database models that would otherwise have a &lt;em&gt;many-to-many&lt;/em&gt; relationship. Which is problematic because it creates a situation where data is duplicated in a bunch of places, leading to low &lt;em&gt;cardinality&lt;/em&gt;. Cardinality basically refers to how unique data is in a particular column. While join tables aren't perfect, it's better than keeping entire copies of rows (individual instances of the model) nested in other rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Corrections
&lt;/h2&gt;

&lt;p&gt;I made an assumption about the data model for the student based on the desire to show a greater variety of &lt;em&gt;crow's foot notation&lt;/em&gt;. But the &lt;em&gt;has one or more&lt;/em&gt; course_registrations demarkation of the student is confusing when you think about it. It would lower cardinality so I'm just going to add a boolean data type column called &lt;em&gt;has_registered&lt;/em&gt; to alleviate this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It took this.&lt;/strong&gt;&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%2F7p6e0phmyi4ath21hu4d.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%2F7p6e0phmyi4ath21hu4d.jpg" alt="has many through" width="631" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And made it look like this&lt;/strong&gt;&lt;br&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%2Fc5fx3ntbzg3zjhv73swi.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%2Fc5fx3ntbzg3zjhv73swi.jpg" alt="updated has many through" width="683" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code, yes?
&lt;/h2&gt;

&lt;p&gt;Not quite yet, first some errata. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I am by no means a DBA(database admin) or anything so I'm not going to get too deep into joins in this one.&lt;/li&gt;
&lt;li&gt;I'm using &lt;strong&gt;PostgreSQL&lt;/strong&gt;. If you don't have it, here's a &lt;a href="https://www.postgresql.org/download/" rel="noopener noreferrer"&gt;download link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I use an ORM (Object Relational Mapper) in production but you should always know what's going on "under the hood" of whatever abstraction you're using, to a degree. This hopefully sheds some light on what the tools you are using to spin up databases are actually doing.&lt;/li&gt;
&lt;li&gt;There are visualization tools and managers to help you with your databases like &lt;a href="https://www.pgadmin.org/download/" rel="noopener noreferrer"&gt;pgAdmin&lt;/a&gt;. Download it, play with it!&lt;/li&gt;
&lt;li&gt;Forget the UUID thing. It's neat but I don't think introducing modules in PostgreSQL befits a beginner&lt;/li&gt;
&lt;li&gt;I am also omitting what a full-blown version will look like. There's a lot of data to consider and will go into detail on something similar later.&lt;/li&gt;
&lt;li&gt;And finally, at this point, I'm assuming you downloaded PostgreSQL and have it set up.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So here we go:&lt;/p&gt;

&lt;p&gt;First, we go the terminal, git bash or power shell (you should be using one of these!) and enter the following:&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%2Fi.ibb.co%2Ff2DNw06%2F2019-02-03-001.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%2Fi.ibb.co%2Ff2DNw06%2F2019-02-03-001.png" alt="enter PostgreSQL and create table school server code" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
So in the above code, I entered the DBMS (database management system) and then I created the database that holds my tables. I affectionately called it &lt;em&gt;school_server&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Next up, the tables themselves.&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%2Fba2c4renuaau9o2bvsik.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%2Fba2c4renuaau9o2bvsik.png" alt="code to make all of the aforementioned tables" width="582" height="477"&gt;&lt;/a&gt; &lt;br&gt;
So here I made the professors, students, courses, and course registrations tables. Pay close attention to &lt;em&gt;courses&lt;/em&gt; and &lt;em&gt;course_registrations&lt;/em&gt; tables. They both contain some &lt;strong&gt;foreign keys&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sounds familiar?&lt;/strong&gt;&lt;br&gt;
It should, I mentioned previously that foreign keys are used as references that point to the appropriate row in the table that has a relationship with the row that contains that foreign key. &lt;/p&gt;

&lt;p&gt;In the case of the courses and course_registration tables, we see 3 different foreign keys. Courses have only one, in the &lt;em&gt;professor_id&lt;/em&gt; column. Course_Registrations has two because it is a &lt;strong&gt;join table&lt;/strong&gt; that joins together courses and students. Which are also what its foreign keys point towards. So let's have a gander at what these newly-minted tables look like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Professors&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;first_name&lt;/th&gt;
&lt;th&gt;last_name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Courses&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;title&lt;/th&gt;
&lt;th&gt;description&lt;/th&gt;
&lt;th&gt;professor_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Course_Registrations&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;course_id&lt;/th&gt;
&lt;th&gt;student_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Students&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;first_name&lt;/th&gt;
&lt;th&gt;last_name&lt;/th&gt;
&lt;th&gt;has_registered&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is getting to be a bit long (vertically). So I'm going to call it quits here but, before I close I'll do show you one more thing.&lt;/p&gt;

&lt;p&gt;Create Students!&lt;br&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%2Fcu43qtzdrb1vo53a34oa.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%2Fcu43qtzdrb1vo53a34oa.png" alt="creating new students in SQL code" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And now our table of students looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;first_name&lt;/th&gt;
&lt;th&gt;last_name&lt;/th&gt;
&lt;th&gt;has_registered&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Adam&lt;/td&gt;
&lt;td&gt;Bean&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Clara&lt;/td&gt;
&lt;td&gt;Does&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Everett&lt;/td&gt;
&lt;td&gt;Franklin&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;----&lt;/td&gt;
&lt;td&gt;----------&lt;/td&gt;
&lt;td&gt;----------&lt;/td&gt;
&lt;td&gt;---------&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Next time, I'll cover the getting a specific student's data, updating, and deleting in SQL. See ya!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Database models and ERDs for Newbs Part: 3</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 28 Jan 2019 04:16:19 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-3-lcd</link>
      <guid>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-3-lcd</guid>
      <description>&lt;h2&gt;
  
  
  Recap from Last Time
&lt;/h2&gt;

&lt;p&gt;Last time, we looked at a mock school registry with 3 tables: students, professors, and the join table of course registrations. I also promised to do some coding and that's what I intend. So here we go!&lt;/p&gt;

&lt;p&gt;Remember This?&lt;br&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%2F7p6e0phmyi4ath21hu4d.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%2F7p6e0phmyi4ath21hu4d.jpg" alt="has many through" width="631" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what's wrong with this?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;course registrations only join students to professors (no courses to be seen)&lt;/li&gt;
&lt;li&gt;we need to record the classes/courses themselves w/ their own id numbers, names, etc &lt;/li&gt;
&lt;li&gt;you need to be able to generate a student roster for individual classes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fixing the Problem
&lt;/h2&gt;

&lt;p&gt;So here's what I came up with.&lt;br&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%2Fc5fx3ntbzg3zjhv73swi.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%2Fc5fx3ntbzg3zjhv73swi.jpg" alt="updated has many through" width="683" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we revised the models and their relationships in the following ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;made it so that a single course &lt;strong&gt;belongs-to&lt;/strong&gt; a professor&lt;/li&gt;
&lt;li&gt;course registrations &lt;strong&gt;belongs-to&lt;/strong&gt; both courses and students&lt;/li&gt;
&lt;li&gt;a course registrations entity &lt;strong&gt;has&lt;/strong&gt; a professor through its course it &lt;strong&gt;belongs-to&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, we'll see what a row of the course registrations table looks like now as opposed to before&lt;/p&gt;

&lt;p&gt;Before:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;professor_id&lt;/th&gt;
&lt;th&gt;student_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;37494&lt;/td&gt;
&lt;td&gt;746384684&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;id&lt;/th&gt;
&lt;th&gt;course_id&lt;/th&gt;
&lt;th&gt;student_id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;td&gt;7893726&lt;/td&gt;
&lt;td&gt;746384684&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Why all the id numbers?&lt;br&gt;
&lt;em&gt;High-cardinality&lt;/em&gt; is the ideal for SQL databases and this solution promotes high-cardinality more than the previous version. It's more reasonable to store references to the model than to clone the database models for a few reasons. Especially since when you have to update or delete a model. If you made clones instead of used references, you would have to repeat the same operations in multiple places and that would lead to mistakes so references are used instead.&lt;/p&gt;

&lt;p&gt;Introducing Foreign Keys&lt;br&gt;
The course_id and student_id are the references used in my example and they have a specific name, &lt;strong&gt;foreign keys&lt;/strong&gt;. Foreign keys don't need to be named after anything in particular but it should make sense so when I create a row in my course registrations table, I name the column for the course model's id number course_id and follow the same for student_id.&lt;/p&gt;

&lt;p&gt;So, that's it for now but tune it next time when I finally throw some code up to show how I would set up these tables.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Database models and ERDs for Newbs Part: 2</title>
      <dc:creator>Kevin Steele</dc:creator>
      <pubDate>Mon, 21 Jan 2019 04:23:18 +0000</pubDate>
      <link>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-2-6d9</link>
      <guid>https://dev.to/kevindsteeleii/database-models-and-erds-for-newbs-part-2-6d9</guid>
      <description>&lt;h2&gt;
  
  
  Recap from Last Time
&lt;/h2&gt;

&lt;p&gt;So far we covered database models as a way to create abstractions that represent entities, or things with quantifiable attributes. Next, I'll explain some points on relationships and how we go about figuring them out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Crow's Foot Notation?
&lt;/h2&gt;

&lt;p&gt;Crow's Foot Notation can be traced back to the mid-1970s and something called structured systems analysis and design method if you want to do a little more reading after this. Essentially it's a way of diagramming entities as boxes and their relationships as lines with markings that roughly resemble a crow's foot. It also goes by the name of Barker's notation. With that bit of historical errata out of the way, let's get to the main point.&lt;/p&gt;

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

&lt;p&gt;While we as developers are more than capable of creating amazing databases programmatically, writing code first leads to a lot of mistakes. Mistakes lead to greater cost and cost leads to things that can result in the failure of a venture or product. So just like carpenters, we need to measure twice and cut once. And by the way, you &lt;strong&gt;don't&lt;/strong&gt; have to use this specific notation. Use any system that works to design your models and their relationships before you start programming. I'm personally interested in systems design and such, which is why I'm writing this.&lt;/p&gt;

&lt;p&gt;What does it look like?&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%2Fxl9bqu2kxcgtc0tlw19z.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%2Fxl9bqu2kxcgtc0tlw19z.png" alt="Crow's Foot Notation Chart" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In action?&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%2F0pkgaapnzap0zdfjdcwa.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%2F0pkgaapnzap0zdfjdcwa.png" alt="Crow's Foot Notation in Action" width="771" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's unpack this.&lt;br&gt;
The professors can have students but don't necessarily need to have students. Students need to have at least one professor. So imagine a small school that only documents their registered students. The professors may or may not teach a course but all students need to take at least one course to be counted at all for any kind of course credit. However, many-to-many relationships when implemented this way cause low cardinality, or having a lot of duplicated information. See the next figure.&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%2Fns9nl008y9ilm920xwh7.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%2Fns9nl008y9ilm920xwh7.png" alt="Many to messy" width="612" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join tables to the rescue!&lt;/p&gt;

&lt;p&gt;A join table is what it sounds like. It joins related tables and creates rows of matching entities. But, it would only contain references to them not copies to avoid low cardinality. In our case, we use course registrations to join our many students and professors.&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%2F7p6e0phmyi4ath21hu4d.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%2F7p6e0phmyi4ath21hu4d.jpg" alt="has many through" width="631" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mind you we could still refine this to make an even better entity relationship diagram but that will have to wait for next week. &lt;/p&gt;

&lt;p&gt;In part 3, we're gonna break this down even more to build a better system. If I'm able to, I'll be adding some code this time around.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
