<?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: Jamie Dawson</title>
    <description>The latest articles on DEV Community by Jamie Dawson (@jamiedawson).</description>
    <link>https://dev.to/jamiedawson</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%2F335850%2F7835630d-8c74-4a52-b6cb-7638685cae27.jpg</url>
      <title>DEV Community: Jamie Dawson</title>
      <link>https://dev.to/jamiedawson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jamiedawson"/>
    <language>en</language>
    <item>
      <title>How to Build a Stateful Cloud App on Nimbella vs. AWS</title>
      <dc:creator>Jamie Dawson</dc:creator>
      <pubDate>Wed, 02 Sep 2020 18:39:45 +0000</pubDate>
      <link>https://dev.to/jamiedawson/how-to-build-a-stateful-cloud-app-on-nimbella-vs-aws-7mm</link>
      <guid>https://dev.to/jamiedawson/how-to-build-a-stateful-cloud-app-on-nimbella-vs-aws-7mm</guid>
      <description>&lt;p&gt;Are you looking for a developer-friendly solution for building serverless cloud applications? In this blog, we’re going to compare the user experience of building the same voting app with Nimbella and AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Stateful Serverless Cloud App did I Build?
&lt;/h2&gt;

&lt;p&gt;I built a voting app that keeps track of people who prefer cats or dogs. This application is stateful because I need to save user input data from one session for use in the next session.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In order to build this app, I need two things.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A frontend with two buttons to vote.&lt;br&gt;
Two cloud functions that call on key-value storage to save the application’s “state”.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fi%2Fjv7gsa4fajisx447wjiy.png" 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%2Fi%2Fjv7gsa4fajisx447wjiy.png" alt="serverless react app" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A. How to organize the code files?
&lt;/h3&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%2Fi%2Funpq4nd2enj83425th9y.png" 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%2Fi%2Funpq4nd2enj83425th9y.png" alt="serverless react app aws" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before we even start talking about launching the code to the cloud. I’m going to go over how you’d structure your code for this project.&lt;/p&gt;

&lt;p&gt;Both projects have two folders. One folder for static content (Web) and the second one where I keep my cloud functions (Packages). The main differences are structuring the cloud functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With Nimbella:&lt;/em&gt;&lt;/strong&gt; I have to create only the cloud functions by writing them in two files (addVotes.js and getVotes.js).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With AWS:&lt;/em&gt;&lt;/strong&gt; I have to create separate folders for each cloud function, add the JS files, add their dependencies to each folder, and add the .zip file with the node-modules folder, the JS file, and the package.json.&lt;/p&gt;

&lt;h3&gt;
  
  
  B. How to Make your App Stateful for the Cloud?
&lt;/h3&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%2Fi%2Fa5tdq4t3jh5du3l2t672.png" 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%2Fi%2Fa5tdq4t3jh5du3l2t672.png" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to make the app stateful, I need key-value storage to hold the votes and present the current amount of votes when the page refreshes. Here’s how I was able to achieve that with Nimbella.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With Nimbella:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Adding Redis (key-value storage) to your project:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Run &lt;code&gt;nim project create ProjectName&lt;/code&gt;  to create a new project template&lt;/p&gt;

&lt;p&gt;Redis is instantly available inside the project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Calling Redis from within your functions:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Import &lt;code&gt;nim&lt;/code&gt;  into the function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Import &lt;code&gt;Redis&lt;/code&gt;  from nim within the function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Add code logic that calls on Redis to either update the number of votes or to return the current number of votes (See image below)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Deploying your stateful functions to the cloud:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Make sure your functions are inside the Packages folder in your project&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Run &lt;code&gt;nim project deploy ProjectName&lt;/code&gt;  in your command prompt&lt;/p&gt;

&lt;p&gt;Overall, I didn’t have to set up any services because the services I needed to make my app stateful were available from the start. I just had to focus on code logic to call on the services I needed.&lt;/p&gt;

