<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sarah Williams</title>
    <description>The latest articles on Forem by Sarah Williams (@nerdyandnatural).</description>
    <link>https://forem.com/nerdyandnatural</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%2F61110%2Fd16ef910-21c4-4a5b-8beb-e6ccb0f45be3.jpg</url>
      <title>Forem: Sarah Williams</title>
      <link>https://forem.com/nerdyandnatural</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nerdyandnatural"/>
    <language>en</language>
    <item>
      <title>BEEP BOOP! How to make a Twitter Bot (Part 3)</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Fri, 08 Nov 2019 02:43:56 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-3-3gc3</link>
      <guid>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-3-3gc3</guid>
      <description>&lt;p&gt;Hey Friends! Welcome back!&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://dev.to/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-1-4nhm"&gt; Part 1&lt;/a&gt; of our series, I showed you how to get started with building a bot by applying for access to Twitter's API. In &lt;a href="https://dev.to/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-2-37pi"&gt;Part 2&lt;/a&gt;, I showed you how to build out and test your bot in your dev environment.&lt;/p&gt;

&lt;p&gt;In our 3rd and final part of this series, I'll show you how to get your bot deploy to Heroku and get it automated!&lt;/p&gt;

&lt;p&gt;Up until this point we've been playing around in the dev environment. Now it's time for us to go live and put our little bot out into the world! Let's get started!&lt;/p&gt;

&lt;h3&gt;Step 1: Create a Heroku Account&lt;/h3&gt;

&lt;p&gt;If you don't have one already, &lt;a href="https://heroku.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt; and create a Heroku account.&lt;/p&gt;

&lt;h3&gt;Step 2: Install Heroku and Create an App&lt;/h3&gt;

&lt;p&gt;There are a couple of different ways to install Heroku. I installed it via snap, which seems to be the easiest way to do it. Go ahead and type this into your terminal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;sudo snap install --classic heroku&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If this way doesn't work, there are other ways to install it. Go to the &lt;a href="https://devcenter.heroku.com/articles/heroku-cli#download-and-install" rel="noopener noreferrer"&gt;Heroku CLI page&lt;/a&gt; for more instructions on how to get it installed.&lt;/p&gt;

&lt;p&gt;Once you have it installed, go back to your Heroku dashboard, click new at the top right to create an app. Fill out the required info (ignore the pipeline option) and then hit Create App.&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%2Fub5whxk7o1cjsvs8uf5m.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%2Fub5whxk7o1cjsvs8uf5m.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Step 3: Prepare to Deploy: Move Access Keys to Heroku&lt;/h3&gt;

&lt;p&gt;Time to get ready to deploy! To do this first we need to move our keys.&lt;/p&gt;

&lt;p&gt;To do this, go to your dashboard and under the new app you just created, click on the Settings tab.&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%2F116oii62diw5aar3e8in.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%2F116oii62diw5aar3e8in.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, select the Config Vars button. You will then see a field with KEY and VALUE. For the keys, you will add the access key name convention and in the VALUE part you will add your actual keys.&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%2Fbisv8wic31hcofck1ljt.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%2Fbisv8wic31hcofck1ljt.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, change out your config.js file and add this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  consumer_key: process.env.BOT_CONSUMER_KEY,  
  consumer_secret: process.env.BOT_CONSUMER_SECRET,
  access_token_key: process.env.BOT_ACCESS_TOKEN,  
  access_token_secret: process.env.BOT_ACCESS_TOKEN_SECRET
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Don't forget to hit Save!&lt;/p&gt;

&lt;h3&gt;Step 4: Deploy to Heroku!&lt;/h3&gt;

&lt;p&gt;Alright, we're about to deploy! Are you ready? Of course you are!&lt;/p&gt;

&lt;p&gt;First things first, go into your terminal and type this&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;touch Procfile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once this file is created, add this to your file and save&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;worker: node bot.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;What is this file anyway? This is a config file that will tell Heroku to run your bot when it's deployed.&lt;/p&gt;

&lt;p&gt;Next we can start our deployment to Heroku! First if you haven't logged into it from your terminal type this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;heroku login&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will open a browser window so that you can authenticate to Heroku. Once this is completed, return to your terminal and it should be logged in.&lt;/p&gt;

