<?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: AidanMargo</title>
    <description>The latest articles on DEV Community by AidanMargo (@aidanmargo).</description>
    <link>https://dev.to/aidanmargo</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%2F710738%2F35891495-db7f-4194-8add-994cb08016b9.jpg</url>
      <title>DEV Community: AidanMargo</title>
      <link>https://dev.to/aidanmargo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aidanmargo"/>
    <language>en</language>
    <item>
      <title>3 Html Tags You Need to Know About</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Tue, 07 Dec 2021 14:53:41 +0000</pubDate>
      <link>https://dev.to/aidanmargo/3-html-tags-you-need-to-know-about-24pa</link>
      <guid>https://dev.to/aidanmargo/3-html-tags-you-need-to-know-about-24pa</guid>
      <description>&lt;p&gt;Every webpage is built off of HTML. Even if it's appended to the DOM, without this code, we've got nothing to show on our page. Every developer needs to understand HTML, at least at a basic level. Yet, most of us aren't utilizing all of the tools available to us.&lt;/p&gt;

&lt;p&gt;"But Aidan, how much else could there be to learn? This is such a basic language!"&lt;/p&gt;

&lt;p&gt;Well, sort of. If you've worked with HTML in the past, you know of the basic tag types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Headers (h1, h2, etc.)&lt;/li&gt;
&lt;li&gt;Paragraphs 
&lt;/li&gt;
&lt;li&gt;Divs 
&lt;/li&gt;
&lt;li&gt;Inputs 
and so on. There are some other amazing options we have too, though, to make our lives so much easier. Let's take a look at them.&lt;/li&gt;

&lt;h1&gt;
  
  
  3 HTML Tags You Need to Know about
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Details
&lt;/h2&gt;

&lt;p&gt;We're gonna start out with my personal favorite. If you're looking for a real quick way to hide and show some information throw the  tag in there and watch the magic happen!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ubRNM1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bme91b9x0f0jpbsr28mc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ubRNM1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bme91b9x0f0jpbsr28mc.png" alt="Closed Details" width="101" height="38"&gt;&lt;/a&gt;&lt;br&gt;
Then...&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pzrQtTut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0go2g4l8oiyig8ur70kn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pzrQtTut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0go2g4l8oiyig8ur70kn.png" alt="Open Details" width="880" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tip: Use in conjunction with the  tag for some extra customization.&lt;/p&gt;
&lt;h2&gt;
  
  
  Different Input Types
&lt;/h2&gt;

&lt;p&gt;Need to let the user pick a color for their profile? How about set a date-time, or from a range of numbers? You can use the "type" attribute to give your user a bunch of different options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G371C_uf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knzcvpgf5knjj7mik39b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G371C_uf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knzcvpgf5knjj7mik39b.png" alt="Input Types" width="356" height="167"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Datalist &amp;amp; Option
&lt;/h2&gt;

&lt;p&gt;A great way to give your user some autocompleted options is by using the  and  tags in conjunction with your input! Here's an example using some common icecream flavors:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BVDmQ9M5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d5442tuoqyuwofiqsjgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BVDmQ9M5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d5442tuoqyuwofiqsjgs.png" alt="Datalist" width="447" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V_u-9tVe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwzr0tx962bdaxu3pr4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V_u-9tVe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwzr0tx962bdaxu3pr4i.png" alt="Autocompleting datalist" width="413" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing to note here is that you will need to make sure that your datalist id matches the "list" attribute of your input, so the types sync up. Here's the code used for the above example:&lt;br&gt;
&lt;/p&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;label for="ice-cream-choice"&amp;gt;Choose a flavor:&amp;lt;/label&amp;gt;
&amp;lt;input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" /&amp;gt;

&amp;lt;datalist id="ice-cream-flavors"&amp;gt;
    &amp;lt;option value="Chocolate"&amp;gt;
    &amp;lt;option value="Coconut"&amp;gt;
    &amp;lt;option value="Mint"&amp;gt;
    &amp;lt;option value="Strawberry"&amp;gt;
    &amp;lt;option value="Vanilla"&amp;gt;
