<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta content="keyword 1, keyword 2, keyword 3" name="keywords">
<meta content="Joshua Colvin" name="author">
<meta property="og:title" content="Articles - Joshua Colvin">
<meta property="og:url" content="http://joshuacolvin.net/posts/">
<meta property="og:description" content="Thoughts on Software Development">
<meta property="og:type" content="website" />
<title>Articles | Joshua Colvin</title>

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>
<link rel="stylesheet" href="http://joshuacolvin.net/css/style.css">
<link rel="shortcut icon" href="http://joshuacolvin.net/wave.ico">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous" />

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/styles/github.min.css">

</head>

<section class="section">
  <div class="container">
    <nav class="nav">
      <div class="nav-left">
        <a class="nav-item" href="http://joshuacolvin.net"><h1 class="title is-4">Joshua Colvin</h1></a>
      </div>
      <div class="nav-right">
        <nav class="nav-item level is-mobile">
          
          <a class="level-item" href="https://github.com/joshuacolvin" target="_blank">
            <span class="icon">
              <i class="fa fa-github"></i>
            </span>
          </a>
          
          <a class="level-item" href="https://twitter.com/joshuacolvin" target="_blank">
            <span class="icon">
              <i class="fa fa-twitter"></i>
            </span>
          </a>
          
          <a class="level-item" href="https://linkedin.com/in/joshua-colvin" target="_blank">
            <span class="icon">
              <i class="fa fa-linkedin-square"></i>
            </span>
          </a>
          
        </nav>
      </div>
    </nav>
  </div>
</section>

<section class="section">
  <div class="container">
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/resources-learning-angular/">Resources for Learning Angular</a></h1>
      <h2 class="subtitle is-5">December 18, 2017</h2>
      
      <div class="content">
        Learning a new framework can be a daunting task. One thing that makes this task even more difficult is deciding which resources are worth your time. In an attempt to save others from the pain I experienced learning Angular, here are the resources I found to be the most helpful.
 Angular.io — The Angular team, and community, put a lot of effort into the documentation so this is a great place to start.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/resources-learning-angular/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/thoughts-on-development/">Thoughts on two years of software development</a></h1>
      <h2 class="subtitle is-5">August 27, 2017</h2>
      
      <div class="content">
        Without realizing it, I’ve just surpassed two years working professionally as a software developer. Over the course of that two years I have held three different jobs, doubled my salary, worked in multiple frameworks, and learned a lot along the way. Here are some things I wish I knew during my journey.
Don’t be afraid to leave a job if it doesn’t feel like it’s a good fit. I stayed at my first development job for seven months.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/thoughts-on-development/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/json-server/">Simple Mock REST API&#39;s with JSON-Server</a></h1>
      <h2 class="subtitle is-5">February 28, 2017</h2>
      
      <div class="content">
        One of the biggest pain points I&rsquo;ve experienced as a front end developer is writing an application that consumes a REST API before the REST API has been written. If you have a database schema available, you can do a lot of work in parallel. I&rsquo;ve tried many approaches (json files, JavaScript arrays, localStorage, firebase, Node API&rsquo;s) to solving this problem, each with their own drawbacks. JSON Server is the solution I&rsquo;ve been looking for!
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/json-server/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/weekly-bytes-2017-02-24/">Weekly Bytes: 02/24/2017</a></h1>
      <h2 class="subtitle is-5">February 24, 2017</h2>
      
      <div class="content">
        Weekly Bytes is a collection of things I&rsquo;ve read, watched, or listened to over the past week that I&rsquo;ve found interesting or helpful, mostly pertaining to software development.
Why Learning is a New Procrastination
This article had a huge impact on me this week. I definitely see myself using &ldquo;learning&rdquo; as an excuse for not building the things I want to build. The reality is, you probably already know everything you need to know to build the things you want to build.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/weekly-bytes-2017-02-24/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/hapi-mongo/">Build a REST API with Hapi and MongoDB</a></h1>
      <h2 class="subtitle is-5">February 21, 2017</h2>
      
      <div class="content">
        In a previous post we looked at getting started with hapi. If you&rsquo;re brand new to hapi I suggest you read that post first since it goes into more details about the hapi API. In this post, we&rsquo;ll cover integrating a hapi application with a MongoDB database.
