<?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: Ari 🪐</title>
    <description>The latest articles on DEV Community by Ari 🪐 (@ari_hacks).</description>
    <link>https://dev.to/ari_hacks</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%2F366663%2Fa7b21d07-93c4-4fe9-9829-4e11e3b71837.png</url>
      <title>DEV Community: Ari 🪐</title>
      <link>https://dev.to/ari_hacks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ari_hacks"/>
    <language>en</language>
    <item>
      <title>Creating Chaos and a Giveaway ⚒ 🎁</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Sun, 22 Nov 2020 07:04:50 +0000</pubDate>
      <link>https://dev.to/ari_hacks/creating-chaos-and-a-giveaway-47kc</link>
      <guid>https://dev.to/ari_hacks/creating-chaos-and-a-giveaway-47kc</guid>
      <description>&lt;p&gt;&lt;a href="https://i.giphy.com/media/FnatKdwxRxpVC/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/FnatKdwxRxpVC/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;
Introducing Chaos



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Chaos engineering is the discipline of experimenting on a software system in production in order to build confidence in the system's capability to withstand turbulent and unexpected conditions."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;I think when most of us hear 'Chaos' we automatically get a little anxious. The idea of presenting failure into anything let alone a system can sound scary, however, by running these controlled experiments we can gain insight and reduce disasters. This is important because inevitably a system WILL fail. &lt;/p&gt;

&lt;p&gt;So let's break some stuff and see how it all works! &lt;/p&gt;

&lt;p&gt;Below is a repo with step by step instructions to setup Kubernetes clusters and use a few different platforms to run experiments on them.&lt;/p&gt;

&lt;p&gt;A lot of tutorials I have found around running chaos experiments with K8s skip the cluster setup bit - making this repo a good complete getting started guide if you're new to K8s and Chaos Engineering. 🙂 🎉&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ari-hacks" rel="noopener noreferrer"&gt;
        ari-hacks
      &lt;/a&gt; / &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox" rel="noopener noreferrer"&gt;
        kubernetes-chaos-sandbox
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🧪 Tutorials for running chaos experiments with litmus chaos, chaos mesh, and gremlin (includes k8s setup)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Kubernetes Chaos Sandbox&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/17653de8448d0322ca3960debee10674d801808d4537a52b3545ff243d6e9d99/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f647373696a6e6c72782f696d6167652f75706c6f61642f76313630353634383939372f5052494e4349504c45535f4f465f4348414f535f454e47494e454552494e475f375f7768786971772e706e67" alt="chaos-experiment"&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;A sandbox repo of chaos experiment tutorials with &lt;a href="https://www.gremlin.com/kubernetes/" rel="nofollow noopener noreferrer"&gt;Gremlin&lt;/a&gt;, &lt;a href="https://litmuschaos.io/" rel="nofollow noopener noreferrer"&gt;Litmus Chaos&lt;/a&gt;, and &lt;a href="https://chaos-mesh.org/" rel="nofollow noopener noreferrer"&gt;Chaos Mesh&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Local Setup&lt;/h4&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OS: MacOs Catalina&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kubernetes: &lt;a href="https://www.docker.com/products/docker-desktop" rel="nofollow noopener noreferrer"&gt;Docker Desktop&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
Resource settings
    

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;  - CPUs:6
  - Memory: 6GB
  - Swap: 3GB
  - Disk Size: 59.6GB
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  

&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Quick Links to Tutorials ☝️&lt;/h4&gt;

&lt;/div&gt;

&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/litmus-chaos/" rel="noopener noreferrer"&gt;Litmus&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/gremlin" rel="noopener noreferrer"&gt;Gremlin&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/chaos-mesh" rel="noopener noreferrer"&gt;Chaos Mesh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Quick Link to Kubernetes setup&lt;/h4&gt;

&lt;/div&gt;

&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/litmus-chaos/rancher/README.md#create-a-rancher-server" rel="noopener noreferrer"&gt;Rancher - Single node cluster&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/litmus-chaos/openshift/README.md#create-okd-cluster-with-minishift" rel="noopener noreferrer"&gt;Openshift(OKD) - Single node cluster&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/litmus-chaos/kind/README.md#create-kind-cluster" rel="noopener noreferrer"&gt;Kind single node cluster for dev&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-chaos-sandbox/gremlin/README.md#create-kubespray-cluster" rel="noopener noreferrer"&gt;Kubesrpay - customizable HA cluster&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Additional tutorials&lt;/h4&gt;

&lt;/div&gt;

&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/kubernetes-monitoring" rel="noopener noreferrer"&gt;Setting up Prometheus and Grafana monitoring on K8s&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ari-hacks/kubernetes-chaos-sandbox" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;There are several organizations making waves in the chaos experimenting world today. I choose to learn a bit more about &lt;a href="https://www.gremlin.com/" rel="noopener noreferrer"&gt;Gremlin&lt;/a&gt;, &lt;a href="https://litmuschaos.io/" rel="noopener noreferrer"&gt;Litmus&lt;/a&gt;, and &lt;a href="https://chaos-mesh.org/" rel="noopener noreferrer"&gt;Chaos Mesh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Each provides various interesting experiments and testing experiences. Gremlin is chaos engineering as a service. This is perfect if you like a good GUI and want to get up and running quickly. Litmus Chaos is a good choice if you enjoy the command line (which I do 😉 ). I had the opportunity to contribute to their project and the team is great! Chaos Mesh is similar to Litmus Chaos and they have some awesome documentation I was able to contribute to this Hacktoberfest as well. Chaos Mesh offers the option of using an interactive GUI or the command line (or both!) making it very developer friendly. &lt;/p&gt;

&lt;p&gt;While the purpose of Chaos experimenting is introducing failure the main goal in testing is really to fix and overcome any weaknesses found in a system. By using these tools we are making software and infrastructure more reliable and sustainable. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/AeUcmWquAI8tW/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/AeUcmWquAI8tW/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;
"The purpose of Chaos Engineering is NOT to 'Break Things on Purpose'. If anything it is to try and 'Fix Them on Purpose.'"



&lt;h4&gt;
  
  
  🚨 Before you go.....
&lt;/h4&gt;