&amp;lt;/datalist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;




</description>
      <category>html</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Frameworks vs. Libraries</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Mon, 22 Nov 2021 05:40:13 +0000</pubDate>
      <link>https://dev.to/aidanmargo/frameworks-vs-libraries-5de8</link>
      <guid>https://dev.to/aidanmargo/frameworks-vs-libraries-5de8</guid>
      <description>&lt;p&gt;Developers use tools each and every day to make their jobs faster, easier, and more accessible.&lt;/p&gt;

&lt;p&gt;React Hooks, Ruby Gems, npm packages, these are all fantastic tools that make our lives as developers easier, but there are two in particular that seem to get thrown around more than the others:&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks and Libraries
&lt;/h2&gt;

&lt;p&gt;The majority of developers you come across will know what a framework or a library is for their language of choice; or at least they think they do. These terms are used interchangeably all the time, and while they're related, they are most definitely not the same.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is a Framework, and What is a Library?
&lt;/h1&gt;

&lt;p&gt;Imagine you need to run a simple task, but you're going to need to do it many times over. What would you do? You're most likely thinking "make a function/functions, duh!" And you would be right!&lt;br&gt;
After all, we want to make sure that our code is DRY (Don't Repeat Yourself) and easily reusable. So, lets make a couple of functions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function getWords(str) {
   const words = str.split(' ');
   return words;
}
function createSentence(words) {
   const sentence = words.join(' ');
   return sentence;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great! Guess what? You just created a library. It's a small, largely irrelevant library, but it is one nonetheless.&lt;/p&gt;

&lt;p&gt;A library is much more flexible in the way that we grab, place, and use our code. It allows us to use the tools it provides us how we see fit. Sort of like going to the library and pulling whatever resource you need as you right your history paper.&lt;/p&gt;

&lt;p&gt;A framework, on the other hand, is a bit more like hiring an interior designer to do a lot of the heavy lifting for you. You may not have as much room to do what you'd like when and where you like it, but a lot of the brain power is handled by your new handy helper. &lt;strong&gt;Remember, a framework is NOT the same as a language!&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  When to use each?
&lt;/h1&gt;

&lt;p&gt;Deciding when to use a framework and when to use a library will be quite clear if you're pulling apart your goal. Often times, though, the answer is both! Having an architecture set for you to build out your applications is great, since it will do a lot of the setup and organization for you. But, for those pesky instances where you need a bit more ease of use, use a library. Here's a graphic to help you out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9XMqy8Pk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/quz8378n6ck0foksr2sa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9XMqy8Pk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/quz8378n6ck0foksr2sa.jpg" alt="Framework vs Library" width="550" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;

&lt;p&gt;Here are some examples of some libraries you may see for some different languages and their uses:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Python: "Pandas" - Highly optimizes data analysis when working with text, numbers, or objects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Javascript: "face-api.js" - Includes well-known and loved face detection and recognition models. Great for use with node.js!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ruby: "Better_errors" - Replaces the rails error page with an error page on the web to help with gathering information on their errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;C++: "Torch" - Provides a variety of algorithms to make handling scientific and numerical operations much more quick and efficient.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Can't forget about those frameworks! Here are a few to check out:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Java: Spring &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Javascript: Angular, React, Vue.js&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python: Django&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ruby: Ruby on Rails&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sMKzYDT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q9x8763a7tws0b2nfpou.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sMKzYDT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q9x8763a7tws0b2nfpou.jpg" alt="Rails" width="880" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What are some of your favorite libraries or frameworks to use on your projects and why? Is it what you learned first? Did you transition from a different framework? Share in the comments!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding React Proptypes</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Tue, 02 Nov 2021 16:18:42 +0000</pubDate>
      <link>https://dev.to/aidanmargo/understanding-react-proptypes-e6a</link>
      <guid>https://dev.to/aidanmargo/understanding-react-proptypes-e6a</guid>
      <description>&lt;h1&gt;
  
  
  What is "Proptypes"
&lt;/h1&gt;

&lt;p&gt;Proptypes is a react hook that makes debugging your programs a &lt;em&gt;lot&lt;/em&gt; easier, namely when there's a conflict amongst data types. &lt;/p&gt;

&lt;p&gt;You may remember Mousseboy if you've stopped by my page before. If not, here he is. We're gonna use him for our demonstration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cOhwZ-0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jstrqd53kwi91cw4wysn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cOhwZ-0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jstrqd53kwi91cw4wysn.jpeg" alt="MousseBoy" width="880" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Starter Code
&lt;/h3&gt;

&lt;p&gt;Here's some really basic, unstyled react code that we're using for this example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import Mousseboy from './Mousseboy'


function App() {
  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;Mousseboy name='Mousseboy' age={'12'}/&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Mousseboy ({name, age}) {
  return (
    &amp;lt;&amp;gt;
    &amp;lt;h3&amp;gt;{name} will be {age + 3} years old in 3 years!&amp;lt;/h3&amp;gt;
    &amp;lt;/&amp;gt;
    )}

export default Mousseboy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What should we expect to see when we run this code? Since we passed the 'age' prop down with a value of 12, we would hope to see 15 come back to us, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X17_KhHP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o51cok1c5folc5bi2cy9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X17_KhHP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o51cok1c5folc5bi2cy9.png" alt="Mousseboy 123" width="461" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not exactly! We passed down the age prop with a value of 12, but &lt;strong&gt;as a string&lt;/strong&gt;. This causes the '3' to be tacked on to the end of the string '12.' He may be a grandpa, but he's not that old!&lt;/p&gt;

&lt;p&gt;This is a really common bug that comes up, especially in large programs and applications. This is where &lt;em&gt;proptypes&lt;/em&gt; comes in, to help us catch the issues when they arise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Proptypes
&lt;/h3&gt;

&lt;p&gt;First thing's first, we need to install the package so we can use it in our program. Run this code in the directory for your project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm i proptypes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assuming the install went as planned, you can now use the prop-types hook in your program! We're gonna use this in our "Mousseboy" component. Import "PropTypes" at the top of your component.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import PropTypes from 'prop-types'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And we're off! So prop-types is really great for catching unintended data-type errors in our code. Here's how we use it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;call &lt;strong&gt;.proptypes&lt;/strong&gt; on the component you're working in and set it to an &lt;strong&gt;object&lt;/strong&gt;. It will need to be called after the return.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import PropTypes from 'prop-types'

function Mousseboy ({name, age}) {
  return (
    &amp;lt;&amp;gt;
    &amp;lt;h3&amp;gt;{name} will be {age + 3} years old in 3 years!&amp;lt;/h3&amp;gt;

    &amp;lt;/&amp;gt;
    )}

    Mousseboy.propTypes = {

    }
export default Mousseboy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;We're going to need to add some keys and proptype values. Inside of our empty object, we're going to target the name and age props, and tell PropTypes what data type we're looking for.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Mousseboy.propTypes = {
      name: PropTypes.string,
      age: PropTypes.number
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Now open up the devtools in your browser, and check out the error we get.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EyVYDbBW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxck831rb9v8tvj1pvuu.png" alt="Proptype error" width="880" height="339"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Awesome! This error is letting us know that the &lt;em&gt;age&lt;/em&gt; prop was passed down as a string, but we were expecting a number.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips and tricks
&lt;/h3&gt;

&lt;p&gt;*There are a few ways we can use this on a bit of a deeper level. For example, if we were to remove the 'age' key from our .proptypes object, there would be no error! &lt;/p&gt;

&lt;p&gt;To ensure we're notified of something not being passed down correctly, we can add &lt;strong&gt;.isRequired&lt;/strong&gt; after our proptype(string, number, etc.)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I took out the age prop in our App component and added .isrequired to it in our proptype object.&lt;/em&gt; It looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mousseboy.propTypes = {
      name: PropTypes.string,
      age: PropTypes.number.isRequired
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here is the error message we get:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f65WJZgx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bid94qqbgtyu1c1y8uqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f65WJZgx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bid94qqbgtyu1c1y8uqf.png" alt="age required" width="880" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*We can use this with multiple datatypes! Here are a few examples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Proptypes.bool&lt;/li&gt;
&lt;li&gt;Proptypes.object&lt;/li&gt;
&lt;li&gt;Proptypes.symbol&lt;/li&gt;
&lt;li&gt;Proptypes.function&lt;/li&gt;
&lt;li&gt;Proptypes.any (rarely used, but if you do, add .isRequired !)&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;We can also add multiple options by using .oneOfType. Try this out:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mousseboy.propTypes = {
      stringOrNumber: PropTypes.oneOfType ([
        Proptypes.string,
        Proptypes.number
      ]),
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to update your passed props up in App!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>A Beginners Guide to CSS Grid</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Sun, 24 Oct 2021 20:22:40 +0000</pubDate>
      <link>https://dev.to/aidanmargo/a-beginners-guide-to-css-grid-3f32</link>
      <guid>https://dev.to/aidanmargo/a-beginners-guide-to-css-grid-3f32</guid>
      <description>&lt;p&gt;CSS positioning has been the beast that many developers seem reluctant to conquer. It can be finnicky, particular, and frustrating to say the least. When do I use position: absolute or position: relative? Why are my elements not stacking on top of each other? &lt;/p&gt;

&lt;p&gt;It's important that front-end developers know the uses of all of these different properties, and how to use them. However, there's another way to position your elements exactly how you want them:&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS GRID
&lt;/h2&gt;

&lt;p&gt;CSS grid came out in April of 2007, and helped tackle the struggles of positioning that came with Flexbox at the time. &lt;strong&gt;Where Flexbox handles one dimension (rows OR columns) really well, grid is generally better for working with two dimensions.&lt;/strong&gt; Here's a little info graphic to help you out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iz3qe0mqrqjs9jdrk1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iz3qe0mqrqjs9jdrk1r.png" alt="The two axes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is to show you the main axis on your page. &lt;em&gt;&lt;strong&gt;With a flexbox design, you need to know which axis your element will be going before you start, as it can only work on one dimension&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So let's get into some actual CSS Grid.&lt;/p&gt;

&lt;p&gt;Here is the base code I'm using for the example, in case you want to test things out for yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* CSS */

.base-box {
  font-size: 1.5rem;
  width: auto;
  height: 125px;
  margin: 1em;
  display: flex;
  align-items: center;
  justify-content: center;
}

#container {
  background-color: rgb(241, 194, 194);
}
#box-1 {
  background-color: rgb(75, 79, 105);
}

#box-2 {
  background-color: rgb(197, 40, 119);
}

