<?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: Brittan Fairchild</title>
    <description>The latest articles on DEV Community by Brittan Fairchild (@bjfairchild).</description>
    <link>https://dev.to/bjfairchild</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%2F214867%2Feb419edc-a896-495c-9019-fc22eab8301c.jpg</url>
      <title>DEV Community: Brittan Fairchild</title>
      <link>https://dev.to/bjfairchild</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bjfairchild"/>
    <language>en</language>
    <item>
      <title>The Social Life of a Developer</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 06 Jan 2020 07:57:00 +0000</pubDate>
      <link>https://dev.to/bjfairchild/the-social-life-of-a-developer-5f5d</link>
      <guid>https://dev.to/bjfairchild/the-social-life-of-a-developer-5f5d</guid>
      <description>&lt;p&gt;The best advice I've received about my job search so far is to get out into the community and meet people. The majority of the interviews that I've had so far have been from the people I know or meet passing my name along to a recruiter. I've always thought that one simply had to apply to however many online job listings they had to until something stuck, and that's just not the case in today's market. Who you know will always trump what your resume looks like.&lt;/p&gt;

&lt;p&gt;I've had great success meeting new people through local tech meetup events. There are a number of event boards online, such as geekwire.com and newtechnorthwest.com, that have the current month's events planned out. At first, I only targeted events that were relevant to my skills or interests. This works well if you're looking to connect or collaborate with the people that you would end up working alongside of, but branching out into other fields is well worth it. Individuals outside of your own purview will often have need of your skills, or have questions about how you might go about solving their problems. It's these connections that are really powerful, as they might talk to their friends and coworkers about an insightful solution or idea that you had offered. This has resulted in more than one interview for me.&lt;/p&gt;

&lt;p&gt;Aside from meetups, reach out to the development teams at the companies you're interested in. More often than not, developers will be more than eager to meet socially for coffee. These meetings are an easy way to pick the minds of your peers to find out what skills would be important to brush up on and get a picture of a company's internal community.&lt;/p&gt;

&lt;p&gt;2020 is a new year, and I am confident that we job seekers will find the opportunities that are laying in wait for us. Good luck, and happy coding!&lt;/p&gt;

</description>
      <category>career</category>
      <category>networking</category>
    </item>
    <item>
      <title>Reflections</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 30 Dec 2019 04:52:31 +0000</pubDate>
      <link>https://dev.to/bjfairchild/reflections-1b0h</link>
      <guid>https://dev.to/bjfairchild/reflections-1b0h</guid>
      <description>&lt;p&gt;This year has been a milestone for me. I have managed to shift my career to tech, learning enough skills to make myself marketable in the industry. I am so blessed to have had all the support and friendships that I have had along the way, and I know that I am only just starting out on my journey as a Software Engineer.&lt;/p&gt;

&lt;p&gt;Over the course of six months, I have learned how to be a competent full-stack web developer, utilizing Javascript and Ruby on Rails. To continue to grow as a forever student, I plan on tackling Python, Django, and Node.js next. So many companies desire machine learning in the current market that I feel like Python is the best skill to learn to remain a competitive, desirable candidate.&lt;/p&gt;

&lt;p&gt;Many companies will be refreshing their budget for staffing come January. The job hunt will renew in earnest come the new year, and I am hungry to find a position where I can really flex my creativity and problem solving skills.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Web Scraping with Mechanize</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 23 Dec 2019 07:41:06 +0000</pubDate>
      <link>https://dev.to/bjfairchild/web-scraping-with-mechanize-3n9n</link>
      <guid>https://dev.to/bjfairchild/web-scraping-with-mechanize-3n9n</guid>
      <description>&lt;p&gt;If you've ever been in the situation where you can't find the correct data from an API, perhaps you've thought about building your own web scraper. Ruby's Mechanize gem makes building a web scraper a quick and simple task.&lt;/p&gt;

&lt;p&gt;Firstly, you'll want to install the Mechanize gem by running 'gem install Mechanize' with your console. Once this is done, simple create a new .rb file and start building that scraper!&lt;/p&gt;

