<?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: akintayo shedrack</title>
    <description>The latest articles on DEV Community by akintayo shedrack (@coder_blvck).</description>
    <link>https://dev.to/coder_blvck</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%2F32324%2F3eafc136-3383-46ed-ba22-740f1ed885c7.jpeg</url>
      <title>DEV Community: akintayo shedrack</title>
      <link>https://dev.to/coder_blvck</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/coder_blvck"/>
    <language>en</language>
    <item>
      <title>Deploy a Nodejs App on Cloud Foundry Pt.3 - Hello World to Real World</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Tue, 27 Oct 2020 13:30:19 +0000</pubDate>
      <link>https://dev.to/cloudfoundry/deploy-a-nodejs-app-on-cloud-foundry-pt-3-hello-world-to-real-world-4peh</link>
      <guid>https://dev.to/cloudfoundry/deploy-a-nodejs-app-on-cloud-foundry-pt-3-hello-world-to-real-world-4peh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://medium.com/cloud-foundry-foundation/deploy-a-nodejs-app-on-cloud-foundry-pt-2-services-33e76ed62be9" rel="noopener noreferrer"&gt;second part&lt;/a&gt; of this tutorial, I demonstrated how to deploy a Node.js application on Cloud Foundry, make a few changes to the deployed application to see how fast Cloud Foundry updates our application in the browser and finally, bind our application to a database service. I also gave an introduction to what services are in Cloud Foundry and how to get started with them.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will be deploying a full stack application on Cloud Foundry with a Node.js backend and a MongoDB database service. I'll demonstrate how to use a database service we will create in our application to read, write data to our application and also persist data. &lt;/p&gt;

