<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amanda </title>
    <description>The latest articles on DEV Community by Amanda  (@mandareis).</description>
    <link>https://dev.to/mandareis</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%2F496148%2Ffbc29b3d-399f-419d-ad35-afe1f3653ee8.jpeg</url>
      <title>DEV Community: Amanda </title>
      <link>https://dev.to/mandareis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mandareis"/>
    <language>en</language>
    <item>
      <title>Deploying an app with Cloudflare Pages (and Heroku) </title>
      <dc:creator>Amanda </dc:creator>
      <pubDate>Fri, 29 Jan 2021 22:41:09 +0000</pubDate>
      <link>https://dev.to/mandareis/deploying-an-app-with-cloudflare-pages-and-heroku-3ndf</link>
      <guid>https://dev.to/mandareis/deploying-an-app-with-cloudflare-pages-and-heroku-3ndf</guid>
      <description>&lt;p&gt;Hello!  &lt;/p&gt;

&lt;p&gt;The inspiration for this blog post came from my final project for the Bootcamp I attended. However, it will not be so much about code but rather the experience of deploying the app and the fun new tools I got to use!&lt;/p&gt;

&lt;p&gt;Important to note that I built my app using React for the frontend and Ruby on Rails for the backend, and I have two separate repos.&lt;/p&gt;

&lt;p&gt;When it came down to deciding where to deploy the frontend I wanted to use Netlify. I had heard good things about it, and most of the blog posts I could find said this was a good option.&lt;/p&gt;

&lt;p&gt;I knew I wanted a platform that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It would be easy to work with as this is the first app I was deploying. &lt;/li&gt;
&lt;li&gt;Low maintenance. &lt;/li&gt;
&lt;li&gt;Something I haven't used before (part of the requirements for the project).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I  had already registered a domain through Cloudflare, and through suggestions, I was introduced to Cloudflare Pages (still in beta but worth requesting access to). &lt;/p&gt;

&lt;p&gt;Once you have access, it's as simple as creating a Cloudflare account and connecting to GitHub. To deploy it, you must opt to create a project and select a repository. The second part of the setup is your build settings. It's pretty self-explanatory. You select a framework and add a build command.  &lt;/p&gt;

&lt;p&gt;The image below displays what to do: &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%2Famanda.depaula.xyz%2Fassets%2F5xdpcky04vnjc9t9sej3.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%2Famanda.depaula.xyz%2Fassets%2F5xdpcky04vnjc9t9sej3.jpg" alt="setup for deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more details on how to set this up, you can check out their documentation on the link below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.cloudflare.com/pages/getting-started" rel="noopener noreferrer"&gt;Getting started with Workers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole setup takes a few minutes to complete. After the first deploy, you only have to push your changes to GitHub, and Cloudflare Pages does the rest. &lt;/p&gt;

&lt;p&gt;Once the app is deployed, it will have a custom subdomain, but as mentioned earlier, I did have a domain to connect.&lt;/p&gt;

&lt;p&gt;In order to be able to use my domain and send HTTP requests to both the front and backend, I set up Cloudflare Workers. &lt;br&gt;
Workers let you add JavaScript in between your website's visitors and your server (in this case my backend which was deployed on Heroku).&lt;/p&gt;