&lt;p&gt;Here is an example of the code I used to increment the number of votes:&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%2Fi%2Fq1rdjokyuy42akbvxmmt.png" 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%2Fi%2Fq1rdjokyuy42akbvxmmt.png" alt="serverless react app aws" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With AWS:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Making an application stateful requires several steps and AWS services. Here’s how I was able to create stateful key-value storage with AWS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Deploy Redis (key-value storage) cluster on AWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Select the AWS ElastiCache service and pick Redis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Configure Redis settings by providing a name, version, port, parameter group, node type, and how many replicas you want&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Select which VPC you want to connect Your Redis cluster too&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Once complete, hold on to the Primary Endpoint. This is important in the next step&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Deploying EC2 on AWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Click the service tab and search for EC2. Be sure to select the region of your choice&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Click “Launch Instance”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Choose an instance Type&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Configure the instance (Important: Make sure to select the same VPC you used for ElastiCache)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Add Storage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Add tags&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Configure Security Group &amp;amp; review&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8:&lt;/strong&gt; Connect SSH to your EC2 instance and then install the Redis CLI&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9:&lt;/strong&gt; Connect Redis instance via Redis CLI, making sure you add the primary endpoint of Redis (mentioned in “Deploy Redis cluster on AWS” Step 4)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Deploying Lambda functions on AWS and connecting it with API Gateway:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Search Lambda in the service tab. Make sure your correct region is selected&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Create one function at a time. Select “Author from Scratch”, the functions name, what type of code it is (NodeJS, Python, etc)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Connect your function with the same VPC as Redis. Go through and select the correct ports&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Connect your functions with API Gateway. Select a trigger for the function, request an HTTP API as the trigger type. You’ll get a URL. You’ll use these URLs to call your functions in your code&lt;/p&gt;

&lt;h3&gt;
  
  
  C. How do you Deploy your Stateful App to the Cloud with Static Assets?
&lt;/h3&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%2Fi%2F11yi2bdz9pq5szei30ae.png" 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%2Fi%2F11yi2bdz9pq5szei30ae.png" alt="serverless react app aws" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that the static web assets and the cloud functions are complete, It’s time to deploy the entire app to the cloud!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With Nimbella:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying to the cloud with Nimbella:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Nimbella, you don’t have to configure cloud storage for your front-end static assets or configure a content delivery network (CDN) to serve the application from the cloud. You just tell your code logic to get sent to the cloud and the configuration is handled for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; run &lt;code&gt;nim project deploy ProjectName&lt;/code&gt;  in your Command Prompt&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Get the URL that’s provided and paste it in your browser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Need to update the code with Nimbella?:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Run &lt;code&gt;nim project deploy ProjectName&lt;/code&gt;  after updating the code&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;With AWS:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying to the cloud with AWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Go to AWS Services and select AWS S3 to get started making an S3 bucket&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Click the “Create Bucket” button and give the bucket the name and region&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Provide the bucket with the permissions you want it to have&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Upload all the files and folders to the S3 bucket&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Once the files are uploaded, select the option “Static Website Hosting”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Take the Endpoint and paste it into your browser&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Need to update the code with AWS?:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Build it again&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Delete all existing files from the bucket and upload the new build version&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Cross-check that index.html is mentioned in the static web host tab&lt;/p&gt;

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

&lt;p&gt;By removing architectural complexity and providing built-in key-value storage and object storage, Nimbella simplifies the big aspects of developing a stateful cloud app and let you and the developer focus on code logic.&lt;/p&gt;

&lt;p&gt;If you’re interested in deploying your stateful app to the cloud, you can &lt;a href="https://nimbella.com/platform" rel="noopener noreferrer"&gt;get started today for free with Nimbella Platform&lt;/a&gt;. You can also join &lt;a href="https://nimbella.com/slack" rel="noopener noreferrer"&gt;Nimbella’s Community Slack channel&lt;/a&gt; to ask questions and share the project you're working on with our growing community.&lt;/p&gt;

&lt;p&gt;If you’re interested in seeing the code. You can &lt;a href="https://github.com/JamieDawson/Dog_or_cat/tree/master/picture" rel="noopener noreferrer"&gt;click here for the Nimbella version&lt;/a&gt; and &lt;a href="https://github.com/JamieDawson/dog_or_cat_for_aws" rel="noopener noreferrer"&gt;click here for the AWS version&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>react</category>
      <category>aws</category>
    </item>
    <item>
      <title>3 Hours of Serverless</title>
      <dc:creator>Jamie Dawson</dc:creator>
      <pubDate>Mon, 17 Aug 2020 22:46:07 +0000</pubDate>
      <link>https://dev.to/jamiedawson/3-hours-of-serverless-33cl</link>
      <guid>https://dev.to/jamiedawson/3-hours-of-serverless-33cl</guid>
      <description>&lt;p&gt;Date and Time: August 25, 2020 7:30 pm - 10:45 pm IST&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you agree that the Future of Computing is Serverless?&lt;/li&gt;