&lt;p&gt;We will also make a few changes to our deployed application and re-deploy our application to see how fast Cloud Foundry updates our application in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cloud Foundry CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Any Cloud Foundry distribution account. (I'll be using &lt;a href="https://paas.anynines.com/" rel="noopener noreferrer"&gt;anynines&lt;/a&gt; for the sake of this tutorial).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;a href="https://cloudinary.com/" rel="noopener noreferrer"&gt;Cloudinary&lt;/a&gt; account for storing images that'll be uploaded (API key and API Secret).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic Knowledge MongoDB, Node.js and &lt;a href="https://katacoda.com/cloudfoundry-tutorials/scenarios/trycf" rel="noopener noreferrer"&gt;Cloud Foundry&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The client-side of the application is written with EJS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The server-side of the application is written in Node.js.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloudinary handles the storing of images that are uploaded.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MongoDB handles the storing of the image urls that are used to display the images on the client-side.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up Our Application
&lt;/h2&gt;

&lt;p&gt;To get started, we have to clone our application from Github and install its dependencies on our machine. Run the following command to clone the application to your machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/hacktivist123/cloudfoundry-nodejs-tutorial-pt-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After cloning the application from Github, you can install the application on your local machine by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installing the project, you'll need to create a &lt;code&gt;.env&lt;/code&gt; file. There's a &lt;code&gt;.env.sample&lt;/code&gt; file with the structure of how your &lt;code&gt;.env&lt;/code&gt; file should look and what it should contain in the project root folder. For example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NODE_ENV = production
MONGO_URI = &amp;lt;your mongodb service connection uri&amp;gt;
CLOUDINARY_CLOUD_NAME = &amp;lt;your cloudinary cloud name&amp;gt;
CLOUDINARY_API_KEY = &amp;lt;your cloudinary API key&amp;gt;
CLOUDINARY_API_SECRET = &amp;lt;your cloudinary API Secret&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;NODE_ENV&lt;/code&gt; = The current deployment environment, i.e development or production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;MONGO_URI&lt;/code&gt; = MongoDB service connection URI (this will be provided when we create a Cloud Foundry database service).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;CLOUDINARY_CLOUD_NAME&lt;/code&gt; = This will be available on your Cloudinary dashboard after registration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;CLOUDINARY_API_KEY&lt;/code&gt; = This will be available on your Cloudinary dashboard after registration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;CLOUDINARY_API_SECRET&lt;/code&gt; = This will be available on your Cloudinary dashboard after registration.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run the application by running yarn start on your local machine and with a local MongoDB server, you'll get the following in your browser when you navigate to &lt;code&gt;localhost:8080&lt;/code&gt;or the PORT number you provided in the &lt;code&gt;.env&lt;/code&gt; file.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2A8-Xr2pRncAHtag_q" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2A8-Xr2pRncAHtag_q"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While this works locally, we cannot use the local MongoDB server when we deploy our application on Cloud Foundry. We need a database service to help us manage the database when it's deployed live.&lt;/p&gt;

&lt;p&gt;Let's test this theory by deploying our application on Cloud Foundry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying our Application
&lt;/h2&gt;

&lt;p&gt;You can deploy to the application by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf push &amp;lt;app name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've not noticed already, when we push the application initially, it throws an error that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AshfF4yRbxjz3Mw4r" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AshfF4yRbxjz3Mw4r"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are getting this error because Cloud Foundry cannot recognize or see any connection URI for our MongoDB database. &lt;/p&gt;

&lt;p&gt;We need to create a MongoDB database service to fix this error and use the connection URI it provides for us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating our MongoDB Database Service
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why do we need a database service?
&lt;/h3&gt;

&lt;p&gt;Well, we need a database service because we cannot use a local database server when we deploy our application live and also to persist data. When you cf push, an entirely new version of your application is deployed and all old data will be deleted. &lt;/p&gt;

&lt;p&gt;What a database service will do for us is to persist data we've uploaded into our application so that even if we push our application on Cloud Foundry over and over again, we'll still have access to the existing data we've uploaded into our application database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating the Service
&lt;/h3&gt;

&lt;p&gt;It's very easy to create a database service with Cloud Foundry; we can do that by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf create-service SERVICE PLAN SERVICE_INSTANCE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The service and plan depend on the distribution of Cloud Foundry you're using. Cloud Foundry distributions provide different types of services. For the sake of this tutorial, I'll be using the anynines MongoDB service by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf create-service a9s-mongodb34 mongodb-nano cf-database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;a9s-mongodb34&lt;/code&gt; = The service name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mongodb-nano&lt;/code&gt; = The service plan&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cf-database&lt;/code&gt; = The service instance name&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I run the above command, the following will be displayed:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2Aicaz6wGnz_EsNsQG" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2Aicaz6wGnz_EsNsQG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To know if the service has been created successfully, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf service cf-database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command will display the following details about the service:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AHBzOd4mNc3elj7N8" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AHBzOd4mNc3elj7N8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On a side note, you can only make use of the service when the status of the service is "&lt;strong&gt;create succeeded.&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;Now that our service has been created successfully, we have to bind the service to our application so that our application can use the service. We can do that by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf bind-service APP_NAME SERVICE_INSTANCE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we run the above command according to our app name and service name, we will see the following in our terminal:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2A3-VwUwmcsJVIqcjX" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2A3-VwUwmcsJVIqcjX"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have successfully bound the database service we created to our application. &lt;/p&gt;

&lt;p&gt;The next step is to use the URI provided by the MongoDB service as our &lt;code&gt;MONGO_URI&lt;/code&gt; in our &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;We can find the URI by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf &lt;span class="nb"&gt;env&lt;/span&gt; &amp;lt;APP_NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running the above command, you should see the following displayed in your terminal:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AvzM6nbzHPHjy_gr0" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AvzM6nbzHPHjy_gr0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you look closely at the JSON file generated by the command, you'll see the database URI, username and also password.&lt;/p&gt;

&lt;p&gt;Now we need to grab the database URI and use it on our application. We can do that by copying the URI from our terminal and pasting it into our &lt;code&gt;.env&lt;/code&gt; file. &lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MONGO_URI = mongodb://a9s-brk-usr-5fce266678f7b5d5061399d079c7cb58e3541b95:a9sfa381ca6ba0d48f166c0299b1ce4d119ff6321e1@mod22bb57-mongodb-0.node.dc1.a9ssvc:27017/mod22bb57
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why is this working?
&lt;/h3&gt;

&lt;p&gt;In our &lt;code&gt;index.js&lt;/code&gt; file, we are grabbing the &lt;code&gt;MONGO_URI&lt;/code&gt;variable from the &lt;code&gt;.env&lt;/code&gt; file and using it to start the database connection like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;mongoose&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MONGO_URI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="na"&gt;useNewUrlParser&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="na"&gt;useUnifiedTopology&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
 &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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="nx"&gt;isDevelopment&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pushing our app live with the database service
&lt;/h2&gt;

&lt;p&gt;Now let's try to push our application again and see whether it throws an error. We can do that by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf push &amp;lt;APP_NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we run the above command and wait for a while for it to finish deploying, we'll see the following message in our terminal:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2ABEhW_r0lJSZu4HhC" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2ABEhW_r0lJSZu4HhC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we navigate to the route that was created after the deploy, we'll see our application deployed live without any errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a change in our application
&lt;/h2&gt;

&lt;p&gt;Now let's make a change to our application, re-deploy and see if the images in the database will still remain the same. For the change, let's make the color of the header text "&lt;strong&gt;mini-instagram&lt;/strong&gt;" to blue.&lt;/p&gt;

&lt;p&gt;Navigate to the css directory inside the project folder and locate the style.css file. Paste the following code in the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After adding the above piece of code, we will push our application again so that we can see the changes.&lt;/p&gt;

&lt;p&gt;We can do that by running &lt;code&gt;cf push &amp;lt;APP_ NAME&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;After pushing, wait for it to deploy and navigate/refresh to the generated route link to see the changes happen.&lt;/p&gt;

&lt;p&gt;If you did the above instructions correctly, you should see the header text color change from black to blue like so:&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AtQeLubgK_2wd7gQN" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F0%2AtQeLubgK_2wd7gQN"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We made a change and redeployed our application and we can still see our images (data) available.&lt;/p&gt;

&lt;p&gt;Now if you try to upload a random image and also refresh the page, we'd still have the image available to us along with the rest of the existing images.&lt;/p&gt;

&lt;p&gt;Here's a link to the visual representation of the process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1XT7ux9Fktt8HbdW_D7DAdiQX5tqI-cDz/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/1XT7ux9Fktt8HbdW_D7DAdiQX5tqI-cDz/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above media, I uploaded a new photo and then refreshed the application over and over again to check if we lost any data but we didn't. This is the power of the database service we used.&lt;/p&gt;

&lt;p&gt;You can find the supporting Repo for this tutorial, &lt;a href="https://github.com/hacktivist123/cloudfoundry-nodejs-tutorial-pt-3" rel="noopener noreferrer"&gt;here&lt;/a&gt; and you can also find the video tutorial &lt;a href="https://youtu.be/qvso2fRKRy8" rel="noopener noreferrer"&gt;here&lt;/a&gt; if you prefer watching videos instead.&lt;/p&gt;

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

&lt;p&gt;In this tutorial we took an application, deployed it on Cloud Foundry, created a MongoDB database service for the application and then re-deployed it on Cloud Foundry. &lt;/p&gt;

&lt;p&gt;We also made a few changes to the application and redeployed it to see if we would lose any data but we didn't, thanks to the power of the database service we used.&lt;/p&gt;

&lt;p&gt;Services in Cloud Foundry are really powerful. We can do a whole lot of things with various services that are available to Cloud Foundry users.&lt;/p&gt;

&lt;p&gt;Did you enjoy this tutorial? Let me know by dropping comments about your favourite aspect of the tutorial in the comments section. Also, if you have any questions, you can drop one in the comment section and I'll definitely give a reply.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The best way to connect with the Cloud Foundry community is to join our Slack Workspace at &lt;a href="https://slack.cloudfoundry.org/" rel="noopener noreferrer"&gt;https://slack.cloudfoundry.org/&lt;/a&gt;. Those in the Slack community help you get quickly connected with other members or someone from the Cloud Foundry Foundation&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>node</category>
      <category>kubernetes</category>
      <category>cloudfoundry</category>
    </item>
    <item>
      <title>Cloud Foundry Essentials</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Thu, 10 Sep 2020 19:09:44 +0000</pubDate>
      <link>https://dev.to/cloudfoundry/cloud-foundry-essentials-27hn</link>
      <guid>https://dev.to/cloudfoundry/cloud-foundry-essentials-27hn</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this blog post, I'm going to be talking about all things Cloud Foundry, including some of its services, certified and other commercial providers. I'll also be demonstrating how to get started with Cloud Foundry quickly.&lt;/p&gt;

&lt;p&gt;The main aim of this blog post is to serve as documentation for people that want to see what the Cloud Foundry community offers and how to locate or get started with their preferred method of deploying their applications to Cloud Foundry.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cloud Foundry?
&lt;/h2&gt;

&lt;p&gt;According to the official Cloud Foundry website, Cloud Foundry is an open-source platform that allows application development teams to build, test, deploy, and scale applications.&lt;br&gt;
It also provides an underlying infrastructure including Kubernetes, developer frameworks, and application services.&lt;br&gt;
Cloud Foundry is known for its awesome developer experience. The project is backed by Google, IBM, Microsoft, SAP, SUSE, VMware, and more.&lt;/p&gt;

&lt;p&gt;Cloud Foundry takes the workload off developers and lets them ​​focus on only the application code and business outcomes by making all those tasking deployment processes disappear.&lt;/p&gt;

&lt;p&gt;In summary, Cloud Foundry takes ​away the burden of managing complexity and running containerized workloads of an application from developers and allows them to worry or stay focused on application code and the business outcomes. Aside from just taking away the burden, it also provides benefits. For example, packing and containerization come free.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cloud Foundry Providers
&lt;/h2&gt;

&lt;p&gt;The officially certified providers of the Cloud Foundry platform are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Atos Cloud Foundry&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IBM Cloud Foundry (formerly Bluemix)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SAP Cloud Platform&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SUSE Cloud Application Platform&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Swisscom Application Cloud&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VMware Tanzu&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other distributions of Cloud Foundry include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;anynines Public PaaS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pivotal Web Services&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Cloud Foundry Command Line Interface
&lt;/h2&gt;

&lt;p&gt;The Cloud Foundry CLI is a tool that allows developers, engineers e.t.c to interact with Cloud Foundry and any of its providers directly from their terminal. The Cloud Foundry CLI is the quickest way to interact or get started with Cloud Foundry. You can install the Cloud Foundry CLI by following the instructions &lt;a href="https://docs.cloudfoundry.org/cf-cli/install-go-cli.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once the CLI has been installed, you can confirm if it's available on your machine by going to your terminal and running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After executing the above command, the following will be displayed in your terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ssYG7-LU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AiVBdhFrhuC6HE2Fg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ssYG7-LU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AiVBdhFrhuC6HE2Fg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the Cloud Foundry CLI, you can carry out the following actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect to the Cloud Foundry Marketplace for various services&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Push your application live.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect with any of Cloud Foundry's official and other commercial providers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See all your downloaded plugins.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Cloud Foundry CLI is a very powerful tool that can do much more than the above listed and it is still being maintained by the Cloud Foundry Community with the latest major version being version &lt;a href="https://github.com/cloudfoundry/cli"&gt;seven(v7.0)&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizations and Spaces in Cloud Foundry
&lt;/h2&gt;

&lt;p&gt;Before we go further ahead, we would need to know what organizations and spaces in Cloud Foundry are so that we can better understand the Cloud Foundry deployment roles and permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organizations
&lt;/h3&gt;

&lt;p&gt;An organization is like a group that consists of various users, resources, applications, and environments that belong to a particular organization. Each Organization can have a quota of resources allocated to them based on their subscription plan and organizations are billed separately based on the number of resources consumed by the organization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spaces
&lt;/h3&gt;

&lt;p&gt;A Space in Cloud Foundry is an environment that consists of different phases on application development. An organization can have various spaces for its applications like a development space, a staging space, or a production space based on their preference.&lt;/p&gt;

&lt;p&gt;For more information on organizations and space, you can check the Cloud Foundry official &lt;a href="https://docs.cloudfoundry.org/concepts/roles.html"&gt;documentation&lt;/a&gt; or this article by &lt;a href="https://nikgrozev.com/about/"&gt;Nikolay Grozev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the next and further sections, we'll be exploring the different ways we can connect to Cloud Foundry using a handful of its available commercial providers and distributions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Buildpacks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CF CLI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CF Dev&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pivotal Web Services&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stratos&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IBM Cloud Foundry&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SUSE CAP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anynines public Paas&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Buildpacks
&lt;/h2&gt;

&lt;p&gt;Buildpacks are an important feature in Cloud Foundry, they provide a platform and runtime support for applications built with different languages to run efficiently on Cloud Foundry. &lt;/p&gt;

&lt;p&gt;Cloud Foundry automatically detects the language used to build your application when you push it, this is achieved with the power of Buildpacks. You can push an application with one or multiple buildpacks depending on the type of application you are deploying.&lt;/p&gt;

&lt;p&gt;You can configure your application's buildpack by putting the information for the buildpack inside a buildpack.yml file, Cloud Foundry will automatically detect this file and use the information in the file to deploy your application.&lt;/p&gt;

&lt;p&gt;Cloud Foundry includes a set of system buildpacks for common languages and frameworks, this &lt;a href="https://docs.cloudfoundry.org/buildpacks/system-buildpacks.html"&gt;table&lt;/a&gt; lists all the available system buildpacks.&lt;/p&gt;

&lt;p&gt;Apart from the available system buildpacks, you can create and customize a buildpack for your application, you can read more about this process &lt;a href="https://docs.cloudfoundry.org/buildpacks/developing-buildpacks.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Certain Cloud Foundry Certified providers like IBM also provide their own custom buildpacks for your application to run smoothly on their cloud platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud-Native Buildpacks
&lt;/h3&gt;

&lt;p&gt;Cloud-Native Buildpacks transform your application source code into images that can run on any cloud.&lt;/p&gt;

&lt;p&gt;Cloud-Native Buildpacks allow developers to ship applications that can run on any cloud platform including Cloud Foundry. Basically, they take an application source code and then convert it into images that allow them to run on the cloud. &lt;/p&gt;

&lt;p&gt;For more information please visit &lt;a href="https://buildpacks.io/"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Paketo Buildpacks
&lt;/h3&gt;

&lt;p&gt;Paketo Buildpacks are Cloud Native Buildpacks and it is a project of the Cloud Foundry Foundation. They are written in Go, and they provide runtime support for applications. They are not exclusive to just the Cloud Foundry community but it can be used by any Cloud service provider.&lt;/p&gt;

&lt;p&gt;Paketo Buildpacks currently has support for the following languages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nodejs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;.NET Core&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Java&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information about paketo buildpacks, visit its documentation &lt;a href="https://buildpacks.io/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  CF Dev
&lt;/h2&gt;

&lt;p&gt;CF Dev is a distribution of Cloud Foundry that is meant to enable engineers or folks that want to try Cloud Foundry for the first time run Cloud Foundry directly on their machine without having to connect with an external service provider. It makes use- of native hypervisors and also comes packed with a fully functional BOSH Director and it gives developers the entire Cloud Foundry experience in a lightweight and very easy to install package. It is likely the best way to deploy Cloud Foundry on your local machine.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The CF Dev Project is still being maintained but it is currently no longer receiving updates or being actively developed.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation Process
&lt;/h3&gt;

&lt;p&gt;The following commands are to be executed in a terminal in order to install CF Dev in your machine.&lt;/p&gt;

&lt;p&gt;CF Dev has a couple of system requirements that can be found in the README section of it's &lt;a href="https://github.com/cloudfoundry-incubator/cfdev"&gt;Github repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In order to install CF Dev you also need to have the CF CLI available on your machine, if you are yet to install it, please do. &lt;/p&gt;

&lt;p&gt;After installing the CF CLI, run the following command in your terminal to install the CF Dev plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf install-plugin &lt;span class="nt"&gt;-r&lt;/span&gt; CF-Community cfdev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start the CF Dev Server on your machine, run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf dev start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For first time users, it takes a while to start the CF Dev but if all goes well the following will be displayed on your terminal window:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1M8HsBkt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A4r5eUJGznWM9tFAy" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1M8HsBkt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A4r5eUJGznWM9tFAy" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the instructions that are displayed on your terminal window to login and get started with CF Dev.&lt;/p&gt;

&lt;p&gt;With CF Dev now installed and started on your machine, you can now enjoy the full Cloud Foundry experience directly from your terminal and your machine.&lt;/p&gt;

&lt;p&gt;For more information on CF Dev Installation processes and configuration, you can check it's FAQ page, &lt;a href="https://github.com/cloudfoundry-incubator/cfdev/blob/master/FAQ.md#can-i-configure-the-working-directory"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stratos
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://stratos.app/"&gt;Stratos&lt;/a&gt; is an official Cloud Foundry Project, it is an open-source user interface for Cloud Foundry and Kubernetes. Stratos supports multiple cluster monitoring and management from just a single User Interface.&lt;/p&gt;

&lt;p&gt;Below is an image of how the Stratos Dashboard looks like when an application is deployed on it:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w7gBRPGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2ANBMhwVt0QHelWJpA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w7gBRPGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2ANBMhwVt0QHelWJpA" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of Stratos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Easily View Helm Charts and Workloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy Cloud Foundry Cluster Management including managing and deploying applications in the Cloud Foundry cluster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy Customization to fit your team needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect to other Cloud Foundry Commercial providers via endpoints.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy Access to Cloud Foundry Marketplace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View Application Logs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;The quickest way to get started with Stratos is to deploy it as a Cloud Foundry with docker by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 4443:443 splatform/stratos:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: Docker must be installed on your local machine.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After running the above command, you'll see the following in your terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W1pDfSIE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AOaxNjESbbkdunneO" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W1pDfSIE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AOaxNjESbbkdunneO" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next thing is to navigate to localhost:4443 to access the local Stratos app, the following screen will be displayed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XGGa6B-M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A92lcJrMkNPSlhsBP" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XGGa6B-M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A92lcJrMkNPSlhsBP" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll be asked to log in either as a local admin or use a Cloud Foundry User Account and Authentication, read more on UAA &lt;a href="https://docs.cloudfoundry.org/uaa/index.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the sake of this documentation, I'll log in as a local admin, and I'll be asked to create a password to login to my local admin account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RU29GQlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AvLZtX9-MI6jJvHHk" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RU29GQlO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AvLZtX9-MI6jJvHHk" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After creating the password, it'll take a few seconds to save the configuration, and automatically, you'll be logged in into the Stratos dashboard.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Save the password you created because it'll be needed, if you need to log in again.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting to Cloud Foundry via endpoints
&lt;/h3&gt;

&lt;p&gt;Now that we are all set up and logged in, let's connect to an external Cloud Foundry service. In this case, we'll be making use of anynines Public Paas.&lt;/p&gt;

&lt;p&gt;Firstly, we need to create an anynines account, you can do that &lt;a href="https://paas.anynines.com/"&gt;here&lt;/a&gt;. After doing that, log in, and let's get started.&lt;/p&gt;

&lt;p&gt;After registering and logging in into anynines and also Stratos, navigate to the endpoints tab on the sidebar of Stratos, click on it then click on the register endpoint + icon and then click on Cloud Foundry.&lt;/p&gt;

&lt;p&gt;Here is a visual demonstration of the process:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1GPCGfKm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AmgC0ZqadUndT33VWr5BGOQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1GPCGfKm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AmgC0ZqadUndT33VWr5BGOQ.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, we need to fill in the form, you can name the endpoint whatever you like and the endpoint address should be the address shown to you on the anynines dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eNedxPND--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A9NI4c_hchhcuyzQ6" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eNedxPND--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A9NI4c_hchhcuyzQ6" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After inputting the endpoint address, you can click on the register button at the bottom left corner of the screen.&lt;/p&gt;

&lt;p&gt;Here is a visual demonstration of the process:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DJvoJC4e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AClprNkstBaN1oGeeJeGTVg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DJvoJC4e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AClprNkstBaN1oGeeJeGTVg.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After registering the endpoint, we can connect instantly by checking on the connect to the endpoint now checkbox and then fill in the username and password field with your anynines username and password and you'll be connected to anynines immediately.&lt;/p&gt;

&lt;p&gt;Here is a visual demonstration of the process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mL3IJjS_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AxsebtwrjKpK781rD" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mL3IJjS_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AxsebtwrjKpK781rD" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! we have successfully connected to a Cloud Foundry endpoint. We can now view and manage all the applications that we deployed to Cloud Foundry with Stratos.&lt;/p&gt;

&lt;p&gt;For more information about Stratos, you can check the official &lt;a href="https://stratos.app/docs/"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  SUSE Stratos Console
&lt;/h2&gt;

&lt;p&gt;Optionally, you can use the hosted version of Stratos customized by &lt;a href="https://www.suse.com/"&gt;SUSE&lt;/a&gt; called &lt;a href="https://stratos.cap.explore.suse.dev/home"&gt;SUSE Stratos Console&lt;/a&gt;. All you need to do is set up a free SUSE account, log in and you're good to go. It works exactly like the open-source Stratos Cloud Foundry &amp;amp; Kubernetes console but it comes with a few customizations and improvements.&lt;/p&gt;

&lt;p&gt;Here is an image of how the SUSE Stratos Console dashboard looks like when you are logged in:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ehIw82rI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AHt2Ledh2ONT95qlT" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ehIw82rI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AHt2Ledh2ONT95qlT" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Your SUSE Stratos Console login details are the same with the free SUSE account you created.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  IBM Cloud Foundry
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.ibm.com/cloud/cloud-foundry"&gt;IBM Cloud Foundry&lt;/a&gt; is a distribution of Cloud Foundry built on top of the IBM Cloud. It allows enterprise developers to deploy and develop Cloud Foundry applications on the IBM Cloud platform.&lt;br&gt;
IBM Cloud Foundry gives developers access to enjoy the Cloud Foundry developer experience and the IBM Cloud experience at the same time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Features of IBM Cloud Foundry
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;IBM Cloud Foundry has runtime support for various languages including Java, Nodejs, Ruby, Python etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access to Cloud Foundry Community Buildpacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy and develop your applications quickly and it facilitates developing applications as stateless processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provides support for extending your application capabilities with external services.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is a gif of how the IBM Cloud Foundry Dashboard looks like when you are logged in on IBM Cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v5Ot1QC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AWVaAwuNOWWWtkNGr" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v5Ot1QC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AWVaAwuNOWWWtkNGr" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;To get started with IBM Cloud Foundry, You can &lt;a href="https://cloud.ibm.com/registration"&gt;sign up&lt;/a&gt; for a free trial IBM Cloud account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W52IYlpa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AsNsoglsKfIB-KqtP" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W52IYlpa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AsNsoglsKfIB-KqtP" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After registering and logging into your account you'll be redirected into the IBM Cloud dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NN6f5vQH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A40wWewfvQ367MU_q" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NN6f5vQH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2A40wWewfvQ367MU_q" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After logging into the dashboard, click on the fourth icon on the dashboard and you'll be navigated to the IBM Cloud Foundry Dashboard.&lt;/p&gt;

&lt;p&gt;Here is a demonstration of the process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HBMF_rbs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Aoo_u8LCC8J8w_gsh2cbzYA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HBMF_rbs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Aoo_u8LCC8J8w_gsh2cbzYA.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we've navigated to the dashboard, let's look at deploying applications on IBM Cloud Foundry.&lt;/p&gt;
&lt;h3&gt;
  
  
  Deploying an Application on IBM Cloud Foundry
&lt;/h3&gt;

&lt;p&gt;There are two main ways of deploying an application on IBM Cloud Foundry namely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The command-line interface(IBM Cloud CLI)&lt;/li&gt;
&lt;li&gt;The integrated development environments (IDEs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, you can use &lt;a href="https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-deployingapps#appmanifest"&gt;app manifests&lt;/a&gt; to deploy your application on IBM Cloud Foundry, when you use an app manifest to deploy your application, you reduce the number of deployment details you need to specify on your CLI when you are deploying your application. &lt;/p&gt;

&lt;p&gt;All the CLI needs to do is read the content in your application manifest and use it to deploy your application immediately.&lt;/p&gt;

&lt;p&gt;To learn more about deploying applications on IBM Cloud Foundry, please visit its &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fcloud.ibm.com%2Fdocs%2Fcloud-foundry-public%3Ftopic%3Dcloud-foundry-public-deployingapps"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The fastest way to get started is to use the IBM Cloud CLI and install it on your machine by visiting &lt;a href="https://cloud.ibm.com/docs/cli?topic=cli-getting-started#step1-install-idt"&gt;here&lt;/a&gt;. Also, App Manifests are not just for IBM Cloud Foundry; all Cloud Foundry services and providers support the use of App Manifests to deploy your applications.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  anynines Public Paas
&lt;/h2&gt;

&lt;p&gt;Anynines Public PaaS (a9s) is a platform as a service that is built on top of Cloud Foundry. It is referred to as “The European Cloud Foundry Platform” because it uses a European datacenter.&lt;br&gt;
Some of its features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fair pricing&lt;/li&gt;
&lt;li&gt;Easy and Quick deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anynines Public PaaS provides a customer panel in addition to the Cloud Foundry command line tool for managing your organizations, applications spaces, billing information and also uploading SSL certificates to protect your custom domains.&lt;/p&gt;
&lt;h3&gt;
  
  
  Supported Technologies and Services on anynines Public Paas
&lt;/h3&gt;

&lt;p&gt;The following are some of the supported technologies that can be deployed on the anynines PaaS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ruby on Rails&lt;/li&gt;
&lt;li&gt;Tomcat&lt;/li&gt;
&lt;li&gt;Nodejs&lt;/li&gt;
&lt;li&gt;RACK&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Grails&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Getting started with anynines Public PaaS
&lt;/h3&gt;

&lt;p&gt;It is quite easy to get started with anynines Public PaaS, all you have to do is to &lt;a href="https://paas.anynines.com/signups/new"&gt;create&lt;/a&gt; a free anynines account and login into your anynines customer panel.&lt;/p&gt;

&lt;p&gt;Below is an image of how the a9s customer panel looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nYP5bnkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AX_z64IKy8mSvhyhf" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nYP5bnkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AX_z64IKy8mSvhyhf" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Deploying Applications on Cloud Foundry with anynines
&lt;/h3&gt;

&lt;p&gt;Deploying your application on anynines is very easy. All you need is the &lt;a href="https://docs.cloudfoundry.org/cf-cli/install-go-cli.html"&gt;Cloud Foundry CLI&lt;/a&gt; and the anynines target endpoint which can be found on the anynines customer panel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6MOL0rto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AddZExpuGEwxrdn31" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6MOL0rto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/0%2AddZExpuGEwxrdn31" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, navigate to your application folder in your terminal and connect the CF CLI with the anynines target and login with your anynines account login details by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cf api https://api.de.a9s.eu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is a visual demonstration of the process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bFPJwnxQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AuHcPeMWbSS3VaMF_erXfrw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bFPJwnxQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AuHcPeMWbSS3VaMF_erXfrw.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that you need to log into your anynines account in the Cloud Foundry CLI so that we can push our app. You can do that with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is a visual demonstration of the process:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yeA1pZ8v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2UyyxRFBSobvud3jyKqfmA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yeA1pZ8v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2UyyxRFBSobvud3jyKqfmA.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we are logged in, all we need to do is to run the &lt;strong&gt;&lt;em&gt;cf push&lt;/em&gt;&lt;/strong&gt; command and our application will be deployed.&lt;/p&gt;

&lt;p&gt;After deploying our application, we can alternatively use any of the Cloud Foundry console user interfaces like Stratos or SUSE Stratos console to directly interact with applications deployed on the Cloud Foundry cluster via the anynines target endpoint.&lt;/p&gt;

&lt;p&gt;For more information on the anynines Public PaaS, check out their &lt;a href="https://paas.anynines.com/"&gt;official website&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Cloud Foundry has a wide range of services and providers that can be used by individual developers and large scale enterprises. Using Cloud Foundry eliminates the stress of ops, gives you flexibility and provides a proven developer experience for Kubernetes.&lt;/p&gt;

&lt;p&gt;What features, concepts or providers of Cloud Foundry do you find interesting? Let us know in the comments section.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Cloud Foundry Summit Europe 2020 is built by and for the Cloud Foundry community. Whether you're new to Cloud Foundry, you're a long-time contributor building the platform, or you're using Cloud Foundry to attain your business goals, Cloud Foundry Summit is the place to collaborate with other developers, operators, CIOs and IT professionals to shape the future of the project, share best practices and innovate together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dates: Oct 21st &amp;amp; 22nd 2020&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The best way to connect with the Cloud Foundry community is to join our Slack Workspace at (&lt;a href="https://slack.cloudfoundry.org/"&gt;https://slack.cloudfoundry.org/&lt;/a&gt;). Those in the Slack community help you get quickly connected with other members or someone from the Cloud Foundry Foundation.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>cloudfoundry</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Deploy a Nodejs App to Cloud Foundry</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Thu, 27 Aug 2020 13:19:24 +0000</pubDate>
      <link>https://dev.to/cloudfoundry/deploy-a-nodejs-app-to-cloud-foundry-52em</link>
      <guid>https://dev.to/cloudfoundry/deploy-a-nodejs-app-to-cloud-foundry-52em</guid>
      <description>&lt;p&gt;I recently joined the Cloud Foundry Foundation as a Developer Advocate and I've been learning about the &lt;a href="http://cloudfoundry.org/"&gt;Cloud Foundry&lt;/a&gt; project lately and it's been a great experience so far. Most recently, I successfully deployed an existing Nodejs application on Cloud Foundry via one of its commercial distribution called &lt;a href="https://run.pivotal.io"&gt;Pivotal Web Services&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This tutorial will cover how I was able to deploy a Nodejs application on Cloud Foundry via Pivotal Web Services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cloud Foundry?
&lt;/h2&gt;

&lt;p&gt;According to its official website, Cloud Foundry is an open-source platform that allows application development teams to build, test, deploy, and scale applications. &lt;/p&gt;

&lt;p&gt;It also provides an underlying infrastructure including Kubernetes, developer frameworks, and application services.&lt;/p&gt;

&lt;p&gt;Cloud Foundry is known for its awesome developer experience. The project is backed by Google, IBM, Microsoft, VMware (owners of Pivotal Web Services), SAP, SUSE, and more.&lt;/p&gt;

&lt;p&gt;Cloud Foundry takes the workload off developers and lets them ​​focus on only the application code and business outcomes by making all those tasking deployment processes disappear.&lt;/p&gt;

&lt;p&gt;In summary, Cloud Foundry takes ​away the burden of managing complexity and running containerized workloads of an application from developers and allows them to worry or stay focused on application code and the business outcomes. Asides from just taking away the burden, it also provides benefits. For example, packing and containerization come free.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Pivotal Web Services
&lt;/h2&gt;

&lt;p&gt;Pivotal Web Services (PWS) is a hosted version of the VMware Tanzu Application Service(formerly known as Pivotal Cloud Foundry).&lt;/p&gt;

&lt;p&gt;The VMware Tanzu Application Service is a distribution of the open-source Cloud Foundry platform that includes additional features and services that expand the capabilities of Cloud Foundry. It is commercially available for everyone, and it is ready to use.&lt;/p&gt;

&lt;p&gt;For this tutorial, we would need to create a Pivotal Web Services account and you can do that &lt;a href="http://run.pivotal.io"&gt;here&lt;/a&gt;, follow the link and sign up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying a Nodejs Application
&lt;/h2&gt;

&lt;p&gt;After signing up on Pivotal and you have successfully logged in, you'll be asked to select "where to", click on Pivotal Web Services and you'll be taken to the Pivotal Web Services console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dM7XFy2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AFgCVvwGHR_ruAwj0fpbRcw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dM7XFy2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AFgCVvwGHR_ruAwj0fpbRcw.png" alt="Where To"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, you'll be directly taken to the console where you'll be asked to create a company, this company will serve as your organization name and it can be named anything. Go ahead and fill in the company name and start a free trial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qj1gUMoA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2At40Zmz3d21DWOA6eSNTjDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qj1gUMoA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2At40Zmz3d21DWOA6eSNTjDQ.png" alt="Sign up for free trial screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you click on start free trial, you'll be taken to another process where you'll need to select your country and verify your phone number for security reasons. Fill the input fields and click on send my code, a six-digit code will be sent to you and you'll use this code to verify your account.&lt;br&gt;
If all goes well with the verification, you'll be taken to the last process of verification where you'll need to create an organization, an organization (org) is a development account that encompasses computing resources, apps, and services. It can be owned and used by an individual or multiple collaborators.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a06q2YCI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AJPcXmFUyu_irHF43vsPhZQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a06q2YCI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AJPcXmFUyu_irHF43vsPhZQ.png" alt="Create a Trial Org Screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go ahead and name your organization whatever you choose to name it and click on Start Free Trial. (I named my organization "demo-12" ).&lt;br&gt;
Now, you should see your PWS console with your organization name, and the space you created, in my case "development", will be displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ldrdnvz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A0Ulv668kZ0TCeXZDG99Now.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ldrdnvz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A0Ulv668kZ0TCeXZDG99Now.png" alt="My PWS console page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Next thing we'll need to do is to go to our terminal and install the Cloud Foundry CLI, we'll be using the official Cloud Foundry CLI to interact with our Pivotal Web Services console.&lt;/p&gt;

&lt;p&gt;To install the Cloud Foundry CLI, please visit &lt;a href="https://docs.cloudfoundry.org/cf-cli/install-go-cli.html"&gt;here&lt;/a&gt; to find the installation instructions for your preferred operating system.&lt;/p&gt;
&lt;h2&gt;
  
  
  Interacting with the Cloud Foundry Official CLI
&lt;/h2&gt;

&lt;p&gt;After you have successfully installed the Cloud Foundry CLI, in other to confirm that it's available on your machine, please run the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running the command above, If it shows what it is displayed in the image below then the CLI is installed on your machine. If it doesn't you should try to go over the installation processes again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TUSEygck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AvjNKtktJHqzVeT58SAViFA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TUSEygck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AvjNKtktJHqzVeT58SAViFA.png" alt="CF command display on Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Login to Our Pivotal Web Services Development Space
&lt;/h3&gt;

&lt;p&gt;The next thing to do is that we need to is to log into our Pivotal Web Services development space so that we can have direct access to our console right from our terminal. &lt;br&gt;
To login run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running that command, you'll be asked for the API endpoint, type in &lt;a href="https://api.run.pivotal.io"&gt;https://api.run.pivotal.io&lt;/a&gt;, and press Enter.&lt;/p&gt;

&lt;p&gt;You'll then be asked for the email address and password you used to create your PWS account, type that in and you'll be logged in if all your credentials are correct.&lt;/p&gt;

&lt;p&gt;Below is an image of what the end of the process should look like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E-zxt-Vj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AqPfO1kacX4L52pj96L6V6Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E-zxt-Vj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AqPfO1kacX4L52pj96L6V6Q.png" alt="Cf Login Result on Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have not noticed already, the CLI shows the organization and space we created and that is available on our account.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Power of CF Push
&lt;/h3&gt;

&lt;p&gt;We can easily deploy our app to Cloud Foundry with just this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf push &amp;lt;app name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where the  should contain the name we want to give our application.&lt;/p&gt;

&lt;p&gt;After running the command above it goes through a series of processes and it usually takes a while during the initial deployment, so sit back and relax.&lt;/p&gt;

&lt;p&gt;If the deployment is carried out successfully, you should see the following details on your terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M6emK99p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AFzFeMK6Bf7hKt0YtWIJrGw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M6emK99p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AFzFeMK6Bf7hKt0YtWIJrGw.png" alt="Deployment Successful on Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you get something similar to the above image on your terminal, it means the deployment was successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When We Run cf push
&lt;/h2&gt;

&lt;p&gt;Let's quickly run through the processes that were carried out when we run the cf push command.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The application manifest (manifest.yml) is pushed to the space specified on PWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application information is also recognized and pulled &lt;br&gt;
in by the Cloud Foundry CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A route for our application is created, this is the auto-generated link where we can see our application live.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application files are uploaded on cloud foundry.&lt;br&gt;
The application-specific buildpack will be recognized and loaded based on the buildpack.yml file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application is uploaded completely in various steps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application is started and can be seen live using the auto-generated route link.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application environmental variables will be injected into the application if we have specified some. We can specify environmental variables by running the following command:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cf set-env APP_NAME ENV_VAR_NAME ENV_VAR_VALUE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;APP_NAME = The application name specified in the manifest.yml file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ENV_VAR_NAME = The environmental variable name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ENV_VAR_VALUE = The environmental variable value.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Viewing Our Application Live
&lt;/h2&gt;

&lt;p&gt;In other to see our application live, we have to confirm on the PWS console that our app is running. We can see that in the space where the app will be pushed. &lt;/p&gt;

&lt;p&gt;Here is an image of the PWS console now that we've deployed our application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LMb2kAQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AVWQt9KbAmtL0Ww-Exq8sjA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LMb2kAQC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AVWQt9KbAmtL0Ww-Exq8sjA.png" alt="PWS Console + Application Running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we should visit the route generated, we should see our application deployed live. &lt;/p&gt;

&lt;p&gt;Here is an image of how our application looks like when deployed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4HH9DkBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A7jX-uYyLGpbIVGvacFmJ3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4HH9DkBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A7jX-uYyLGpbIVGvacFmJ3w.png" alt="Our Deployed Application Live!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it, we have successfully deployed a nodejs application on Cloud Foundry via the Pivotal Web Services console and the Cloud Foundry CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting &amp;amp; Stopping Our Application
&lt;/h2&gt;

&lt;p&gt;If you decide to stop your application from running at any point, you can do this by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf stop &amp;lt;app name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command will stop our application from running. We can always restart our application by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cf start &amp;lt;app name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Extra Configuration For Our Application.
&lt;/h2&gt;

&lt;p&gt;In other to prepare our application for large scale deployment, we need to create files that will allow Cloud Foundry to recognize the technology used to build our application and also allow us specify custom setting like Memory Size etc. &lt;/p&gt;

&lt;p&gt;Just like Heroku, it uses buildpacks to carry this process out and now we will need to specify the proper buildpack for our application which is the nodejs buildpack.&lt;/p&gt;

&lt;p&gt;We are doing this because we need our application to be deployed without stress and also just in case we need some extra or custom settings or specifications for our app deployment.&lt;/p&gt;

&lt;p&gt;In our application, we need to create two files &lt;em&gt;manifest.yml&lt;/em&gt; and &lt;em&gt;buildpack.yml&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The buildpack.yml file will hold all the configuration details for the buildpack we use for our application, read more about it &lt;a href="https://docs.cloudfoundry.org/buildpacks/custom.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The mainifest.yml file will hold certain deployment information about our application, read more about this &lt;a href="https://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In my case this the content of my manifest.yml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;applications&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;exchange-rate-spa&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;node server.js&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;512M&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is also the content of my buildpack.yml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;nodejs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;13.x&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Possible Errors You Could Encounter While Deploying a Nodejs Application on Cloud Foundry Via Pivotal
&lt;/h2&gt;

&lt;p&gt;Here are a couple of errors I encountered while trying to deploy a node app for the first time with cf push and how I was able to fix them.&lt;/p&gt;

&lt;p&gt;Error 1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Failed; The resource file mode is invalid: File mode '444' with path 'npm-cache/_cacache/content-v2/sha1/8a/03/9d2d1021d22d1ea14c80d8ea468ba2ef3fcc' is invalid. Minimum file mode is '0600' FAILED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fix 1:&lt;/strong&gt; Change the permissions of the app folder with and try to cf push again&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; 700 &lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fix 2:&lt;/strong&gt; If Fix 1 doesn't work, check if you're using the right PWS distribution or create a .cfignore file and add node_modules/.cache.&lt;/p&gt;

&lt;p&gt;Error 2.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error staging application: App staging failed in the buildpack compile phase
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Check if the version of nodejs in package.json and buildpack.yml is the same thing and also make sure you're using a compatible version of node.&lt;/p&gt;

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

&lt;p&gt;We have successfully deployed a nodejs and it was a pretty interesting process. You can learn more about deploying nodejs apps on Cloud Foundry by reading the &lt;a href="https://docs.cloudfoundry.org/buildpacks/node/node-tips.html"&gt;official documentation&lt;/a&gt;. &lt;br&gt;
Cloud Foundry really makes it easy to scale and deploy your applications, if you have a favourite feature of Cloud Foundry let us know in the comments section.&lt;/p&gt;

&lt;p&gt;The supporting repo for this article can be found &lt;a href="https://github.com/hacktivist123/Exchange-Value"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Cloud Foundry Summit Europe 2020 is built by and for the Cloud Foundry community. Whether you're new to Cloud Foundry, you're a long-time contributor building the platform, or you're using Cloud Foundry to attain your business goals, Cloud Foundry Summit is the place to collaborate with other developers, operators, CIOs and IT professionals to shape the future of the project, share best practices and innovate together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dates: Oct 21st &amp;amp; 22nd 2020&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The best way to connect with the Cloud Foundry community is to join our Slack Workspace at (&lt;a href="https://slack.cloudfoundry.org/"&gt;https://slack.cloudfoundry.org/&lt;/a&gt;). Those in the Slack community help you get quickly connected with other members or someone from the Cloud Foundry Foundation.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cloudfoundry</category>
      <category>kubernetes</category>
      <category>node</category>
    </item>
    <item>
      <title>Random Thoughts on Building APIs</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Wed, 15 Jan 2020 14:46:50 +0000</pubDate>
      <link>https://dev.to/sheddy_nathan/random-thoughts-on-building-apis-5h67</link>
      <guid>https://dev.to/sheddy_nathan/random-thoughts-on-building-apis-5h67</guid>
      <description>&lt;p&gt;&lt;strong&gt;Random thoughts on Building APIs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UWHTc9zu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/824/1%2Aw3FVjskCNAY1vNCMu936Sw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UWHTc9zu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/824/1%2Aw3FVjskCNAY1vNCMu936Sw.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;API&lt;/strong&gt; is a set of programming code that enables data transmission between one software product and another. It also contains the terms of this data exchange. There are various processes or methodologies to follow when building an API, below is a list of certain steps that are worth following when building APIs in my opinion.&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Choose an API Style ( REST/GRAPHQL ) 🤔&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APIs&lt;/strong&gt; are not limited to just endpoints business should always come first when choosing your API style. The API style that you chose should complement the solution you're trying to build and not the other way round. &lt;/p&gt;

&lt;p&gt;I honestly can't say much on when to use each style but then making a proper research and knowing what your business needs should help out.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;API&lt;/strong&gt; endpoint is the point of entry in a communication channel when two systems are interacting.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;REST API&lt;/strong&gt; is an API that has different endpoints, doing different things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GraphQL&lt;/strong&gt; doesn’t have an endpoint for different things but just one endpoint, you just tell the single endpoint what you want in a graphql query language. &lt;/p&gt;

&lt;p&gt;The difference between both is: a &lt;strong&gt;REST API&lt;/strong&gt; is always going to return the same type of data if you give the endpoint the same parameter whereas a &lt;strong&gt;GraphQL query&lt;/strong&gt;, even though you only want a very specific amount of data, you just ask for that specific amount of data.&lt;/p&gt;

&lt;p&gt;The big difference is that &lt;strong&gt;REST APIs&lt;/strong&gt; have many endpoints while &lt;strong&gt;GraphQL&lt;/strong&gt; has just one endpoint. &lt;/p&gt;

&lt;p&gt;Other types of APIs in the past we’ve had &lt;strong&gt;SOAP&lt;/strong&gt; but those are a thing of the past unless you’re working in a more matured industry like Banks and other financial institutions where you’re working with technologies that are 10-15 years old. Choosing any of these &lt;strong&gt;APIs&lt;/strong&gt; depends on what exactly you want to do. REST is my personal favorite, by the way, I’m still &lt;strong&gt;RESTing😅&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lastly, REST and GRAPHQL aren’t things you &lt;strong&gt;&lt;code&gt;npm install graphql/rest&lt;/code&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;code&gt;yarn install graphql/rest&lt;/code&gt;&lt;/strong&gt; but they are certain methodologies as to how you want things to be structured. It’s not a piece of software that you go out and build but a way you tackle things.&lt;/p&gt;

&lt;p&gt;In the next steps, my focus is going to entirely be on building RES &lt;strong&gt;T APIs&lt;/strong&gt; because that's what I'm most familiar with but I'll drop links down below for further reading on both &lt;strong&gt;GraphQL and REST.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Set up a server 💻&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now you have to make use of a server that is going to accept the request whether a &lt;strong&gt;REST&lt;/strong&gt; request or &lt;strong&gt;GraphQL&lt;/strong&gt; request, do the work and return a response. You can do this in any language out there but being a javascript developer, I’d probably reach for Express, that is what I personally run all my own endpoints from. &lt;strong&gt;Koa&lt;/strong&gt; seems to be a pretty popular server for specifically creating &lt;strong&gt;APIs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The thing about Express is that you’re going to need to reach out to middlewares for doing things like authentication or rate-limiting or even blacklisting.&lt;/p&gt;

&lt;p&gt;The beauty of Express is that for almost everything that you need there’s almost some sort of &lt;strong&gt;middleware&lt;/strong&gt; or &lt;strong&gt;plugin&lt;/strong&gt; that someone has written that will just immediately add all of that functionality to any of your requests. And of course, you can use any language you want to create an &lt;strong&gt;API&lt;/strong&gt;, you could use Laravel if you write PHP, Ruby on Rails. Any server out there that can accept a request and return a response can be used to make an &lt;strong&gt;API&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Figure out how to name the API endpoints properly 😓&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Naming things is one of the hardest parts of software development, it is quite difficult for developers to correctly name things. I generally like to use a noun for my API endpoints, never use a verb. There's a website called &lt;a href="https://restfulapi.net/resource-naming/"&gt;RestfulAPI&lt;/a&gt;, it has a whole page for best practices in naming &lt;strong&gt;APIs.&lt;/strong&gt; It's easy to name APIs at first but when things get complicated it becomes quite difficult and messy. This is where &lt;strong&gt;GraphQL&lt;/strong&gt; becomes advantageous and better than &lt;strong&gt;REST APIs&lt;/strong&gt;, you don't need to create various endpoints with various names. You have just one endpoint doing everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Write the Resolvers/Controllers ✍️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where we make things happen, I like to call it resolvers or controllers and this is where the actual work happens. &lt;br&gt;
When someone uses your API they are CRUD-ing (Create, Read, Update, Delete). Now when someone hits any of your API endpoints you need to do the work either looking up stuff in the database, authentication, saving data to a DB that's what I'd call a resolver. It gets the data, updates the data and sends back to the user with a code to show the user what happened, these codes are called &lt;strong&gt;Http&lt;/strong&gt;  &lt;strong&gt;Response Code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Figure out how to secure it and prevent it from malicious attacks ❌&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a couple of ways you can secure an API. The simplest form of security is to only accept requests from logged-in users, so that could be a cookie session, a JWT or you can use AUTH which is sort of complex. Other ways are to provide API keys for people accessing your APIs and also a random id so that you can track the number of requests that goes through that API key. You can use CORS(Cross-origin Resource Sharing), which means whether the API should be accessible in the browser or is it to be accessed on the server. There's also keeping the access level of your users in mind, make sure only admin level users can have access to every user information.&lt;/p&gt;

&lt;p&gt;Protecting your &lt;strong&gt;API&lt;/strong&gt; is not necessarily the same thing as securing your API but it's along the same lines though, you'd want to protect your servers, computers that are serving up this data from all sorts of malicious and intentionally and unintentionally threats. One of the things you can do is to rate limit by &lt;strong&gt;API Key&lt;/strong&gt; or by &lt;strong&gt;IP Address&lt;/strong&gt;, so if somebody is doing something more than usual you can tell the user to chill for a while and try again or else you won't serve the data again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Document the API 📝&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This actually a huge thing, if you have an &lt;strong&gt;API&lt;/strong&gt; and expect anyone to use it or even yourself, you need to document it. you have to pay close attention to how you are doing it and in my mind, the best option is to copy the people doing it well and don't try to make things up. For example, Stripe has very good documentation, one of the best I've seen. Check it out &lt;a href="https://stripe.com/docs/api"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Document what parameters, headers that can be accessed and even up to the tiniest of details. Parameters even if they aren't required. They need to be properly documented. Also, the document needs to get back when someone hits a particular endpoint. You can also document your public &lt;strong&gt;API&lt;/strong&gt; to match various languages in case your users are global, it's called &lt;strong&gt;Internalization(i8n)&lt;/strong&gt; and &lt;strong&gt;Localization.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another thing you need to learn to put in your API documentation are the &lt;strong&gt;HTTP verbs&lt;/strong&gt;. When you make a request in any language you can send that request as any number of different verbs, you can make a &lt;strong&gt;GET&lt;/strong&gt; request which is used to get data from the server, a &lt;strong&gt;POST&lt;/strong&gt; request which is used to send data to the server, &lt;strong&gt;PUT&lt;/strong&gt; request which is used to update data and a &lt;strong&gt;DELETE&lt;/strong&gt; request which is used to remove data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus: Versioning the API&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A lot of times, companies have different versions of an API because the existing structure of the current API is not going to be the same forever and many of these &lt;strong&gt;APIs&lt;/strong&gt; give you the ability to use an older version of the API that way if you hit the API endpoint, it's not going to magically change on you. So by versioning it, it's kind of locking functionality to a given point in time. &lt;/p&gt;

&lt;p&gt;Companies that do this really well obviously, it's &lt;strong&gt;Stripe&lt;/strong&gt;. &lt;br&gt;
Within their API docs, you can set the version of their API that you need. &lt;/p&gt;

&lt;p&gt;Versioning API an API is an extremely important thing because it gives you the correct version of the &lt;strong&gt;API endpoint&lt;/strong&gt; that you want to hit. It also gives library authors the ability to update and change the API, but then you don't want to go and change things often and like crazy otherwise, you will get a lot of people upset.&lt;/p&gt;

&lt;p&gt;Further Reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.back4app.com/2019/11/25/when-to-use-graphql/"&gt;https://blog.back4app.com/2019/11/25/when-to-use-graphql/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.altexsoft.com/blog/engineering/what-is-api-definition-types-specifications-documentation/"&gt;https://www.altexsoft.com/blog/engineering/what-is-api-definition-types-specifications-documentation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/xngwng/rest-vs-graphql-apis-the-good-the-bad-the-ugly-34i8"&gt;https://www.moesif.com/blog/technical/graphql/REST-vs-GraphQL-APIs-the-good-the-bad-the-ugly/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://xalitech.com/graphql-how-to-convince-your-boss/"&gt;https://xalitech.com/graphql-how-to-convince-your-boss/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/sadarshannaiynar/graphql-or-rest-what-should-i-use-38mj"&gt;https://dev.to/sadarshannaiynar/graphql-or-rest-what-should-i-use-38mj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction"&gt;https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.howtographql.com/"&gt;https://www.howtographql.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.restapitutorial.com/"&gt;https://www.restapitutorial.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>programming</category>
      <category>api</category>
      <category>apidevelopment</category>
    </item>
    <item>
      <title>Possible ways to reduce your webpack bundle size | JS SECRETS</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Mon, 18 Mar 2019 14:22:03 +0000</pubDate>
      <link>https://dev.to/coder_blvck/possible-ways-to-reduce-your-webpack-bundle-size-js-secrets-550</link>
      <guid>https://dev.to/coder_blvck/possible-ways-to-reduce-your-webpack-bundle-size-js-secrets-550</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv5nafzlay4xindli1uy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv5nafzlay4xindli1uy.jpeg" alt="Promotional Image" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original image source : &lt;a href="https://images.ctfassets.net/nj2caiz7hkjw/3VoFdDTP5SowwESKIOAgm/a111ddd784928b61045c8e811e1769be/webpack.png" rel="noopener noreferrer"&gt;https://images.ctfassets.net/nj2caiz7hkjw/3VoFdDTP5SowwESKIOAgm/a111ddd784928b61045c8e811e1769be/webpack.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://webpack.js.org/concepts" rel="noopener noreferrer"&gt;webpack’s official website&lt;/a&gt;, webpack is a &lt;em&gt;static module bundler&lt;/em&gt; for modern JavaScript applications. When webpack processes your application, it internally builds a &lt;a href="https://webpack.js.org/concepts/dependency-graph/" rel="noopener noreferrer"&gt;dependency graph&lt;/a&gt; which maps every module your project needs and generates one or more &lt;em&gt;bundles&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Webpack can take care of bundling alongside a separate task runner. However, the line between bundler and task runner has become blurred thanks to community developed webpack plugins. Sometimes these plugins are used to perform tasks that are usually done outside of webpack, such as cleaning the build directory or deploying the build.&lt;/p&gt;

&lt;p&gt;It’s primarily a module bundler for your JavaScript, but it can be taught to transform all of your front-end assets like HTML, CSS, even images. It can give you more control over the number of HTTP requests your app is making and allows you to use other flavours of those assets (Pug, Sass, and ES8, for example). Webpack also allows you to easily consume packages from npm.&lt;/p&gt;

&lt;p&gt;Webpack is an awesome static bundler for your javascript applications but things can get a little messy when the size of your webpack bundle increases, it can drastically slow down the load time of your javascript applications.&lt;/p&gt;

&lt;p&gt;Here are some cool ways you can reduce your webpack bundle size:&lt;/p&gt;

&lt;h3&gt;
  
  
  SCOPE HOISTING
&lt;/h3&gt;

&lt;p&gt;Scope hoisting uses a smarter way to add the modules to the bundle.&lt;/p&gt;

&lt;p&gt;what can scope hoisting do:&lt;/p&gt;

&lt;p&gt;● Makes the JavaScript execute faster in the browser&lt;br&gt;&lt;br&gt;
 ● Can reduce the bundle size&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add this one line in the plugin section of your webpack.config.js file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;​​ webpack.optimize.ModuleConcatenationPlugin()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Although, it Requires webpack 3 or later.&lt;/p&gt;

&lt;h3&gt;
  
  
  USE WEBPACK 4 IN PRODUCTION
&lt;/h3&gt;

&lt;p&gt;This is really important because using webpack 4 in production automatically removes all unnecessary white spaces, new lines etc. It can also tell some packages not include debug code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;create your production bundle like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;webpack -p --mode=production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Things it does:&lt;/p&gt;

&lt;p&gt;● Enables minification with UglifyJS&lt;br&gt;&lt;br&gt;
 ● Sets NODE_ENV to production&lt;/p&gt;
&lt;h3&gt;
  
  
  USE LODASH-WEBPACK-PLUGIN
&lt;/h3&gt;

&lt;p&gt;If you are using lodash in your javascript project, you might want to check out lodash-webpack-plugin. It removes lodash features you don’t use. This will significantly reduce your bundle size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install the dependency from npm with the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install lodash-webpack-plugin -save--dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And require the module at the top of your webpack.config.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;​​ LodashModuleReplacementPlugin = ​require​(​’lodash-webpack-plugin’​);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;add this line in your webpack.config.js in the plugin section&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;new LodashModuleReplacementPlugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  USE A BUNDLE ANALYZER TOOL
&lt;/h3&gt;

&lt;p&gt;The bundle generated by webpack cannot be read by humans. But with a bundle analyzer humans can visualize the output bundle files in an interactive treemap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are many webpack bundle analysis tools. In my opinion, these two are the best:&lt;/p&gt;

&lt;p&gt;● &lt;a href="https://github.com/th0r/webpack-bundle-analyzer" rel="noopener noreferrer"&gt;https://github.com/th0r/webpack-bundle-analyzer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;● &lt;a href="https://github.com/danvk/source-map-explorer" rel="noopener noreferrer"&gt;https://github.com/danvk/source-map-explorer&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TREE SHAKING
&lt;/h3&gt;

&lt;p&gt;Tree shaking is the process of removing dead code from your bundle. Dead code is code that is exported without being imported anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Use ES6 module syntax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure you use ES6 modules and import by module name as much as possible. Like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { connect } ​from ”react-redux”​; ​​ ​
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;​​ import reactRedux ​from ”react-redux”​; ​​ ​
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2) Update .babel.rc&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add modules: false to your babel config (usually in .​ babel.rc​).&lt;/p&gt;

&lt;p&gt;If you are using es2015 preset, it should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;presets: [[​”es2015"​, { ​”modules”​: ​false​ }] ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using babel-preset-env, then it should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;presets: [[​”env”​, { ​”modules”​: ​false​ }] ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3) Make sure you are using webpack 2 or later&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CODE SPLITTING
&lt;/h3&gt;

&lt;p&gt;With webpack you can split your bundle up into many smaller ones and only load the bundles needed by each page. You can even load the bundle asynchronously!&lt;/p&gt;

&lt;p&gt;For example, if you have a modal, then you can carry out code splitting by loading code for that modal only when the user clicks on the button that would open the modal. This would increase load time because you would have not loaded any of the modal code on the initial page load&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Read more about how code splitting works:&lt;/p&gt;

&lt;p&gt;● &lt;a href="https://webpack.js.org/guides/code-splitting/" rel="noopener noreferrer"&gt;Code-splitting&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;● &lt;a href="https://survivejs.com/webpack/what-is-webpack/" rel="noopener noreferrer"&gt;https://survivejs.com/webpack/what-is-webpack/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
 ● &lt;a href="https://www.sitepoint.com/beginners-guide-webpack-module-bundling/" rel="noopener noreferrer"&gt;https://www.sitepoint.com/beginners-guide-webpack-module-bundling/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
 ● &lt;a href="https://webpack.js.org/concepts" rel="noopener noreferrer"&gt;https://webpack.js.org/concepts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://sheddynathan.me/ways-to-reduce-your-webpack-bundle-size/" rel="noopener noreferrer"&gt;&lt;em&gt;sheddynathan.me&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>#100DaysOfCode Day One</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Tue, 30 Oct 2018 04:50:06 +0000</pubDate>
      <link>https://dev.to/coder_blvck/100daysofcode-day-one-1eep</link>
      <guid>https://dev.to/coder_blvck/100daysofcode-day-one-1eep</guid>
      <description>&lt;p&gt;Last week I decided to publicly commit to the #100DaysOfCode Challenge to improve my coding skills and also to learn new stuff.&lt;/p&gt;

&lt;p&gt;So yesterday being day one I built a ToDO List with ReactJS and Redux.&lt;/p&gt;

&lt;p&gt;I learnt so many things again that I had forgotten in React and Redux, it was such a nice learning experience.&lt;/p&gt;

&lt;p&gt;Day2 Begins today, I’ll make a medium post again when I’m done with Day2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QUOTE FOR THE DAY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EvjEWSCG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AEdLcmci8tRnL6OiqY5GUtA%402x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EvjEWSCG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AEdLcmci8tRnL6OiqY5GUtA%402x.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>redux</category>
      <category>100daysofcode</category>
      <category>code</category>
      <category>react</category>
    </item>
    <item>
      <title>How to use Github Desktop with Gitlab</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Fri, 12 Oct 2018 07:31:31 +0000</pubDate>
      <link>https://dev.to/sheddy_nathan/how-to-use-github-desktop-with-gitlab-2o0n</link>
      <guid>https://dev.to/sheddy_nathan/how-to-use-github-desktop-with-gitlab-2o0n</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sad-2yIW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/800/1%2A041IZI22eO8lQqrjME0_YA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sad-2yIW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/800/1%2A041IZI22eO8lQqrjME0_YA.jpeg" alt=""&gt;&lt;/a&gt;Image src = “&lt;a href="https://www.techefeed.com/internet/get-started-github-desktop/"&gt;Techefeed&lt;/a&gt;”&lt;/p&gt;

&lt;p&gt;GitHub Desktop is a fast and easy way to contribute to projects from Windows and OS X, whether you are a seasoned user or new user, GitHub Desktop is designed to simplify all processes and workflow in your GitHub. GitHub Desktop is an open-source Electron-based GitHub app. It is written in TypeScript and uses React.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;source : &lt;a href="https://www.techefeed.com/internet/get-started-github-desktop/"&gt;https://www.techefeed.com/internet/get-started-github-desktop/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It has many awesome features like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Attributing commits with collaborators easily&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checkout branches with pull requests and view CI statuses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Syntax highlighted diffs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expanded image diff support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extensive editor &amp;amp; shell integrations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s open-source&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I personally prefer to use Github Desktop as my main git client rather than a Source Tree or Gitkraken.&lt;/p&gt;

&lt;p&gt;Last week, the &lt;a href="https://legalrobot.com"&gt;company&lt;/a&gt; I work for, decided to move all it’s codebase from Github to &lt;a href="https://gitlab.com"&gt;Gitlab&lt;/a&gt;. The reason is that Gitlab has out of the box features like integrated DevOps inbuilt into their system, unlike Github where you’ll have to do all these yourselves.&lt;/p&gt;

&lt;p&gt;Pre-gitlab we were using like 5 different tools and the complexity of integrating them all was getting out of hand and also quite expensive, trying to tie together New Relic, Codeship, Github, Jenkins, Chef, and Terraform was no fun… not to mention Digital Ocean, AWS, Azure, and MongoDB Cloud&lt;/p&gt;

&lt;p&gt;I am used to the GitHub environment because that’s all I’ve always worked with but I saw this as a challenge to adapt to a new environment.&lt;/p&gt;

&lt;p&gt;I was ready to move to Gitlab but I wasn’t ready to leave GitHub Desktop, so I decided to use Gitlab and GitHub Desktop. I began making research on how to use them both and then my boss gave me a useful resource that helped a lot, see link below:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://community.reclaimhosting.com/t/using-github-desktop-with-gitlab/876"&gt;https://community.reclaimhosting.com/t/using-github-desktop-with-gitlab/876&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It helped a lot but it was missing one vital step which was how to use GitHub Desktop with a Gitlab Repo that has 2FA(two-factor authentication) enabled.&lt;/p&gt;

&lt;p&gt;so let’s revisit the steps from scratch then I’ll put in the vital step.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclaimer: These steps are valid for only users of the GitHub Desktop Native&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step one:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;i. Download GitHub Desktop &lt;a href="https://desktop.github.com"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Go to your Gitlab repo&lt;/p&gt;

&lt;p&gt;iii. Click on settings&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V7M7ITar--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aw3soMTEc5K0Q0iCzadv3qQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V7M7ITar--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aw3soMTEc5K0Q0iCzadv3qQ.png" alt=""&gt;&lt;/a&gt;Circled settings&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step two:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What we’ll do now is to generate an access token for our GitHub desktop.&lt;/p&gt;

&lt;p&gt;After clicking on settings&lt;/p&gt;

&lt;p&gt;i. Click on Access Tokens&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvsvC3Ux--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXMmRvjhDqy0XXygAJnlpTg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvsvC3Ux--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AXMmRvjhDqy0XXygAJnlpTg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Generate an access token&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NtfeJVkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Adddg6tBT8yqSPURwiPcqsA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NtfeJVkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Adddg6tBT8yqSPURwiPcqsA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iii. Copy your new access token and store it somewhere as we’ll use it later:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NklqXEiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AYglJK_c8xxKTwBzvj_-q_w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NklqXEiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AYglJK_c8xxKTwBzvj_-q_w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step three:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;i. Head over to your repository and select https and copy the link,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l1TD5B0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ACCSybMcpqoSO2yEzEWVXDA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l1TD5B0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ACCSybMcpqoSO2yEzEWVXDA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. open GitHub Desktop from the file bar, select clone repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQulPnvj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Am9ca14FUXJJoTCfy-xN6sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQulPnvj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Am9ca14FUXJJoTCfy-xN6sg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iii. After selecting it, a modal would pop up, select URL and place the https link we copied from gitlab inside the URL field and select the destination folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IY8ZFoHC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5Hs2sv0w9MHwhk8ozqp5TQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IY8ZFoHC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5Hs2sv0w9MHwhk8ozqp5TQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. After filling all those fields, select clone&lt;/p&gt;

&lt;p&gt;v. While cloning, it would pop up a modal titled &lt;em&gt;authentication failed,&lt;/em&gt; you would then be required to put in your username and password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;N/B:&lt;/strong&gt; Your username is mostly your email address or whatever username you used to access your gitlab organization or repo.&lt;/p&gt;

&lt;p&gt;vi. Then your password would be the personal access token we created before, so head over to wherever you may have stored it and paste it.&lt;/p&gt;

&lt;p&gt;vii. After that click login or authenticate and if all goes well you should see something like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oNSBCsBD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiyX9y9Vt9-DOIq6VNjOIHg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oNSBCsBD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiyX9y9Vt9-DOIq6VNjOIHg.png" alt=""&gt;&lt;/a&gt;cloning (name of your project repo)&lt;/p&gt;

&lt;p&gt;After that, you would see this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--reJlyJcA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQLnUBwAQtYyuwUNuG7S_3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--reJlyJcA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQLnUBwAQtYyuwUNuG7S_3w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you can fetch from the origin, see all branches and use it as your preferred git client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And that’s how to use Gitlab with GitHub Desktop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions or you don’t understand any step feel free to reach out to me on &lt;a href="https://twitter.com/coder_blvck"&gt;twitter&lt;/a&gt;or drop your questions in the comments section.&lt;/p&gt;

&lt;p&gt;Thanks!!!&lt;/p&gt;

</description>
      <category>code</category>
      <category>git</category>
      <category>gitlab</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I am Facebook Developer Circles Lagos: Community Manager and also Open Source Africa: Co-organizer, Ask Me Anything!</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Wed, 27 Jun 2018 14:06:33 +0000</pubDate>
      <link>https://dev.to/coder_blvck/i-am-facebook-developer-circles-lagos-community-manager-and-also-open-source-africa-co-organizer-ask-me-anything-5ci3</link>
      <guid>https://dev.to/coder_blvck/i-am-facebook-developer-circles-lagos-community-manager-and-also-open-source-africa-co-organizer-ask-me-anything-5ci3</guid>
      <description>&lt;p&gt;I am also a fullstack javascript Developer, Blockchain Enthusiast&lt;/p&gt;

</description>
      <category>ama</category>
    </item>
    <item>
      <title>Practical Introduction to JavaScript Debugger;</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Fri, 06 Apr 2018 14:05:03 +0000</pubDate>
      <link>https://dev.to/sheddy_nathan/practical-introduction-to-javascript-debugger-25fa</link>
      <guid>https://dev.to/sheddy_nathan/practical-introduction-to-javascript-debugger-25fa</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_FTr0h3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/640/1%2AtVfk4Wueo1g3dik7jpGvGQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_FTr0h3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/640/1%2AtVfk4Wueo1g3dik7jpGvGQ.jpeg" alt=""&gt;&lt;/a&gt;The Questions We always ask ourselves while debugging&lt;/p&gt;

&lt;p&gt;Yo! It’s almost the End of the First Quarter of the Year. To Help us End it well I’m Gonna Give us Tips on How to Use the JavaScript {Debugger;} statement effectively to Debug our JavaScript Code Effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is JavaScript Debugger; ???&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The JavaScript Debugger Statement is used to debug our javascript code. It can be placed inside a function so as to help debug the function whenever we need to.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How Does it Work???&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YsM6Mobj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/225/1%2AuUd-wqwPagw5mxEolBaN6w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YsM6Mobj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/225/1%2AuUd-wqwPagw5mxEolBaN6w.jpeg" alt=""&gt;&lt;/a&gt;?????&lt;/p&gt;

&lt;p&gt;For Example, Let’s try reversing a string with javascript and Use the debugger statement to debug it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dKnh4nUh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/729/1%2AOfYFmnK5NOnBvUxgZC9tbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dKnh4nUh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/729/1%2AOfYFmnK5NOnBvUxgZC9tbg.png" alt=""&gt;&lt;/a&gt;This snippet uses the ES5 syntax as Rev(Reversed) and char(Character)&lt;/p&gt;

&lt;p&gt;Now we’ve established our code, ooh and if you noticed I’m using the ES5 syntax don’t be scared if you haven’t ported to ES5 you can still use the statement.&lt;/p&gt;

&lt;p&gt;Now lets drop in our debugger Statement. The debugger statement is to be put just before the main logic of the function. This is done because as we all know the computer reads from TOP to BOTTOM and from LEFT to RIGHT. So when the computer gets to reading the code and encounters the debugger statement it will because in execution and give us a chance to inspect some of the different variables that is in our program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C__YBPE4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/735/1%2At-aCS6h4C1xzVSrONmCn5A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C__YBPE4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/735/1%2At-aCS6h4C1xzVSrONmCn5A.png" alt=""&gt;&lt;/a&gt;yaay! we put in our Debugger statement&lt;/p&gt;

&lt;p&gt;This makes it extremely useful for debugging our code or developing and Algorithm solution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;To be able to use the debugger statement in a function, we’ll have to call the function after defining it like so;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L33YvXHR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/748/1%2A-63G4_r_g0K77SrKEu3pUQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L33YvXHR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/748/1%2A-63G4_r_g0K77SrKEu3pUQ.png" alt=""&gt;&lt;/a&gt;so we are initializing the function with ‘asdf’&lt;/p&gt;

&lt;p&gt;If we run this in debugger mode , when the computer reaches the debugger statement it will pause at execution and allow us to inspect the different variables in our code. (I know I’m Repeating myself Goddammit , It’s for ya’ll to understand the key concept).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Debugger Mode in the Terminal.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now to test our debugger statement we’ll be using a Terminal for those with Linux and Mac-OS you’re safe and for the Windows guys I don’t advice you using the Command Prompt, I advice using the &lt;a href="https://git-scm.com/downloads"&gt;Git Bash (That&lt;/a&gt;’s if you haven’t already done it).&lt;/p&gt;

&lt;p&gt;Now, Having installed the required things, Head over to your Terminal and make sure you have installed &lt;a href="https://nodejs.org"&gt;Node&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To go in Debugger mode, Navigate to your working directory and type&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd cd \&amp;lt;your project folder\&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;While in your project folder Run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node inspect \&amp;lt;file you want to debug inside the folder\&amp;gt; e.g node inspect index.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;when you’ve run it this should be the output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BNXnt1Pq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/989/1%2AzUFWbqs0T5JA3lnT-w7RUA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BNXnt1Pq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/989/1%2AzUFWbqs0T5JA3lnT-w7RUA.png" alt=""&gt;&lt;/a&gt;This a mac-OS terminal, Git bash might be different or the linux terminal&lt;/p&gt;

&lt;p&gt;You see where the debug statement is that’s where we’ll write our commands&lt;/p&gt;

&lt;p&gt;So we just Launched that file in Debugger Mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT NEXT??
&lt;/h3&gt;

&lt;p&gt;To tell the Debugger to Continue Debugging our code you can run the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Continue //or Cont //or C
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you run the command this should be our output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xrlaIbHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1006/1%2AG3ty7DpLL5GtJlHWreUH6Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xrlaIbHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1006/1%2AG3ty7DpLL5GtJlHWreUH6Q.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the terminal, you will see our entire function displayed and the debugger statement highlighted in Green. That’s how sweet the debugger statement is.&lt;/p&gt;

&lt;p&gt;To inspect a variable let’s say the (str), you can’t just write str and expect it to work, if ‘str’ is entered here is what will be displayed&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UCPa6IFG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1005/1%2AgP8UeKBlk17CuWhcCml3zg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UCPa6IFG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1005/1%2AgP8UeKBlk17CuWhcCml3zg.png" alt=""&gt;&lt;/a&gt;The Error message!&lt;/p&gt;

&lt;p&gt;To be able to make this work we’ll have to enter the REPL mode which stands for READ EDIT something something(whatever)!&lt;/p&gt;

&lt;p&gt;To enter the REPL mode we run the commamnd&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This should be the output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oMGMcrm1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/949/1%2AZwfEdNcesfW7XS1907hMiQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oMGMcrm1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/949/1%2AZwfEdNcesfW7XS1907hMiQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Inspecting our Variables In REPL mode
&lt;/h3&gt;

&lt;p&gt;When you are in REPL mode, It opens a JavaScript console that you can use to inspect variables now lets inspect our String&lt;/p&gt;

&lt;p&gt;Typing str should bring out ‘asdf’ because we assigned asdf as our str in our code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J3CWECTE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/987/1%2A1M9A_5aClHfDlJAYoikNfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J3CWECTE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/987/1%2A1M9A_5aClHfDlJAYoikNfg.png" alt=""&gt;&lt;/a&gt;it returns str i.e our variable assignment works&lt;/p&gt;

&lt;p&gt;Now what if we Put in the main logic of our function i.e we reverse the string ‘asdf’ , if our function works, it will return ‘fdsa’ so lets try it out . If i copy&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;str.split('').reduce((rev, char)=\&amp;gt; char + rev, '');
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and paste it in the repl console it should return the reversed string like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xck4P2eF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/844/1%2APp_aZ0KXXdUplAw8oD6Juw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xck4P2eF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/844/1%2APp_aZ0KXXdUplAw8oD6Juw.png" alt=""&gt;&lt;/a&gt;yes! our function works.&lt;/p&gt;

&lt;p&gt;Remember to copy and paste in a terminal is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ctrl + Alt + C //Copy ctrl + Alt + V //Paste
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To leave REPL mode and go back to debug mode hit &lt;strong&gt;&lt;em&gt;Ctrl + C&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When in debug mode we’ll run the code again just to show us another issue .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In a single session the debugger can run for as many times as where the debugger statement appears&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since i assigned it in only one function this is the output when put in  &lt;strong&gt;&lt;em&gt;C&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nb9iC0j7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/997/1%2Ayn4j6x8gL8YTaCMk2D8Ijw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nb9iC0j7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/997/1%2Ayn4j6x8gL8YTaCMk2D8Ijw.png" alt=""&gt;&lt;/a&gt;It shows nothing&lt;/p&gt;

&lt;p&gt;It shows just that message because there is no Debugger statement in our Code.&lt;/p&gt;

&lt;p&gt;To Leave the Debugger type &lt;strong&gt;_ exit_&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And That’s it , &lt;strong&gt;A Practical Intro to Javascript Debugger;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D0dDUFvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/260/1%2AeOCkAJeeX_UZXj2YvTtSJw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D0dDUFvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/260/1%2AeOCkAJeeX_UZXj2YvTtSJw.jpeg" alt=""&gt;&lt;/a&gt;Our faces right now!&lt;/p&gt;

&lt;p&gt;Hi me on &lt;a href="https://twitter.com/coder_blvck"&gt;twitter&lt;/a&gt; to say HI! or Ask a Question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Gracias Amigos!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bit.ly/codeburst"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NoYXKpHM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ai3hPOj27LTt0ZPn5TQuhZg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>debugging</category>
      <category>webdev</category>
      <category>coding</category>
    </item>
    <item>
      <title>I kicked off my Software Development Career in 2017.</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Thu, 11 Jan 2018 16:30:40 +0000</pubDate>
      <link>https://dev.to/sheddy_nathan/i-kicked-off-my-software-development-career-in-2017-2el4</link>
      <guid>https://dev.to/sheddy_nathan/i-kicked-off-my-software-development-career-in-2017-2el4</guid>
      <description>&lt;p&gt;Hola amigos, feliz año nuevo(currently Learning Spanish {don’t mind me}).&lt;/p&gt;

&lt;p&gt;In English, Hello Friends, Happy New Year. 2017 is Gone: console.log(Hello 2018);&lt;/p&gt;

&lt;p&gt;I think is high time I penned down something again.&lt;/p&gt;

&lt;p&gt;2017 was the Year i was Reborn technically, My Software development Career began in 2017.&lt;/p&gt;

&lt;p&gt;Here is my Path to software development:&lt;/p&gt;

&lt;p&gt;In 2013 I wanted to become a lawyer but after a day I Arts class I gave up. Eventually in 2014, I knew Iwanted to study computer science but it was only by mouth , I wasn’t really doing anything to achieve my dreams.&lt;/p&gt;

&lt;p&gt;Because where I live in Kaduna, a State in Nigeria. There Wasn’t really a place where you could learn Software development at that time and not that I know of.&lt;/p&gt;

&lt;p&gt;I didn’t even know what software development was, but after finishing Junior Secondary School, I went to a Cyber Cafe(A kind of place in my country where you could browse the Internet with their PCs for an amount and within a stipulated amount of time and you can also learn how to use a computer.) for a 3months course on Computer Appreciation.&lt;/p&gt;

&lt;p&gt;While learning over there, I discovered Programming languages, I was so keen at building something. That’s when i discovered HTML&amp;amp;CSS.&lt;/p&gt;

&lt;p&gt;So, I forced my dad to buy me a Laptop he got me a HP 6930p elitebook, and I learnt HTML&amp;amp;CSS for a month or two after that I stopped and went back to school and when I was done with High school I thought about what Iwanted to do.&lt;/p&gt;

&lt;p&gt;In December 2016, I got admission into a college in Lagos, Nigeria.&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%2Fcdn-images-1.medium.com%2Fmax%2F720%2F1%2ACP1t2Ll7UgyaDi2zxKFA5g.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%2Fcdn-images-1.medium.com%2Fmax%2F720%2F1%2ACP1t2Ll7UgyaDi2zxKFA5g.png"&gt;&lt;/a&gt;A Picture of Yaba Valley In lagos, NIgeria (Img src= ‘Google’).&lt;/p&gt;

&lt;p&gt;On the 1st of February 2017, I went to college, It was my first day at school, there Imet &lt;a href="https://medium.com/u/53d5acc6d585" rel="noopener noreferrer"&gt;Segun Olumide,&lt;/a&gt; this Guy changed my life.&lt;/p&gt;

&lt;p&gt;He asked me few questions about my course of study and some other stuff.&lt;/p&gt;

&lt;p&gt;P.S: I am not studying computer science instead Mechatronics Engineering Technology.&lt;/p&gt;

&lt;p&gt;He asked me if I knew anything about programming , I told him Yes, I knew Little HTML &amp;amp; CSS. He was like okay I’ll add you to a Whatsapp group where you can meet people and learn .&lt;/p&gt;

&lt;p&gt;while he was telling me about what he had done with programming that old love for building the next big thing came up. I was so determined to learn Programming.&lt;/p&gt;

&lt;p&gt;While I was in his whatsapp group , I saw a link to a Meetup for Designers and Design Thinking called &lt;a href="https://medium.com/u/9b8d793f0238" rel="noopener noreferrer"&gt;UXLagos == usable.&lt;/a&gt; That was the first ever Meetup , I had ever been too. I was so excited especially when I got to the venue of the event &lt;a href="https://medium.com/u/cd1d06186e29" rel="noopener noreferrer"&gt;Co-Creation Hub&lt;/a&gt; and they had an elevator.&lt;/p&gt;

&lt;p&gt;There weren’t many Elevators in Kaduna state where I came from(and it was my first time in Lagos) , and it was my first time seeing one. Unfortunately for me I couldn’t use it as it was down that day.&lt;/p&gt;

&lt;p&gt;I used the stairs, climbed to the 6th floor and behold a room filled with Developers, Designers, Product Managers. I had mad fun and Learned new things, met new friends and to top it all the pies served was awesome. Shout-out to &lt;a href="https://medium.com/u/698e0ccc5a7c" rel="noopener noreferrer"&gt;Kene Udeze&lt;/a&gt; and co. for Bringing up &lt;a href="https://medium.com/u/9b8d793f0238" rel="noopener noreferrer"&gt;UXLagos == usable.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that day, I Told Myself : Sheddy You have found a partner for life(Software Development.)&lt;/p&gt;

&lt;p&gt;Facebook also helped me Grow, I went up to &lt;a href="https://medium.com/u/53d5acc6d585" rel="noopener noreferrer"&gt;Segun Olumide&lt;/a&gt;’s Facebook Profile and Added from his friend list whomsoever was attached to web developeent and software development.(Nobody should Tell him This.)&lt;/p&gt;

&lt;p&gt;I learnt from their posts and arguments, and I was also making a lot of Newbie Noise on Facebook, Then I happen to meet &lt;a href="https://medium.com/u/fb80690688e0" rel="noopener noreferrer"&gt;Ada Nduka Oyom&lt;/a&gt; on facebook, she had been watching me and was always trying to correct whatsoever mistake I made when I posted on social media, she’d always say&lt;/p&gt;

&lt;p&gt;‘You need to watch the way you use words on facebook, avoid shortening words, people are watching you as a software developer, There is nothing like ‘chat language’.&lt;/p&gt;

&lt;p&gt;Even Up till now, I still hear her voice in my head anything I'm tweeting or face-booking. She’s like a social media Mummy to me.(I hope she don’t see this.). She influenced me a lot and am grateful.&lt;/p&gt;

&lt;p&gt;Let’s cut all the long talk and switch to the Juicy parts.&lt;/p&gt;

&lt;p&gt;During my learning phase I started off with python, then I dropped it and Fell madly in-love with JavaScript and front-end Development and I’m staying with her for life.&lt;/p&gt;

&lt;p&gt;I fed my thirst for knowledge from &lt;a href="https://medium.com/u/cd9d1a36e815" rel="noopener noreferrer"&gt;codeburst.io&lt;/a&gt; articles and tutorials(and today i’m writing for codeburst) , &lt;a href="https://medium.com/u/2929690a28fb" rel="noopener noreferrer"&gt;Udacity&lt;/a&gt; , &lt;a href="https://medium.com/u/b32aa0132f1b" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; &lt;a href="https://medium.com/u/8b318225c16a" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt; and other platforms for learing Web development.&lt;/p&gt;

&lt;p&gt;I began learning Agile Software Development and before the end of 2017 I was a better software developer.&lt;/p&gt;

&lt;p&gt;From just going to a single meetup, Today I Have attended over 20 Tech meetups and confrences.&lt;/p&gt;

&lt;p&gt;In August 2017, I Spoke at a Hackathon/Confrence called ISDEV Nigeria, with the likes of &lt;a href="https://medium.com/u/56574acf8b01" rel="noopener noreferrer"&gt;Femi TAIWO&lt;/a&gt; &lt;a href="https://medium.com/u/fb80690688e0" rel="noopener noreferrer"&gt;Ada Nduka Oyom&lt;/a&gt; &lt;a href="https://medium.com/u/37588c8420a9" rel="noopener noreferrer"&gt;Ehinze Emeka&lt;/a&gt;. It was a big honour for me. Thanks to &lt;a href="https://medium.com/u/8b80d627da81" rel="noopener noreferrer"&gt;Segun Joshua&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;here is the link to my slides: &lt;a href="https://www.slideshare.net/shedrackakintayo/progressivewebapps-by-sheddy-nathan-for-isdev2017" rel="noopener noreferrer"&gt;https://www.slideshare.net/shedrackakintayo/progressivewebapps-by-sheddy-nathan-for-isdev2017&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After That in November I went from total coding newbie to Hosting the biggest tech meetup in My school with the help of &lt;a href="https://medium.com/u/53d5acc6d585" rel="noopener noreferrer"&gt;Segun Olumide&lt;/a&gt; &lt;a href="https://medium.com/u/ba31d6be06df" rel="noopener noreferrer"&gt;Ademola&lt;/a&gt; , Thanks to &lt;a href="https://medium.com/u/2f9fbec421b0" rel="noopener noreferrer"&gt;Ingressive&lt;/a&gt; for making me one of their Campus Ambassadors and &lt;a href="https://medium.com/u/5c5f962e9d39" rel="noopener noreferrer"&gt;Adewale Abati ♠&lt;/a&gt; for the Mentor-ship.&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ar-lSTAdauOUZQ5tQ4iDPAQ.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2Ar-lSTAdauOUZQ5tQ4iDPAQ.jpeg"&gt;&lt;/a&gt;Me in Blue, Bending&lt;/p&gt;

&lt;p&gt;It was, more like a dream come true, It was the first ever tech meet-up in my school. I Hope it gets bigger in 2018 with the help of &lt;a href="https://medium.com/u/2f9fbec421b0" rel="noopener noreferrer"&gt;Ingressive&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Remember, the part I said I couldn’t use the elevator for the first time in my life, Thanks to &lt;a href="https://medium.com/u/ae9f10c0bf2a" rel="noopener noreferrer"&gt;FB Dev Circle Lagos&lt;/a&gt; , they had a meetup at a Tech hub called The Switch, I used their elevator Yipee!!!. It was awesome&lt;/p&gt;

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

&lt;p&gt;I was Growing really well, In December 2017 &lt;a href="https://medium.com/u/2ece039837f5" rel="noopener noreferrer"&gt;Innocent Amadi&lt;/a&gt; gave me the oppurtunity to Join the Community Managers for the Reactjs Community in Lagos Nigeria and also a memeber of the Facebook devcircle Extended leadership Team.&lt;/p&gt;

&lt;p&gt;Within The Year I had attended several notable tech events hosted by &lt;a href="https://medium.com/u/9faa0a344d95" rel="noopener noreferrer"&gt;GDG Lagos&lt;/a&gt; , &lt;a href="https://medium.com/u/ae9f10c0bf2a" rel="noopener noreferrer"&gt;FB Dev Circle Lagos&lt;/a&gt; &lt;a href="https://medium.com/u/a4d81c24b23" rel="noopener noreferrer"&gt;Andela&lt;/a&gt; , &lt;a href="https://medium.com/u/9ee8d41c2743" rel="noopener noreferrer"&gt;DigitalOcean&lt;/a&gt; e.t.c.&lt;/p&gt;

&lt;p&gt;I made a lot of friends in the Tech community in Nigeria in 2017 and learnt a lot from them and am still learning.&lt;/p&gt;

&lt;p&gt;Also In December 2017, I was interviewed by a tech blogger &lt;a href="https://medium.com/u/9069ae6cbb7d" rel="noopener noreferrer"&gt;Godson Chijioke&lt;/a&gt; Lead Blogger at Coolpythoncodes , Soon the Interview will be released. Follow me on any of social media handles below to get link to the interview when it’s released.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Notable People I Met in 2017&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I met Google developer Expert &lt;a href="https://medium.com/u/f7f8398c3660" rel="noopener noreferrer"&gt;Ire Aderinokun&lt;/a&gt;, I know she don’tt remember but it meant a lot for me , Her story and works Inspired me a lot. I met her and took a Selfie with her, And got a high-five at &lt;a href="https://medium.com/u/991272e72e68" rel="noopener noreferrer"&gt;Google Developers&lt;/a&gt;’s World Usability Day: Lagos&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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F1%2AtfnP22zUqxIispDuA3Q9WA.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F960%2F1%2AtfnP22zUqxIispDuA3Q9WA.jpeg"&gt;&lt;/a&gt;Me and &lt;a href="https://medium.com/u/f7f8398c3660" rel="noopener noreferrer"&gt;Ire Aderinokun&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also Met &lt;a href="https://medium.com/u/9e13edbcb55f" rel="noopener noreferrer"&gt;Prosper Otemuyiwa&lt;/a&gt; , &lt;a href="https://medium.com/u/8fc90bb17acf" rel="noopener noreferrer"&gt;Christian Nwamba&lt;/a&gt; &lt;a href="https://medium.com/u/56574acf8b01" rel="noopener noreferrer"&gt;Femi TAIWO&lt;/a&gt; &lt;a href="https://medium.com/u/5c5f962e9d39" rel="noopener noreferrer"&gt;Adewale Abati ♠&lt;/a&gt; &lt;a href="https://medium.com/u/53d5acc6d585" rel="noopener noreferrer"&gt;Segun Olumide&lt;/a&gt; &lt;a href="https://medium.com/u/29c89eae32ed" rel="noopener noreferrer"&gt;Usman Abiola&lt;/a&gt; but took no selfies with them(I was feeling like a bad Guy). &lt;a href="https://medium.com/u/56574acf8b01" rel="noopener noreferrer"&gt;Femi TAIWO&lt;/a&gt; has been watching me closely and comments on some of my projects.&lt;/p&gt;

&lt;p&gt;He is a Father to Us all in the Nigerian Tech Ecosystem.&lt;/p&gt;

&lt;p&gt;I also Met &lt;a href="https://medium.com/u/9b278ca7011" rel="noopener noreferrer"&gt;Andy Volk&lt;/a&gt; Google Developer Relations, SSA. &lt;a href="https://medium.com/u/11e89dc0c6be" rel="noopener noreferrer"&gt;Elizabeth Baylor&lt;/a&gt;, A UX reasearcher At Google, Learnt a lot speaking to them.&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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ATLE96GummFyxAtYzOQNnnw.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ATLE96GummFyxAtYzOQNnnw.jpeg"&gt;&lt;/a&gt;Me and Elizabeth Baylor&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%2Fcdn-images-1.medium.com%2Fmax%2F540%2F1%2Ar5LlNdrnO7giqVA21LsKLA.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F540%2F1%2Ar5LlNdrnO7giqVA21LsKLA.jpeg"&gt;&lt;/a&gt;Me(putting on a vertically stripped shirt) with Andy Volk and Some close friends&lt;/p&gt;

&lt;p&gt;I can’t List Everybody Here , I believe everybody I met in 2017 are Notable and developed me one way or the other.&lt;/p&gt;

&lt;p&gt;Within 2017 I worked with &lt;a href="https://medium.com/u/2e5007a3070" rel="noopener noreferrer"&gt;cameraman&lt;/a&gt; as a Front End Web Developer but i left because I felt I had not learnt enough and currently Kaitech as a Tech consultant.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Languages &amp;amp; Frameworks I Got Better At In 2017&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;Firebase&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Places I Visited for the First time in 2017&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Lagos State , Nigeria&lt;/li&gt;
&lt;li&gt;Nassarawa state, Nigeria&lt;/li&gt;
&lt;li&gt;Abuja, Federal Capital of Nigeria&lt;/li&gt;
&lt;li&gt;Ibadan, Nigeria&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Boy, I Never left the country(Nigeria) but I’m Hoping to visit San Fransisco in 2018.&lt;/p&gt;

&lt;p&gt;This is My 2017 In Few Paragraphs.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What I plan to Achieve in 2018.&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Meet &lt;a href="https://medium.com/u/393110b0b9e4" rel="noopener noreferrer"&gt;Sean T. Larkin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Visit &lt;a href="https://medium.com/u/991272e72e68" rel="noopener noreferrer"&gt;Google&lt;/a&gt; Headquarters CA&lt;/li&gt;
&lt;li&gt;Write a lot of JavaScript Tests.&lt;/li&gt;
&lt;li&gt;Learn Block-chain Technology&lt;/li&gt;
&lt;li&gt;Get better at Reactjs&lt;/li&gt;
&lt;li&gt;Host a Bigger Tech Event in my School.&lt;/li&gt;
&lt;li&gt;Understand Asynchronous JavaScript&lt;/li&gt;
&lt;li&gt;Get better at .py&lt;/li&gt;
&lt;li&gt;Make a lot of Meaningful friends&lt;/li&gt;
&lt;li&gt;Speak at More Events Within and outside the county&lt;/li&gt;
&lt;li&gt;intern at &lt;a href="https://medium.com/u/4dae3cf02500" rel="noopener noreferrer"&gt;Flutterwave&lt;/a&gt; (already applied for their internship 3 month program waiting for their reply.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;and many more I’ll think of as the Year goes by.&lt;/p&gt;

&lt;h3&gt;
  
  
  People I look up to in the Tech Ecosystem
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/c79346ea7c9a" rel="noopener noreferrer"&gt;Mark Zuckerberg,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linus Torvalds,&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/d329f4843d82" rel="noopener noreferrer"&gt;Sundar Pichai,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/f7f8398c3660" rel="noopener noreferrer"&gt;Ire Aderinokun,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/698e0ccc5a7c" rel="noopener noreferrer"&gt;Kene Udeze,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/9e13edbcb55f" rel="noopener noreferrer"&gt;Prosper Otemuyiwa,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/393110b0b9e4" rel="noopener noreferrer"&gt;Sean T. Larkin,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/8fc90bb17acf" rel="noopener noreferrer"&gt;Christian Nwamba,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/c852ec9b2c3d" rel="noopener noreferrer"&gt;Alexander Kallaway,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/u/e9031892baf5" rel="noopener noreferrer"&gt;Brandon Morelli,&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and many others I can’t think of now.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;My Advice to Newbie Developers&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I am no ‘very experienced developer’ but with over a year or two of experience, I would say persistence is key when learning a new skill.&lt;/p&gt;

&lt;p&gt;But above all , Get a mentor, someone with more experience and skill set than you to put you through, advice you and give you tasks.&lt;/p&gt;

&lt;p&gt;When stuck with a ‘bug’ don’t just scrap the project(i did that may times before i knew it wasn’t helping me grow), Go back to the documentation and Read through, Read articles and Fix the bug no matter how long it takes.&lt;/p&gt;

&lt;p&gt;Try to explore different languages, don’t just stick to one for long but make sure you are better at one than any other.(This may not apply to everybody).&lt;/p&gt;

&lt;p&gt;Follow the lives of Already popular developers, read their stories and even their source code and learn coding best practices.&lt;/p&gt;

&lt;p&gt;Learn to write tests first before starting actual building.&lt;/p&gt;

&lt;p&gt;Try your best , Give it your all and may the odds be in your favor.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;So sad to see you go , Well:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Thank you all for taking your time to read this, I appreciate.&lt;/p&gt;

&lt;p&gt;Follow Me on Twitter &lt;a href="https://twitter.com/sheddy_nathan" rel="noopener noreferrer"&gt;https://twitter.com/sheddy_nathan&lt;/a&gt; and on Facebook where i make most of my noise &lt;a href="https://facebook.com/akintayo.shedrack" rel="noopener noreferrer"&gt;https://facebook.com/akintayo.shedrack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want to see the Developer side of me?Follow me on Github:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/hacktivist123" rel="noopener noreferrer"&gt;hacktivist123 (shedrack akintayo)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adiós amigos, se la próxima vez.(Goodbye friends, See you next time).&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>career</category>
      <category>softwareengineering</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How Ingressive Campus Ambassadors Program Awoke the Tech Community In My School.</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Fri, 01 Dec 2017 10:34:34 +0000</pubDate>
      <link>https://dev.to/coder_blvck/how-ingressive-campus-ambassadors-program-awoke-the-tech-community-in-my-school-4b65</link>
      <guid>https://dev.to/coder_blvck/how-ingressive-campus-ambassadors-program-awoke-the-tech-community-in-my-school-4b65</guid>
      <description>&lt;p&gt;Hello guys,&lt;/p&gt;

&lt;p&gt;So I have decided to tell my story finally!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4255ne2pqqgxssehtugy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4255ne2pqqgxssehtugy.jpeg" width="800" height="433"&gt;&lt;/a&gt;I know Right!!!!&lt;/p&gt;

&lt;p&gt;So in the last months of 2017, I and some of my mates landed a major achievement, we were chosen by &lt;a href="http://ingressive.co" rel="noopener noreferrer"&gt;Ingressive&lt;/a&gt; as one of their campus ambassadors. Part of their many programs for building the tech ecosystem in Nigeria.&lt;/p&gt;

&lt;p&gt;So let’s go to where and how the event was carried out successfully.&lt;/p&gt;

&lt;p&gt;Don’t bother, I won’t bore you by telling you my life story, I will rather go straight to the point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fie6ygt39i01jws2xe0ij.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fie6ygt39i01jws2xe0ij.jpeg" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The event was scheduled for 10 AM, so I left home by 7 am to the venue, It wasn’t easy leaving bed that early but i had to do it for the community. I went over to get the chairs to the venue and the other electronics. We were an hour late because of the whole preparation.&lt;/p&gt;

&lt;p&gt;At exactly 11 am, We kicked off with an opening speaker session by Rasheed, a software engineer at Andela. He took us all on “What Is Git???”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphfumybuta1tq4nsuqlu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphfumybuta1tq4nsuqlu.jpeg" width="800" height="532"&gt;&lt;/a&gt;Rasheed Getting Ready for His presentation&lt;/p&gt;

&lt;p&gt;He taught the attendees on the basics of git and how the version control software works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslkdu4mwz9bibr98rxqi.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslkdu4mwz9bibr98rxqi.jpeg" width="800" height="532"&gt;&lt;/a&gt;Rasheed in Session.&lt;/p&gt;

&lt;p&gt;At the end of his session, the audience were amazed by the power of git and how they can use it to speed up their workflow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Next up on the speaker deck was Akinjide Bankole, Also a Software engineer from Andela, I guess we were blessed with Andelans on that day!!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This guy took a workshop session on using git to push, commit and pull.&lt;/p&gt;

&lt;p&gt;He engaged the audience to using git, installing it on their machine and all the basic commands.&lt;/p&gt;

&lt;p&gt;At the end of the session he gave out chocolates to all the people that answered his questions.&lt;/p&gt;

&lt;p&gt;After the two speaker sessions, We went on a break where Item 7(Menu, Menu) was served.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3werxsq055a02kh5h2un.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3werxsq055a02kh5h2un.jpeg" width="800" height="532"&gt;&lt;/a&gt;This Guy they vex oo!!&lt;/p&gt;

&lt;p&gt;After the Break, (trying to keep this article as short as possible), I&lt;a href="https://twitter.com/sheddy_nathan" rel="noopener noreferrer"&gt;( &lt;strong&gt;Shedrack Akintayo&lt;/strong&gt;&lt;/a&gt;) took them on an exciting journey on Contributing to Open Source on &lt;a href="https://medium.com/u/8df3bf3c40ae" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You do not have to be a Software Developer/Engineer to contribute to open Source&amp;gt; Open Source is the new sauce — &lt;a href="https://medium.com/u/5c5f962e9d39" rel="noopener noreferrer"&gt;Adewale Abati ♠&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpkokq3uekjzbhgkpuc3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpkokq3uekjzbhgkpuc3.jpeg" width="800" height="532"&gt;&lt;/a&gt;Shedrack in Session(Mans Not Hot!!).&lt;/p&gt;

&lt;p&gt;After my session, the audience was able to understand the importance of Contributing to Open source.&lt;/p&gt;

&lt;p&gt;We headed over to the fun session and we played &lt;strong&gt;KAHOOT!&lt;/strong&gt; We had two sets of questions where we picked the top two out of each set and handed them swags and stickers!.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wurtrcbm2n8fq2dwqcf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2wurtrcbm2n8fq2dwqcf.jpeg" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7yt9w5wvxkj9pev0xub.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7yt9w5wvxkj9pev0xub.jpeg" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8bybhv2r15althgjgjg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8bybhv2r15althgjgjg.jpeg" width="800" height="532"&gt;&lt;/a&gt;Kahoot was Live!.&lt;/p&gt;

&lt;p&gt;At the end of it everybody had fun, So after the Kahoot session we ended the event with group photo. Check them out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqox613zim38ckq8w56z9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqox613zim38ckq8w56z9.jpeg" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qyb23lpifipb125hckm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qyb23lpifipb125hckm.jpeg" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just want to say a big thank you to &lt;a href="https://ingressive.co" rel="noopener noreferrer"&gt;&lt;strong&gt;Ingressive&lt;/strong&gt;&lt;/a&gt; on behalf of all the Campus ambassadors in Yaba college of Technology, Lagos Nigeria for their support.&lt;/p&gt;

&lt;p&gt;I would also want to say thank you to &lt;a href="https://medium.com/u/53d5acc6d585" rel="noopener noreferrer"&gt;Segun Olumide&lt;/a&gt; , &lt;a href="https://medium.com/u/ba31d6be06df" rel="noopener noreferrer"&gt;Ademola Adegbuyi,&lt;/a&gt; Rasheed, Akinjide Bankole, and every other person that attended and gave it their all to see this event succeed.&lt;/p&gt;

&lt;p&gt;More events like this will be coming!&lt;/p&gt;

&lt;p&gt;To get your pictures, please click the link below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://photos.app.goo.gl/iULXM8xVEwmvJBvh2" rel="noopener noreferrer"&gt;Ingressive Ecosystem Hangout: From Git to Github.&lt;/a&gt;&lt;/p&gt;




</description>
      <category>opensource</category>
      <category>git</category>
      <category>community</category>
      <category>github</category>
    </item>
    <item>
      <title>Welcome to Silicon Valley</title>
      <dc:creator>akintayo shedrack</dc:creator>
      <pubDate>Tue, 05 Sep 2017 13:23:56 +0000</pubDate>
      <link>https://dev.to/sheddy_nathan/welcome-to-silicon-valley</link>
      <guid>https://dev.to/sheddy_nathan/welcome-to-silicon-valley</guid>
      <description>&lt;h1&gt;
  
  
  HI, I'm shedrack akintayo, Basically I am a web developer from Nigeria, front end developer to be precise and i fancy UI and UX design a a lot.
&lt;/h1&gt;

&lt;p&gt;So i Concluded HBO's silicon valley Recently, and i picked up a few things from the series.&lt;/p&gt;

&lt;p&gt;let's first understand what silicon valley is,&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;b&gt;To Wikipedia:&lt;/b&gt;
&lt;/h1&gt;

&lt;p&gt;Silicon Valley is a nickname for the southern portion of the San Francisco Bay Area, &lt;/p&gt;

&lt;p&gt;in the northern part of the U.S. state of California. The "valley" in its name &lt;/p&gt;

&lt;p&gt;refers to the Santa Clara Valley in Santa Clara County, which includes the city of &lt;/p&gt;

&lt;p&gt;San Jose and surrounding cities and towns, where the region has been traditionally &lt;/p&gt;

&lt;p&gt;centered. The region has expanded to include the southern half of the San Francisco &lt;/p&gt;

&lt;p&gt;Peninsula in San Mateo County, and southern portions of the East Bay in Alameda &lt;/p&gt;

&lt;p&gt;County.&lt;/p&gt;

&lt;p&gt;The word "silicon" originally referred to the large number of silicon chip &lt;/p&gt;

&lt;p&gt;innovators and manufacturers in the region, but the area is now the home to many of &lt;/p&gt;

&lt;p&gt;the world's largest high-tech corporations, including the headquarters of 39 &lt;/p&gt;

&lt;p&gt;businesses in the Fortune 1000, and thousands of startup companies. Silicon Valley &lt;/p&gt;

&lt;p&gt;also accounts for one-third of all of the venture capital investment in the United &lt;/p&gt;

&lt;p&gt;States, which has helped it to become a leading hub and startup ecosystem for high-&lt;/p&gt;

&lt;p&gt;tech innovation and scientific development. It was in the Valley that the silicon-&lt;/p&gt;

&lt;p&gt;based integrated circuit, the microprocessor, and the microcomputer, among other key &lt;/p&gt;

&lt;p&gt;technologies, were developed. As of 2013, the region employed about a quarter of a &lt;/p&gt;

&lt;p&gt;million information technology workers.[1]&lt;/p&gt;

&lt;p&gt;As more high-tech companies were established across the Santa Clara Valley, and then &lt;/p&gt;

&lt;p&gt;north towards the Bay Area's two other major cities, San Francisco and Oakland, the &lt;/p&gt;

&lt;p&gt;"Silicon Valley" has come to have two definitions: a geographic one, referring to &lt;/p&gt;

&lt;p&gt;Santa Clara County, and a metonymical one, referring to all high-tech businesses in &lt;/p&gt;

&lt;p&gt;the Bay Area or even in the United States. The term is now generally used as a &lt;/p&gt;

&lt;p&gt;synecdoche for the American high-technology economic sector. The name also became a &lt;/p&gt;

&lt;p&gt;global synonym for leading high-tech research and enterprises, and thus inspired &lt;/p&gt;

&lt;p&gt;similar named locations, as well as research parks and technology centers with a &lt;/p&gt;

&lt;p&gt;comparable structure all around the world.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;b&gt;Too many texts just to describe one place&lt;/b&gt;.
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;b&gt;To me:&lt;/b&gt;
&lt;/h1&gt;

&lt;p&gt;Silicon Valley is not just a Place with High tech and Beauty, it is a state of mind.&lt;/p&gt;

&lt;p&gt;That state of mind that tells you that you can Achieve what ever you want to despite obstacles.&lt;/p&gt;

&lt;p&gt;I have not been to silicon valley before but i know that the energy and drive there &lt;br&gt;
is intoxicating.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  SILICON VALLEY IS EVERY PERSON THAT IS READY TO START SOMETHING
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;"You don't have to be in San Francisco to be in Silicon valley"&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Silicon Valley is the home of entrepreneurship, No matter your age in silicon valley somebody will surely listen to you.&lt;/p&gt;

&lt;p&gt;I believe I will get to silicon valley someday but for now i'll let the spirit of silicon valley be in me.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Silicon valley is in every Techie that has that idea he/she is ready to take Risks for.

I believe Where ever we are, No matter where we are in the world,
we are all in SILICON VALLEY.

May the Spirit of Silicon Valley Be With Us all
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>entrepreneurship</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