#box-3 {
  background-color: rgb(54, 202, 228);
}

#box-4 {
  background-color: rgb(36, 233, 52);
}

#box-5 {
  background-color: rgb(238, 179, 90);
}

&amp;lt;!-- HTML --&amp;gt;

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset="UTF-8"&amp;gt;
  &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&amp;gt;
  &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
  &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
  &amp;lt;link rel="stylesheet" href="style.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id='container'&amp;gt;
      &amp;lt;div id='box-1' class='base-box'&amp;gt;Div 1&amp;lt;/div&amp;gt;
      &amp;lt;div id='box-2' class='base-box'&amp;gt;Div 2&amp;lt;/div&amp;gt;
      &amp;lt;div id='box-3' class='base-box'&amp;gt;Div 3&amp;lt;/div&amp;gt;
      &amp;lt;div id='box-4' class='base-box'&amp;gt;Div 4&amp;lt;/div&amp;gt;
      &amp;lt;div id='box-5' class='base-box'&amp;gt;Div 5&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After opening index.html in your browser, you should see the page like this: &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjn7q0ywxqcfbxvxqe1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjn7q0ywxqcfbxvxqe1n.png" alt="Starting div Layout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now lets change the display of our container element to be &lt;strong&gt;display: grid;&lt;/strong&gt;. At first, you shouldn't see much change besides a little bit of extra spacing. Where the real magic comes in is when you create your &lt;em&gt;template&lt;/em&gt;. Try putting this code into the container element, and then open your browser dev-tools to check it out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: repeat(5, 250px);