&lt;li&gt;Do you want to know how to start with serverless? &lt;/li&gt;
&lt;li&gt;Are you a practitioner who is looking for deeper insights into architecting applications for the age of serverless? &lt;/li&gt;
&lt;li&gt;Are you an entrepreneur and techie who is looking for tips on how to save the time of development and deployment? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then we have you covered. &lt;/p&gt;

&lt;p&gt;Registration is free of cost, seats are limited (only 300), register now: &lt;a href="https://bit.ly/3-hours-of-serverless-devto" rel="noopener noreferrer"&gt;https://bit.ly/3-hours-of-serverless-devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're thrilled to bring you this event, with serverless from all around the world to bring different perspectives. &lt;br&gt;
We encourage participation from developers with diverse skillsets and expertise, hackers, open-source enthusiasts, and students interested in jumping into an exciting and rapidly evolving field of research and innovation.&lt;/p&gt;

&lt;p&gt;The conference speakers: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rodric Rabbah, CTO &amp;amp; Co-founder at Nimbella, co-creator at Apache OpenWhisk&lt;/li&gt;
&lt;li&gt;Jeremy Daly, Serverless Consultant and Host of Serverless Chats&lt;/li&gt;
&lt;li&gt;Rob Allen, sofware consultant and developer concentrating on HTTP APIs.&lt;/li&gt;
&lt;li&gt;Srushith R, Head of Engineering at KonfHub&lt;/li&gt;
&lt;li&gt;Arjun Guha Associate Professor, Professor, Northeastern University, USA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agenda: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7:30-7:45 pm - Rodric Rabbah: Introduction to Serverless and the future of the technology &lt;/li&gt;
&lt;li&gt;7:45-8:20 pm- Srushith Repakula: Become Thanos of the LambdaLand: Wield all the Infinity Stones +Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;8:20 - 9:20 pm - Rob Allen: PHP in a Serverless World +Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;9:20 - 9:50 pm - Dr. Arjun Guha: Speeding up Serverless Functions by Language-based Isolation + Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;9:50 -10:25 pm - Jeremy Daly: Building Resilient Serverless Systems with "Non-Serverless" Components + Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;10:25- 10:55 pm - Dr. Rodric Rabbah: Stateful Serverless and Stateful APIs +Q&amp;amp;A&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More details and register: &lt;a href="https://bit.ly/3492chA" rel="noopener noreferrer"&gt;https://bit.ly/3492chA&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>programming</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How to Quickly Deploy Stateful Serverless Apps with Nimbella?</title>
      <dc:creator>Jamie Dawson</dc:creator>
      <pubDate>Wed, 24 Jun 2020 20:19:22 +0000</pubDate>
      <link>https://dev.to/jamiedawson/how-to-quickly-deploy-stateful-serverless-apps-with-nimbella-27nk</link>
      <guid>https://dev.to/jamiedawson/how-to-quickly-deploy-stateful-serverless-apps-with-nimbella-27nk</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/514WaqACkxQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So you want to build a serverless stateful application on the cloud. And, you’ve heard that Serverless can be an inexpensive choice among the typical cloud offerings. But you’ve also heard that it can be challenging to build a stateful Serverless app. In this blog, we show how Nimbella’s standard features make it simpler to build stateful Serverless apps.&lt;/p&gt;

&lt;p&gt;This blog assumes you’ve experimented with the Nimbella Playground, and you have installed the Nimbella Command Line Interface (CLI). If you do not have the CLI installed, then check out Nimbella’s blog on downloading the CLI...the process will take less than 2 minutes!&lt;/p&gt;

&lt;p&gt;Now let’s start working with the demo projects supplied by Nimbella. This will quickly give you a clear understanding of the types of Serverless cloud applications you can easily build using Nimbella.&lt;/p&gt;

&lt;p&gt;You see that Nimbella’s Serverless platform makes it easy to build Jamstack and Stateless serverless cloud applications, AND the built-in key-value-storage capability totally eliminates the challenge of building stateful Serverless applications.&lt;/p&gt;