&lt;p&gt;You'll want to start by requiring the gems that you're using. In this case, we require 'mechanize' and 'pry' for debugging.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7SEYn6ki--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/aek2yj1zi452lymzt752.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7SEYn6ki--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/aek2yj1zi452lymzt752.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next we will declare our function and set a variable to a new instance of Mechanize, '&lt;a class="comment-mentioned-user" href="https://dev.to/test"&gt;@test&lt;/a&gt;
' in this case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o1Kg2ZEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8hwp4kz3tfma3uhtcu15.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o1Kg2ZEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8hwp4kz3tfma3uhtcu15.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we want to choose the website that we're scraping. We can set the entirety of a web page to a variable so that we can pick and choose what elements to pluck off and use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mW537oSu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/xv4mbs438bxd7r62d155.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mW537oSu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/xv4mbs438bxd7r62d155.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the page below as an example, let's target the address for this particular medical clinic in India. You can see the element containing the address selected in the developer tools on the right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dDHDszqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/85fqpvu5cnvgyytyoveu.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dDHDszqG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/85fqpvu5cnvgyytyoveu.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9vcW6DlI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n467gdc4wn91gusv9irr.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9vcW6DlI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n467gdc4wn91gusv9irr.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To pluck off the address that we want, first we have to target the div containing the address. We then target the p tag nested within that div, as that is where the text address actually lives. When we have the correct element targeted, we can simply strip the text off for later use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sK1rKdWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6v3pstld4nl73dneo9l2.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sK1rKdWu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6v3pstld4nl73dneo9l2.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have all of the data that you're looking for, you can output it to your console, send it back to your front end, or save it to your database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Eh_bXWzV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hrj6wb2grl6nzrqwtbme.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Eh_bXWzV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hrj6wb2grl6nzrqwtbme.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web scrapers are powerful tools to collect data from any source that you might fancy. Once I learned how to do so, I've used them in the majority of applications that I have created.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>mechanize</category>
    </item>
    <item>
      <title>Assert testing with Ruby's Minitest</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 16 Dec 2019 07:45:27 +0000</pubDate>
      <link>https://dev.to/bjfairchild/assert-testing-with-ruby-s-minitest-1l9a</link>
      <guid>https://dev.to/bjfairchild/assert-testing-with-ruby-s-minitest-1l9a</guid>
      <description>&lt;p&gt;The more interviews and take home challenges I get, the more I realize how important it is to know how to write and read tests for my code. Every single recruiter for all of the backend positions that I have asked me to demonstrate my test writing skills, in one way or another. After diving into Ruby docs and scanning Youtube for how-to videos, I feel like I have the fundamentals I need to be proficient with Ruby's testing suite Minitest.&lt;/p&gt;

&lt;p&gt;Assert/Refute style testing is the most basic way to write tests for your code. You simply write a method that will either assert that a parameter is true or refute that a parameter is true. The outcome of the function will be either true or false.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0BXPK_8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/s0xobyralpdbt9e6hjhj.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0BXPK_8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/s0xobyralpdbt9e6hjhj.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This example test will fail, as it is an assert test that returns false. The first parameter in this method is the test, while the second parameter is the failure message. The failure message can be a string or a proc. If the message is a string, it will be used as the failure message. Otherwise, the result of calling message will be used as the message if the assertion fails. If no message is given, a default message will be used. This particular test would have passed if it was written as a refute, instead of assert.&lt;/p&gt;

&lt;p&gt;There are a number of different ways to write assert/refute tests with Minitest. Below are some basic testing methods:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;assert_block( failure_message = nil )&lt;/strong&gt;&lt;br&gt;
This method tests the result of the given code block. If the block does not return true, the assertion will fail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;assert_equal( expected, actual, failure_message = nil )&lt;/strong&gt;&lt;br&gt;
This method tests if expected is equal to actual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;assert_not_equal( expected, actual, failure_message = nil )&lt;/strong&gt;&lt;br&gt;
This method tests if expected is not equal to actual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;assert_not_nil( expression, failure_message = nil )&lt;/strong&gt;&lt;br&gt;
This method tests if expression is not nil.&lt;/p&gt;

&lt;p&gt;In the same way that there are endless ways to write and structure your code, there are copious ways in which you can write these assert/refute tests to verify your code. I would highly recommend picking up a testing suite written for your most familiar language and really digging in. The ability to write and read tests for code is extremely important.&lt;/p&gt;