&lt;p&gt;Then type this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;git init&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, you need to add the app you're going to deploy to. Go to your deploy tab under your app and copy the remote add command. It should look like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;heroku git:remote urlhere&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alright, now we can start staging our files to be committed! If you haven't noticed already, Heroku uses git commands. So let's add our files and commit them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;git add .&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;git commit -m "Initial Commit"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alright, now for the final step: deployment! Type this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;git push heroku master&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A bunch of cool things will start to happen, but basically the files will start copying to Heroku and Heroku gets it working on the server.&lt;/p&gt;

&lt;p&gt;Hooray! We got our bot on the server, but we're not finished yet.&lt;/p&gt;

&lt;h3&gt;Step 5: Verify that the app works in Heroku&lt;/h3&gt;

&lt;p&gt;We need to make sure that our bot is properly working now on the server. To verify, type this command in the terminal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;heroku run node bot.js&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will run the node command on the Heroku server. It should return the same response as it was in the dev environment. If it doesn't, check your files, make sure everything save correctly and try redeploying. If it does, hooray! Your bot is working on Heroku.&lt;/p&gt;

&lt;h3&gt;Step 6: Schedule the app to run&lt;/h3&gt;

&lt;p&gt;Alright, now for the final steps to make our bot automate!&lt;/p&gt;

&lt;p&gt;Go back to Heroku and click on Configure Add-Ons. Under the Add-Ons section you will see a search bar. Type in "Heroku Scheduler" and the option should come up to select. You can use the free option and then click on Provision.&lt;/p&gt;

&lt;p&gt;Once added click on the Heroku Scheduler and it will take you to it's menu. Click on Create Job and the following option will appear:&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%2Fxl4ep43leqrh0685p9ob.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%2Fxl4ep43leqrh0685p9ob.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill out the following fields as pictured and then hit save. After 10 minutes, your bot should start to auto-tweet!&lt;/p&gt;

&lt;h4&gt;Important Info on reducing Tweet Spamming&lt;/h4&gt;

&lt;p&gt;Be sure to monitor your bot account for the first hour to see how often tweets are hitting the timeline. You want to make sure that your bot isn't spamming your followers and that it isn't going to hit its tweet limit too quickly. If you find that your bot is retweeting a lot (say about 100 within the first hour) here are some tips to help reduce the tweet frequency:&lt;/p&gt;

&lt;p&gt;1) Decrease the scheduler to have it run less often&lt;/p&gt;

&lt;p&gt;You can have the scheduler tweet every hour or less to reduce spam&lt;/p&gt;

&lt;p&gt;2) Niche down on you search query&lt;/p&gt;

&lt;p&gt;You can "niche down" by making your search queries more specific in order to reduce the amount of tweets. For example, instead of having the bot retweet posts with #jobs have it retweet #jobs and #SoftwareEngineering.&lt;/p&gt;

&lt;p&gt;3) Decrease the search results count&lt;/p&gt;

&lt;p&gt;The best practice is to have the retweet count to be set to 10 tweets. If it still looks at though your bot is spamming, you can reduce the tweets to a lower number to space out the tweets a bit more over time.&lt;/p&gt;

&lt;p&gt;And there you have it! Now your bot is retweeting it's tweet automagically!&lt;/p&gt;

&lt;p&gt;I hope you enjoyed these tutorials 😊&lt;/p&gt;

&lt;p&gt;You can see both my bots in action on Twitter &lt;a href="https://twitter.com/cooltechrobot" rel="noopener noreferrer"&gt;@cooltechrobot&lt;/a&gt; and &lt;a href="https://twitter.com/whosehiringbot" rel="noopener noreferrer"&gt;@whosehiringbot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to &lt;a href="https://twitter.com/nerdyandnatural" rel="noopener noreferrer"&gt;follow me on Twitter!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can view the code for my bot on GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NerdyAndNatural" rel="noopener noreferrer"&gt;
        NerdyAndNatural
      &lt;/a&gt; / &lt;a href="https://github.com/NerdyAndNatural/twitter-bot" rel="noopener noreferrer"&gt;
        twitter-bot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>twitter</category>
      <category>node</category>
      <category>bot</category>
      <category>heroku</category>
    </item>
    <item>
      <title>BEEP BOOP! How to make a Twitter Bot (Part 2)</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Wed, 30 Oct 2019 14:14:13 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-2-37pi</link>
      <guid>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-2-37pi</guid>
      <description>&lt;p&gt;Hey there! This is Part Two of how to build a Twitter bot. If you &lt;a href="https://dev.to/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-1-4nhm"&gt;missed Part One&lt;/a&gt;, be sure to go back and read that first as it has important information. If you already read it and have your access keys, then you are ready for the next steps!&lt;/p&gt;