&lt;p&gt;By the way, you may be wondering about the difference between a stateful and stateless application. A good example of a stateful application is a chatroom app. You and friends are texting one another. The app saves all your ID’s and your texts. If you were to refresh the app, the texts would still be there. By storing the pertinent data the state of the application is saved. If such data is not stored, then the application is stateless. Most Serverless offerings support Stateless applications.&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%2Fi%2Frf89uepnrq99u1lvf4an.png" 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%2Fi%2Frf89uepnrq99u1lvf4an.png" alt="Alt Text" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nimbella provides several examples of Stateful serverless cloud applications that can be downloaded to see the code and try modifying it.&lt;/p&gt;

&lt;p&gt;To access the example app, first, you need to log in to &lt;a href="//nimbella.com"&gt;Nimbella.com&lt;/a&gt;. Then download the example apps, run your login command in the command prompt by copying and pasting the first command you see when you log into nimbella.com This command is: nim auth login + your login key. After login, you will receive a notification that Nimbella has stored a credential set for a namespace.&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%2Fi%2F5s1il1tya0rf3us43h3r.png" 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%2Fi%2F5s1il1tya0rf3us43h3r.png" alt="Alt Text" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have your unique namespace setup, you can download the example apps. Copy and paste the command:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/nimbella/demo-projects" rel="noopener noreferrer"&gt;https://github.com/nimbella/demo-projects&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will give you several stateful and stateless Serverless applications to look at and try modifying.&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%2Fi%2F3a59srr1khy6bha20zxb.png" 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%2Fi%2F3a59srr1khy6bha20zxb.png" alt="Alt Text" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A good place to start is with the example QR generator. This is a stateless Serverless app that is written in HTML and Node.js. To deploy this code, simply run “nim project deploy” and the name of the folder which you can copy and paste from the main login page.&lt;/p&gt;

&lt;p&gt;Once it’s done loading, your QR project will be deployed with your namespace. Copy and paste the link that is given to you and the code is yours to modify.&lt;/p&gt;

&lt;p&gt;The example QR app generates a QR code for the text that is entered. By typing in my name, and clicking the Translate button, and the app generates a QR code with the text “Jamie” in it. A QR reader would read “Jamie”.&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%2Fi%2Fif496tkdro2v6wxd73vg.png" 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%2Fi%2Fif496tkdro2v6wxd73vg.png" alt="Alt Text" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s try modifying the app by changing the logo. First, pull up the code in an IDE. Go into the web folder and find the index.html file and edit line 20. Replace it with a photo of a smiley face, save it, and then run the deploy command again. Refresh your browser and see the change you made to the example app.&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%2Fi%2Fzjekipwgnttogbgj8qir.png" 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%2Fi%2Fzjekipwgnttogbgj8qir.png" alt="Alt Text" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Incidentally, recall that this is a stateless Serverless app? Try translating the text into a QR code, then refresh the page.&lt;/p&gt;

&lt;p&gt;As you see, the QR code disappears. This is because the state of the app is not being stored. Similarly, if this link is shared with another user while the QR code is displayed in your browser, the other user would not be able to see your QR code because it was not stored. This is another example of what it means for an app to be stateless.&lt;/p&gt;

&lt;p&gt;Now we’ll look at a stateful Serverless application.&lt;/p&gt;

&lt;p&gt;Go back to the login page and copy and paste the command to deploy the Chat room:&lt;/p&gt;

&lt;p&gt;nim project deploy demo-projects/chat&lt;/p&gt;

&lt;p&gt;You can now use this link to see your deployed chat room. You can create an account by adding your name, and you can post messages. If you refresh it, the state of the app is saved automatically by Nimbella’s key-value storage. If you share this link with others, they will be able to create accounts, see your posts, and have their posts saved as well.&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%2Fi%2Fqkb0yqu8ddlgjmzztzjv.png" 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%2Fi%2Fqkb0yqu8ddlgjmzztzjv.png" alt="Alt Text" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, if Serverless offerings support stateless apps, how is this app stateful? For the explanation, go to the packages folder, then the chatroom folder, and look for index.js in the postMessage folder. This is the functionality that allows users to post a message on the app. You’ll notice at the top that we are using something called Redis. Redis is open-source key-value-storage software that is built into Nimbella.&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%2Fi%2Fk9mu4m6vi2sy8sqfxdst.png" 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%2Fi%2Fk9mu4m6vi2sy8sqfxdst.png" alt="Alt Text" width="800" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a developer, you don't need to provision infrastructure or a database because Nimbella has done it for you. This example app uses Nimbella's Key-Value store to save the application state. This data store is automatically backed up and is only accessible from your functions.&lt;/p&gt;