grid-template-rows: 150px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;note: repeat() allows for us to create multiple copies of the same grid cell at a time.&lt;/p&gt;

&lt;p&gt;If you hover over the container element using your browser dev-tools, you should see what some dotted lines between each of our boxes. These are the &lt;em&gt;grid lines&lt;/em&gt;. Those are what were created with our grid-template-columns code above, and now each of our boxes has it's own cell.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fractional Units
&lt;/h3&gt;

&lt;p&gt;We can improve upon this, though. As this stands now, there's a little bit of extra space on the end, and it's not very responsive to different screen sizes. But we can take care of that! Grid has a specific unit of measurement called the &lt;strong&gt;fr&lt;/strong&gt;. This stands for "fractional unit," and is an amazing way to allocate space to our child elements while also taking screen size and screen breakpoints into account. &lt;/p&gt;

&lt;p&gt;Let's change our column width of 250px to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: repeat(5, 1fr)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we see that all of grid containers take up an equal &lt;strong&gt;fraction&lt;/strong&gt; of the container. We can mix and match these sizes to get whatever kind of layout we want. Try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* grid-template-columns: repeat(5, 1fr) */
grid-template-columns: 2fr 1fr 3fr;
grid-template-rows: 1fr 1fr;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Grid Shorthand
&lt;/h3&gt;