&lt;p&gt;REFERENCES&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.ruby-lang.org/en/2.1.0/Test/Unit/Assertions.html"&gt;https://docs.ruby-lang.org/en/2.1.0/Test/Unit/Assertions.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.codeship.com/getting-started-with-minitest/"&gt;https://blog.codeship.com/getting-started-with-minitest/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Algorithm Grinding</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 09 Dec 2019 07:58:09 +0000</pubDate>
      <link>https://dev.to/bjfairchild/algorithm-grinding-1p18</link>
      <guid>https://dev.to/bjfairchild/algorithm-grinding-1p18</guid>
      <description>&lt;p&gt;I've been told that as an entry level developer, the best thing that I can do to practice for interviews is to grind out algorithms. Many companies will require a show of skill as part of their suite of interviews, and constantly doing and redoing algorithms will definitely keep you in good practice for this leg of your journey.&lt;/p&gt;

&lt;p&gt;There are some amazing resources out there for practicing algorithms. So far, I've been using leetcode.com and sticking to core constructs like binary trees, hash tables, linked lists, etc, as these algorithms are more likely to show up in entry-level interviews. After talking with some senior developers, I've started incorporating a timer into my practicing. I will pick three algorithms that I focus on for any one session and cycle through each one of them until I can solve them under twenty minutes each. As I get more comfortable with the algorithms I'm practicing, I will try to code them in different languages to give myself another challenge.&lt;/p&gt;

&lt;p&gt;If you want to practice algorithms to prepare for interviews, or just for fun, here are some useful links:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/problemset/algorithms/"&gt;https://leetcode.com/problemset/algorithms/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.hackerrank.com/domains/algorithms"&gt;https://www.hackerrank.com/domains/algorithms&lt;/a&gt;&lt;br&gt;
&lt;a href="https://coderbyte.com/"&gt;https://coderbyte.com/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.hackerearth.com/practice/"&gt;https://www.hackerearth.com/practice/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.codewars.com/"&gt;https://www.codewars.com/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Job Search Blues</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 02 Dec 2019 07:54:44 +0000</pubDate>
      <link>https://dev.to/bjfairchild/job-search-blues-1072</link>
      <guid>https://dev.to/bjfairchild/job-search-blues-1072</guid>
      <description>&lt;p&gt;It's officially December, meaning here in Seattle we have less than 9 hours of daylight a day. 'Tis the season for SAD, and combating it while in the middle of your job search can be quite demoralizing. SAD affects an estimated 10 million Americans, and is four times as likely to affect women than it is men. I'm making a list of ways that I can stay away from the emotional slump and be proactive about staying positive during the dark, gloomy winter weather.&lt;/p&gt;

&lt;p&gt;Setting yourself a workout goal for the winter months is, in my experience, the best way to keep yourself in a can-do positive mindset. Research has shown that even a 15-minute walk in the middle of the day is enough to increase crucial neurotransmitters, such as dopamine and norepinephrine, which help energize the brain and regulate circadian rhythms. Find a friend to go to the gym with and start a normal routine. Having someone there to motivate you to work harder as well as someone to fulfill a commitment to go to the gym with makes it easier for me to actually get out the door.&lt;/p&gt;

&lt;p&gt;Balancing your dietary needs is just as important as being physically active, as anyone who indulges at the Thanksgiving table can tell you. Refined carbohydrates, such as pizza, can add to making you feel lethargic over the winter months. If you find yourself feeling down, try to increase the amount of complex carbs in your diet, such as spinach, lentils, and broccoli. Complex carbs take longer to digest, meaning you're not going to get a sudden spike in your blood sugar levels. Another item to include to your daily intake is vitamin D supplements to help with the lack of natural sunlight.&lt;/p&gt;

&lt;p&gt;One final thing that us in the realm of coding could easily incorporate into our daily routines would be light therapy, as a good portion of us are already sitting behind a keyboard for hours on end. As blue light suppresses the hormones which make you fall asleep at night, a light box that is enriched in light towards the blue end of the spectrum would be most beneficial.&lt;/p&gt;

&lt;p&gt;I'm already starting to see the effects of SAD rearing its ugly head in my day to day. When I'm not coding or actively seeking a job, I plan to start exercising more so that I can stay upbeat.&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
    </item>
    <item>
      <title>My First Interview</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 25 Nov 2019 06:58:15 +0000</pubDate>
      <link>https://dev.to/bjfairchild/my-first-interview-1no8</link>
      <guid>https://dev.to/bjfairchild/my-first-interview-1no8</guid>
      <description>&lt;p&gt;My job search is now a few weeks old, and I have had a number of interviews. As a new convert to the tech industry, interviews are a different beast from what they once were. An applicant must prove themselves on a different level, and that is foreign to someone coming from a service career. Each experience has taught me something new, and helped me better prepare for the next. I wanted to pass on my story, for the recent grads out there that are struggling like me to land that first job that will get them that one point of experience on their resume that will open them up to more job opportunities.&lt;/p&gt;