&lt;p&gt;A Worker has two parts: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The event listener that listens to any requests being sent to the website, such for example a request to navigate to another page.&lt;/li&gt;
&lt;li&gt;An event handler, which is set up to handle the requests, which in my case are sent to either Heroku or Cloudflare Pages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This addEventListener registers the worker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fetch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;respondWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;handleRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The event handler finds out if the request should go to the backend or the frontend by checking the URI. In my Worker, it checks the pathname to determine it.&lt;br&gt;&lt;br&gt;
Once it has determined where it should go, it rewrites the hostname to send it to its destination.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Determines if URL goes to the backend or not.
 * @param {URL} uri
 * @returns {boolean}
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;isBackendRoute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isBackendRoute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;TRAVEL_TIPS_BACKEND_HOSTNAME&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;TRAVEL_TIPS_FRONTEND_HOSTNAME&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rewriteURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`ouch! hit a snag: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I suggest reading the following to better understand how Workers work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.cloudflare.com/workers/learning/how-workers-works" rel="noopener noreferrer"&gt;How Workers works&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the backend, Heroku worked well with Rails. I followed the instructions from the following guide: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://devcenter.heroku.com/articles/getting-started-with-rails6" rel="noopener noreferrer"&gt;Getting Started on Heroku with Rails 6.x&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It automatically created a PostgreSQL database. &lt;/p&gt;

&lt;p&gt;Final thoughts on Cloudflare Pages: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Easy to integrate&lt;/li&gt;
&lt;li&gt;Documentation is pretty straightforward&lt;/li&gt;
&lt;li&gt;The UI is user-friendly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overall just a good experience. I look forward to creating other apps and deploying them with Cloudflare Pages.&lt;/p&gt;

&lt;p&gt;If you get a chance, definitely check it out! &lt;/p&gt;

</description>
      <category>cloudflare</category>
      <category>heroku</category>
      <category>deploy</category>
      <category>newbie</category>
    </item>
    <item>
      <title>Building your  personal website</title>
      <dc:creator>Amanda </dc:creator>
      <pubDate>Wed, 06 Jan 2021 19:16:46 +0000</pubDate>
      <link>https://dev.to/mandareis/building-your-own-personal-website-cpo</link>
      <guid>https://dev.to/mandareis/building-your-own-personal-website-cpo</guid>
      <description>&lt;p&gt;As I approach graduation day at my boot camp, I decided to work on my brand. Over the holidays, I started building a website to display all of my work.&lt;br&gt;
It was time to put everything I had learned to the test. &lt;br&gt;
This blog post is about the experience and the tools that I used along the way. Please note that this is my personal experience and not a set of guides, but I do hope you take something from this. &lt;/p&gt;

&lt;p&gt;I figured that the first step was to get excited about this, and everything would fall into place.&lt;br&gt;
Well, it turns out that coming up with designs for websites is a tough thing to do. I had these half ideas of where I wanted certain elements, styles, and colors to go, but I couldn't see the big picture. &lt;/p&gt;

&lt;p&gt;So I started looking for inspiration online. I looked through Pinterest, searched for people's portfolios, and eventually landed on a website called &lt;a href="https://dribbble.com" rel="noopener noreferrer"&gt;Dribbble&lt;/a&gt;.&lt;br&gt;
Dribble is a website for designers to share and promote their work as well as hire a designer. You can look through the explore tab for the popular design and designers or research specific themes. &lt;br&gt;
I knew I wanted something minimalistic and easy to navigate.&lt;br&gt;
After only a few minutes of looking through the designs, I knew where I wanted to start!&lt;br&gt;
Behold! &lt;/p&gt;

&lt;p&gt;I had a black background!&lt;/p&gt;

&lt;p&gt;Kidding! &lt;/p&gt;

&lt;p&gt;I mean, the background is black, but I did feel inspired enough to come up with a design. &lt;/p&gt;

&lt;p&gt;So then came the time to begin building the app, using React, of course. I used &lt;a href=""&gt;Jamboard&lt;/a&gt;(not my favorite but couldn't think of anything else, neither did I want to pay for an app) and my iPad Pro to start sketching the design, as well as the components I would need. &lt;br&gt;
The idea was to use React to build the website, but I wanted to add an admin page, so the backend was built with Rails (which is what I am most familiar with at the current time).&lt;/p&gt;

&lt;p&gt;I am slowly falling in love with React and had set the goal to learn about Hooks over the winter break.&lt;br&gt;
I knew I wanted to use only Hooks for my small app, and I set out to learn as much as I could. &lt;br&gt;
So like any React super fan, I started reading the documentation, &lt;br&gt;
and watched this video(as most people have)&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=dpw9EHDh2bM" rel="noopener noreferrer"&gt;"React Today and Tomorrow and 90% Cleaner React With Hooks"&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I got my black background, some HTML, basic CSS, my functional components with their states, and all that is left to do is make sense of it.  I used &lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; for the basics of adding containers, rows, and columns, but from early on I knew I wanted to do most of the CSS myself. &lt;/p&gt;

&lt;p&gt;The plan was to display every blog post or GitHub link in a beautiful carousel. I wanted to find a library out there that had the code ready and then add the pretty to it, and I did! I found a library for the carousel of my dreams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/9wZIavvv35hM0g7vZJ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/9wZIavvv35hM0g7vZJ/giphy.gif" alt="carousel-high-five"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a few days of working with the carousel and  I hit tons of obstacles trying to customize it to my liking. &lt;br&gt;
The lesson there: &lt;br&gt;
Do a thorough research of the library if you want to implement them on your website. &lt;br&gt;
In the end, I had to decide to ditch the carousel and build something from scratch. Getting rid of the carousel now meant that the design would be compromised.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Txh1UzI7d0aqs/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Txh1UzI7d0aqs/giphy.gif" alt="kuzco-sad"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It proved to be an opportunity for me to work with animation and CSS. Also, to learn how to compromise. I was upset I had wasted hours trying to fix something that would not work. However, it provided me the chance to learn about third-party libraries, and sure enough, it came in handy when I had to add animation.&lt;/p&gt;

&lt;p&gt;I will be the first person to tell you that I did not know the first thing about animation. I think it's fascinating, but I did not imagine how complex it can be. After exploring multiple libraries, I landed on &lt;a href="https://www.framer.com/motion/" rel="noopener noreferrer"&gt;Framer Motion&lt;/a&gt;.&lt;br&gt;
Read through most of the documentation and knew it would allow me to do most of the things I needed.&lt;/p&gt;

&lt;p&gt;Ta-da! &lt;br&gt;
I have a nice transition of mouseOver/mouseLeave between divs!&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Famanda.depaula.xyz%2Fassets%2Fhover-demo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Famanda.depaula.xyz%2Fassets%2Fhover-demo.gif" alt="divs-transition"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I relied heavily on &lt;a href="https://fontawesome.com/" rel="noopener noreferrer"&gt;Font Awesome&lt;/a&gt; for all of the icons you see above and all of the buttons I have on the site. &lt;/p&gt;

&lt;p&gt;The experience of putting together something for myself, exactly the way I wanted was what kept me so motivated. &lt;br&gt;
I spent a ridiculous amount of hours working on it and I feel really proud of the work I did. None of it was easy, and at times I got so frustrated I just had to walk away. But what I took from this is that I do like coding and learning new things, and after an intense 4 months or so of Bootcamp, it's good to be reminded of that.&lt;/p&gt;

&lt;p&gt;I regret to say I don't have the site to link here yet because I am deciding where to deploy it. Once it's out there, I will be sure to refer back to this and link it.&lt;/p&gt;

&lt;p&gt;For a list of all other resources used:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdnjs.com/" rel="noopener noreferrer"&gt;cdnjs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://animate.style/" rel="noopener noreferrer"&gt;Animate.style&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;Css-tricks&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://reactrouter.com/" rel="noopener noreferrer"&gt;React Router&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;npm&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>newbie</category>
      <category>website</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Simpler Asynchronous JavaScript code with Async/await</title>
      <dc:creator>Amanda </dc:creator>
      <pubDate>Mon, 30 Nov 2020 15:34:54 +0000</pubDate>
      <link>https://dev.to/mandareis/simpler-asynchronous-javascript-code-with-async-await-47ai</link>
      <guid>https://dev.to/mandareis/simpler-asynchronous-javascript-code-with-async-await-47ai</guid>
      <description>&lt;p&gt;It all started when our class began learning about Promises. In short, a promise is an object that represents awaiting for some operation to complete. There are situations where you might need promises and situations where you will not. For example, if you are looking things up in the DOM or writing to the DOM, this code executes &lt;em&gt;synchronously&lt;/em&gt;, meaning our code will block and wait for the result on that particular line.&lt;br&gt;
In the following example, we are doing a simple query for an &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; element in our document:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;lookUp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;h2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JavaScript, while it is executing this line, will not be doing anything else. The result will be returned to &lt;code&gt;lookUp&lt;/code&gt; before executing the next line. So there are some (most) operations in JS where it will automatically &lt;em&gt;wait&lt;/em&gt; for a result.&lt;/p&gt;

&lt;p&gt;For other things, such as HTTP requests, JS will &lt;em&gt;not&lt;/em&gt; wait for a result, therefore promises are needed to allow JS to continue executing other operations while waiting for results. The following example will only start the operation but will not give us the final result yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;promise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Async functions help us with the situations where JS will &lt;em&gt;not&lt;/em&gt; automatically wait for a result.&lt;/p&gt;

&lt;p&gt;For a more complete understanding of promises, as well as this blog post, you can read up on promises &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I happened to have stumbled upon async functions. Every time I wrote a fetch request inside a function using &lt;code&gt;.then&lt;/code&gt; syntax,  I would get these faint-colored dots right below the function's name. Upon clicking on these dots, VSCode gives you the option to convert it to an async function, as demonstrated 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%2Fs8.gifyu.com%2Fimages%2FCleanShot-2020-11-27-at-11.16.44.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fs8.gifyu.com%2Fimages%2FCleanShot-2020-11-27-at-11.16.44.gif" alt="gif shows async function"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have since started using async functions for any HTTP request, but without knowing much of its functionality. I decided to write this blog post as I became curious about the different syntax and if there are benefits to writing async functions. This blog post is a beginner's level explanation of how async functions work. A decent amount of research was done, but as a beginner to JavaScript myself, please feel free to leave any feedback, and I will gladly update this post.&lt;/p&gt;

&lt;p&gt;Before we get into the syntax of &lt;code&gt;async/await&lt;/code&gt;, we should review what a regular function that will handle asynchronous operation will look like. &lt;br&gt;
The following snippet shows a fetch request using &lt;code&gt;.then&lt;/code&gt; syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sameFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;some_url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resultFromResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;doSomethingWithResult&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resultFromResponse&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When using a regular function or non-async function, the code can look somewhat messy and more difficult to understand. Also normal built-in JavaScript syntax such as &lt;code&gt;if&lt;/code&gt; statements and &lt;code&gt;for&lt;/code&gt; loops become difficult to use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Async Functions
&lt;/h4&gt;

&lt;p&gt;But what is an &lt;code&gt;async&lt;/code&gt; function? This is what I've gathered so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These are regular functions that will begin with the keyword &lt;code&gt;async&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Once marked with &lt;code&gt;async&lt;/code&gt;, the function will only return promises now.&lt;/li&gt;
&lt;li&gt;Once marked with &lt;code&gt;async&lt;/code&gt;, the &lt;code&gt;await&lt;/code&gt; keyword can be used &lt;em&gt;inside&lt;/em&gt; the function to help with handling promises.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In one snippet,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;someName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;some_url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;someName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; Promise&amp;lt;pending&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Async functions with the await keyword make for &lt;em&gt;much&lt;/em&gt; simpler handling of promises. The await keyword does exactly what you might think it would, it waits until a promise is either fulfilled or rejected to resume. Meanwhile, other functions in your code will be allowed to run. Keep in mind that the &lt;code&gt;await&lt;/code&gt; keyword only works inside &lt;code&gt;async&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;Just a heads up, &lt;code&gt;async&lt;/code&gt; functions are not currently supported by all browsers, and you might have to use some &lt;a href="https://babeljs.io/" rel="noopener noreferrer"&gt;other tools&lt;/a&gt; to make it more widely compatible. &lt;/p&gt;

&lt;h4&gt;
  
  
  Error handling
&lt;/h4&gt;

&lt;p&gt;The last thing I would like to address is error handling. In regular functions, when handling errors, you need to consider errors that can happen asynchronously. Consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;errorHandlingDemoWrong&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://thisisjustademo.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`status code: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;this will never happen&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function is trying to fetch this domain and because the domain does not exist, it will error out. Because the error occurred inside the promise chain, it will stay within the promise chain. Therefore &lt;code&gt;catch&lt;/code&gt; in this snippet will never be executed.&lt;/p&gt;