&lt;p&gt;Today we are going to build out the bot and test it in our dev environment. Like I said in the previous post, the bot can be built using Node or Python. Today, we are going to use Node.&lt;/p&gt;

&lt;p&gt;Couple of notes to make:&lt;/p&gt;

&lt;p&gt;*I used various tutorials, so these are basically modified steps I used to get it working.&lt;/p&gt;

&lt;p&gt;*These steps assume that you already have a dev environment in place.&lt;/p&gt;

&lt;p&gt;Okay, let's get started!&lt;/p&gt;

&lt;h3&gt;Step 1: Install Node&lt;/h3&gt;

&lt;p&gt;If you used npm before you should already have Node installed as they come together. To check, type this in the terminal: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;node -v&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you see a version number then you can skip to the next step. If you get an error message, you can continue these steps to install Node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;Click here&lt;/a&gt; to download the Node package and install it on your computer. Once installed, verify the installation by typing the above command again.&lt;/p&gt;

&lt;h3&gt;Step 2: Configure files and Install Twitter&lt;/h3&gt;

&lt;p&gt;Make a folder. Call it Bot.&lt;/p&gt;

&lt;p&gt;From your terminal, cd into the bot folder and run these command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;touch bot.js&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;touch config.js&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;touch README.md&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What did we do? Just made some files. Keep these open because we'll need them later.&lt;/p&gt;

&lt;p&gt;Next, run this command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm init&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow the prompts and fill out the information. It's okay if you don't have all the required info, those can be filled in later. When you're finished, you should see a package.json file in your bot folder. It'll look something like this:&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="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&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;bottest&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;version&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;1.0.0&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;description&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;Twitter bot&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;main&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;bot.js&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;dependencies&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;twitter&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;^1.7.1&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;devDependencies&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test&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;test&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;author&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;Sarah Williams&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;license&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;ISC&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;Under "scripts" add this:&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;start&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;node bot.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This tells your JSON the default command for running your bot.&lt;/p&gt;

&lt;p&gt;Next you'll need to install Twitter. To install it, type this in your terminal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;npm install --save twitter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will not only install twitter, but it will also add the dependency to you json files so you don't have to do it.&lt;/p&gt;

&lt;h4&gt;Optional Step: Make a GitHub repo&lt;/h4&gt;

&lt;p&gt;Now if you want to deploy to GitHub then you can make a repo in GitHub and run git init. Just be very careful that you do not deploy config.js while the access keys are still saved in the file. Even if you overwrite the files, the old version will still be saved unless you make new keys or delete the repo. I did not setup my GitHub until I deployed to Heroku for this reason. I'll actually go into the GitHub steps more in Part 3.&lt;/p&gt;

&lt;h3&gt;Step 3: Add Access Keys to config.js file&lt;/h3&gt;

&lt;p&gt;Add this to your config.js file:&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="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;consumer_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ACCESS_KEY_HERE&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;consumer_secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ACCESS_KEY_HERE&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;access_token_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ACCESS_KEY_HERE&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
    &lt;span class="na"&gt;access_token_secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ACCESS_KEY_HERE&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;We're just testing the bot, so for now, we're going to add the keys to the config file. When we get ready to deploy the files, we're going to remove these, so be sure to back up them up in a text file.&lt;/p&gt;

&lt;p&gt;In the ACCESS_KEY_HERE, copy your API keys you created from Twitter and replace the text in the space. Don't forget to hit save.&lt;/p&gt;

&lt;h3&gt;Step 4: Setup Bot.js&lt;/h3&gt;

&lt;p&gt;Go into your bot.js file and add this code:&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;var&lt;/span&gt; &lt;span class="nx"&gt;Twitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;twitter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./config.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;Tweet&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;Twitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This code is just the files required to help our bot run.&lt;/p&gt;

&lt;p&gt;Next, we need to add search parameters. This will tell our bot what tweets to search for.&lt;/p&gt;