&lt;p&gt;I am giving away a $12 voucher to the dev shop! Leave a comment below if interested and I'll pick someone at random this weekend to send it to! 🎁 ✌🏾&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>sre</category>
      <category>tutorial</category>
      <category>chaosengineering</category>
    </item>
    <item>
      <title>Building and Testing Infrastructure with Github Actions 🏗</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Fri, 18 Sep 2020 05:35:59 +0000</pubDate>
      <link>https://dev.to/ari_hacks/building-and-testing-infrastructure-with-github-actions-1417</link>
      <guid>https://dev.to/ari_hacks/building-and-testing-infrastructure-with-github-actions-1417</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;I've been learning a bit about &lt;a href="https://www.terraform.io/" rel="noopener noreferrer"&gt;Terraform&lt;/a&gt; this past month and thought it would be cool to leverage IaC in a CI/CD environment with GitHub Actions!&lt;/p&gt;

&lt;p&gt;My workflow runs &lt;a href="https://terratest.gruntwork.io/" rel="noopener noreferrer"&gt;terratest&lt;/a&gt; to test the infrastructure then initializes, formats, plans, and applies changes based on the Terraform configuration. Changes are applied after a pull request has been merged. &lt;/p&gt;

&lt;p&gt;To ensure Terraform runs in the correct directory the commit and PR message should be the directory name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;DIY Deployments&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ari-hacks" rel="noopener noreferrer"&gt;
        ari-hacks
      &lt;/a&gt; / &lt;a href="https://github.com/ari-hacks/infra-github-actions" rel="noopener noreferrer"&gt;
        infra-github-actions
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Testing and provisioning infrastructure with Terraform and Github Actions 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;infra-github-actions&lt;/h1&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ari-hacks/infra-github-actions" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Actions used in my workflow&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/marketplace/actions/setup-go-environment" rel="noopener noreferrer"&gt;Go setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/marketplace/actions/hashicorp-setup-terraform" rel="noopener noreferrer"&gt;Terraform setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/marketplace/actions/terraform-installer" rel="noopener noreferrer"&gt;Terraform version installer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon</category>
      <category>go</category>
      <category>terraform</category>
      <category>cloud</category>
    </item>
    <item>
      <title>5 things Terraform can automate in AWS ⚙️</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Sun, 26 Jul 2020 16:25:41 +0000</pubDate>
      <link>https://dev.to/ari_hacks/5-things-terraform-can-automate-in-aws-4k5j</link>
      <guid>https://dev.to/ari_hacks/5-things-terraform-can-automate-in-aws-4k5j</guid>
      <description>&lt;p&gt;&lt;a href="https://www.terraform.io/" rel="noopener noreferrer"&gt;Terraform&lt;/a&gt; is an orchestration tool that can provision infrastructure with code. Instead of opening the AWS Management Console to create our resources, we can do that directly in our editor with HCL (HashiCorp's Configuration Langauge).🎉&lt;/p&gt;

&lt;p&gt;Let's look at some things we can automate in AWS. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7TKUM3IgJBX2as9O/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7TKUM3IgJBX2as9O/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/free" rel="noopener noreferrer"&gt;AWS Account - Free Tier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html" rel="noopener noreferrer"&gt;Create an IAM user&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html" rel="noopener noreferrer"&gt;AWS CLI installation and configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.hashicorp.com/terraform/getting-started/install.html" rel="noopener noreferrer"&gt;Terraform installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; A step-by-step guide for setup can be found in the &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/blob/master/README.md" rel="noopener noreferrer"&gt;Github README.md&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TODOs
&lt;/h2&gt;

&lt;p&gt;Launch an EC2 Instance &lt;br&gt;
Create an S3 Bucket&lt;br&gt;
Create a backend state with S3&lt;br&gt;
Create IAM group and policy&lt;br&gt;
Add IAM users to a group&lt;/p&gt;


&lt;h2&gt;
  
  
  Launch an EC2 Instance &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;#variables.tf&lt;/span&gt;
&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"region"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"AWS region"&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"us-east-2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"ami"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt;  &lt;span class="s2"&gt;"ami-0c8110836d05ad7bd"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;#main.tf&lt;/span&gt;
&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;region&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&amp;gt;= 0.12"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"ec2_example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ami&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t2.micro"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In this example, we are creating an AWS resource of type &lt;code&gt;aws_intstance&lt;/code&gt; with a unique name &lt;code&gt;ec2_example&lt;/code&gt;. This resource spins up an ec2 server by launching a copy of the AMI(Amazon Machine Image). &lt;/p&gt;

&lt;p&gt;The AMI is a dynamic value and needs to be updated when creating instances. You can find these on the AWS console or search for ubuntu images &lt;a href="https://cloud-images.ubuntu.com/locator/ec2/" rel="noopener noreferrer"&gt;here&lt;/a&gt; (For t2.micro select hvm:ebs-ssd).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ari-hacks/terraform-aws-automation/tree/master/launch-ec2-instance" rel="noopener noreferrer"&gt;EC2 directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Create an S3 Bucket &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;#variables.tf&lt;/span&gt;
&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"region"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"AWS region"&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"us-east-2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;#outputs.tf&lt;/span&gt;
&lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="s2"&gt;"s3-bucket"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aws_s3_bucket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b_example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bucket&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;#main.tf&lt;/span&gt;
&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;region&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket"&lt;/span&gt; &lt;span class="s2"&gt;"b_example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"bucket-example-tmed232323"&lt;/span&gt;
  &lt;span class="nx"&gt;force_destroy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="nx"&gt;acl&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"private"&lt;/span&gt;

  &lt;span class="nx"&gt;versioning&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;enabled&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;An s3 bucket is used for storage. To create a bucket a unique name is required. If you do not add one AWS will create one for you. To grant access to a bucket &lt;code&gt;acl&lt;/code&gt; can be used. By default it is set to private. &lt;code&gt;force_destory=true&lt;/code&gt; is set for testing purposes. This will allow us to delete the bucket with &lt;code&gt;terraform destroy&lt;/code&gt; even if it is not empty. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;versioning&lt;/code&gt; keeps different variants of an object in the bucket and &lt;code&gt;outputs.tf&lt;/code&gt; will output the results of the file to the console after an &lt;code&gt;apply&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ari-hacks/terraform-aws-automation/tree/master/create-s3-bucket" rel="noopener noreferrer"&gt;S3 Bucket directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Create a backend state with S3 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;#main.tf&lt;/span&gt;
&lt;span class="nx"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;backend&lt;/span&gt; &lt;span class="s2"&gt;"s3"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"bucket-example-tmed232323"&lt;/span&gt;
    &lt;span class="nx"&gt;key&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"terraform-aws-automation/create-s3-backend-state/terraform.tfstate"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In this example, remote state is being stored with a &lt;code&gt;terraform.tfstate&lt;/code&gt; file. This is common practice when using Terraform with more than one person so state does not get locked and only one person can make changes at a time on the latest copy. Since the bucket we created is using versioning there will be a history of changes stored as well.&lt;/p&gt;

&lt;p&gt;To add an object to a bucket the unique bucket name is required along with the &lt;code&gt;key&lt;/code&gt; which defines the path of the file that's created in AWS.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ari-hacks/terraform-aws-automation/tree/master/create-s3-backend-state" rel="noopener noreferrer"&gt;S3 backend state directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Create IAM group and policy &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;#variables.tf&lt;/span&gt;
&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"region"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"AWS region"&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"us-east-2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;#main.tf&lt;/span&gt;
&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;region&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_iam_group"&lt;/span&gt; &lt;span class="s2"&gt;"admin_example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin_example"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_iam_policy_attachment"&lt;/span&gt; &lt;span class="s2"&gt;"admin-attachement"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;       &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin-attachement"&lt;/span&gt;
  &lt;span class="nx"&gt;groups&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;aws_iam_group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;admin_example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="nx"&gt;policy_arn&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"arn:aws:iam::aws:policy/AdministratorAccess"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Groups are collections of IAM users that share specific privileges or policies.&lt;/p&gt;

&lt;p&gt;Two resources are created here, one for the IAM group and another to attach a policy to that group. The attribute &lt;code&gt;policy_arn&lt;/code&gt; is set to attach the Administrator Access policy to the IAM group.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ari-hacks/terraform-aws-automation/tree/master/create-iam-group-policy" rel="noopener noreferrer"&gt;IAM Group and Policy directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Add IAM users to a group &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;#variables.tf&lt;/span&gt;
&lt;span class="nx"&gt;variable&lt;/span&gt; &lt;span class="s2"&gt;"region"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"AWS region"&lt;/span&gt;
  &lt;span class="nx"&gt;default&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"us-east-2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;#main.tf&lt;/span&gt;
&lt;span class="nx"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;region&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;region&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_iam_user"&lt;/span&gt; &lt;span class="s2"&gt;"admin_example_1"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin_example_1"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_iam_user"&lt;/span&gt; &lt;span class="s2"&gt;"admin_example_2"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin_example_2"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_iam_group_membership"&lt;/span&gt; &lt;span class="s2"&gt;"admin-user-group-example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin-user-group-example"&lt;/span&gt;
  &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;aws_iam_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;admin_example_1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;aws_iam_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;admin_example_2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="nx"&gt;group&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"admin_example"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After an IAM group is created we can add new users to it. This is down with the resource type &lt;code&gt;aws_iam_group_membership&lt;/code&gt;. Users are passed to this resource along with the name of the group. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ari-hacks/terraform-aws-automation/tree/master/add-users-to-iam-group" rel="noopener noreferrer"&gt;Add users to group directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;To run these examples locally, clone the &lt;a href="https://github.com/ari-hacks/terraform-aws-automation" rel="noopener noreferrer"&gt;repo&lt;/a&gt; and navigate to the root directory. In your terminal &lt;code&gt;cd&lt;/code&gt; into one of the above directories and follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initialize Terraform: &lt;code&gt;terraform init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check the plan to make sure the configuration will do what we expect: &lt;code&gt;terraform plan&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Apply the execution plan and build the stack: &lt;code&gt;terraform apply&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check the resource is up: &lt;code&gt;terraform state list&lt;/code&gt; or &lt;code&gt;terraform state show 'type.name'&lt;/code&gt; &lt;code&gt;ex. aws_instance.ec2_example&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Tear down all provisions: &lt;code&gt;terraform destroy&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;If you found this article useful give the repo a ⭐️ and check back later for more examples of automating AWS with Terraform. 🙂✌🏾&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ari-hacks" rel="noopener noreferrer"&gt;
        ari-hacks
      &lt;/a&gt; / &lt;a href="https://github.com/ari-hacks/terraform-aws-automation" rel="noopener noreferrer"&gt;
        terraform-aws-automation
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚙️  Examples of provisioning AWS resources with Terraform
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Automating AWS with Terraform&lt;/h1&gt;
&lt;/div&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/launch-ec2-instance" rel="noopener noreferrer"&gt;Launch an ec2 instance&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/create-s3-bucket" rel="noopener noreferrer"&gt;Create an s3 bucket&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/create-s3-backend-state" rel="noopener noreferrer"&gt;Create an s3 backend state&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/create-iam-group-policy" rel="noopener noreferrer"&gt;Create an IAM group and policy&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 &lt;a href="https://github.com/ari-hacks/terraform-aws-automation/add-users-to-iam-group" rel="noopener noreferrer"&gt;Add users to an IAM group&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;External Resources&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://cloud-images.ubuntu.com/locator/ec2/" rel="nofollow noopener noreferrer"&gt;Amazon EC2 AMI Locator&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Pre-requisite Setup&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;AWS Account - Free Tier&lt;/h4&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/free" rel="nofollow noopener noreferrer"&gt;Sign up&lt;/a&gt; for AWS Free Tier account if you do not already have one&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Create an IAM user&lt;/h4&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Log into your root AWS account&lt;/li&gt;
&lt;li&gt;Select Services &amp;gt; IAM&lt;/li&gt;
&lt;li&gt;On the left nav bar select 'Users'&lt;/li&gt;
&lt;li&gt;Select 'Add user'&lt;/li&gt;
&lt;li&gt;Create a username 'terraform-admin'&lt;/li&gt;
&lt;li&gt;Select AWS access type as Programmatic access (and AWS management console access to view resources on the dashboard)&lt;/li&gt;
&lt;li&gt;Select Next: Permissions&lt;/li&gt;
&lt;li&gt;Select Create group&lt;/li&gt;
&lt;li&gt;Add a group name 'admins'&lt;/li&gt;
&lt;li&gt;Check AdministratorsAccess and Create group, check group&lt;/li&gt;
&lt;li&gt;Select Next: Tags&lt;/li&gt;
&lt;li&gt;Select Next: Review&lt;/li&gt;
&lt;li&gt;Select Create User&lt;/li&gt;
&lt;li&gt;You will need the generated access key Id, and the secret access key (Download the csv provided or store these values)&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ari-hacks/terraform-aws-automation" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>beginners</category>
      <category>cloud</category>
      <category>aws</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Explain IaC like I'm Five</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Sun, 19 Jul 2020 03:35:03 +0000</pubDate>
      <link>https://dev.to/ari_hacks/iac-like-i-m-five-2jg9</link>
      <guid>https://dev.to/ari_hacks/iac-like-i-m-five-2jg9</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IaC like I'm Five&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; What is Infrastructure as Code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Why should we use it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; How do we use it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Terraform Example&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Other IaC Tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What is Infrastructure as Code? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Historically, creating infrastructure involved manually setting up servers and configuring systems to run applications, operating systems, databases...etc. Infrastructure was imperatively configured and maintained, meaning this was done with step by step instructions and executed by the admin. This process becomes unsustainable with large &amp;amp; complex systems leaving room for &lt;strong&gt;&lt;em&gt;issues with cost, availability, and consistency&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Infrastructure as Code solves these problems by &lt;strong&gt;&lt;em&gt;automating setup and management&lt;/em&gt;&lt;/strong&gt; by writing code in a high-level descriptive language.   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kua2OWlF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dssijnlrx/image/upload/v1595066847/tf2_qklm1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kua2OWlF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dssijnlrx/image/upload/v1595066847/tf2_qklm1n.png" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;
With Iac we can produce secure,reliable, and robust infrastructure






&lt;p&gt;HashiCorp's Founder, &lt;a href="https://twitter.com/armon"&gt;Armon Dadgar&lt;/a&gt; explains IaC simply and eloquently in this short video&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/RO7VcUAsf-I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Why should we use it? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/26xBF35LZZva64nuw/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/26xBF35LZZva64nuw/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accidents happen, &lt;strong&gt;&lt;em&gt;human error&lt;/em&gt;&lt;/strong&gt; happens. By automating infrastructure with code we reduce error and produce more reliable code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Complexity&lt;/em&gt;&lt;/strong&gt;, with the emergence of cloud-based infrastructure IaC is paramount for scaling distributed systems, cloud-native applications, and service-based architecture. &lt;/p&gt;




&lt;h2&gt;
  
  
  How do we use it? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zWw2wuiKd5o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
Sai Vennam with IBM Cloud discusses approaches to IaC with a quick example






&lt;h4&gt;
  
  
  Terraform Example &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.terraform.io/"&gt;Terraform&lt;/a&gt; is a cloud provider agnostic orchestration tool. This means we can build, version, and destroy resources across multiple providers at the same time. We can also easily look up modules to use directly from the &lt;a href="https://registry.terraform.io/"&gt;Terraform Registry&lt;/a&gt; saving time on creating common configurations. These features make it a leader in IaC. Now let's take a look at the power of Terraform with an example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KHIi3bDa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dssijnlrx/image/upload/v1595124343/carbon_6_emthqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KHIi3bDa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dssijnlrx/image/upload/v1595124343/carbon_6_emthqa.png" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;
This is a Terraform module which creates a private S3 bucket resource on AWS with versioning enabled in HCL(HashiCorps's configuration language)




&lt;h4&gt;
  
  
  Other IaC Tools &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Another Orchestration tool is &lt;a href="https://aws.amazon.com/cloudformation/"&gt;&lt;strong&gt;&lt;em&gt;AWS CloudFormation&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;, this tool is similar to Terraform but it is only AWS focused.&lt;/p&gt;

&lt;p&gt;Along with orchestration tools, there are configuration management tools. They are used to install and manage software on existing servers. &lt;/p&gt;

&lt;p&gt;Common configuration management tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ansible.com/resources/get-started"&gt;Ansible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://puppet.com/"&gt;Puppet&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.saltstack.com/"&gt;SaltStack&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chef.io/products/chef-infra/"&gt;Chef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;** Some configuration management tools can be used for orchestration. It all depends on the best fit for your needs or the task.  &lt;/p&gt;

</description>
      <category>iac</category>
      <category>devops</category>
      <category>sre</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Conferences in the Time of COVID-19: Cloud and Infrastructure</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Sat, 11 Jul 2020 06:03:11 +0000</pubDate>
      <link>https://dev.to/ari_hacks/conferences-in-the-time-of-covid-19-cloud-and-infrastructure-45ic</link>
      <guid>https://dev.to/ari_hacks/conferences-in-the-time-of-covid-19-cloud-and-infrastructure-45ic</guid>
      <description>&lt;p&gt;As you all know due to the pandemic traditional conferences have been canceled this year. Alternatively, a new era of virtual conferences has emerged and I was very surprised by the efforts and content available out there for free. &lt;/p&gt;

&lt;p&gt;Here is a list of events focusing on DevOps, Reliability Engineering, and Cloud Development. You can watch all these conferences for FREE right now. Also listed are some upcoming events. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l0IsIZw8doJm3ysRq/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l0IsIZw8doJm3ysRq/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Virtual Events&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Failover Conf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevSecCon24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Camp Cloud Native&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dockercon2020&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SRE SKILup Day by DevOps Institute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INS1GHTS2020&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Future Events&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Failover Conf &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Failover Conf. focused on Reliability and Resilience Engineering. It was created by &lt;a href="https://www.gremlin.com/"&gt;Gremlin&lt;/a&gt;, one of the leaders in the Failure as a Service Industry. If you are interested in Chaos Engineering this is a great watch.  &lt;/p&gt;

&lt;p&gt;All the sessions can be found &lt;a href="https://www.youtube.com/playlist?list=PLLIx5ktghjqItStdp_NUh3CQ_y4M49Gb1"&gt;here on youtube&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  DevSecCon24 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.devseccon.com/devseccon24-2020/"&gt;DevSecCon24&lt;/a&gt; was geared towards DevSecOps and features 24 hours worth of content! &lt;/p&gt;

&lt;p&gt;Check out all the presentations &lt;a href="https://www.youtube.com/playlist?list=PLKWDDWZ_ETtCzvLD-RG8UkVtrjlSSvBS2"&gt;here on youtube&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  Camp Cloud Native &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://campcloudnative.com/"&gt;Camp Cloud Native&lt;/a&gt; was a 12-hour event featuring sessions on the cloud native ecosystem with a focus on education accompanied by a slack discussion forum. With some camp stories and demos, this event made for a fun watch.   &lt;/p&gt;

&lt;p&gt;All the presentations can be found &lt;a href="https://www.youtube.com/playlist?list=PLRQaLsJQ82CJKzI148URGHWvXlkCq83qA"&gt;here on youtube&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  Dockercon2020 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Dockercon covered the container ecosystem. There are some great interviews, talks, and Q&amp;amp;A sessions that come with this virtual event.  &lt;/p&gt;

&lt;p&gt;All the sessions can be found &lt;a href="https://docker.events.cube365.net/docker/dockercon/"&gt;on demand&lt;/a&gt; and viewed after registering. &lt;/p&gt;




&lt;h2&gt;
  
  
  SRE SKILup Day by DevOps Institute &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Once a month &lt;a href="https://devopsinstitute.com/"&gt;the DevOps Institue&lt;/a&gt; host MicroConferences with the aim of highlighting the people, process, and technology within a selected practice. For June the topic was Site Reliability Engineering. To view these events you can &lt;a href="https://devopsinstitute.com/become-a-community-member/"&gt;sign up for free&lt;/a&gt; with DevOps Institue and watch the sessions on demand at no cost. SRE SKILup day is not available on demand just yet but previous content includes Value Stream Management and Enterprise Kubernetes.&lt;/p&gt;

&lt;p&gt;In addition to the excellent speakers, these one-day events include chat rooms, interactive sponsor booths, raffles from the sponsors, an attendee rewards leaderboard (winners get some cool prizes), scavenger hunts, wellness videos, and a "challenge" feature that is interactive with the community.&lt;/p&gt;




&lt;h2&gt;
  
  
  INS1GHTS2020 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;INS1GHTS2020 was a one-day event hosted by NS1. Sessions were delivered by industry leaders in NetOps, DevOps, and application delivery. &lt;/p&gt;

&lt;p&gt;Much like some of the other events, INS1GHTS2020 offered an active &lt;a href="https://resources.ns1.com/ins1ghts2020"&gt;slack channel&lt;/a&gt; that you can still gain access to. &lt;/p&gt;

&lt;p&gt;Also much like SKILup, this event was packed with opportunities to get some swag and sponsor prizes.&lt;/p&gt;

&lt;p&gt;All the presentations can be found &lt;a href="https://resources.ns1.com/ins1ghts2020"&gt;on demand&lt;/a&gt; and viewed after registration. &lt;/p&gt;




&lt;h2&gt;
  
  
  Future Events &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://devopsinstitute.com/virtual-skilup-days/"&gt;SKILup Days Future MicroConferences&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;July 16th Continuous Delivery Ecosystem&lt;/li&gt;
&lt;li&gt;August 20th Observability&lt;/li&gt;
&lt;li&gt;September 17th DevSecOps&lt;/li&gt;
&lt;li&gt;October 15 AIOps &amp;amp; MLOps&lt;/li&gt;
&lt;li&gt;November 12th Continuous Testing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.cloudbees.com/devops-world"&gt;Septemember 22 - 24 DevOps World&lt;/a&gt; (Note: the &lt;br&gt;
 event is free but some workshops are not) &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Even though these events are not like your average conference experience they are a great quarantine getaway!&lt;/p&gt;

&lt;p&gt;Hope you enjoy 🙂✌🏾&lt;/p&gt;

</description>
      <category>sre</category>
      <category>devops</category>
      <category>cloud</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>freeCodeCamp has Python Certifications</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Sat, 04 Jul 2020 08:59:09 +0000</pubDate>
      <link>https://dev.to/ari_hacks/freecodecamp-has-python-certifications-5fm5</link>
      <guid>https://dev.to/ari_hacks/freecodecamp-has-python-certifications-5fm5</guid>
      <description>&lt;p&gt;In addition to the JavaScript certifications offered, &lt;a href="https://www.freecodecamp.org/"&gt;freeCodeCamp&lt;/a&gt; recently rolled out some Python certs to join in!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3ohryD06NMpRUCxsuQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3ohryD06NMpRUCxsuQ/giphy.gif" alt="Alt text of image"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  These are the 4 new certifications and the material they cover:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Scientific Computing with Python
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Python for Everybody&lt;/strong&gt; &lt;br&gt;
An introduction to Python with some regEx, networking, web, database, and even data visualization material.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scientific Computing with Python Projects&lt;/strong&gt; &lt;br&gt;
Arithmetic Formatter, Time Calculator, Budget App, Polygon Area Calculator, and Probability Calculator&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Data Analysis with Python
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Data Analysis with Python Course&lt;/strong&gt; &lt;br&gt;
An introduction to data analysis, Jupyter Notebook, Numpy, Pandas, data cleaning, reading data, parsing data, and some more core Python.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Numpy&lt;/strong&gt; &lt;br&gt;
An overview of Numpy and its applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Analysis with Python Projects&lt;/strong&gt;&lt;br&gt;
Mean-Variance-Standard Deviation Calculator, Demographic Data Analyzer, Medical Data Visualizer, Page View Time Series Visualizer, and Sea Level Predictor &lt;/p&gt;




&lt;h2&gt;
  
  
  3. Information Security
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Information Security with HelmetJS&lt;/strong&gt; &lt;br&gt;
This is a bit of JS in the mix covering web security and hashing. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python for Penetration Testing&lt;/strong&gt; &lt;br&gt;
Material on Sockets, TCP, and Developing an Nmap Scanner, Banner Grabber, and Port Scanner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Information Security Projects&lt;/strong&gt; &lt;br&gt;
Stock Price Checker, Anonymous Message Board, Port Scanner, SHA-1 Password Cracker, and a Secure Real-Time Multiplayer Game &lt;/p&gt;




&lt;h2&gt;
  
  
  4. Machine Learning with Python
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TensorFlow&lt;/strong&gt;&lt;br&gt;
Material on TensorFlow, Machine Learning, Algorithms, Neural Networks, NLP, and Reinforcement Learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Neural Networks Work&lt;/strong&gt;&lt;br&gt;
Material on Neural Networks, Deep Learning, and Convolutional Neural Networks. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machine Learning with Python Projects&lt;/strong&gt;&lt;br&gt;
Rock Paper Scissors, Cat and Dog Image Classifier, Book Recommendation Engine using KNN, Linear Regression Health Costs Calculator, and a Neural Network SMS Text Classifier. &lt;/p&gt;




&lt;p&gt;Note: A lot of this material is video-based while freeCodeCamp is building out the interactive content.  &lt;/p&gt;

&lt;p&gt;You can read more about the certifications &lt;a href="https://www.freecodecamp.org/news/python-curriculum-is-live/"&gt;here&lt;/a&gt;, Quincy Larson talks about the update as well as some more info on the next release. 🙂✌🏾&lt;/p&gt;

</description>
      <category>news</category>
      <category>python</category>
      <category>beginners</category>
      <category>freecodecamp</category>
    </item>
    <item>
      <title>Python...in the browser!? 🤯 : A Web Monetization x Web Assembly Experiment</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Wed, 20 May 2020 04:38:34 +0000</pubDate>
      <link>https://dev.to/ari_hacks/python-in-the-browser-a-web-monetization-x-web-assembly-experiment-32c1</link>
      <guid>https://dev.to/ari_hacks/python-in-the-browser-a-web-monetization-x-web-assembly-experiment-32c1</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I built a demo hub where users can experiment with data science by graphing data sets in the browser then downloading them. Web Monetized browsers won't see the Ads on the page and can also experiment with additional graphing tools. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: This project is in the demo phase. In the future, I’d like to build out the graphing tools to handle more sophisticated data sets. As well as add a login/dashboard feature. 🙂 &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;While researching what to build for &lt;a href="https://dev.to/devteam/announcing-the-grant-for-the-web-hackathon-on-dev-3kd1"&gt;the Grant For the Web Hackathon&lt;/a&gt; I initially thought of creating something with a JavaScript framework since I'd be interacting with the browser API. However, my journey here on Dev.to is to learn more about Python and what we can do with it. So I thought about how I could incorporate Web Monetization with Python. After some digging, I found this cool project created by Mozilla called &lt;a href="https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser/" rel="noopener noreferrer"&gt;Pyodide&lt;/a&gt;!  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Pyodide is an experimental project from Mozilla to create a full Python data science stack that runs entirely in the browser."&lt;br&gt;
~ Michael Droettboom&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some of you may be thinking what's wrong with just using JavaScript? JavaScript is great but can you imagine a world where you can use mature data science libraries in the browser to quickly create data science tools and machine learning models? Not to mention being able to share those resources over the web? AND being able to make some money in the process?! 🤯🙌🏾&lt;/p&gt;

&lt;p&gt;Pyodide is currently in its infancy and there are caveats and performance drawbacks but I'm excited to see where it goes!     &lt;/p&gt;




&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Creative Catalyst&lt;br&gt;
Exciting Experiments&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ari-hacks" rel="noopener noreferrer"&gt;
        ari-hacks
      &lt;/a&gt; / &lt;a href="https://github.com/ari-hacks/the-hub" rel="noopener noreferrer"&gt;
        the-hub
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      📈📊 A hub where users can experiment with graphing and Python in the browser (https://pyodide-experiment.herokuapp.com/)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Data Hub 📈&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/cce5a2a14b0faab422e0bfcdc074afb46089831a0bf5930a7d8af3f31b98f847/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/cce5a2a14b0faab422e0bfcdc074afb46089831a0bf5930a7d8af3f31b98f847/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;A demo hub where users can experiment with data science by graphing data sets in the browser then downloading them. Web Monetized browsers won't see the ads on the page and can also experiment with additional graphing tools.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;This Project is a Grant For the Web x DEV Hackathon Runner-Up Winner  🏆🎉&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;✍️ &lt;a href="https://dev.to/ari_hacks/python-in-the-browser-a-web-monetization-x-web-assembly-experiment-32c1" rel="nofollow"&gt;Blog Post&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 csv upload&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Enhanced Plots with &lt;a href="https://plotly.com/" rel="nofollow noopener noreferrer"&gt;Plotly&lt;/a&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Web Monetization enabled&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Image download&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Testing Data&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plot&lt;/th&gt;
&lt;th&gt;Input File&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pie&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/os-comparison.csv" rel="noopener noreferrer"&gt;Comparison of trending operating systems&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scatter/Line&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/zoom-backgrounds.csv" rel="noopener noreferrer"&gt;Trends of funny zoom backgrounds&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time Series&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/Pho%20vs%20Ramen%20vs%20Soba.csv" rel="noopener noreferrer"&gt;Comparison of trending noodles&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Geo Map&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/earthquake-data.csv" rel="noopener noreferrer"&gt;International earthquake data&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heat Map&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/heatmap-dataset%20-%20Sheet1.csv" rel="noopener noreferrer"&gt;Random Data Set&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-D&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ari-hacks/the-hub/data/plotly-dataset.csv" rel="noopener noreferrer"&gt;Random Data set&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Set up&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Requirements&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;Python&lt;/a&gt; 3.7&lt;/li&gt;
&lt;li&gt;Pipenv&lt;/li&gt;
&lt;li&gt;Browser with &lt;a href="https://chrome.google.com/webstore/detail/coil/locbifcbeldmnphbgkdigjmkbfkhbnca?hl=en" rel="nofollow noopener noreferrer"&gt;coil wallet (No Sign in required for testing)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;del&gt;&lt;a href="https://github.com/iodide-project/pyodide/releases" rel="noopener noreferrer"&gt;Get Latest Pyodide Downloaded (pyodide.js)&lt;/a&gt;&lt;/del&gt; Using CDN&lt;/li&gt;
&lt;li&gt;&lt;a href="https://testwebmonetization.com/" rel="nofollow noopener noreferrer"&gt;Bookmarklet : For testing coil without an account&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Local development&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;After the above requirements have been met:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone this…&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ari-hacks/the-hub" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://webmonetization.org/docs/exclusive-content" rel="noopener noreferrer"&gt;Web Monetization Api - Exclusive Content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webmonetization.org/docs/remove-ads" rel="noopener noreferrer"&gt;Web Monetization Api - Removing Ads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/iodide-project/pyodide" rel="noopener noreferrer"&gt;Pyodide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python | JavaScript | HTML | CSS&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser/" rel="noopener noreferrer"&gt;Mozilla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://testwebmonetization.com/" rel="noopener noreferrer"&gt;Test Web Monetization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webassembly.org/" rel="noopener noreferrer"&gt;Webassembly.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tooplate.com/view/2108-dashboard" rel="noopener noreferrer"&gt;UI Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Data Sets for Testing

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://trends.google.com/trends/?geo=US" rel="noopener noreferrer"&gt;Google Trends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://earthquake.usgs.gov/earthquakes/feed/v1.0/csv.php" rel="noopener noreferrer"&gt;USGS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plotly.com/" rel="noopener noreferrer"&gt;Plotly example data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;More on Pyodide

&lt;div class="podcastliquidtag"&gt;
  &lt;div class="podcastliquidtag__info"&gt;
    &lt;a href="/talkpython/212-python-in-web-assembly-with-pyodide"&gt;
      &lt;h1 class="podcastliquidtag__info__episodetitle"&gt;#212 Python in Web Assembly with Pyodide&lt;/h1&gt;
    &lt;/a&gt;
    &lt;a href="/talkpython"&gt;
      &lt;h2 class="podcastliquidtag__info__podcasttitle"&gt;
        Talk Python
      &lt;/h2&gt;
    &lt;/a&gt;
  &lt;/div&gt;
  &lt;div id="record-212-python-in-web-assembly-with-pyodide" class="podcastliquidtag__record"&gt;
    &lt;img class="button play-butt" id="play-butt-212-python-in-web-assembly-with-pyodide" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fplaybutt-5e444a2eae28832efea0dec3342ccf28a228b326c47f46700d771801f75d6b88.png" alt="play"&gt;
    &lt;img class="button pause-butt" id="pause-butt-212-python-in-web-assembly-with-pyodide" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fpausebutt-bba7cb5f432cfb16510e78835378fa22f45fa6ae52a624f7c9794fefa765c384.png" alt="pause"&gt;
    &lt;img class="podcastliquidtag__podcastimage" id="podcastimage-212-python-in-web-assembly-with-pyodide" alt="Talk Python" 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%2Fpodcast%2Fimage%2F21%2Fart.png"&gt;
  &lt;/div&gt;

  &lt;div class="hidden-audio" id="hidden-audio-212-python-in-web-assembly-with-pyodide"&gt;
  
    
    Your browser does not support the audio element.
  
  &lt;div id="progressBar" class="audio-player-display"&gt;
    &lt;a href="/talkpython/212-python-in-web-assembly-with-pyodide"&gt;
      &lt;img id="episode-profile-image" alt="#212 Python in Web Assembly with Pyodide" width="420" height="420" 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%2Fpodcast%2Fimage%2F21%2Fart.png"&gt;
      &lt;img id="animated-bars" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fanimated-bars-4e8c57c8b58285fcf7d123680ad8af034cd5cd43b4d9209fe3aab49d1e9d77b3.gif" alt="animated volume bars"&gt;
    &lt;/a&gt;
    &lt;span id="barPlayPause"&gt;
      &lt;img class="butt play-butt" alt="play" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fplaybutt-5e444a2eae28832efea0dec3342ccf28a228b326c47f46700d771801f75d6b88.png"&gt;
      &lt;img class="butt pause-butt" alt="pause" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fpausebutt-bba7cb5f432cfb16510e78835378fa22f45fa6ae52a624f7c9794fefa765c384.png"&gt;
    &lt;/span&gt;
    &lt;span id="volume"&gt;
      &lt;span id="volumeindicator" class="volume-icon-wrapper showing"&gt;
        &lt;span id="volbutt"&gt;
          &lt;img alt="volume" class="icon-img" height="16" width="16" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fvolume-cd20707230ae3fc117b02de53c72af742cf7d666007e16e12f7ac11ebd8130a7.png"&gt;
        &lt;/span&gt;
        &lt;span class="range-wrapper"&gt;
          
        &lt;/span&gt;
      &lt;/span&gt;
      &lt;span id="mutebutt" class="volume-icon-wrapper hidden"&gt;
        &lt;img alt="volume-mute" class="icon-img" height="16" width="16" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fvolume-mute-8f08ec668105565af8f8394eb18ab63acb386adbe0703afe3748eca8f2ecbf3b.png"&gt;
      &lt;/span&gt;
      &lt;span class="speed" id="speed"&gt;1x&lt;/span&gt;
    &lt;/span&gt;
    &lt;span class="buffer-wrapper" id="bufferwrapper"&gt;
      &lt;span id="buffer"&gt;&lt;/span&gt;
      &lt;span id="progress"&gt;&lt;/span&gt;
      &lt;span id="time"&gt;initializing...&lt;/span&gt;
      &lt;span id="closebutt"&gt;×&lt;/span&gt;
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;

&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>gftwhackathon</category>
      <category>python</category>
      <category>webassembly</category>
      <category>datascience</category>
    </item>
    <item>
      <title>A Reading List &amp; Repo List 📚 for Learning DevOps, SRE, and Automation(w/Python) </title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Thu, 07 May 2020 18:59:00 +0000</pubDate>
      <link>https://dev.to/ari_hacks/a-reading-list-repo-list-for-learning-devops-sre-and-automation-w-python-4kdp</link>
      <guid>https://dev.to/ari_hacks/a-reading-list-repo-list-for-learning-devops-sre-and-automation-w-python-4kdp</guid>
      <description>&lt;p&gt;When learning new things I find that I fall into the same practice of adding countless bookmarks to my browser, keeping wayyyyy more tabs open than necessary, and admittedly searching the web trying to find the perfect tutorial or resource to get started. So I decided to put some of the resources I'm finding helpful in this post to help anyone else who finds themselves in an endless google search. 😅&lt;/p&gt;

&lt;p&gt;My main goal is to learn more about DevOps/SRE best practices and role responsibilities, AWS, and automation with python. &lt;/p&gt;

&lt;p&gt;If you are on a similar learning path take a look at this list and &lt;strong&gt;PLEASE&lt;/strong&gt; add more in the comments if you've found some great resources or projects/tools that helped you! 🙂✌🏾&lt;/p&gt;

&lt;h2&gt;
  
  
  Githubs
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dastergon" rel="noopener noreferrer"&gt;
        dastergon
      &lt;/a&gt; / &lt;a href="https://github.com/dastergon/awesome-sre" rel="noopener noreferrer"&gt;
        awesome-sre
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A curated list of Site Reliability and Production Engineering resources.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Jump to &lt;a href="https://github.com/vinta/awesome-python#devops-tools" rel="noopener noreferrer"&gt;DevOps Tools in awesome-python&lt;/a&gt;&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vinta" rel="noopener noreferrer"&gt;
        vinta
      &lt;/a&gt; / &lt;a href="https://github.com/vinta/awesome-python" rel="noopener noreferrer"&gt;
        awesome-python
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An opinionated list of awesome Python frameworks, libraries, software and resources.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



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


&lt;h2&gt;
  
  
  Books
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Python-DevOps-Ruthlessly-Effective-Automation/dp/149205769X/ref=sr_1_3?dchild=1&amp;amp;keywords=python+for+devops&amp;amp;qid=1588874260&amp;amp;sr=8-3" rel="noopener noreferrer"&gt;Python for DevOps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Effective-DevOps-Building-Collaboration-Affinity/dp/1491926309/ref=sr_1_3?dchild=1&amp;amp;keywords=effective+devops&amp;amp;qid=1588874301&amp;amp;sr=8-3" rel="noopener noreferrer"&gt;Effective DevOps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://landing.google.com/sre/resources/foundationsandprinciples/srs-book/" rel="noopener noreferrer"&gt;Building Secure &amp;amp; Reliable Systems(FREE Download)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://landing.google.com/sre/books/" rel="noopener noreferrer"&gt;The Site Reliability Workbook(FREE to read online)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://landing.google.com/sre/books/" rel="noopener noreferrer"&gt;Site Reliability Engineering(FREE to read online)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://acloud.guru/" rel="noopener noreferrer"&gt;A Cloud Guru&lt;/a&gt; - A great place to learn about cloud technology and to prep for AWS certs. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gremlin.com/site-reliability-engineering/" rel="noopener noreferrer"&gt;Gremlin&lt;/a&gt; - Testing all the things in production! &lt;/li&gt;
&lt;li&gt;Slack Channels: 

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gremlin.com/slack/" rel="noopener noreferrer"&gt;Chaos Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pyslackers.com/web/slack" rel="noopener noreferrer"&gt;Python Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devopschat.co/register" rel="noopener noreferrer"&gt;DevOps Chat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>sre</category>
      <category>python</category>
    </item>
    <item>
      <title>A Smart-ish Covid ChatBot 🤖</title>
      <dc:creator>Ari 🪐</dc:creator>
      <pubDate>Thu, 30 Apr 2020 18:27:40 +0000</pubDate>
      <link>https://dev.to/ari_hacks/a-smart-ish-covid-chatbot-2kcd</link>
      <guid>https://dev.to/ari_hacks/a-smart-ish-covid-chatbot-2kcd</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I built a ChatBot that communicates via Twilio's API on WhatsApp. The Bot gives Covid-19 statistics from the US &amp;amp; the UK. It also provides some positive news articles to read in light of recent times. &lt;/p&gt;

&lt;h4&gt;
  
  
  Category Submission:
&lt;/h4&gt;

&lt;p&gt;COVID-19 Communications&lt;br&gt;
Interesting Integrations&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ari-hacks" rel="noopener noreferrer"&gt;
        ari-hacks
      &lt;/a&gt; / &lt;a href="https://github.com/ari-hacks/covid-chatbot" rel="noopener noreferrer"&gt;
        covid-chatbot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🤖 A Twilio Hackathon Project 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Covid-19 ChatBot 🤖&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/cce5a2a14b0faab422e0bfcdc074afb46089831a0bf5930a7d8af3f31b98f847/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/cce5a2a14b0faab422e0bfcdc074afb46089831a0bf5930a7d8af3f31b98f847/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="MIT license"&gt;&lt;/a&gt; &lt;a href="https://travis-ci.com/ari-hacks/covid-chatbot" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0601bd3cde12e9dcfbfb012ff6b0b0c385da9ba5db33b2a3c8ce8df1e70d9e1d/68747470733a2f2f7472617669732d63692e636f6d2f6172692d6861636b732f636f7669642d63686174626f742e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This is a simple ChatBot that communicates via Twilio's API on WhatsApp. The Bot gives Covid statistics from the US &amp;amp; the UK. It also provides some positive news articles to read in light of recent times.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How it works&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Users interact with WhatsApp to communicate with the ChatBot.
The Bot replies to greetings along with different variations of the following questions.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Sample Questions:&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Greeting!&lt;/td&gt;
&lt;td&gt;Hi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hi, How is it going?&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uk confirmed cases?&lt;/td&gt;
&lt;td&gt;Confirmed Uk Cases 165221&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How many uk confirmed cases?&lt;/td&gt;
&lt;td&gt;Confirmed Uk Cases 165221&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What are the us covid stats?&lt;/td&gt;
&lt;td&gt;United States Stats: confirmed: 1055303 recovered: 144423 critical: 18665 deaths: 61112&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uk stats&lt;/td&gt;
&lt;td&gt;United Kingdom Stats: confirmed: 165221 recovered: 1918 critical: 1559 deaths: 26097&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;what are the uk covid stats?&lt;/td&gt;
&lt;td&gt;United Kingdom Stats: confirmed: 165221 recovered: 1918 critical: 1559 deaths: 26097&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;how many us recovered cases are there?&lt;/td&gt;
&lt;td&gt;Recovered Us&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ari-hacks/covid-chatbot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;Stack &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python web framework using FastApi&lt;/li&gt;
&lt;li&gt;Twilio API for WhatsApp&lt;/li&gt;
&lt;li&gt;Automated responses and bot training with Chatterbot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some Issues&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up ChatterBot produced issues with the &lt;a href="https://pypi.org/project/nltk/" rel="noopener noreferrer"&gt;nltk package&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It took some time to find the right way to set up deployment in Heroku, &lt;a href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&gt;FastApi&lt;/a&gt; is a relatively new Python framework so there are not as many resources for it as Django or Flask. &lt;/li&gt;
&lt;li&gt;Querying news articles based on keywords did not always produce 'good' news, however, I selected The Guardian API because you can also query on basic logic operators. &lt;/li&gt;
&lt;li&gt;The Chatbot doesn't always return the desired results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things I learned&lt;/p&gt;

&lt;p&gt;Since this is my first Hackathon and I am quarantined in another country I decided to use the time and opportunity to learn all new things! This is the first API I've created with python. I decided on FastApi because of its simplicity and great features (especially the built-in docs 🙌🏾). &lt;/p&gt;

&lt;p&gt;I also wanted to add a machine learning component so after some research, I landed on &lt;a href="https://github.com/gunthercox/ChatterBot" rel="noopener noreferrer"&gt;ChatterBot&lt;/a&gt;. I think it is a great introduction for someone wanting to learn some of the basics of ML.     &lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;I used the &lt;a href="https://open-platform.theguardian.com/" rel="noopener noreferrer"&gt;Guardian API&lt;/a&gt; to get news articles and a Covid-19 API from &lt;a href="https://rapidapi.com/Gramzivi/api/covid-19-data" rel="noopener noreferrer"&gt;rapidapi.com&lt;/a&gt; to get coronavirus statistics.&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>python</category>
      <category>fastapi</category>
      <category>chatterbot</category>
    </item>
  </channel>
</rss>