&lt;p&gt;The correct way to handle this error would be to use &lt;code&gt;.catch&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;errorHandlingDemoCorrect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://thisisjustademo.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`status code: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`an error occurred while fetching fake domain: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As a beginner, trying to figure out which is the right way to handle errors can be confusing. &lt;/p&gt;

&lt;p&gt;This is another way &lt;code&gt;async/await&lt;/code&gt; makes writing JavaScript better. In this snippet, &lt;strong&gt;all&lt;/strong&gt; error handling is done with the built-in &lt;code&gt;try/catch&lt;/code&gt; syntax, instead of there being two different error handling methods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;errorHandlingDemo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://thisisjustademo.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`status code: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`an error occurred while fetching fake domain: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Handling asynchronous code can be very tricky, and &lt;code&gt;async/await&lt;/code&gt; makes it easier and more readable.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>async</category>
      <category>promises</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Life of a student attending a boot camp</title>
      <dc:creator>Amanda </dc:creator>
      <pubDate>Tue, 10 Nov 2020 20:49:09 +0000</pubDate>
      <link>https://dev.to/mandareis/life-of-a-student-attending-a-boot-camp-249g</link>
      <guid>https://dev.to/mandareis/life-of-a-student-attending-a-boot-camp-249g</guid>
      <description>&lt;p&gt;I decided to write about this because I do think boot camps are a great intro to programming. &lt;/p&gt;