&lt;p&gt;Add this section:&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;var&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#battlestation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;result_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;recent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&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;Neat! We're telling the search parameters (var params) to search for tweets tagged with #battlestation, keep the search count to 10, only pull the most recent tweets and pull them in English.&lt;/p&gt;

&lt;p&gt;**Note: it's best practice to keep the search count number to 10 or under. This prevents spam abuse with your Twitter account, hitting the retweet limit too quickly, and getting your account suspended.&lt;/p&gt;

&lt;p&gt;But what if we want to add more hashtags? I think I want to add #pcbuilds and #cooltechoftheday to the query as well. Let's modify the search query:&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;var&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#battlestation OR #pcbuild OR #cooltechoftheday&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;result_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;recent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&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;Now, our search query knows to pull tweets that have at least one of those hashtags in them&lt;/p&gt;

&lt;p&gt;TIP: If you need help on getting your search parameters set correctly, do an advanced search on Twitter. When your search results come up, you'll see the actual query that twitter used to pull your tweets and can use them in the query. It'll look 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvw4ucmz8gybsjzafrrem.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%2Fvw4ucmz8gybsjzafrrem.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can then copy and paste those parameters into you bot.js file.&lt;/p&gt;

&lt;p&gt;For more information on search parameters, &lt;a href="https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets" rel="noopener noreferrer"&gt;click here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, let's tell our bot to retweet the tweets it's searching. Add this code to your section:&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="nx"&gt;Tweet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search/tweets&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&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="nx"&gt;data&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="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="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;for&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;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statuses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statuses&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;id_str&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nx"&gt;Tweet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;statuses/retweet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&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="nx"&gt;response&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="nx"&gt;err&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="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&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="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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt; &lt;span class="o"&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;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;screen_name&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;tweetId&lt;/span&gt; &lt;span class="o"&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;id_str&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="s1"&gt;Retweeted: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;`https://twitter.com/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/status/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;tweetId&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="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;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="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="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The next steps are using the tweets from the search results and retweet them to our Twitter account. The last part outputs results whether it was able to retweet it. If it's already been tweeted, it will tell us. If it's a new tweet, it will retweet it and tell us the link where it was retweeted.&lt;/p&gt;

&lt;p&gt;Altogether, your code should look something like this:&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;var&lt;/span&gt; &lt;span class="nx"&gt;Twitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;twitter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./config.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;Tweet&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;Twitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#battlestation OR #pcbuild OR #cooltechoftheday&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;result_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;recent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;    
    &lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="nx"&gt;Tweet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;search/tweets&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&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="nx"&gt;data&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="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="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;for&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;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statuses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statuses&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;id_str&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nx"&gt;Tweet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;statuses/retweet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&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="nx"&gt;response&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="nx"&gt;err&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="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&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="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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt; &lt;span class="o"&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;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;screen_name&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;tweetId&lt;/span&gt; &lt;span class="o"&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;id_str&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="s1"&gt;Retweeted: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;`https://twitter.com/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/status/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;tweetId&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="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;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="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="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;h3&gt;Step 6: Test it Out!&lt;/h3&gt;

&lt;p&gt;Now that you have your files all setup, it's time to put it to the test! Go ahead and run this command in your terminal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;node bot.js&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Your terminal should start outputting the results. If you see "Retweeted" with a link multiple times, that means it's working! To verify, go to your Twitter profile and refresh the page. You should see the tweets come up.&lt;/p&gt;

