<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Aaron Guyett</title>
    <description>The latest articles on Forem by Aaron Guyett (@guyett92).</description>
    <link>https://forem.com/guyett92</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%2F400868%2Fd0abd2e9-2f50-424b-81f2-5de829b9bfd3.jpeg</url>
      <title>Forem: Aaron Guyett</title>
      <link>https://forem.com/guyett92</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/guyett92"/>
    <language>en</language>
    <item>
      <title>The Importance of Mentoring - 5 Reasons Why You Should Find a Mentor</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Mon, 08 Mar 2021 05:17:41 +0000</pubDate>
      <link>https://forem.com/guyett92/the-importance-of-mentoring-5-reasons-why-you-should-find-a-mentor-3b5</link>
      <guid>https://forem.com/guyett92/the-importance-of-mentoring-5-reasons-why-you-should-find-a-mentor-3b5</guid>
      <description>&lt;p&gt;One of the many things you'll hear when starting in most career fields is &lt;em&gt;find a mentor.&lt;/em&gt; That's easier said than done. In a future post, I'll highlight some of the places you can find mentors, but first I'd like to convince you of the importance of mentoring. &lt;/p&gt;

&lt;h1&gt;
  
  
  Mentoring 101
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NqyZxeFL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bm282dyhnezreo91opn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NqyZxeFL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bm282dyhnezreo91opn.jpg" alt="Learn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what exactly &lt;em&gt;is&lt;/em&gt; mentoring? Mentoring is the practice of engaging in a &lt;strong&gt;mutually beneficial&lt;/strong&gt; partnership between an individual who wants to grow in a field and one who has experience in the said field. This means that the mentee &lt;strong&gt;and&lt;/strong&gt; the mentor are getting something out of the relationship. The mentee gets the guidance, wisdom, and knowledge the mentor shares, while the mentor earns an intrinsic reward. Now, let's highlight some of the reasons why you should get out there and hunt for your own mentor.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Successful Organizations Do It
&lt;/h2&gt;

&lt;p&gt;Organizations at the top of their game are there because they understand the importance of mentoring. 71% of Fortune 500 companies have mentoring programs (Bolotin, 2018). That means that out of 500 of the most powerful companies ranked in the United States, 355 of them thrive with the use of mentoring programs.&lt;/p&gt;

&lt;p&gt;These &lt;em&gt;private&lt;/em&gt; programs are not available to each of us (unless we get hired), but they showcase the impact of mentoring. Do you think it is a coincidence that success and mentoring go hand-in-hand?&lt;/p&gt;

&lt;h2&gt;
  
  
  2. You'll Learn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BcL1ZqTt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9tgy7sxh4i6bkg4h7mn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BcL1ZqTt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9tgy7sxh4i6bkg4h7mn.jpg" alt="Dory Learns"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If following the group is not your thing, then do so because you'll learn. You'll learn, and you'll learn a lot. As soon as you think you have fundamentals down, a good mentor will shake up your world (in a good way) and you'll be back at square one in a new set of fundamentals. This time you work through it, you won't be alone.&lt;/p&gt;

&lt;p&gt;A great mentor is one that has been there before. They can teach you the things that you did not know you needed to learn. For example, did you know that when you are going to a technical interview, it is okay to say that you do not know how to solve one of the problems, as long as you explain how you would figure out to do so? Mentors will walk you through some of the complexities and nuances of your specific field (even outside of development!) and teach you things they wish they had known when they started.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Problem-Solver Access
&lt;/h2&gt;

&lt;p&gt;Depending on your exact field, I'm sure you have spent countless hours Googling a specific problem. You may &lt;em&gt;eventually&lt;/em&gt; solve it, but wouldn't it be easier if someone were available to point you in the right direction? For example, let's say you're working with Angular and you get an error and begin to panic. You troubleshoot the error and look at Stackoverflow to no avail.&lt;/p&gt;

&lt;p&gt;A quick message to your mentor results in, &lt;em&gt;It's a package error, Google ...&lt;/em&gt;, and before you know it you're on your way and you can chug along until you face the next error. When you do reach that next error, the insight the mentor gave you leads you to a solution much, much faster than before.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Guidance is Vital
&lt;/h2&gt;

&lt;p&gt;Are you happy in your station? Where do you see yourself in 5 years? 10? How do you plan on getting there? Do you want to work hard? That's great if that's true, but a mentor can magnify your hard work by focusing it on things that yield higher professional returns.&lt;/p&gt;

&lt;p&gt;Consider a junior software engineer. She is fresh out of college and has completed an internship and finds herself creating marketing emails for a large company. Eventually, she'll be able to begin working on the user interface for the company's SaaS offering. She begins to learn all about the languages that the organization uses.&lt;/p&gt;

&lt;p&gt;A mentor would dissect the given scenario and provide guidance. Questions like: &lt;em&gt;Do they use containers? If so, do you know enough about Docker and Kubernetes?&lt;/em&gt; and &lt;em&gt;It's a SaaS platform? What cloud provider do they use? Do you know about DevOps?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They'll ask the tough questions so you don't have to and you can spend your time getting to the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Companionship
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1P6DBQ05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q8vmdtgpx42m041jat9y.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1P6DBQ05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q8vmdtgpx42m041jat9y.jpeg" alt="Friendship"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the most important. It can be taxing to consider working after work to do better at work. Having a companion that has been through your struggles can be key. This is beneficial for both parties. You'll always have access to someone who understands what you're going through.&lt;/p&gt;