&lt;p&gt;The very first interview I had went great. It didn't come from applying online or sitting in line at a tech fair for my turn to speak with a recruiter. The opportunity arose when my girlfriend was out having dinner with her classmates, and someone there began talking about their company's need for software engineers. I promptly received a text in all caps and was talking with the company within the week.  &lt;/p&gt;

&lt;p&gt;Immediately after the interview, I felt like I had the renewed confidence that this is what I was meant to be doing, and that I had the tools to succeed. After weeks of not hearing back from prospective employers, it was the push I needed to continue forward and put my name out there. &lt;/p&gt;

&lt;p&gt;I have heard many times from my career coach that, more often than not, the second and third degree connections you make while networking will generate your interviews. If you make yourself available and show up, people will notice.  &lt;/p&gt;

&lt;p&gt;Good luck to all of my job seeking peers. It's often a discouraging process, but the jobs are out there.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>SQL vs NoSQL</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 18 Nov 2019 07:09:40 +0000</pubDate>
      <link>https://dev.to/bjfairchild/sql-vs-nosql-431k</link>
      <guid>https://dev.to/bjfairchild/sql-vs-nosql-431k</guid>
      <description>&lt;p&gt;As a recent convert to the tech field, I really only have had exposure to SQL, or Structured Query Language. SQL is a language used to communicate with a database through a variety of statements that are used to perform tasks such as retrieving, updating, and deleting data. As I began branching out from the languages that I have a firm grasp on, I was quick to encounter systems classified as NoSQL, or 'not only sql', such as MongoDB, CouchDB, and Cassandra. Being a forever student, i quickly dug into as many documents as I could to discover the difference between the SQL systems that I was familiar with and their NoSQL counterparts.&lt;/p&gt;

&lt;p&gt;Firstly, knowing what a NoSQL database is would be important. A NoSQL database is an approach to database design that lends a more flexible schema for data storage and retrieval. NoSQL encompasses structured, semi-structured, unstructured, and polymorphic data and is designed to iterate more quickly though data, as it is not built upon the concept of tables and does not use SQL to manipulate data. Instead, NoSQL databases are either document based, key-value pairs, graph databases, or wide-column stories. These simpler designs means more scalability and ease when using larger sets of frequently evolving, disparate points of data. An example of such a data-set would be anything related to the ever shifting realm of economics. &lt;/p&gt;

&lt;p&gt;So when should you use SQL, and when should you use NoSQL? SQL is the best fit for a complex, query intensive environment, as the queries in NoSQL are not as powerful as SQL query language. An unstructured, simpler database would be better if you need to store large amounts of unstructured data, when using cloud computing and storage, when a hybrid data environment makes more sense, and when you need to develop at a more rapid pace. When performance, availability, and scalability matter, it's best to work with NoSQL.&lt;/p&gt;

&lt;p&gt;REFERENCES&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.couchbase.com/resources/why-nosql"&gt;https://www.couchbase.com/resources/why-nosql&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ibm.com/cloud/learn/nosql-databases"&gt;https://www.ibm.com/cloud/learn/nosql-databases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.thegeekstuff.com/2014/01/sql-vs-nosql-db/"&gt;https://www.thegeekstuff.com/2014/01/sql-vs-nosql-db/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
    </item>
    <item>
      <title>Intro to GraphQL</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 30 Sep 2019 15:30:34 +0000</pubDate>
      <link>https://dev.to/bjfairchild/intro-to-graphql-2em5</link>
      <guid>https://dev.to/bjfairchild/intro-to-graphql-2em5</guid>
      <description>&lt;p&gt;I recently attended my first tech fair in Seattle, as I am approaching the end of my software engineering bootcamp at Flatiron School. One company there was utilizing GraphQL, a technology that I was unfamiliar with. Having used API calls for all of my various school projects, I decided to do a little research of my own into what tools GraphQL provided engineers such as myself.&lt;/p&gt;

&lt;p&gt;So what is GraphQL? GraphQL is a powerful alternative to REST that was created to cope with the need for more flexibility and efficiency in client-server interaction GraphQL servers allow for declarative data fetching from a single endpoint. A user will be able to only fetch the specific data that they are looking for from an API. This fact alone was enough to get me interested enough to delve deeper, as I have spent many hours sifting through JSON objects to pull out the relevant data that I was looking for.&lt;/p&gt;