&lt;p&gt;Awesome, our bot is alive! But we want to automate this bot so that it always retweeting (That's the whole point right?)&lt;/p&gt;

&lt;p&gt;In our third and final part of the series, I'll show you how to get your bot up and running in Heroku!&lt;/p&gt;

&lt;p&gt;In the meantime, you can check my GitHub repo below! Also, you can see both my bots in action on Twitter &lt;a href="https://twitter.com/cooltechrobot" rel="noopener noreferrer"&gt;@cooltechrobot&lt;/a&gt; and &lt;a href="https://twitter.com/whosehiringbot" rel="noopener noreferrer"&gt;@whosehiringbot&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NerdyAndNatural" rel="noopener noreferrer"&gt;
        NerdyAndNatural
      &lt;/a&gt; / &lt;a href="https://github.com/NerdyAndNatural/twitter-bot" rel="noopener noreferrer"&gt;
        twitter-bot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>twitter</category>
      <category>node</category>
      <category>bot</category>
      <category>javascript</category>
    </item>
    <item>
      <title>BEEP BOOP! How to make a Twitter Bot (Part 1)</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Tue, 29 Oct 2019 00:49:22 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-1-4nhm</link>
      <guid>https://forem.com/nerdyandnatural/beep-boop-how-to-make-a-twitter-bot-part-1-4nhm</guid>
      <description>&lt;p&gt;So, you want to automate tweets on your timeline? Send a thank you to each new person that follows you? Retweet a topic that you are interested in? Or just play around and have fun? Then a Twitter bot is you! And I'll show you the steps to get one step up and working!&lt;/p&gt;

&lt;p&gt;But first, we need a little bit of background: what exactly is a Twitter bot? &lt;/p&gt;

&lt;p&gt;A Twitter bot is an account that is programmed in the background to perform a certain function when certain criteria get triggered. Those functions include retweet tweets under a certain hashtag, sending an auto DM when someone follows them or liking certain tweets.&lt;/p&gt;

&lt;p&gt;But not all Twitter accounts are fully automated. For example, you may notice certain brand accounts have their bots trigger an auto message when someone mentions them. This helps the Social Media Manager or Customer Service personnel know who needs assistance right away and they jump in to assist.&lt;/p&gt;

&lt;p&gt;Sadly bots have gained a negative reputation on Twitter as they can be (and have been) used for evil. However, if you build them properly (and for good), bots can be useful for you and your followers alike! In fact you probably have used a couple of them and not even realized it. Examples of good bots are &lt;a href="https://twitter.com/yayfrens" rel="noopener noreferrer"&gt;@yayfrens&lt;/a&gt; (a bot that periodically auto-tweets positive affirmations), &lt;a href="https://twitter.com/threadreaderapp" rel="noopener noreferrer"&gt; @threadreaderapp&lt;/a&gt; (a bot that takes a thread of tweets and converts it to blog form for easy reading) and &lt;a href="https://twitter.com/this_vid" rel="noopener noreferrer"&gt;@this_vid&lt;/a&gt; (a bot that takes a video tweet and creates a downloadable video link). There are tons more, but this just gives you an idea of what kind of bots you can create. To see more good bots like these and learn more, check out &lt;a href="https://twitter.com/botwikidotorg" rel="noopener noreferrer"&gt;@botwikidotorg.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have an idea of what you can create, let's start building our own bot! There are a few tips, tricks and warnings to keep in mind, but I will make sure to point those out as we go into building out our bot.&lt;/p&gt;

&lt;p&gt;This first blog post will involve getting access to Twitter's API. Since this is a bit of an extensive process, the actual building of the bot will come in part 2 and deploying the bot will be in part 3.&lt;/p&gt;

&lt;p&gt;Ready? Of course you are! Let's get started!&lt;/p&gt;

&lt;h3&gt;Step 1: Create a Twitter Account&lt;/h3&gt;

&lt;p&gt;You can use your own Twitter account for this, but I highly recommend making another account to use. Why? Because 1) You may annoy your followers will all the auto-retweets and testing you'll be doing and 2) If you accidentally violate Twitter's Terms of Service, you could lose your account. Once you make your account, make sure that email address and phone number is verified (you won't be able to do anything else until these are completed)&lt;/p&gt;

&lt;h3&gt;Step 2: Apply to Twitter's API&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F08ksobjj8h6jqwn2ewsh.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%2F08ksobjj8h6jqwn2ewsh.PNG" alt="Alt Text: Twiiter developer application page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.twitter.com/en/application/use-case" rel="noopener noreferrer"&gt;Go here&lt;/a&gt; and apply to use Twitter's API. This part gets a little annoying because you have to answer a lot of questions and clearly explain what you are using the API for. We're going to start out easy on this one. For this purpose, I'm going to make a bot that retweets tweets that tags #pcbuilds and #battlestations to my @cooltechrobot Twitter account (I'm really into desktop setups). You can use these hashtags as well or any other ones you like. Just make sure you clearly explain what you are using your bot for and take your time. &lt;/p&gt;

&lt;p&gt;Once your application is submitted, Twitter will ask you to confirm your email. Make sure you do this step; Twitter won't grant you access to their API until you click the link in the email.&lt;/p&gt;

&lt;h4&gt;Pit Stop: Very Important Information!&lt;/h4&gt;

&lt;p&gt;**Be sure to read all of Twitter's &lt;a href="https://developer.twitter.com/en/developer-terms/policy.html" rel="noopener noreferrer"&gt;Developer Policy&lt;/a&gt;, &lt;a href="https://developer.twitter.com/en/developer-terms/agreement.html" rel="noopener noreferrer"&gt;Developer Agreement&lt;/a&gt; and &lt;a href="https://help.twitter.com/en/rules-and-policies/twitter-automation" rel="noopener noreferrer"&gt;Automation Rules.&lt;/a&gt; Yes, it's boring, but it's important to be aware of what you can and cannot do on their platform. Twitter takes these rules very seriously and one small mistake could mean you losing access to your account and having to start over.&lt;/p&gt;

&lt;p&gt;**In case you decided to skim the rules, let me give you a quick breakdown: Twitter's daily limit on likes/follows/retweets etc apply to bots. There's no way around this and if you try to get around this Twitter will ban you. Also, you can't use the bot to spam followers on their TL or DM's; if you're caught doing this Twitter will suspend you. Later on, I'll share with you more tips and tricks to be sure you're staying in compliance with Twitter's rules.&lt;/p&gt;

&lt;h3&gt;Step 3: Create a Twitter App&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhd38sk31wu2em9dgc2c3.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%2Fhd38sk31wu2em9dgc2c3.PNG" alt="Alt Text: Screenshot of Twitter Developer Dashboard page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we have access (yay!) we can go ahead and create our app. This will give us the access token keys that we need to get for our bot. Again, you have to fill out some more information. For the website, you can just add your Github, since we'll be deploying there too anyway. Once you create the app, you will be given access to your API keys under the Keys and Tokens tab.&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%2Fi2o3ctbdqozfi5pkva51.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%2Fi2o3ctbdqozfi5pkva51.png" alt="Alt Text: Screenshot Twitter keys and tokens page with tokens omitted"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*NOTE: DO NOT SHARE YOUR KEYS WITH ANYONE! Anyone who has these keys will automatically have access and control to your account. If your keys get compromised, make sure to generate new ones as soon as possible (generating new keys will invalidate the old ones). In the next tutorial, I'll show you have to hide the keys before they get deployed to Github/Heroku.&lt;/p&gt;

&lt;p&gt;*NOTE: Make sure your keys have read/write access to the access keys. If it says read-only, go to the permission tabs and change it to read/write. You will need to regenerate new access keys in order for the updated permissions to take.&lt;/p&gt;

&lt;p&gt;Now that you have your keys you are ready to build your bot! You can use Node or Python to build your bot. In Part 2, I'll show you how to build the bot using Node and test it out!&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>bot</category>
      <category>node</category>
    </item>
    <item>
      <title>Failing to succeed. (CLI Gem Project: Part 1)</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Tue, 18 Jun 2019 21:01:52 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/failing-to-succeed-cli-gem-project-part-1-lfn</link>
      <guid>https://forem.com/nerdyandnatural/failing-to-succeed-cli-gem-project-part-1-lfn</guid>
      <description>&lt;p&gt;Sometimes you gotta fail to succeed. And that's what exactly happened to my first project.&lt;/p&gt;

&lt;p&gt;I failed. I haven't had my assessment with my lead yet but I already know I failed. I've been going over all the mistakes I made the past 72 hours. I didn't utilize my time right. I didn't utilize the resources available to me. I let my stubbornness get in the way and didn't ask for help. I stayed on a problem for hours on end trying to solve it.&lt;/p&gt;

&lt;p&gt;The project involves using OOP to create a web scraping tool that pulls data from a website and allows the user to view that data in the terminal. It had to be two levels deep (For example, selecting from a list of purses and then seeing the details and price) and cover all basics in terms of usability (the program respond the way it should be). Along with that we get to create a GEM, which helps with loading all the dependencies requires for your CLI and scraper to function, along with giving it a single command to make everything run. &lt;/p&gt;

&lt;p&gt;My Gem works. My CLI works. My scraper doesn't work.&lt;/p&gt;

&lt;p&gt;And I tried. I stayed up for many hours trying to get it to work. I spent all of my sleepless weekend and even took off work to get it working. But I was trying desperately to make the program work that I wasn't focusing on understanding what I was doing to try to get it to work. Then I got frustrated and would delete the entire thing and start over. I think I changed my entire code around about 6 or 7 times.&lt;/p&gt;

&lt;p&gt;But I finally figured it out today on the way to work. The problem is that when my code runs, it's not executing the 2nd part of my code to display the details of of the items (in the case, laptops). I'm not calling the CSS classes for the scraper properly in order for it to pass through the CLI. &lt;/p&gt;

&lt;p&gt;Now that I know, I can learn. I meet with my tech lead to do the assessment and from there I'll probably will get a second chance at passing it. But instead of being nervous I'm more motivated. Tired, but motivated.&lt;/p&gt;

&lt;p&gt;I look forward to sharing my project with you all once I get it fixed.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>coding</category>
      <category>bootcamp</category>
    </item>
    <item>
      <title>Flatiron Blog #2 - Fruit Loops</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Sun, 19 May 2019 19:46:05 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/flatiron-blog-2-fruit-loops-4o4m</link>
      <guid>https://forem.com/nerdyandnatural/flatiron-blog-2-fruit-loops-4o4m</guid>
      <description>&lt;p&gt;So the first month of Flatiron has been a whirlwind of new information. All these arrays, loops, iterations, OOR. All this information has me feeling loopy (get it?)&lt;/p&gt;

&lt;p&gt;But I feel like I'm not retaining the information as well as I should. I have been doing the challenges but I feel like I need to "build" on my own. Building things on my own has helped me a lot with retaining info.&lt;/p&gt;

&lt;p&gt;So I decided to start building. I started simple: getting ruby to generate fruit when prompted. I call it Fruit Loops (someone on Twitter gave me the idea). Here is the code (you can also view it &lt;a href="https://repl.it/@SarahWilliams1/InsidiousVivaciousCubase"&gt;here &lt;/a&gt;)&lt;/p&gt;

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

&lt;p&gt;So what happens is that the code is going to great you and ask if you want some fruit. If you answer yes, the code will randomly select a fruit from the array and give you some; then the program will end. If you say no, the program will say bye and end. If you say anything else (like ask it a question) it will reloop and re-ask you the question until you answer yes or no.&lt;/p&gt;

&lt;p&gt;This was a great review of array and loops. But I'm having difficulty trying to use regex for this. You see, I want it to be able to select various answers of "yes" and "no" and not just "yes" and "no". But with a little more studying I'll probably will have it down next time.&lt;/p&gt;

&lt;p&gt;I also started a mini project called "Free Fruit Fridays". Here's the code (Also &lt;a href="https://repl.it/@SarahWilliams1/MeagerMintySuperuser"&gt;here&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This isn't finished and the code needs work. But the idea is this: It's free fruit friday and the market is giving away 500 pieces of fruit to every customer that comes in. But, how will they be able to properly distribute the fruit to the customers and keep track? The generator starts by asking for the name of the customer and then asking how many pieces of fruit they want. Then it will randomly give then that # of random fruit. The process repeats until it runs out and then the generator will say that there is no more fruit.&lt;/p&gt;

&lt;p&gt;I'm using similar methods that were in the previous experiment but I can't stop the loop from generating endlessly and need to figure out how to get it back to the beginning. I'm thinking of going more advanced on this one and using OOR. But it looks like I got Arrays and Loops down finally.&lt;/p&gt;

&lt;p&gt;Ruby isn't so bad after all. Maybe by the next post I'll be doing advanced OOR.&lt;/p&gt;

</description>
      <category>flatiron</category>
      <category>bootcamp</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Flatiron School Week 1 - Why the career change?</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Sun, 28 Apr 2019 14:10:30 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/flatiron-school-week-1-why-the-career-change-4blk</link>
      <guid>https://forem.com/nerdyandnatural/flatiron-school-week-1-why-the-career-change-4blk</guid>
      <description>

&lt;p&gt;Hi there! This will be my first of many posts detailing my journey of navigating my Flatiron Online Bootcamp and pursuing a career in Software Development. I hope you guys will follow me on my journey and see where this all leads 😊&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Intro&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;So for starters, let me introduce myself. My name is Sarah, I'm originally from Philadelphia but currently live in D.C. I went to Drexel to get a degree in Environmental Engineering but dropped out because I couldn't afford it anymore and by accident ended up pursuing a career in the IT field. I was on the help desk for a decent period of time, then did project management, then a system admin and then IT consultant. &lt;/p&gt;

&lt;p&gt;I spent years doing different areas of the IT field trying to see what I liked and what I wanted to spend the rest of my life doing, only to realize that none of the these fields made me happy. I liked problem solving, but when you've been in the IT field for as long as I have, everyone just starts looking at you as that person that fixes computers, and while I like helping my friends and family, it can be exhausting sometimes. I wanted to see how software works, how to build and create something that others will appreciate and use. I wanted to use my skills to give back to the community and help others, particular black people to get into coding and the tech world as well.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;My Coding Journey&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;But this isn't my first trial into the coding world. When I was about 10 years old, my mom brought her first computer and along with it some educational CD's. She gave me one in particular that teaches you how to build HTML and CSS and said that I should learn it as one day websites will be huge and this field would be in high demand. I did learn HTML and CSS but of course did not take her advice to stick with it. Silly me.&lt;/p&gt;

&lt;p&gt;Fast forward to 2016 and I was really in a career rut. I decided to try a career change and started trying to code again. It was okay but I was really rusty so in 2017 after moving to DC I decided to start coding again and took a &lt;a href="https://skillcrush.com"&gt;SkillCrush&lt;/a&gt; course in WordPress Development. The course helped me greatly with learning WordPress and I was able to start my own freelance business named NerdyAndNatural (now named &lt;a href="https://slwdigitalagency.com"&gt;SLW Digital Agency.&lt;/a&gt; My business became really successful and I was really happy with what I was doing. However I really wanted to get into the backend parts of the web so I could start building my own projects. However, learning JS on my own was not easy and no matter what resource I was using I wasn't getting anywhere.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Why I chose Flatiron&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;So I started looking into the different types of bootcamps out there. This was a process that took MONTHS because 1) bootcamps are expensive and 2) I needed something that was going to allow me to continue to work while I took courses. After going to a few places, my ultimate decision ended up being the Flatiron Online Software Engineering Bootcamp was based on a few factors:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;1) They gave me a free bootcamp prep course to try out - and I started understanding the concepts for the first time&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Taking the bootcamp prep course, I got an idea of how the course is outlined and what to expect. But more importantly, I started understanding the concepts that I have been trying to learn on my own and was able to successfully complete the prep course. Yay! &lt;/p&gt;

&lt;p&gt;&lt;b&gt;2) They have a full team there for you, even though the course is online based&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;In addition to the faculty lead, there is also a technical lead, career coach and educational coach to help you along the way and want to help you to succeed. So you are never alone.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;3) They offered me a partial scholarship - and they were the only ones to do so&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I applied and got offered a partial scholarship in partnership with OHub because I was able to complete the bootcamp prep course successfully. I still have to pay for my courses which is still a little high (about $980 a month), but at least the scholarship took away some of the expense of paying for school out of pocket.&lt;/p&gt;