&lt;p&gt;Plus, you can always bounce your ideas off of them and they will hopefully be brutally honest. A good mentor always is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Get a mentor. A good one will make everything easier and a great one will change your life. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aaron&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;p&gt;Bolotin, T. (2018, March 02). Most Fortune 500 Companies Have Mentor Programs. Do You?- PSA. Retrieved from &lt;a href="https://www.psafinancial.com/2018/03/most-fortune-500-companies-have-mentor-programs-do-you/#:%7E:text=Over"&gt;https://www.psafinancial.com/2018/03/most-fortune-500-companies-have-mentor-programs-do-you/#:~:text=Over&lt;/a&gt; 71 percent of Fortune,formal training for new hires.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>AWS Certifications - 5 Reasons to Obtain Them</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Sat, 13 Feb 2021 01:26:20 +0000</pubDate>
      <link>https://forem.com/guyett92/aws-certifications-5-reasons-to-obtain-them-1n45</link>
      <guid>https://forem.com/guyett92/aws-certifications-5-reasons-to-obtain-them-1n45</guid>
      <description>&lt;p&gt;Amazon Web Services (AWS) is a cloud provider that offers many, MANY services to consumers so that they can move away from on-prem environments and into the cloud. The cloud is the present and the foreseeable future. Organizations have begun to realize this and although they may resist, many have at least adopted a hybrid model that has moved some services that were once on-prem to the cloud. I mention AWS because it is the largest cloud provider in the world that proudly hosts cloud services for organizations like Netflix, Twitch, LinkedIn, dev.to (yes, this blog post utilizes S3 buckets anytime you see an image I've added), and Facebook.&lt;/p&gt;

&lt;p&gt;So why should you learn about AWS? Here are some reasons (and resources) that may help you come to the same conclusion I made. P.S. I am currently studying for my next AWS certification. Feel free to connect with me to discuss the certification exams!&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Improve Your Credentials
&lt;/h1&gt;

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

&lt;p&gt;The &lt;em&gt;certifications&lt;/em&gt; area of early software engineer resumes is often lacking. Any AWS certification bolsters that space by showcasing that you have the ability to learn theory and are interested in the cloud. Adding a single certification from a reliable source instantly pushes a candidate to the next tier. If you get multiple AWS certifications, you build on your credentials even further because each subsequent certification is more specialized.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. AWS Certifications are Affordable
&lt;/h1&gt;

&lt;p&gt;The Certified Cloud Practitioner exam is $100. It lasts three years. If you pass on your first try, you pay $33/year. YOu may counter this argument by claiming that study materials are expensive. Here are some free resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/course/free-aws-certified-cloud-practitioner/" rel="noopener noreferrer"&gt;Udemy Course&lt;/a&gt; - A free Udemy course from a reputable source&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.training" rel="noopener noreferrer"&gt;aws.training&lt;/a&gt; - Tons of courses available through AWS' platform&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.whizlabs.com/aws-certified-cloud-practitioner/free-test/" rel="noopener noreferrer"&gt;Practice Exam&lt;/a&gt; - An okay practice exam&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://qwiklabs.com" rel="noopener noreferrer"&gt;Qwiklabs&lt;/a&gt; - Free/paid cloud labs available with a real AWS environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Paid Resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;College - many college courses are available that cover AWS content, provide you with hands-on learning, and will fund your attempts at the exams&lt;/li&gt;
&lt;li&gt;MOOCs - There are tons of Udemy/Coursera/EDX courses available for $13 and under&lt;/li&gt;
&lt;li&gt;Practice Exams - AWS and other providers offer practice exams usually around $20 or less&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best approach to studying for the exam is dependent on the individual. I prefer getting into labs and taking the time to read as much as I can while others like courses and working through labs with an instructor. Take the time to identify your learning strategy and make a plan to study to earn the certification.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Learn
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4qvseynlcdy5smuydkt2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4qvseynlcdy5smuydkt2.jpg" alt="No Idea What I'm Doing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After looking at the number of services AWS has to offer (over 275), learning them all can appear daunting. Good news: you don't have to know &lt;em&gt;every&lt;/em&gt; service. Depending on the exam you are taking, you only need to know specific services. Studying for the exams provide you with a mountain of knowledge that translates into the workplace effectively. If you want to be a software engineer or developer, begin studying for the DevOps track. You'll find that the content on the exam covers AWS &lt;strong&gt;AND&lt;/strong&gt; DevOps. Learning this material enables you to present yourself to potential employers, bosses, and colleagues while having the knowledge to back up claims that they may have seen on your resume or LinkedIn.&lt;/p&gt;

&lt;p&gt;An example would be a study of AWS Lambda. Lambda is a serverless function service. If you do not know what serverless functions are while studying Lambda you would uncover that knowledge as well as the knowledge that will help you discuss serverless functions on a specific platform that is used by hundreds of organizations around the world. Remember, we are all lifelong learners but we choose to do it in different fields.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Join Communities
&lt;/h1&gt;

&lt;p&gt;As soon as you pass your first certification exam, you get to join LinkedIn groups and other communities on AWS and on other platforms. You can market yourself there, connect with other individuals that are as driven as you are, and maybe even find a study-buddy for the next exam you plan on taking. Additionally, as a certification-holder, you get access to an exclusive shop that gets more and more items the further along you get in the certification track. Plus, you can print out and hang up your certification on your wall and people will be very impressed to see anything from Amazon.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Intrinsic Reward
&lt;/h1&gt;

&lt;p&gt;There are many difficulties that we all face every day. Working towards something, especially during COVID, can help motivate you. Earning a certification is an accomplishment that you set out to do, take the time to study for, and work to pass the exam. It is something you can be proud of once you have accomplished it. At this point, don't we all need a reward for being inside for so long?&lt;/p&gt;

&lt;p&gt;So, get out there and pick an exam track, get studying, and earn those certifications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aaron&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Differences Between a Headless CMS &amp; A Static Site Generator</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Mon, 16 Nov 2020 05:34:54 +0000</pubDate>
      <link>https://forem.com/guyett92/the-differences-between-a-headless-cms-a-static-site-generator-299k</link>
      <guid>https://forem.com/guyett92/the-differences-between-a-headless-cms-a-static-site-generator-299k</guid>
      <description>&lt;p&gt;As I dive further into the wormhole that is software engineering, I have thankfully run into many different tools (frameworks, libraries, packages, etc.) that make developing a lot easier. Plug: &lt;a href="https://dev.to/guyett92/the-power-of-gatsby-5-reasons-why-you-should-use-it-1eih"&gt;Gatsby Review&lt;/a&gt; A couple of these tools always seemed similar to me, enough for me to decide to do a deep-dive to understand them better. I'd like to share what I learned, which includes the benefits and drawbacks of each, definitions of both of them, their use cases, and some examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Headless CMS Definition and Examples
&lt;/h2&gt;

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

&lt;p&gt;A headless CMS is a content management system that sends content to the frontend as an API. Without a head, this means that you get to pick and choose which outputs the content is sent to (Melvær, 2020). They are specific to the backend and focuses on storing and delivering structured content. They are often customizable to an extent but offer limited true flexibility. They also require additional server resources than a static page.&lt;/p&gt;

&lt;p&gt;The image below showcases how a headless CMS interacts works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Headless CMS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F19nibtz2fvtq3byxr4t0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F19nibtz2fvtq3byxr4t0.jpg" alt="Headless CMS Diagram"&gt;&lt;/a&gt;&lt;br&gt;
A headless CMS is able to send and receive data via an API. Integrations can be injected into the API and send out to various apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regular CMS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8dtp4duff0de4mebamd5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8dtp4duff0de4mebamd5.jpg" alt="Regular CMS Diagram"&gt;&lt;/a&gt;&lt;br&gt;
A regular CMS requires the admin interface to connect to integration, then the database, then integration, and finally to the view layer. This is much more convoluted and less efficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;Traditional CMS Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wordpress.com/" rel="noopener noreferrer"&gt;WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.joomla.org/" rel="noopener noreferrer"&gt;Joomla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.drupal.org/" rel="noopener noreferrer"&gt;Drupal&lt;/a&gt; - Also offers a Headless CMS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.weebly.com/" rel="noopener noreferrer"&gt;Weebly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Headless CMS Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://buttercms.com/" rel="noopener noreferrer"&gt;Butter CMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sanity.io/" rel="noopener noreferrer"&gt;Sanity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cosmicjs.com/" rel="noopener noreferrer"&gt;Cosmic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prismic.io/" rel="noopener noreferrer"&gt;Prismic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Static Site Generator Definition and Examples
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqvw37claa4y53bmnz6yk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqvw37claa4y53bmnz6yk.jpg" alt="Static Site Generator Meme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A static site generator (SSG) allows a developer to create a static web page from different code or markdown prior to users viewing it. For example, you may write markdown and then use Jekyll to convert it to HTML before the user views the page. The premise is simple: create input files and then utilize a static site generator to present HTML to a user. They make the transition from code to view simple and efficient. Many of the SSGs are optimized for search engines and include some features that provide users with an efficient experience.&lt;/p&gt;

&lt;p&gt;The problem with SSGs is that they are exactly that: static. They aren't dynamic, so something like a social media app may not be an ideal candidate for an SSG. They also relegate to simple HTML so they may strip some of the things that developers want to integrate into a project. The research that is necessary to use an SSG is crucial and can be tedious.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gatsbyjs.com/" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Nextjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyllrb.com/" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nuxtjs.org/" rel="noopener noreferrer"&gt;Nuxt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.getzola.org/" rel="noopener noreferrer"&gt;Zola&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;I recently started Wes Bos' course on Gatsby that can be found &lt;a href="https://mastergatsby.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. The project created in the course utilizes Gatsby and Sanity, and you can see the outcome on &lt;a href="https://github.com/guyett92/master-gatsby" rel="noopener noreferrer"&gt;my Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can see the final outcome of the course below.&lt;/p&gt;

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

&lt;p&gt;Remember, a headless CMS is used to manage content between what the user sees and a database, while a static site generator is used to serve static pages to a user from a template engine recognized by the SSG.&lt;/p&gt;

&lt;p&gt;Hopefully, this helps you understand both these concepts a bit better! Cheers!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aaron&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;References&lt;br&gt;
Melvær, K. (2020, August 18). Headless CMS explained in 5 minutes. Retrieved from &lt;a href="https://www.sanity.io/blog/headless-cms-explained" rel="noopener noreferrer"&gt;https://www.sanity.io/blog/headless-cms-explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CMS Diagrams from &lt;a href="https://www.storyblok.com/tp/headless-cms-explained" rel="noopener noreferrer"&gt;https://www.storyblok.com/tp/headless-cms-explained&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>The Power of Gatsby (5 Reasons Why You Should Use It)</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Tue, 27 Oct 2020 05:32:58 +0000</pubDate>
      <link>https://forem.com/guyett92/the-power-of-gatsby-5-reasons-why-you-should-use-it-1eih</link>
      <guid>https://forem.com/guyett92/the-power-of-gatsby-5-reasons-why-you-should-use-it-1eih</guid>
      <description>&lt;p&gt;&lt;a href="https://www.gatsbyjs.com/" rel="noopener noreferrer"&gt;Gatsby(.js)&lt;/a&gt; is more powerful than a content management system (CMS). It can be used to create web applications with ease. Think of it as a more advanced WordPress with many more optimization features built-in. By definition, it is a static site generator but can do much more. It has plug-ins, provides scalable code, and utilizes easy-to-integrate security features. Gatsby's homepage uses the phrase:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The modern way to build the web.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it is. Gatsby has no catch, it is useful and can be used to set up an optimized single-page-app (SPA) in a matter of minutes. There are plenty of other features, and I'd like to highlight some of them and discuss some resources you can use to better understand and utilize Gatsby.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  What is Gatsby?
&lt;/h2&gt;

&lt;p&gt;Gatsby is a static site generator that allows users to create an application using the command line in a matter of minutes. Gatsby requires Git and Node.js. You then need to install the Gatsby CLI to utilize the commands available. An excellent tutorial can be found on the Gatsby website &lt;a href="https://www.gatsbyjs.com/tutorial/part-zero/#create-a-gatsby-site" rel="noopener noreferrer"&gt;here&lt;/a&gt;. If you're ever lost you can always use &lt;code&gt;gatsby --help&lt;/code&gt; once you have it installed.&lt;/p&gt;

&lt;p&gt;Gatsby acts as a way to quickly set up web apps from &lt;a href="https://www.gatsbyjs.com/starters/?v=2" rel="noopener noreferrer"&gt;templates&lt;/a&gt;, install or build &lt;a href="https://www.gatsbyjs.com/plugins/" rel="noopener noreferrer"&gt;plugins&lt;/a&gt; and utilize or create themes (among many other things). As the best management system I've seen, you can expect Gatsby to provide delivery and payload optimization (meaning that performance will impact users as little as possible because of features like progressive image loading and static content), offer an ecosystem and environment that you can use to develop your app in, and provide governance that can be used to secure your product.&lt;/p&gt;

&lt;p&gt;It also helps that Gatsby has some of the best documentation I've ever worked with. (And a &lt;a href="https://www.twitch.tv/gatsbyjs" rel="noopener noreferrer"&gt;Twitch channel&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I Learn to use Gatsby?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7vaynxfhe57gr8xiiih3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7vaynxfhe57gr8xiiih3.jpg" alt="Much to Learn"&gt;&lt;/a&gt;&lt;br&gt;
As mentioned earlier, Gatsby has a spectacular tutorial. There are also many resources available (or if you want to take a &lt;a href="https://dev.to/guyett92/general-assembly-and-other-coding-bootcamp-review-4bli"&gt;coding boot camp&lt;/a&gt;, you can ask about that in class.)&lt;/p&gt;

&lt;p&gt;There are also some amazing courses available. One of my favorites gives you video access for life, covers some additional topics, and is taught by a knowledgeable and inspiring individual. The [Master Gatsby] course can be bought here.&lt;/p&gt;

&lt;p&gt;FreeCodeCamp has a couple of great YouTube courses available:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=kzWIUX3CpuI" rel="noopener noreferrer"&gt;The Great Gatsby Bootcamp&lt;/a&gt; &amp;amp; &lt;a href="https://www.youtube.com/watch?v=Oc_ITwxiG-Y" rel="noopener noreferrer"&gt;Strapi &amp;amp; GatsbyJS Course&lt;/a&gt;. If you have not utilized FreeCodeCamp and you are early in your software engineer career, I recommend hopping on there immediately!&lt;/p&gt;

&lt;p&gt;Udemy has a cool course available to build a &lt;a href="https://www.udemy.com/course/gatsby-js-firebase-hybrid-realtime-static-sites/" rel="noopener noreferrer"&gt;Gatsby &amp;amp; Firebase app&lt;/a&gt;. Udemy, Coursera, EDX, and other MOOCs are great resources for learning all things code.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm Not Convinced
&lt;/h2&gt;

&lt;p&gt;If you have checked out the Gatsby website and don't feel like there is a point in using Gatsby yet, I'll present you with some facts:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Gatsby creates a dev environment on your machine to test your project within minutes.
&lt;/h3&gt;

&lt;p&gt;You can use a starter template and begin working on your project and check it in real-time within &lt;strong&gt;minutes&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Gatsby's plugin library is massive and is updated often.
&lt;/h3&gt;

&lt;p&gt;The plugins available optimize performance, include components and themes, and allow you to maintain a scalable environment with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Gatsby has a great community.
&lt;/h3&gt;

&lt;p&gt;They have a Twitch channel, sponsored events, and a swag store. The team puts a lot of effort into community outreach and it shows because the community is very involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Gatsby has great documentation.
&lt;/h3&gt;

&lt;p&gt;It's awesome. Like everything else supplied by the Gatsby team, it's regularly updated and maintained better than the White House.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Gatsby has a page that shows how much better it is than its' competitors.
&lt;/h3&gt;

&lt;p&gt;This page can be found &lt;a href="https://www.gatsbyjs.com/features/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Gatsby excels in most categories and outranks all the competition so effectively that it offers comparisons and includes explanations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdfilzaf9n8g18sqjiwlg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdfilzaf9n8g18sqjiwlg.jpg" alt="Gatsby is Hot"&gt;&lt;/a&gt;&lt;br&gt;
Gatsby is the future and the present. I used it for my portfolio and I love some of the plugins available (styled-components anyone?). As the community grows, more features will be added and Gatsby will continue to become more efficient. If you need more convincing drop me a line!&lt;/p&gt;

&lt;p&gt;Until next time! - Aaron&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>react</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>General Assembly (and other) Coding Bootcamp Review</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Mon, 05 Oct 2020 02:49:12 +0000</pubDate>
      <link>https://forem.com/guyett92/general-assembly-and-other-coding-bootcamp-review-4bli</link>
      <guid>https://forem.com/guyett92/general-assembly-and-other-coding-bootcamp-review-4bli</guid>
      <description>&lt;p&gt;There are &lt;em&gt;a few&lt;/em&gt; of these summaries of coding boot camps available on the Internet, so I'll try to offer something a little different. I compared a lot of self-proclaimed coding boot camps, spoke with a lot of admissions teams, and asked alumni from various boot camps.&lt;/p&gt;

&lt;p&gt;I went to General Assembly and completed their Software Engineering Immersive (SEI) Flex boot camp. I won't be discussing prices but will give some insight into what goes on and what to expect coming out and going into a boot camp. One thing that I noticed that was consistent about many &lt;strong&gt;software engineering&lt;/strong&gt; boot camps is that there is no discussion about testing. If it works, it works and that is that.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lBB3zkWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kyup5wei0tbmjw6kas8s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lBB3zkWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kyup5wei0tbmjw6kas8s.jpg" alt="No Testing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Admissions
&lt;/h2&gt;

&lt;p&gt;I spoke with many different admissions counselors and their main objective was the same: to add a feeling of exclusivity to prospective students.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V89nCJy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s8e14om9ywbjn0f18ygq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V89nCJy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s8e14om9ywbjn0f18ygq.jpg" alt="Admissions"&gt;&lt;/a&gt;&lt;br&gt;
I spoke to SpringBoard, UCSD Extension, General Assembly, and a few others. They asked &lt;em&gt;incredibly&lt;/em&gt; similar questions, including:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Explain how this would benefit you. Do you want to get a job immediately after?&lt;br&gt;
If you are selected, would you be able to make it to all the sessions?&lt;br&gt;
What motivates you to want to code?&lt;br&gt;
Which payment plan would you use?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If I connected with an admissions counselor, I received an unlimited amount (to this day if I don't unsubscribe) of emails from &lt;strong&gt;E V E R Y&lt;/strong&gt; coding boot camp and many phone calls if I showed a semblance of interest. These emails and calls always included dates asking me to register by a certain time to make a cohort. That being said, all the admissions counselors are awesome but remember that it is your decision. I ended up choosing General Assembly because of the genuineness portrayed by the admissions team and each of the people I spoke with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curriculum
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wHahAQq0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/179m1bnuttifuo2qt4lo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wHahAQq0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/179m1bnuttifuo2qt4lo.jpg" alt="Code Works"&gt;&lt;/a&gt;&lt;br&gt;
General Assembly specifically focuses on two stacks, but the stacks depend on the instructor. They always incorporate the MERN stack (MongoDB, Express, React, Node) but they may include Ruby on Rails or Django/PostgreSQL. I happened to learn Django and Postgres and am pleased because research tells me many companies are moving away from Rails, but it still has &lt;strong&gt;plenty&lt;/strong&gt; of opportunity available if you do happen to learn it. The SEI Flex boot camp is part-time and has two weekly 4-hour sessions, one weekly 8-hour session, and a bi-weekly 2.5-hour outcomes session.&lt;/p&gt;

&lt;p&gt;The content was broken down into four modules, and each model used the same formula. We would have a discussion about the content, do a code-along with an instructor, then be assigned an assignment. Some of the assignments were graded and others were not but it is in your best interest to do them all. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are 4 modules and each module has a project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The projects differ from the labs because we were given large amounts of class time to work on them and we were allowed to choose (if approved) whatever we wanted to work on as long as it utilized the stack. Three of them are individual projects and the final one is a group project.&lt;/p&gt;

&lt;p&gt;HackReactor utilizes three projects and they are all group projects. They require you to build upon projects that your classmates or others have built instead of starting from scratch. FlatIron asks students to create a group project every four weeks and a solo project every three weeks, alternating. SpringBoard has a self-paced curriculum with little interaction with instructors. Remember this: all coding boot camps are project-oriented but it is up to you how much you get out of them.&lt;/p&gt;

&lt;p&gt;Another thing to consider is the fact that what they are teaching is universal. You learn how to learn a programming language(s) quickly and it becomes VERY easy to learn other languages because of that. (Although that "very easy" portion is relative to how easy it was before the boot camp.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Instructors
&lt;/h2&gt;

&lt;p&gt;Our instructors were awesome. Most classes at GA were larger than ours (I believe) as by the time graduation rolled around there were 6 of us. Most classes get a TA, and have 1+ instructors. We were so small that we lost our TA one of our instructors by the time we reached month 5.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7fbElbu7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o320o0uf5e1cu5viye7p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7fbElbu7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o320o0uf5e1cu5viye7p.jpeg" alt="Mentor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are awesome. They help debug and all had tons of energy all the time. They inadvertently teach you the most important thing about software engineering: the ability to use Google &lt;em&gt;effectively&lt;/em&gt;. When presented with an issue, if they didn't know the answer, the way that they Googled things was on a higher level. That is a huge skill among developers.&lt;/p&gt;

&lt;p&gt;The feedback on homework was excellent and each project completed motivated me to get better because of how they discussed it. The TA was knowledgeable (and graded the HW) and pointed out areas of improvement.&lt;/p&gt;

&lt;p&gt;SpringBoard was the only unique boot camp I saw because of how limited the interactions with instructors are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outcomes
&lt;/h2&gt;

&lt;p&gt;Every boot camp has an outcomes department. This department is the one that helps you get a job. There are some things you have to do to maintain outcomes status. Some of the boot camps come with a job guarantee, GA does not. Maintaining outcomes status after the classes are over requires a part-time to full-time effort on your part. You are asked to submit x amount of job applications a day, need a portfolio, cover letter, resume, brand statement, and LinkedIn, and have to meet regularly.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z2G6ZJi1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w456nwqwa2ny36cec2ob.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z2G6ZJi1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w456nwqwa2ny36cec2ob.jpg" alt="Job Apps"&gt;&lt;/a&gt;&lt;br&gt;
The outcomes sessions were interesting and provided a lot of content that help people even if they are not looking for a job. You can always opt-out of the outcomes component of the boot camp. The outcomes sessions had homework if you chose to opt-in that helped build on the final requirements after the class was over.&lt;/p&gt;

&lt;p&gt;Words of warning: offering to let you attend a boot camp for a percentage of your pay for two years is a lot, but it does provide you with a chance to attend. Please think about that payment plan choice carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expectations
&lt;/h2&gt;

&lt;p&gt;These may not be universal, but this is how my experience was. Everyone learns differently and will have a different experience, but I think there are some common misconceptions that I'd like to touch on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learning
&lt;/h3&gt;

&lt;p&gt;I learned a lot but some content was a review. It's up to you to actually learn in the class and afterward. This is something that not everyone can do easily, but the instructors are excellent at supporting you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time
&lt;/h3&gt;

&lt;p&gt;One of my biggest pet peeves is the term "I didn't have time." I get it if you have obligations that are meaningful (family, multiple jobs, etc.) but even then most of those can be mitigated if this is something you want. A student in my cohort had a full-time job, a part-time job, a full-time master's student, and did a summer internship all while attending and completing the boot camp. It's a time investment, yes, but if you are able to manage your time you can accomplish this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difficulty
&lt;/h3&gt;

&lt;p&gt;It is difficult when doing a lab alone but that is part of the process. Try not to ask for help unless you absolutely need it and even then see if you can troubleshoot just a little longer. Your peers are there for a reason as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Verdict
&lt;/h3&gt;

&lt;p&gt;You'll learn a lot, make some cool friends, network a ton, and learn how to learn. I'd do it again despite the new debt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JrIvdG7R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jlalvzkrcxbbdcad1aca.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JrIvdG7R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jlalvzkrcxbbdcad1aca.jpeg" alt="Networking"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As with anything, it's up to you what you get out of it. I'm going to go back and polish some of my projects and continue to work on things I'm passionate about. Make sure you know what to expect going into it and set goals for yourself and you'll do great.&lt;/p&gt;

</description>
      <category>react</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👨‍💻 React from a Bootcamper's Perspective | Part 5 - 🎨 Styling Methods</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Thu, 10 Sep 2020 22:23:00 +0000</pubDate>
      <link>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-5-styling-methods-45an</link>
      <guid>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-5-styling-methods-45an</guid>
      <description>&lt;p&gt;Styling in React can be confusing. It isn't hard to do, but there are a bunch of different ways to do it that are all acceptable. Working with static web pages taught me that inline styling was "frowned upon". A quick &lt;code&gt;style.css&lt;/code&gt; file later, and I was moving along. React offers many different ways to style your single-page app (SPA), and I'll break them down with examples.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖌️ Styling Overview 🖌️
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BnLSe-bV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fts29x9lf0nkqqvoockn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BnLSe-bV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fts29x9lf0nkqqvoockn.jpeg" alt="No CSS or JS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can think of five(ish) ways to style components in React:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stylesheets - Classic stylesheets in a .css, .scss, etc. format&lt;/li&gt;
&lt;li&gt;CSS Modules - A separate stylesheet with limited scope&lt;/li&gt;
&lt;li&gt;CSS Framework - Classes/Components that are used in-line&lt;/li&gt;
&lt;li&gt;JSS - JavaScript styles&lt;/li&gt;
&lt;li&gt;styled-components - CSS in JS&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Stylesheets
&lt;/h3&gt;

&lt;p&gt;Hopefully, you've worked with stylesheets by now. On CodePen, a stylesheet is provided with all pens. In react, the stylesheet is often placed in the same folder that the component or page is. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Project
|
+-- src
| |
| +-- components
|   |
|   +-- Nav
|     |
|     +-- index.jsx
|         style.css

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The nav in our example would then import the &lt;code&gt;style.css&lt;/code&gt; file by using &lt;code&gt;import './style.css'&lt;/code&gt;. This approach allows the software engineer to work with stylesheets in classic fashion. Example below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  margin: 0;
}

.nav-button {
  color: blue;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stylesheets are easily optimizable by the browser and can be redone quickly, however, they can become long hard to maintain.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS Modules
&lt;/h3&gt;

&lt;p&gt;CSS modules are similar to stylesheets because they are in the same location (see above file structure). They are imported differently and are scoped locally so are much better at separating styling code. The stylesheets are typically named different as well. Example: &lt;code&gt;module.style.css&lt;/code&gt;. They are imported in a different manner in &lt;code&gt;index.jsx&lt;/code&gt;: &lt;code&gt;import styles from './module.style.css'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;They are accessed by using the styles object that is created from the stylesheet. The following example highlights how they are used.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import styles from './module.style.css';

const Nav = () =&amp;gt; (
  &amp;lt;nav className={styles.navbar}&amp;gt;
    &amp;lt;span className={styles.link}&amp;gt;Home&amp;lt;/span&amp;gt;
  &amp;lt;/nav&amp;gt;
);

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

&lt;/div&gt;



&lt;p&gt;Each of the classes we created inside the modules can be accessed using dot notation. They are incredibly beneficial because there will no longer be styling conflicts due to the way the styles are scoped (locally), the CSS is exposed to JavaScript, and they are reusable. In turn, they are hard to mix with global CSS, lowerCamelCase must be used, and webpack is required.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS Frameworks
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X1qMQP3y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f8frz7xtbdeadko2hy93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X1qMQP3y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f8frz7xtbdeadko2hy93.png" alt="CSS Framework"&gt;&lt;/a&gt;&lt;br&gt;
There are a lot of CSS frameworks available. Each has documentation and some certain feature that it's known for. For example, Bootstrap is known for being a requirement among web developers on the Internet (search Bootstrap memes). There are tons of them available. Some of my favorite CSS frameworks are Bulma, Semantic, &amp;amp; Material UI. They are easy to use because they can be installed with a package manager and then imported globally or added to a file as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import {
  Button,
  Container
} from 'react-bulma-components/full';

const Nav = () =&amp;gt; (
  &amp;lt;Container&amp;gt;
    &amp;lt;Button color='danger' size='large' rounded outlined&amp;gt;Home&amp;lt;/Button&amp;gt;
  &amp;lt;/Container&amp;gt;
);

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

&lt;/div&gt;



&lt;p&gt;The above example shows how importing a component from a CSS framework allows you to use it as a component right in line. It comes pre-styled, but can be changed by adding modifier classes or updating the theme. We added some attributes to the Button component to make it rounded, large, red, and outlined.&lt;/p&gt;

&lt;p&gt;CSS frameworks are easy to use, created with accessibility in mind, and quick to implement. They can be hard to optimize efficiently, may look unoriginal, and can increase the size of the app.&lt;/p&gt;

&lt;h3&gt;
  
  
  JSS
&lt;/h3&gt;

&lt;p&gt;Similar to styled-components, JSS is created in the JS/JSX file. They are slightly more advanced than the other concepts we've covered but can be done. The example below showcases how JSS is used in React (as seen on the homepage of JSS found &lt;a href="https://cssinjs.org/react-jss/?v=v10.3.0"&gt;here&lt;/a&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import {render} from 'react-dom'
import {createUseStyles} from 'react-jss'

// Create your Styles. Remember, since React-JSS uses the default preset,
// most plugins are available without further configuration needed.
const useStyles = createUseStyles({
  myButton: {
    color: 'green',
    margin: {
      // jss-plugin-expand gives more readable syntax
      top: 5, // jss-plugin-default-unit makes this 5px
      right: 0,
      bottom: 0,
      left: '1rem'
    },
    '&amp;amp; span': {
      // jss-plugin-nested applies this to a child span
      fontWeight: 'bold' // jss-plugin-camel-case turns this into 'font-weight'
    }
  },
  myLabel: {
    fontStyle: 'italic'
  }
})

// Define the component using these styles and pass it the 'classes' prop.
// Use this to assign scoped class names.
const Button = ({children}) =&amp;gt; {
  const classes = useStyles()
  return (
    &amp;lt;button className={classes.myButton}&amp;gt;
      &amp;lt;span className={classes.myLabel}&amp;gt;{children}&amp;lt;/span&amp;gt;
    &amp;lt;/button&amp;gt;
  )
}

const App = () =&amp;gt; &amp;lt;Button&amp;gt;Submit&amp;lt;/Button&amp;gt;

render(&amp;lt;App /&amp;gt;, document.getElementById('root'))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach allows easy theming and global styles that are only used when a component is mounted. The lazy stylesheets exist only as needed. The static elements of a stylesheet are shared between all elements. They offer local scoping but can be tough to learn and hard to read.&lt;/p&gt;

&lt;h3&gt;
  
  
  styled-components
&lt;/h3&gt;

&lt;p&gt;I recently just finished (but never done) my new portfolio here: &lt;a href="https://aarondguyett.com"&gt;shameless plug.&lt;/a&gt; I utilized styled-components to create most of the components. The styled-components library can be installed with a package manager and then imported. The components are then built in the &lt;code&gt;index.js(x)&lt;/code&gt; files using the library. An example from my portfolio is below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import styled from 'styled-components';

export const Container = styled.div`
  max-width: 1280px;
  margin: 0 auto;
  width: 90%;
  @media (min-width: 601px) {
    width: 90%;
  }
  @media (min-width: 993px) {
    width: 80%;
  }
`;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above component is exported as &lt;code&gt;Container&lt;/code&gt; and can be used as a component. It is rendered as a div. It is very easy to theme styled-components and SASS is accessible after installing. I used &lt;code&gt;npm i styled-components&lt;/code&gt; and then began to work. There is a bit of a learning curve and performance may be impacted negatively but they were really cool to work with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus: In-Line Styling
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;h1 style={{color: 'blue'}}&amp;gt;Hellow World&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There are a lot of options available when choosing how to style your React SPA. It is important to understand each of the available styling methods in case you work on a project with one of them. Find one you like and get really good at it so you can become a styling snob. As always, see you next &lt;em&gt;week&lt;/em&gt;. ~Aaron&lt;/p&gt;

</description>
      <category>react</category>
      <category>css</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>👨‍💻 React from a Bootcamper's Perspective | Part 4 - 📍 A Detour to Discuss Resources </title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Fri, 14 Aug 2020 22:18:30 +0000</pubDate>
      <link>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-4-a-detour-to-discuss-resources-5h5b</link>
      <guid>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-4-a-detour-to-discuss-resources-5h5b</guid>
      <description>&lt;p&gt;I've thrown some concepts at you now and, although they are at the beginner-level (nothing is truly "beginner" when using React), we need to discuss some resources that you can use to further your learning, host your applications, download resources, and just be a generally cool person.&lt;/p&gt;

&lt;p&gt;We'll get back into React-specific content in my next post. Promise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DkgINHvH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1zz3wbv6rcxw9lhr3g19.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DkgINHvH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1zz3wbv6rcxw9lhr3g19.jpg" alt="I Promise"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you find this list useful and it helps you the way it helped me. I'll try to regularly update this as I move along.&lt;/p&gt;

&lt;p&gt;I won't mention any of the obvious ones (obvious to me at least) like StackOverflow, etc. They are large enough that you'll stumble across them one day.&lt;/p&gt;

&lt;p&gt;Here we go.&lt;/p&gt;

&lt;h2&gt;
  
  
  💽 Hosting 💽
&lt;/h2&gt;

&lt;p&gt;So you have a project and you want to host it. Here are some of the free providers I like to use and their purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.heroku.com/"&gt;Heroku&lt;/a&gt; - Continuous deployment with their own CLI&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vercel.com/"&gt;Vercel&lt;/a&gt; - Continuous deployment and Git integrations&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; - Integrated with many common frameworks and libraries - easy-to-use&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pages.github.com/"&gt;GitHub Pages&lt;/a&gt; - Good for static web-pages&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt; - Free tier available&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt; - Backend hosting with easy-to-integrate authentication offerings&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.mongodb.com/cloud/atlas"&gt;Atlas&lt;/a&gt; - MongoDB hosting from the creators of MongoDB&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.back4app.com/"&gt;Back4App&lt;/a&gt; - Relational and NoSQL hosting provider&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📖 Learner Resources 📖
&lt;/h2&gt;

&lt;p&gt;I'll be the next person to share my selection of the millions of resources available. A simple Google search will help find a lot of them but there are some sneaky resources here that will hopefully help you reach that next level.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/"&gt;FreeCodeCamp&lt;/a&gt; - One of the best resources available. Sign up for the newsletter, complete the courses, and share your achievements.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gamedevacademy.org/"&gt;GameDev Academy&lt;/a&gt; - Hosted by Zenva, a good website for resources on game development in all forms.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/learnprogramming/"&gt;/r/LearnProgramming&lt;/a&gt; - Reddit has a lot of places you can post and dig but this subreddit allows you to get answers to many of the questions you'll have when starting.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codechef.com/"&gt;CodeChef&lt;/a&gt; - Learning, challenges, and more.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluralsight.com/codeschool"&gt;CodeSchool&lt;/a&gt; - Now on Pluralsight, this is a free trial only but provides a lot of interactivity in many of the common coding aspects.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sololearn.com"&gt;SoloLearn&lt;/a&gt; - Originally a phone app, SoloLearn offers many language courses, a scoring system so you can challenge others, project sharing, and a development sandbox.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://try.github.io/"&gt;Learning GitHub&lt;/a&gt; - Learn git quickly with this plethora of resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💻 VSCode Extensions 💻
&lt;/h2&gt;

&lt;p&gt;I use VSCode for many of my projects and there are some very useful extensions available. Some of the very popular ones like Live Server &amp;amp; Quokka you will find on your own. These are some of the more "obscure" ones.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"&gt;Git Lens&lt;/a&gt; - See changes made to code in-line and more!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2"&gt;Bracket Pair Colorizer 2&lt;/a&gt; - Makes it easier to identify the start and end brackets in your code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight"&gt;TODO Highlight&lt;/a&gt; - Highlights TODO &amp;amp; FIXME items in your code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=chrmarti.regex"&gt;Regex Preview&lt;/a&gt; - Displays the results of your regex.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=techer.open-in-browser"&gt;Open in Browser&lt;/a&gt; - Allows you to open your project in browser with a couple of buttons.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🖼️ Templates, Libraries, Tools, etc. 🖼️
&lt;/h2&gt;

&lt;p&gt;Templates for applications that can be used to kickstart a project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bit.dev/"&gt;Bit.dev&lt;/a&gt; - A cloud library to create, use, and store components rather than hosting them all locally.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jsonlint.com/"&gt;JSON Lint&lt;/a&gt; - Tidies up JSON.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt; - Track your progress and share with others.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://coolors.co/"&gt;Color Templates&lt;/a&gt; - Generate color templates. I'm horrible at this but now I look great thanks to this website.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codeinwp.com/blog/best-free-bootstrap-templates-for-reactjs/"&gt;React Templates&lt;/a&gt; - A collection of React templates that can be used to find even more templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🏧 Challenges/Extras 🏧
&lt;/h2&gt;

&lt;p&gt;Some extra resources for coding challenges, updates, and more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.codewars.com/collections/99-problems"&gt;Codewars&lt;/a&gt; - Specifically, these 99 problems are great coding challenges. Codewars is useful in general.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hackerrank.com"&gt;HackerRank&lt;/a&gt; - Provides coding challenges, annoying email reminders, and a job board. They offer free certifications and an awesome environment.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://netflixtechblog.com/"&gt;NetflixTechBlog&lt;/a&gt; - For advanced developers, this blog highlights some of the new changes at Netflix.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/coderbyte/the-5-hardest-code-challenges-for-beginners-e410da4474b"&gt;Five Difficult Challenges&lt;/a&gt; - Five tough challenges for beginners.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.twitch.tv/gatsbyjs"&gt;Gatsby.js Twitch&lt;/a&gt; - Gatsby.js's twitch channel that streams pretty cool stuff.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💯 Tips 💯
&lt;/h2&gt;

&lt;p&gt;Free of charge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work on something you're passionate about. Yes, go through the process and create a To-Do app but then try to make a small project you'd like.&lt;/li&gt;
&lt;li&gt;Unless you're a savant, this takes time. There are coding boot camps available and tons of resources that I haven't listed. These resources may not address your needs, but they will help you being to identify them.&lt;/li&gt;
&lt;li&gt;Never stop learning. The development space is one that is always changing. None of the technologies I mentioned were even thoughts 10+ years ago.&lt;/li&gt;
&lt;li&gt;Start now. It's easy to push this off and continue to do so until the thing you wanted to learn isn't even prevalent anymore. The faster you learn this stuff and apply it, the easier it is to learn the next big thing.&lt;/li&gt;
&lt;li&gt;Find a mentor. Everyone always says this. It's really hard to find a mentor when you're stuck at home because of COVID, don't work in the field, don't have money to take a boot camp, etc. If you need help, reach out to me, or someone like me, and we'd be more than happy to help. 😀&lt;/li&gt;
&lt;li&gt;Stay positive. You're going to run into a lot of errors, make tons of mistakes, and find a problem that no one else in the world has had. Keep pushing forward and you'll see it isn't so bad (and someone else has already had that error).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Here's a list of some honorable/non-free resources:&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codecademy.com"&gt;Codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://udemy.com"&gt;Udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coursera.org"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://educative.io"&gt;Educative.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript30.com/"&gt;JavaScript 30&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sqlzoo.net/"&gt;SQL Zoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://commandlinepoweruser.com/"&gt;Command Line Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssgridgarden.com/"&gt;Grid Garden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I didn't mention these: Hugo, Next, Jekyll, Gatsby, Create React App. You should take the time to explore each of those to learn how to deploy apps quickly.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I hope this helps!&lt;/p&gt;

&lt;p&gt;Until &lt;strong&gt;next week&lt;/strong&gt;, when I get back to React ~💠Aaron💠&lt;/p&gt;

</description>
      <category>react</category>
      <category>codenewbie</category>
      <category>javascript</category>
      <category>saas</category>
    </item>
    <item>
      <title>👨‍💻 React from a Bootcamper's Perspective | Part 3 - ☂️ Hooks</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Thu, 16 Jul 2020 20:28:27 +0000</pubDate>
      <link>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-3-hooks-424m</link>
      <guid>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-3-hooks-424m</guid>
      <description>&lt;p&gt;Another motivational quote to get things started:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"No masterpiece was ever created by a lazy artist." — Anonymous&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In earlier posts, I discussed the importance of converting different aspects of your React app to Class components. This was necessary for a variety of reasons (allowing updates to state from child components, etc.) until February 2019. We haven't specifically covered these in my Bootcamp and will not be, so I've taken the time to learn them on my own and will be showcasing how they work below.&lt;/p&gt;

&lt;p&gt;We'll get back to creating a project next week but this will still follow the common code-along format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hooks in Practice - 🏖️ Code Sandbox 🏖️
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SODmB9U0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xxi5mqxx4svtxw99a7xw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SODmB9U0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xxi5mqxx4svtxw99a7xw.png" alt="React State"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Earlier, we worked with code that showcased the use of a class in React. You can find that code here: &lt;a href="https://codesandbox.io/s/farm-1-u1r8q?file=/src/App.js"&gt;Farm Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are now going to convert that code to a function that utilizes hooks by changing the class back and utilizing the import statement for hooks. To begin let's convert our import statement that includes &lt;em&gt;big React and little react&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import React, { useState } from "react";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I removed the &lt;code&gt;Component&lt;/code&gt; important and instead imported &lt;code&gt;useState&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We can then convert our class back to a function and remove the constructor and render methods (which are lifecycle methods, which I'll touch on in a later post). The final code for App.js should look like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from "react";
import "./styles.css";
import Farm from "./Farm/Farm";

function App() {

  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;h1&amp;gt;Welcome to My Farm&amp;lt;/h1&amp;gt;
      &amp;lt;h2&amp;gt;We have the following:&amp;lt;/h2&amp;gt;
      &amp;lt;Farm /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

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

&lt;/div&gt;

&lt;p&gt;Currently, we are not taking advantage of state. State is an object that controls the behavior of a component. We are not manipulating our app currently but let's try to showcase something we can do with state within React.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐛 Count Bugs 🐛
&lt;/h2&gt;

&lt;p&gt;Let's assume we're a farmer and we want to have a way to count the number of bugs that are on our farm (work with me, please).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3DqLdoKq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i1hgvfdfwr84suzl62kc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3DqLdoKq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i1hgvfdfwr84suzl62kc.jpg" alt="Farmer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we want to add a button to our farm component to allow the farmer to count all the bugs he sees. To do this, we need to utilize state to render our bug count to the screen. Instead of using a constructor or one of the other methods that I have yet to discuss with you (&lt;code&gt;setState()&lt;/code&gt; among others), let's take advantage of hooks.&lt;/p&gt;

&lt;p&gt;To do so, we can create variables that will allow us to store the count of the bugs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const [count, setCount] = useState(0);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This definition goes before the return statement in our App function. We utilize &lt;code&gt;useState()&lt;/code&gt; and set &lt;code&gt;count&lt;/code&gt; to 0 by passing in 0 as our argument. We can then pass down these variables that are in our state to our &lt;code&gt;Farm&lt;/code&gt; component by using the following code:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;Farm count={count} setCount={setCount} /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We have made &lt;code&gt;setCount&lt;/code&gt; and &lt;code&gt;count&lt;/code&gt; available to use as props in our &lt;code&gt;Farm&lt;/code&gt; component. Inside &lt;code&gt;Farm&lt;/code&gt;, we can use &lt;code&gt;props.count&lt;/code&gt; and &lt;code&gt;props.setCount&lt;/code&gt; to update the count every time the farmer clicks on the "Add Bug" button.&lt;/p&gt;

&lt;p&gt;The code would look something 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;&amp;lt;button onClick={() =&amp;gt; props.setCount(props.count + 1)}&amp;gt;Add Bug&amp;lt;/button&amp;gt;
&amp;lt;p&amp;gt;
    &amp;lt;strong&amp;gt;Current bugs: {props.count}&amp;lt;/strong&amp;gt;
&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We are able to update the state of our count by incrementing it by 1 every time the button is clicked. A refresh will remove that count because it is only stored in state. We then can render the count by calling &lt;code&gt;{props.count}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The Code Sandbox that utilizes hooks to update state in child components can be found here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/farm-hooks-ev395?fontsize=14&amp;amp;hidenavigation=1&amp;amp;theme=dark"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pzpI10jk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://codesandbox.io/static/img/play-codesandbox.svg" alt="Edit Farm-Hooks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was a very, very high-level overview of state and Hooks. I recommend reading further and practicing on your own! As an added challenge, see if you can make the count reset once it gets to a certain number!&lt;/p&gt;

&lt;p&gt;This has been me, sharing React from a Bootcamper's perspective.&lt;/p&gt;

&lt;p&gt;Til next week, when we focus a little more on styling and developing our farm project. ~💠Aaron💠&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>👨‍💻 React from a Bootcamper's Perspective | Part 2 -  👊 Starting a Project</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Sat, 04 Jul 2020 08:07:43 +0000</pubDate>
      <link>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-2-starting-a-project-35c5</link>
      <guid>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-2-starting-a-project-35c5</guid>
      <description>&lt;p&gt;Let's make a habit of starting with a quote in order to get in the right headspace for development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Don’t let anything stop you. There will be times when you’ll be disappointed, but you can’t stop.” — Sadie T. M. Alexander&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Creating a React app is a tedious process. There are tools that make it quicker to do so and it is possible to look up many of them online. For the purpose of this series, I will perform most of the work (most likely all, but covering my bases) on Code Sandbox. They offer an easy-to-use React IDE that we can utilize to create a simple app.&lt;/p&gt;

&lt;p&gt;We'll eventually get into what we'll be making but this week I'd like to walk you through the setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QHCQsdxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/au6zil2419w2so3iat0a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QHCQsdxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/au6zil2419w2so3iat0a.jpg" alt="Build an App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏖️ Code Sandbox 🏖️
&lt;/h2&gt;

&lt;p&gt;Last week, I linked you to a Code Sandbox. The website you want to use is exactly that: &lt;a href="https://codesandbox.io"&gt;Code Sandbox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should go through the standard process of creating an account that is linking to your GitHub. After that, you're presented with a dashboard. You're likely to want to click on &lt;em&gt;Create React Sandbox&lt;/em&gt;. &lt;strong&gt;Don't do that.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click the Create Sandbox button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MmnB1Np_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rd3t3tbdm4c4cpr1ys48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MmnB1Np_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rd3t3tbdm4c4cpr1ys48.png" alt="Create Sandbox"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do it this way, you'll be able to rename your sandboxes in the future. From there, you can select React to create a React app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jn1NWzW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o6fx8358rl6ngr16pxll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jn1NWzW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/o6fx8358rl6ngr16pxll.png" alt="Create React"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once created, you'll be faced with a screen that looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BFIwqKEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z5lpc70eexyzlphnxgsk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BFIwqKEB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z5lpc70eexyzlphnxgsk.png" alt="New App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can edit the name by clicking where the red box is. You now have a running React app. Let's make some changes to make things easier for next week.&lt;/p&gt;

&lt;h2&gt;
  
  
  📋 Changes 📋
&lt;/h2&gt;

&lt;p&gt;Inside App.js you'll see the following code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import "./styles.css";

export default function App() {
  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;h1&amp;gt;Hello CodeSandbox&amp;lt;/h1&amp;gt;
      &amp;lt;h2&amp;gt;Start editing to see some magic happen!&amp;lt;/h2&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Let's convert that to a class. &lt;em&gt;Why?&lt;/em&gt; A class was the &lt;strong&gt;old&lt;/strong&gt; way of initializing the container that renders the App's components. I say old because recently (&lt;a href="https://reactjs.org/docs/hooks-intro.html"&gt;February 16, 2019&lt;/a&gt;, to be exact) React 16.8 came out with something called &lt;em&gt;Hooks&lt;/em&gt;. Hooks allow us not to use classes anymore, and I will cover them later, but for now, let's introduce you to classes so you'll be familiar with them.&lt;/p&gt;

&lt;p&gt;We need to convert the function to a class. To do so, we need to make it look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from "react";
import "./styles.css";

class App extends Component {
  constructor() {
    super();
    this.state = {};
  }
  render() {
    return (
      &amp;lt;div className="App"&amp;gt;
        &amp;lt;h1&amp;gt;Hello CodeSandbox&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;Start editing to see some magic happen!&amp;lt;/h2&amp;gt;
      &amp;lt;/div&amp;gt;
    );
  }
}

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

&lt;/div&gt;



&lt;p&gt;There's a lot of changes we made there, so we can break it down line by line. The first line has changed because we need to label that we are importing Component from React in Code Sandbox. So we import, as I've heard many times:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Import big React from little react&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We do that and import Component. The second line imports the stylesheet.&lt;/p&gt;

&lt;p&gt;We convert the function to a class that extends Component and create a constructor inside it to manage state. We'll talk about state later as well.&lt;/p&gt;

&lt;p&gt;We then need to call the render function and return what we want to be rendered. Finally, we export the App. After you make these changes, you should see the same screen in the preview section. I recommend playing around with the stylesheet and making changes in React after this but to get you started, we are going to create our own custom component.&lt;/p&gt;

&lt;p&gt;To do so, let's follow standard practice and make a new folder by clicking on the circled button below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jR126zsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ojnklvrhbaugyaelkba5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jR126zsN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ojnklvrhbaugyaelkba5.PNG" alt="Add Folder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We want to make a new folder called &lt;code&gt;src/Farm&lt;/code&gt;. After creating the Farm directory, create a file called &lt;code&gt;Farm.js&lt;/code&gt;. In this file, we need to set up the component so we can use it in the app. This is done by &lt;em&gt;importing big React from little react&lt;/em&gt;, importing the stylesheet, creating a function, and then exporting it. So let's create the framework.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import "../styles.css";

const Farm = props =&amp;gt; (
   &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
);

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

&lt;/div&gt;



&lt;p&gt;We imported React and the stylesheet, we created a function called Farm and we exported it. There is something unique here: props. Props are properties that are passed between components. They can only be passed down and they must be passed to parents before children. That means that if there is another Component inside Farm, we would have to pass properties to Farm before that child component. Finally, each Component must only present one element. The element can have many children elements but it must resolve to a singular &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;We can now add some code to our Farm. Let's add four &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements for things on the farm. Your code should now look something 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;import React from "react";
import "../styles.css";

const Farm = props =&amp;gt; (
  &amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;Barn&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;House&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;Granary&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;Field&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
);

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

&lt;/div&gt;



&lt;p&gt;If it does, then great! We can use this export inside App.js to render our new Component. Let's go back to App.js and import our new Farm component by adding &lt;code&gt;import Farm from "./Farm/Farm";&lt;/code&gt; right below our styles import. &lt;/p&gt;

&lt;p&gt;We then need to do something really cool. We have to add the component to our return statement inside our App class. All components inside React are self-closing if you want them to be. For instance, we can write a div as &lt;code&gt;&amp;lt;div /&amp;gt;&lt;/code&gt;. So we can add our Farm inside our div as &lt;code&gt;&amp;lt;Farm /&amp;gt;&lt;/code&gt;. Your App.js should look like this when you are done.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component } from "react";
import "./styles.css";
import Farm from "./Farm/Farm";

class App extends Component {
  constructor() {
    super();
    this.state = {};
  }
  render() {
    return (
      &amp;lt;div className="App"&amp;gt;
        &amp;lt;h1&amp;gt;Welcome to My Farm&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;We have the following:&amp;lt;/h2&amp;gt;
        &amp;lt;Farm /&amp;gt;
      &amp;lt;/div&amp;gt;
    );
  }
}

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

&lt;/div&gt;



&lt;p&gt;You should then see the four &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; elements you added inside the preview. Congrats! Feel free to tweak it or add more components. A link to the code is below. Next week we will begin to pass props down to other components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/farm-1-u1r8q?fontsize=14&amp;amp;hidenavigation=1&amp;amp;theme=dark"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pzpI10jk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://codesandbox.io/static/img/play-codesandbox.svg" alt="Edit Farm-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This has been me, sharing React from a Bootcamper's perspective.&lt;/p&gt;

&lt;p&gt;Til next week. ~💠Aaron💠&lt;/p&gt;

</description>
      <category>react</category>
      <category>codenewbie</category>
      <category>javascript</category>
    </item>
    <item>
      <title>👨‍💻 React from a Bootcamper's Perspective | Part 1 - 🍬 Syntatic Sugar</title>
      <dc:creator>Aaron Guyett</dc:creator>
      <pubDate>Thu, 25 Jun 2020 04:16:30 +0000</pubDate>
      <link>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-1-syntatic-sugar-2610</link>
      <guid>https://forem.com/guyett92/react-from-a-bootcamper-s-perspective-part-1-syntatic-sugar-2610</guid>
      <description>&lt;p&gt;"Syntatic Sugar."&lt;/p&gt;

&lt;p&gt;This concept defines what JSX does. It is a common coding concept for something that isn't necessary but makes coding easier. This term was the first thing I heard about React.&lt;/p&gt;

&lt;p&gt;Hi, I'm Aaron. I'll be going over the things I've learned as I learn them in my coding Bootcamp. I have experience as a Computer Science/Information Technology Tutor, work in the field of programming part-time, and will be done my coding Bootcamp at the end of September. Additionally, I finish my Master's degree in IT (with a concentration in Web Design/Development) in August. I am also a freelance web developer.&lt;/p&gt;

&lt;p&gt;That said, I'm no expert. I don't think anyone is an expert until they have reached a certain level of failure. If I could track stats on how many errors I've been faced with and how many I get per hour of coding, there is some number there that would label me as an expert at some point. Let's say it's 100,000 errors and/or 60 errors/hour. I'm not at our 100k/60e/h yet. I just want to share my experience with React to help you learn it or reflect on what you already know.&lt;/p&gt;

&lt;p&gt;This series will act as a "guide" to those who are attempting to dive into the world of React and want to know how to get started.&lt;/p&gt;

&lt;p&gt;So, let's get started.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9y5EG6mY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kbcxpi03gxlptgu8o5zg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9y5EG6mY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kbcxpi03gxlptgu8o5zg.jpeg" alt="Syntatic Sugar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🍬 Syntatic Sugar 🍬
&lt;/h2&gt;

&lt;p&gt;Syntatic Sugar is commonly defined as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A coding convention that enables developers to create clearer and/or more concise code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How does this apply to React? Well, let's identify what React is. One quick Google search identifies that React is a framework that was created by Facebook. It uses JavaScript to facilitate the development of single-page web apps (SPAs) to improve the user experience. This is done by accomplishing the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing the need to reload a page after a form is submitted, etc. (Any time the DOM is updated)&lt;/li&gt;
&lt;li&gt;Increasing the functionality presented to the user by removing the complexity knowledge required by the developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider the following code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form method="POST" action="/" role="form" id="login"&amp;gt;
   &amp;lt;input type="text" placeholder="email"&amp;gt;
   &amp;lt;input type="text" placeholder="password"&amp;gt;
   &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;If a user were to log in, the page would refresh and frustrate the user who has come to expect that she should not have her time wasted by these ridiculous &amp;lt; 1s load times.&lt;/p&gt;

&lt;p&gt;So how do we use React?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2tj2zzCx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x5ynet02nl0u0x9095n6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2tj2zzCx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x5ynet02nl0u0x9095n6.png" alt="Babel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎆 Babel 🎆
&lt;/h2&gt;

&lt;p&gt;Babel is &lt;em&gt;transpiler&lt;/em&gt; that converts JavaScript to JavaScript. It takes source code and makes it source code that is more difficult to read. This is where the term Syntatic Sugar comes into play. The way that elements are formally created in React using &lt;code&gt;React.createElement('div', null, 'Hello World');&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That's not that fun to work with. Instead, we can create elements using JSX: &lt;code&gt;&amp;lt;div&amp;gt;Hello World&amp;lt;/div&amp;gt;;&lt;/code&gt;. There's a little more to it to get it to work in browser but this is much more familiar. Babel will take JavaScript that looks eerily similar to HTML. That is because JSX is JavaScript XML. XML is similar to HTML because they are both markup languages.&lt;/p&gt;

&lt;p&gt;The rest of this series will cover React utilizing the JSX syntax. There is a lot more that goes into developing a React app like WebPack but there is much to cover with regard to actual syntax and development and I'd rather spend my time talking about setup and syntax.&lt;/p&gt;

&lt;p&gt;There is a lot that goes into React, so before we even begin working on something, I think it's best that we cover what is to be expected in the development of a React app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UcpcdaW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/prg80jtyufslk4j8493p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UcpcdaW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/prg80jtyufslk4j8493p.jpeg" alt="Components"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔳 Components 🔳
&lt;/h2&gt;

&lt;p&gt;A component a piece of reusable code that can be implemented into an app. I like to think of components as mY pUzZlE...they are the cogs that move the machine that you're building. A component commonly looks like a function:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Welcome(props) {
    return &amp;lt;h1&amp;gt;Hello, Aaron&amp;lt;/h1&amp;gt;;
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This component can be reused to render an h1 element that says Hello, Aaron to the screen. Components are important to understand because they are relatively confusing. Anything confusing is always worth understanding.&lt;/p&gt;

&lt;p&gt;If you look above, you can see that the Welcome function has a parameter of props. Props are properties that can be used to change the attributes of the component that is being rendered. This can be something like a data point or a number or more. They allow a developer to create a component and change something about it "on the fly" when utilizing it.&lt;/p&gt;

&lt;p&gt;How about another example? Our code above has been modified to include a prop we would like to utilize when we render our Welcome component:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Welcome(props) {
    return &amp;lt;h1&amp;gt;Hello, {props.firstName}&amp;lt;/h1&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When we decide to render our h1 element it would look like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Welcome firstName="Aaron" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Take a look at this example here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/fervent-ives-pflf7?fontsize=14&amp;amp;hidenavigation=1&amp;amp;theme=dark"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pzpI10jk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://codesandbox.io/static/img/play-codesandbox.svg" alt="Edit fervent-ives-pflf7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The component is created in its own JavaScript file and imported by the App.js file in order to be used there. The web page renders the App.js file, which has our Welcome component in it to present&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hello, Aaron&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In order to set up a space to work and develop your own React app, you'll need 125MB plus or can work with me next week as I go through the process of creating a React app from scratch on Code Sandbox.&lt;/p&gt;

&lt;p&gt;This has been me, sharing React from a Bootcamper's perspective.&lt;/p&gt;

&lt;p&gt;Til next week. ~💠Aaron💠&lt;/p&gt;

</description>
      <category>react</category>
      <category>codenewbie</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