&lt;p&gt;Keep in mind that this is my personal opinion. I want to describe what is like behind the scenes of a boot camp from a student's perspective. I won't go into detail as to why I decided on a boot camp vs. a four-year college SE degree (it comes down to time and money).&lt;/p&gt;

&lt;p&gt;Let's dive into it!&lt;/p&gt;

&lt;h4&gt;
  
  
  Schedule
&lt;/h4&gt;

&lt;p&gt;I find I am more productive and engaged if I am dedicating myself to something full time. For that reason, I signed up for a full-time experience at a boot camp. So what does this mean? I had to quit my paying job. A lot of thought and preparation went into this, but it was still a scary and bold move for me.&lt;/p&gt;

&lt;p&gt;So what do my days look like now? I attend online classes from 9 in the morning until 6 in the evening from Monday to Friday. In reality, my schedule looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff001.backblazeb2.com%2Ffile%2Fpublic-qpcwacdxg9%2Fpanda-site%2Fdaily-schedule.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%2Ff001.backblazeb2.com%2Ffile%2Fpublic-qpcwacdxg9%2Fpanda-site%2Fdaily-schedule.jpg" alt="Chart of day-to-day activities "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be ready to have unpredictable days. You will need to learn to deal with ambiguity. I think it's possible to balance your boot camp activities with your non-boot camp activities. It just might require a lot of &lt;strong&gt;discipline&lt;/strong&gt;, which brings me to my next topic.&lt;/p&gt;