&lt;p&gt;Alright, so there's one more thing to note, and that is the &lt;em&gt;grid shorthand&lt;/em&gt;. This lets us decide the space our children element takes up on the grid based on a &lt;strong&gt;start point/end point&lt;/strong&gt; syntax. &lt;/p&gt;

&lt;p&gt;We remember from earlier that our grid has grid-lines that break up our columns and rows. Beginning from the very start of our container, the lines are numbered from left to right for columns starting from the number 1, and from top to bottom for rows. In grid shorthand, we use those line numbers as a way to dictate when we start and stop our container on the grid. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftz0hiy9vihgputd1xeex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftz0hiy9vihgputd1xeex.png" alt="Grid template line example"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.moonlearning.io/blog/css-grid" rel="noopener noreferrer"&gt;Image Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our orange box seems to have a lot of leftover space at the end of the container. Let's fix that with grid-shorthand. We want this box to start at the *second grid-line, and take up the rest of the remaining space.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#box-5 {
  background-color: rgb(238, 179, 90);
  grid-column: 2/4;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdync9r7r1fkvc3drnkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdync9r7r1fkvc3drnkf.png" alt="Finished"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CSS grid is a fantastic way to utilize the space of your page in a responsive, creative, and simple way. Below are some resources to take a deeper dive into CSS grid.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/user/KepowOb" rel="noopener noreferrer"&gt;Kevin Powell - Youtube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>css</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Phase 1 complete! My Thoughts So Far.</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Tue, 12 Oct 2021 04:39:14 +0000</pubDate>
      <link>https://dev.to/aidanmargo/phase-1-complete-my-thoughts-so-far-3hpd</link>
      <guid>https://dev.to/aidanmargo/phase-1-complete-my-thoughts-so-far-3hpd</guid>
      <description>&lt;h1&gt;
  
  
  Hi everybody!
&lt;/h1&gt;

&lt;p&gt;With the first phase of my Software Engineering bootcamp coming to a close at Flatiron School, I thought I would update you on what I did over the last two weeks.&lt;/p&gt;