&lt;p&gt;I hope you all join my on my journey. To see my progress you can follow me on &lt;a href="https://twitter.com/NerdyAndNatural"&gt;Twitter&lt;/a&gt;, see my &lt;a href="https://github.com/NerdyAndNatural"&gt;Github&lt;/a&gt;, or look at my &lt;a href="https://trello.com/b/qYkwbe7D/flatiron-course-lessons-projects-and-blog"&gt;Trello board&lt;/a&gt;. My next post and others going forward will be about all the concepts I'm learning through the bootcamp so stay tuned!&lt;/p&gt;


</description>
      <category>developer</category>
      <category>career</category>
      <category>softwareengineering</category>
      <category>bootcamp</category>
    </item>
    <item>
      <title>Nevertheless, Sarah Williams Coded</title>
      <dc:creator>Sarah Williams</dc:creator>
      <pubDate>Thu, 08 Mar 2018 15:42:04 +0000</pubDate>
      <link>https://forem.com/nerdyandnatural/nevertheless-sarah-williams-coded--4o53</link>
      <guid>https://forem.com/nerdyandnatural/nevertheless-sarah-williams-coded--4o53</guid>
      <description>&lt;h2&gt;
  
  
  I began/continue to code because...
&lt;/h2&gt;

&lt;p&gt;As a black women it has been difficult breaking boundaries in the tech field. I code because I want to continue to inspire and empower other black women who want to be in the tech field but are afraid that they do not belong.I want them to know that they can learn to code and be successful in the tech world. That they have a group of fellow black tech women rooting for their success. I want them to know that they have a seat at the table as well.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