&lt;h4&gt;
  
  
  Discipline
&lt;/h4&gt;

&lt;p&gt;If I were to research articles on "why one should attend a boot camp" or "what are the benefits of a boot camp vs. a four-year degree," I would find arguments for and against boot camps. This blog post will be no different. It is necessary to do your research, but keep in mind that these are people's opinions. Boot camps will work for some but not for others. In the end, you only get what you put in. It's a rigorous and demanding course. I find I am stressed out most of the time, especially as a beginner. But it is also worthwhile. The number of things I've learned in this short period has exceeded my expectations. &lt;/p&gt;

&lt;p&gt;However, it comes down to discipline. You can find a boot camp that guarantees you a job, but it won't apply to you unless you dedicate the time and the effort to learning and practicing. Boot camps are a way to learn the foundations of the given language that's part of their curriculum. You will be learning how to learn a new language. Because of the pace of this program, you will not dive deep into anything in particular. It will come down to YOU and what you think you need to focus on. Hence why your schedule might look a bit hectic like mine!&lt;/p&gt;

&lt;h4&gt;
  
  
  Personal Life
&lt;/h4&gt;

&lt;p&gt;I feel like this can be a delicate topic to talk about because everyone's experience will be different. But I will tell you about how this is working for &lt;strong&gt;me&lt;/strong&gt;. I decided to start a boot camp during the pandemic. I got tired of working with customer support, and I knew I wanted to learn how to program. I figured this was the best time to focus on programming since we are all stuck at home anyway. It is working.&lt;/p&gt;

&lt;p&gt;However, it is challenging to balance time to study and the time to spend with loved ones or doing things you enjoy. I often forget to respond to people's messages because all I can think about all day is code. I know it might sound like it's not a big deal, but it is so &lt;strong&gt;crucial&lt;/strong&gt; to find the time to do other things besides code.&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.reddit.com/r/programming/comments/5m8amp/the_reality_of_developer_burnout/" rel="noopener noreferrer"&gt;Burnout&lt;/a&gt; is a real thing. You need to know when to step away (momentarily) from your screen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/dlMIwDQAxXn1K/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/dlMIwDQAxXn1K/giphy.gif" alt="man throws monitor away"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Expectations
&lt;/h4&gt;