&lt;p&gt;First, I completed my first code challenge on the first try! This was a huge accomplishment and it felt like a giant weight was lifted off of my shoulders once it was completed. &lt;/p&gt;

&lt;p&gt;The week after that was project week. I was paired up with a couple of my favorite peers, and we developed a one page app that drew from a public API of cocktail recipes. We added a search function so the user can search recipes by name or ingredient, as well as a favorites list that successfully updates the server. &lt;br&gt;
&lt;a href="https://github.com/themanselmo/drink-generator"&gt;Check out the github repository here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last couple of weeks weren't without their struggles, though. &lt;/p&gt;

&lt;p&gt;Imposter syndrome hit &lt;em&gt;hard&lt;/em&gt;. Being paired with perhaps the two most experienced students in my cohort definitely made me feel a bit unprepared in comparison to them. I felt lost at times, and at others completely overwhelmed. &lt;/p&gt;

&lt;p&gt;However, I also learned that while perhaps I'm not as strong as them in coding javascript off the fly, I am strong in other fields, such as design and styling! I styled our whole project (although there wasn't much to it) as well as helping to style another team's project as well! It was a lot of fun, and I quickly realized was perhaps my favorite part of the project. In the future I would like to build a project that has a bit more UI elements involved, so I can really toy around.&lt;/p&gt;

&lt;p&gt;I start phase 2 tomorrow morning. We will be focusing on learning React, and I couldn't be more excited to learn a more clear and concise way of writing Javascript.&lt;/p&gt;

&lt;p&gt;And here is a new picture of Mousseboy. Talk to you all soon :)&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eB4-HWVq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ju1nyy95kjt2j390md6n.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eB4-HWVq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ju1nyy95kjt2j390md6n.JPG" alt="IMG_2045"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>css</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Hello Hello!</title>
      <dc:creator>AidanMargo</dc:creator>
      <pubDate>Wed, 22 Sep 2021 01:09:54 +0000</pubDate>
      <link>https://dev.to/aidanmargo/hello-hello-4lhe</link>
      <guid>https://dev.to/aidanmargo/hello-hello-4lhe</guid>
      <description>&lt;h1&gt;
  
  
  Hi everybody!
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TPKcNqzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cae5e1vvkkc4uzt1y1bf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TPKcNqzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cae5e1vvkkc4uzt1y1bf.jpg" alt="Aidan's Selfie"&gt;&lt;/a&gt;&lt;br&gt;
My name is Aidan, and I'm a Software boot camp student at Flatiron School. I'm here to keep everybody in the loop as I go through my coding journey, and to let you know more about me each and every day as I make this life changing experience happen. &lt;/p&gt;

&lt;h3&gt;
  
  
  Here's a bit of information about me:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I'm from Minnesota, USA but I recently moved down to Fort Worth, Texas in order to pursue software engineering and be closer to my friends. It's WAY too hot down here, but I'll get used to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I have a 12 year old pup named Mousseboy. He's deaf and a bit grouchy, but he likes to sleep near the desk and watch as I plug away on my coding challenges and projects. I'll make sure to keep everybody updated on him too. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wj8oaKSw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/meig9qtaprhbdftnsq1i.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wj8oaKSw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/meig9qtaprhbdftnsq1i.JPG" alt="Mousseboy"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some of my hobbies include: fitness, playing the harp, video games, and cleaning house (I LOVE TO CLEAN).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since I'm here to keep you all updated on my coding journey, I want to share a small little To-do list that I put together. That can be found here: &lt;a href="https://aidanmargo.github.io/Aidan-s-To-do-List/"&gt;To-do list&lt;/a&gt;&lt;br&gt;
This list allows you to add different items to your list, where they'll all be cataloged underneath. from there, you can select them, delete them, and more along with some nice basic styling and CSS animations to spruce it up a bit. &lt;/p&gt;

&lt;p&gt;Thanks for reading and I hope to get to know some of you as I progress in this amazing part of my life!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>css</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