Prerequisites You will need to have both Node and NPM installed. We will be using some es2015 features like arrow functions, so you will need to have Node version 4.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/hapi-mongo/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/weekly-bytes-2017-02-17/">Weekly Bytes: 02/17/2017</a></h1>
      <h2 class="subtitle is-5">February 17, 2017</h2>
      
      <div class="content">
        Weekly Bytes is a collection of things I&rsquo;ve read, watched, or listened to over the past week that I&rsquo;ve found interesting or helpful, mostly pertaining to software development.
Shop Talk Show 250: Web Security with April King and Alex Sexton
Web security is something that gets neglected far too often. This informative deep dive with security experts April King and Alex Sexton should be required listening for anyone working on the web.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/weekly-bytes-2017-02-17/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/getting-started-with-hapi/">Getting started with Hapi</a></h1>
      <h2 class="subtitle is-5">January 27, 2017</h2>
      
      <div class="content">
        There are many choices when it comes to Node frameworks: express, koa, and sails just to name a few. In this tutorial we&rsquo;ll take a look at hapi, a Node framework built by the team at walmart labs. We&rsquo;ll cover the basics of hapi, creating a server and defining routes, building a simple REST API along the way.
What is hapi? hapi is a highly modular server framework build on top of Node that favors configuration over code:
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/getting-started-with-hapi/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/understanding-closure/">Understanding JavaScript: Closures</a></h1>
      <h2 class="subtitle is-5">September 14, 2016</h2>
      
      <div class="content">
        Closure&rsquo;s in JavaScript might seem like a difficult thing to grok but when you strip away the mystery they are really rather simple:
What is a closure?  A closure is just an inner function that retains access to the outer (enclosing) function&rsquo;s variables.
 I had read some variation of this definition multiple times in the past but I didn&rsquo;t quite understand what it meant, or better yet, what it looked like in practice.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/understanding-closure/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/understanding-hoisting/">Understanding JavaScript: Hoisting</a></h1>
      <h2 class="subtitle is-5">September 5, 2016</h2>
      
      <div class="content">
        To understand hoisting you must first understand how scope works in JavaScript.
In JavaScript, hoisting occurs when variable or function declarations are moved to the top of a scope. It&rsquo;s important to make a distinction between declarations and assignments. The code var name = &quot;World&quot;; could be broken up into the following:
 var name is the the declaration (the part that gets hoisted). name = 'World' is the assignment (which is not hoisted).
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/understanding-hoisting/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
    <article>
      <h1 class="title"><a href="http://joshuacolvin.net/posts/understanding-scope/">Understanding JavaScript: Scope</a></h1>
      <h2 class="subtitle is-5">August 29, 2016</h2>
      
      <div class="content">
        Scope is an important concept to understand in JavaScript since it is the foundation that many other concepts are built upon. In this post, I&rsquo;ll give a quick overview of scope.
What is scope?  Scope is the set of rules that determines what variables are available where
 In JavaScript, a variable can live in one of two scopes: global or local. Variables declared within the global scope are accessible from any other scope throughout the entire runtime.
        
        ...<a class="button is-link" href="http://joshuacolvin.net/posts/understanding-scope/" style="height:28px">
          Read more
          <span class="icon is-small">
            <i class="fa fa-angle-double-right"></i>
          </span>
        </a>
        
      </div>
    </article>
    
  </div>
</section>
<section class="section">
  <div class="container">
    <nav class="level is-mobile">
      <div class="level-left">
        <div class="level-item">
          
        </div>
      </div>
      <div class="level-right is-marginless">
        <div class="level-item">
          
          <a class="button" href="/posts/page/2/">
            Older
            <span class="icon is-small is-marginless">
              <i class="fa fa-angle-right"></i>
            </span>
          </a>
          
        </div>
      </div>
    </nav>
  </div>
</section>

<section class="section">
  <div class="container has-text-centered">
    <p></p>
  </div>
</section>


<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js" integrity="sha256-+bhVTaRmJ/c07eV80nU8gD2cBBF0rYkf1txqXlrbvb0=" crossorigin="anonymous"></script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/javascript.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/html.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/json.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/languages/go.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>

<script>hljs.initHighlightingOnLoad();</script>


<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'trackingcode', 'auto');
ga('send', 'pageview');
</script>
<script async src='//www.google-analytics.com/analytics.js'></script>