&lt;p&gt;It is impossible to graduate from a boot camp knowing everything. You will learn the necessary skills, and your first job will help mold you as a programmer. You will never stop learning. Software is always changing and evolving. Be prepared to be wrong and to get things wrong often. Writing tests, understanding them, and debugging your code is how one learns. I had very unrealistic expectations going in, and I had to adapt. I initially found it discouraging, and it put me off tracks, but looking back, if I hadn't done that, I probably would've decided to drop out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/XfnVveiDFDeGPfjR8G/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/XfnVveiDFDeGPfjR8G/giphy.gif" alt="balance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My days are very long now, and there's a lot I still don't know. I think it's important to remind yourself why you want to learn how to program and why you are doing this. This post is not to discourage but to show what to expect out of a boot camp.&lt;/p&gt;

</description>
      <category>bootcamps</category>
      <category>programming</category>
      <category>newbie</category>
      <category>personal</category>
    </item>
    <item>
      <title>Resources For New Programmers</title>
      <dc:creator>Amanda </dc:creator>
      <pubDate>Thu, 22 Oct 2020 19:55:03 +0000</pubDate>
      <link>https://dev.to/mandareis/resources-for-new-programmers-2b46</link>
      <guid>https://dev.to/mandareis/resources-for-new-programmers-2b46</guid>
      <description>&lt;p&gt;Hi Dev World! &lt;/p&gt;

&lt;p&gt;My name is Amanda, and I am a Software Engineer student.&lt;br&gt;
It's a pleasure to join your community.&lt;/p&gt;

&lt;p&gt;I thought a lot about my first post here, and to be sincere, I don't find myself ready to write a well-crafted post about anything programming-related as of yet. As a new programmer, I must admit that there are days where nothing makes sense, and I know I am not alone in this. I get stuck on the same problem for hours and cannot find an answer. After a few walks, some snacks, lots of questions asked, the desire to close the laptop and cry, and the occasional glass(bottle) of wine (weekends only or outside of school/work hours), I am capable of figuring it out. &lt;/p&gt;

&lt;p&gt;So far, the most troublesome part for me about programming has been learning how to talk about code (I will address this in another post).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3orif0rjs49gsPWg1y/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3orif0rjs49gsPWg1y/giphy.gif" alt="dad joke, homer simpson"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are a few things that I find myself doing(very often) that are not practical, like opening multiple tabs about Ruby documentation (sometimes the same one), GitHub, or Stack Overflow. It can be incredibly overwhelming when your browser has over 40+ tabs open, or when I try to take notes about code on a Note-book, on an iPad, sticky-notes, and on the back of my hand (kidding).&lt;/p&gt;

&lt;p&gt;So I decided to write my first blog post on the tools that are making my coding experience digestible, giving me back the time to freak out about whiteboard challenges and figure out why I keep getting NoMethod errors.&lt;/p&gt;

&lt;p&gt;Some of these tools are free, and some you have to pay; keep in mind that these are just &lt;strong&gt;suggestions.&lt;/strong&gt; You don't have to purchase anything. These are the tools that work for me and are guiding me through this learning journey. &lt;/p&gt;

&lt;p&gt;So without further ado, here is my top five, in no particular order. I won't be adding the cost of any of the apps here. So you can google it yourself :)&lt;/p&gt;

&lt;p&gt;Ruby is the first official programming language I am learning, and everything was going smooth until I learned about: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://ruby-doc.org/" rel="noopener noreferrer"&gt;https://ruby-doc.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/cEOG7nGA7448M/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/cEOG7nGA7448M/giphy.gif" alt="stewie rocking back and forth scared"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What an incredible and intimidating little tool. As helpful as it is to have every information about Ruby classes and methods, I must admit I have found myself with four tabs open with the same definition for the .reduce method. &lt;/p&gt;

&lt;p&gt;Enters...&lt;/p&gt;