&lt;p&gt;Facebook publicly presented GraphQL in 2015 to combat the server load of increased mobile device activity. Since a user can pick and choose what information is coming back from their API calls, GraphQL minimizes the data that is being sent over the network, thusly improving application responsiveness. Another reason why GraphQL was created was to increase development speed with the expectation that features would be more rapidly developed, as a GraphQL server only needs to expose a single endpoint from any API. &lt;/p&gt;

&lt;p&gt;Below is a great example of GraphQL in action. In this example, a simple blogging app is being created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p3YYSavs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jt1l2no9bwft0ekvbzfx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p3YYSavs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jt1l2no9bwft0ekvbzfx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are normal REST conventions. Each of the '/users/:id', '/users/:id/posts', and '/users/:id/followers' endpoints are queried to retrieve the relevant data that would be needed to create the application. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qzSze3ox--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/iad5renmxcunwnzf3nmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzSze3ox--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/iad5renmxcunwnzf3nmg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Utilizing GraphQL's declarative fetching, you can simply query one time for the exact information you're looking for, cutting down on time spent fishing through data and creating logic for multiple API calls.&lt;/p&gt;

&lt;p&gt;GraphQL really is the better REST, and I'm excited to start utilizing the tools in my own projects. Happy coding!&lt;/p&gt;

&lt;p&gt;RESOURCES&lt;/p&gt;

&lt;p&gt;&lt;a href="https://graphql.org/"&gt;https://graphql.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.howtographql.com/"&gt;https://www.howtographql.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>graphql</category>
    </item>
    <item>
      <title>Making Maps with Markers</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Tue, 17 Sep 2019 15:51:04 +0000</pubDate>
      <link>https://dev.to/bjfairchild/making-maps-with-markers-2dc7</link>
      <guid>https://dev.to/bjfairchild/making-maps-with-markers-2dc7</guid>
      <description>&lt;p&gt;Getting started with Google Maps is a walk in the park if you have the right tools. Firstly, you will need to add the Google Maps Geocoding API to your project. You can obtain an API key here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/maps/documentation/geocoding/get-api-key"&gt;https://developers.google.com/maps/documentation/geocoding/get-api-key&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Geocoding is the process of converting addresses (like a street address) into geographic coordinates (like latitude and longitude), which you can use to place markers on a map, or position the map. To obtain your desired coordinates, first you will need to create a simple search bar with an event listener. You'll want the event listener to fire off a function similar to the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kPVGYbXC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/knkhqy13u2oul7pdqcon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kPVGYbXC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/knkhqy13u2oul7pdqcon.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, we are taking the string of what the user entered into the search bar and replacing any spaces that would exist between words with plus signs. This is done to format the search term in a way that will allow you to interpolate it directly into the url. With a bit if digging, you can extract latitude longitude coordinates out of the json object that this API call will result in.&lt;/p&gt;

&lt;p&gt;Well, great! What's next, you might ask? To render the map itself, we can use the initial results from out search to center the map around our first lat-lng coordinates. Firstly, we will have to create the div tag where our map will live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vnYFwTwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dac2ne6hdny0m2la0mnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vnYFwTwY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dac2ne6hdny0m2la0mnd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We add the ID "map" here so that we can target this div to populate it with our map, as such:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--frM6oMqP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dyaa3jux413hbtfwovli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--frM6oMqP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dyaa3jux413hbtfwovli.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, we create the new map centered on the lat-lng coordinates we received from our prior search, set at a default zoom of 9. If we were to center our map on Seattle, WA, we would expect to see a result that looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HfwUCHcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oh984od3g31msmkodu4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HfwUCHcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oh984od3g31msmkodu4s.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From this point, it's a small step to populating your map with markers. Utilizing our prior search method, we can obtain a set of geocoded coordinates and store them into an array. We can pass this array of markers into the function below to populate our map with markers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q-Y-JXRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/glo39j22knicqiid9pob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q-Y-JXRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/glo39j22knicqiid9pob.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This function is doing a few things. Firstly, we iterate through our markers array to create a marker at each geo coordinate saved under the 'position' property. We also designate the map to which we are adding the markers. For a bit of added flair, you can set custom animations, titles, and images to your markers. In this case, each of my markers will look like a camping tent and will drop from the top of the map when populated. The name of the location will also appear as a tool tip on the map if you hover over it with your mouse.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4gFTb4cC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3f08tocfe5xbpz34sg6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4gFTb4cC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3f08tocfe5xbpz34sg6a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there you have it! Using these methods, you can start venturing into creating maps to polish up any application that could make use of them.&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>Getting Started with the Google Maps API</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Mon, 09 Sep 2019 15:24:49 +0000</pubDate>
      <link>https://dev.to/bjfairchild/getting-started-with-the-google-maps-api-5dfk</link>
      <guid>https://dev.to/bjfairchild/getting-started-with-the-google-maps-api-5dfk</guid>
      <description>&lt;p&gt;I've always wanted to learn how to incorporate the Google Maps API into one of my projects, as I think the layout and functionality look rather impressive. Being one prospective employee in a sea of many, I also want to diversify my portfolio and be as desirable to employers as possible. As such, my colleagues and I have decided to build out a road trip app, using the Google Maps API. Here's how you would get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to:
&lt;a href="https://developers.google.com/maps/documentation/javascript/tutorial"&gt;https://developers.google.com/maps/documentation/javascript/tutorial&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you have never used the Google Maps API before, you will need to set up a billing account in order to receive the API key that is necessary. You will also be prompted to create a new project during this step.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decide which API is best for your project. To learn more about how they are different, navigate to:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/maps/documentation/api-picker"&gt;https://developers.google.com/maps/documentation/api-picker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I am building out an app with JavaScript, I will be using the JavaScript API.&lt;/p&gt;

&lt;p&gt;Once decided, you have to enable the API for your specific project. Navigate to the Google Cloud Platform Console, &lt;a href="https://console.cloud.google.com"&gt;https://console.cloud.google.com&lt;/a&gt;, click the menu button, and select APIs &amp;amp; Services &amp;gt; Library. Select which API you will be using, and then click the Enable button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CZ-2dTl7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/azx7lxe935ljfj8zkocn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CZ-2dTl7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/azx7lxe935ljfj8zkocn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get your API key. Back on the Google Cloud Platform Console, select APIs &amp;amp; Services &amp;gt; Credentials from the menu. Here, you can create your API key and add restrictions for its use (which are extremely important).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Congratulations! You can now use this API key in your application. To do so in Javascript, for example, you would simply add in your unique API key in the following code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GxrlQYgt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/we8cmae8ry6d6jpc3d9a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GxrlQYgt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/we8cmae8ry6d6jpc3d9a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am only starting to build out my application, but I am very excited with the functionality that the Google Maps API will bring. Happy coding!&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>JavaScript syntax: event listeners</title>
      <dc:creator>Brittan Fairchild</dc:creator>
      <pubDate>Thu, 05 Sep 2019 19:15:27 +0000</pubDate>
      <link>https://dev.to/bjfairchild/javascript-syntax-event-listeners-1b3l</link>
      <guid>https://dev.to/bjfairchild/javascript-syntax-event-listeners-1b3l</guid>
      <description>&lt;p&gt;People learn in a wide range of different ways. The easiest and most logical path to one person might seem a confusing puzzle to another. Luckily for the coding community, the code that we write can be varied and flexible. I stumbled across a great example of this in a recent JavaScript lesson regarding event listeners that were added to buttons.&lt;/p&gt;

&lt;p&gt;To add an event listener to a button is simple. We can write it as such:&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0f3vr0iiciwe0wtgebi2.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F0f3vr0iiciwe0wtgebi2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, whenever the "click" event happens to our designated button, the function "myFunction()" will fire. You can then go on to write out what that function will do when it is triggered. This approach is what was introduced to me at first, but then my instructor showed me a different way to do things that made much more sense to me.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fctc2o36iyehwvphbvajq.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fctc2o36iyehwvphbvajq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, I add my event listener to my button by appending ".onclick" to the variable that I have designated for the button itself. By then calling my event, "e", I use an arrow function to dive into what function the button will have once it's clicked without stopping to define another function.&lt;/p&gt;

&lt;p&gt;Both of these examples accomplish the same thing, and both function as intended. Some of my classmates preferred one way over the other. What I have come to love about coding the most is that there are a near limitless ways to go about finding a solution to a problem. Some might be more cumbersome and convoluted than others. Some might be far cleaner and utilize fewer lines of code. Each of us will have our own styles and ways of navigating through problems. Every path taken will be correct, as long as the solution is achieved.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpr0e6vum0hx55c7edn8l.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpr0e6vum0hx55c7edn8l.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>syntax</category>
    </item>
  </channel>
</rss>