&lt;p&gt;QR and Chat are just two of the example apps you download, study, and modify. Other examples of Serverless cloud apps include the Calculator, OCR, Stock Trading, and an example for a website that tracks how many people have visited it.&lt;/p&gt;

&lt;p&gt;Written by Jamie Dawson (&lt;a href="https://twitter.com/JamieDawsonCode" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/jamie-dawson-205351113/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Set up your Serverless Environment and Get Started in Less than 2 Minutes!</title>
      <dc:creator>Jamie Dawson</dc:creator>
      <pubDate>Wed, 24 Jun 2020 20:06:41 +0000</pubDate>
      <link>https://dev.to/jamiedawson/how-to-set-up-your-serverless-environment-and-get-started-in-less-than-2-minutes-4pi1</link>
      <guid>https://dev.to/jamiedawson/how-to-set-up-your-serverless-environment-and-get-started-in-less-than-2-minutes-4pi1</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7d9t3Fy2IDY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Do you want to get started with stateful Serverless apps but you think it takes way too long to get set up and going? I’m going to show you how Nimbella enables you to quickly and easily get started building and deploying applications to the cloud.&lt;/p&gt;

&lt;p&gt;To begin, you’ll need to go to Nimbella’s &lt;a href="https://nimbella.com/" rel="noopener noreferrer"&gt;Serverless Cloud App Development Website&lt;/a&gt; and create an account. You can either use your email and create a password. Or you can sign up using your GitHub account. Once you’re done with that, you can log in and get started.&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%2Fi%2Fi0ttdq4h71k7itceuob3.png" 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%2Fi%2Fi0ttdq4h71k7itceuob3.png" alt="Alt Text" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’re logged in, you’ll be directed to a page where you’ll get the Nimbella Command Line Interface (CLI) which you’ll use to deploy your app to the cloud.&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%2Fi%2Ftpc0kasl52l5gxwglols.png" 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%2Fi%2Ftpc0kasl52l5gxwglols.png" alt="Alt Text" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you scroll to the bottom of this page, you’ll see download buttons for 3 Nimbella CLI’s, as shown below: One each for Mac, Linux, and Windows.&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%2Fi%2Fs9sgrbau1jsigg57smia.png" 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%2Fi%2Fs9sgrbau1jsigg57smia.png" alt="Alt Text" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click one, you’ll get a .exe file that will help you install that Nimbella CLI.&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%2Fi%2Fpccgrjbr0u57gfd22rg8.png" 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%2Fi%2Fpccgrjbr0u57gfd22rg8.png" alt="Alt Text" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have the .exe running, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the components you want to install,&lt;/li&gt;
&lt;li&gt;Select where you want the destination folder to be&lt;/li&gt;
&lt;li&gt;Select the last button to download the CLI.&lt;/li&gt;
&lt;/ul&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%2Fi%2Fq0x9ahl3iphqe7vfs2k6.png" 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%2Fi%2Fq0x9ahl3iphqe7vfs2k6.png" alt="Alt Text" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that’s done, you’re all set to start launching applications to the Serverless cloud! You can confirm the Nimbella CLI is installed by checking the version of nim.&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%2Fi%2F75wrxubjmi0f5ysngrzp.png" 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%2Fi%2F75wrxubjmi0f5ysngrzp.png" alt="Alt Text" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next blog, we’re going to go over our example projects and show you how simple it is to deploy and experiment with Nimbella’s current examples of Stateful serverless applications including OCR, Stock Trading, and a Chat application.&lt;/p&gt;

&lt;p&gt;Written by Jamie Dawson (&lt;a href="https://twitter.com/JamieDawsonCode" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/jamie-dawson-205351113/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
      <category>programming</category>
    </item>
    <item>
      <title>Get your Datadog billing info in Slack with Nimbella Commander</title>
      <dc:creator>Jamie Dawson</dc:creator>
      <pubDate>Wed, 19 Feb 2020 17:28:39 +0000</pubDate>
      <link>https://dev.to/jamiedawson/get-your-datadog-billing-info-in-slack-with-nimbella-commander-2k6l</link>
      <guid>https://dev.to/jamiedawson/get-your-datadog-billing-info-in-slack-with-nimbella-commander-2k6l</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k13tIB_L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/1235/1%2ArxtOHl-6l68okC3y9BG6gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k13tIB_L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/1235/1%2ArxtOHl-6l68okC3y9BG6gw.png" alt="The banner to introduce the Nimbella serverless cloud Slack platform that will let users get their Datadob billing info." width="800" height="139"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Contact Nimbella on &lt;a href="https://twitter.com/nimbella?lang=en" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/nimbella/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, or &lt;a href="https://nimbella.com/slack/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wanted a simple way of displaying your &lt;a href="https://www.datadoghq.com/" rel="noopener noreferrer"&gt;Datadog&lt;/a&gt; billing info? With &lt;a href="https://nimbella.com/product/commander" rel="noopener noreferrer"&gt;Nimbella Commander&lt;/a&gt;, you can have your current bill and next month's projected bill displayed in one command to your &lt;a href="https://nimbella-community.slack.com/apps/AS833QXL0-nimbella-commander?next_id=0" rel="noopener noreferrer"&gt;Slack workspace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MHF6FPuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/674/1%2Amq4jN70odSQ4yMAx8FA8Lw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MHF6FPuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/674/1%2Amq4jN70odSQ4yMAx8FA8Lw.png" alt="The banner to introduce the Nimbella serverless cloud Slack platform that will let users get their Datadob billing info." width="674" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Later, I'll show you how to restrict who can access this Slack command so it's only available to people who need to know. Here's how to do it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Inside your &lt;a href="https://app.datadoghq.com/account/login?next=%2Faccount%2Fsettings#api" rel="noopener noreferrer"&gt;Datadog API settings&lt;/a&gt;, Create a Datadog API key and Application key in Datadog's UI. You must name your API key datadogApiKey and your Application Key datadogApplicationKey.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oAHeuKfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/800/0%2AafyQ8_vDB9OE-AGA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oAHeuKfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/800/0%2AafyQ8_vDB9OE-AGA" alt="An example of Datadog billing information for Slack. Created by Nimbella" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add &lt;a href="https://nimbella-community.slack.com/apps/AS833QXL0-nimbella-commander?next_id=0" rel="noopener noreferrer"&gt;Nimbella Commander to your Slack page&lt;/a&gt;. You can add it by searching "Nimbella" in the apps tab on Slack. You can also add it by &lt;a href="https://nimbella.com/" rel="noopener noreferrer"&gt;going to our official website&lt;/a&gt; and clicking the "Add to Slack" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nPLtTtye--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/715/1%2AqIyGMGfyJdVo-AP2t0HU9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nPLtTtye--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/715/1%2AqIyGMGfyJdVo-AP2t0HU9w.png" alt="What our website looks like when you want to download Commander to Slack for Datadog billing information" width="715" height="357"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In order to get your Datadog billing details, you'll need to install the &lt;a href="https://github.com/nimbella/command-sets" rel="noopener noreferrer"&gt;billing Command Set&lt;/a&gt;. Command Sets are a packaging specification for Slack commands, and a convenient way to share commands via GitHub or open source. Command Sets are installed into your Slack teams via the Nimbella Commander by typing the command /nc csm_install billing in your Slack prompt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GMcjLFCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/561/0%2A6RMVv0V15PejGTIr" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GMcjLFCr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/561/0%2A6RMVv0V15PejGTIr" alt="Datadog billing info for Slack. Datadog apiKey and ApplicationKey" width="561" height="110"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next we need to bind some secrets to the billing commands. Specifically, the API keys you generated earlier for the Datadog API will be encrypted (outside of Slack) and attached to the slash command. To do this, type /nc secret_create to bring up the Nimbella Secret Creator. We're creating the secrets outside of Slack so that Slack will only see encrypted strings and not your API keys. When you run the secrets command, you will see an output that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e57VC4Vv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/670/0%2AWIgVRs9mv63kct1y" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e57VC4Vv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/670/0%2AWIgVRs9mv63kct1y" alt="What our website looks like when you want to download Commander to Slack for Datadog billing information" width="670" height="116"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on the Secret Creator link to be redirected to the page which encrypts your API keys.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZkjVrfVK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/700/1%2A7LM4wD6FnA7K5s3K_cwS-g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZkjVrfVK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/700/1%2A7LM4wD6FnA7K5s3K_cwS-g.png" alt="Add default app to Commander. Datadog will need it to display billing information" width="700" height="201"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add your Datadog API Key and Application Key from Step 1 to the fields in the Secret Creator as illustrated in the following figure. Next, click the "Make Secrets" button to generate the commands you'll need to copy and paste into your Slack prompt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BCOn60hO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/696/1%2AyBynU32l_Ze3vRJP7k_tuA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BCOn60hO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/696/1%2AyBynU32l_Ze3vRJP7k_tuA.png" alt="Datadog secret creator for devops datadogApiKey ApplicationKey" width="696" height="208"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After clicking the "Make Secrets" button, the commands you'll need to run on your Slack page will appear. Copy each command one at a time and paste them into Slack. This will take your API Key and Application Key and apply them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2dABH8am--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/701/1%2ALXW4CW4GLwT7WEkOTdIfDA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2dABH8am--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/701/1%2ALXW4CW4GLwT7WEkOTdIfDA.png" alt="Datadog secret creator devops ApiKey and ApplicationKey" width="701" height="641"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, run the built-in command /nc datadogbill to see your Datadog billing info.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MHF6FPuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/674/1%2Amq4jN70odSQ4yMAx8FA8Lw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MHF6FPuc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/674/1%2Amq4jN70odSQ4yMAx8FA8Lw.png" alt="An example of Datadog billing information for Slack. Created by Nimbella" width="674" height="192"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To see more details about your bill, try /nc datadogbill -detail&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JM27leWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/636/1%2AKUDwMwqGFrIr1ahhV5yZOQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JM27leWN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/636/1%2AKUDwMwqGFrIr1ahhV5yZOQ.png" alt="Datadog billing info for devops. Shows more details about your bill and upcoming bill on Slack" width="636" height="535"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You likely don't want everyone in your Slack team to run this command. Nimbella Commander offers a neat feature to allow only certain users to run specific commands. For example, you can restrict access to the Datadog billing command to specific users using /nc command_runners datadogbill + &lt;a class="mentioned-user" href="https://dev.to/user1"&gt;@user1&lt;/a&gt; + @user2, substituting for "user1" and "user2" the Slack names of your teammates that should have access to the Datadog billing details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gHvVMxfk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/639/0%2Ak65tZOEHbpwOnWff" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gHvVMxfk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/639/0%2Ak65tZOEHbpwOnWff" alt="Datadog billing info for Slack. Select which users can access billing information" width="639" height="58"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It's worth also mentioning that you have access to an audit trail to see who's run your commands. This is useful for administrators and team oversight where appropriate. Type /nc command_log datadogbill&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v_Y-T5K8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/651/1%2Al9Yva9rLt-Npzky-5C8-tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v_Y-T5K8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/max/651/1%2Al9Yva9rLt-Npzky-5C8-tw.png" alt="Datadog billing info for Slack. Shows command log of who ran the command on Slack for Datadog billing info." width="651" height="392"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using Nimbella's access control you can also limit who can view and edit the code that implements a particular command as well. The built-in Secret Creator means your sensitive data remains outside of Slack and accessible only to the code you run. And with Audit Logs, you have accountability and historical data readily available at your fingertips. These are powerful features of the Commander that don't exist in Slack otherwise. For more information about Commander, &lt;a href="https://nimbella.com/product/commander" rel="noopener noreferrer"&gt;visit our website&lt;/a&gt;. We'd also love to hear from you via our community &lt;a href="https://app.slack.com/client/TL64TJWVB/CQE95GHB4" rel="noopener noreferrer"&gt;Slack channel&lt;/a&gt; or on &lt;a href="https://github.com/nimbella/command-sets" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you wish to add Commander to your Slack account, &lt;a href="https://nimbella-community.slack.com/apps/AS833QXL0-nimbella-commander?next_id=0" rel="noopener noreferrer"&gt;click this link to get started today&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video tutorial on how to get your Datadog billing info in Slack with Nimbella Commander:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/T-7qQU9iIgo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
      <category>slack</category>
      <category>datadog</category>
    </item>
  </channel>
</rss>