&lt;h4&gt;
  
  
  Dash
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/q50lZpFqMDzpu/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/q50lZpFqMDzpu/giphy.gif" alt="bad-ass david bowie"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kapeli.com/dash" rel="noopener noreferrer"&gt;Dash&lt;/a&gt; is an app that searches over 200 documentation sets for everything from programming languages APIs to Snippet Manager, and cheat-sheets. &lt;/p&gt;

&lt;p&gt;Disclaimer: I paid for the app, but was recently informed that you can use it for free as well(there's a delay until you see your search). The app works for macOS only.&lt;/p&gt;

&lt;h4&gt;
  
  
  Notion
&lt;/h4&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%2Fi.pcmag.com%2Fimagery%2Freviews%2F05FBstbqla0pEWrlFLTw4ML-5.1569474012.fit_scale.size_1028x578.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%2Fi.pcmag.com%2Fimagery%2Freviews%2F05FBstbqla0pEWrlFLTw4ML-5.1569474012.fit_scale.size_1028x578.jpg" alt="notion logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So instead of having multiple code snippets and or notes written across many different platforms, I decided to use &lt;a href="https://www.notion.so/" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;. Mind you, I know it's not a code-specific app, but it is an app I am familiar with and have been using for quite some time. &lt;br&gt;
While researching the best note-taking apps,  I did come across a few that are worth mentioning like, Boostnote, Stackedit, and Typora. I have not tried them, so if you have, please leave feedback about the app in the comments.&lt;/p&gt;

&lt;h4&gt;
  
  
  Learn X in Y Minutes
&lt;/h4&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%2Ff001.backblazeb2.com%2Ffile%2Fpublic-qpcwacdxg9%2Fpanda-site%2Flearnxinyminutes.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%2Ff001.backblazeb2.com%2Ffile%2Fpublic-qpcwacdxg9%2Fpanda-site%2Flearnxinyminutes.png" alt="learn X in Y Minutes"&gt;&lt;/a&gt;&lt;br&gt;
This gem was first introduced to me by a fellow engineer. It's a community-driven website with easy to digest basics in different languages. One of the cool things about this website is that it's available in multiple languages. What I love about it, it's the fact that the documentation is short, easy to read, and it goes straight to the point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learnxinyminutes.com/docs/git/" rel="noopener noreferrer"&gt;Learn X in Y Minutes&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Awesome
&lt;/h4&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%2Fgithub.com%2Fsindresorhus%2Fawesome%2Fraw%2Fmain%2Fmedia%2Flogo.svg" 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%2Fgithub.com%2Fsindresorhus%2Fawesome%2Fraw%2Fmain%2Fmedia%2Flogo.svg" alt="awesome logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/sindresorhus/awesome" rel="noopener noreferrer"&gt;Awesome&lt;/a&gt; is a helpful directory of all kinds of subjects in programming. In other words, it's a kick-ass list of kick-ass lists! Right now, I am using it to learn more about git. (Likely to write a post about git later).&lt;/p&gt;

&lt;h4&gt;
  
  
  Leetcode
&lt;/h4&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%2Ftheme.zdassets.com%2Ftheme_assets%2F9008406%2F036323c6afd10392aa5b7e3a2eb7557d17955c81.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%2Ftheme.zdassets.com%2Ftheme_assets%2F9008406%2F036323c6afd10392aa5b7e3a2eb7557d17955c81.png" alt="leetcode logo"&gt;&lt;/a&gt;&lt;br&gt;
And lastly, I recently came across this helpful site called Leetcode. &lt;a href="https://leetcode.com/" rel="noopener noreferrer"&gt;Leetcode&lt;/a&gt; is a platform that helps you improve your skills, expand your knowledge, and prepare you for technical interviews. The platform offers daily challenges, contests, monthly challenges, and tech questions for specific companies like Google, Apple, Facebook, Microsoft, and Amazon.&lt;br&gt;
Leetcode is free to try, but it does offer some kick-ass benefits on its premium subscription. I am still in the early stages of using this app, and I might be getting ahead of myself, but these challenges are proving to help solidify my understanding of programming.&lt;/p&gt;

&lt;p&gt;And this sums up my list. &lt;/p&gt;

&lt;p&gt;I am always looking for new tools and am open to suggestions.&lt;/p&gt;

</description>
      <category>newbie</category>
      <category>resources</category>
      <category>tools</category>
      <category>list</category>
    </item>
  </channel>
</rss>
