<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tony Diaz</title>
    <description>The latest articles on Forem by Tony Diaz (@tonydiaz).</description>
    <link>https://forem.com/tonydiaz</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%2F33058%2F8ae869f8-641b-4234-8ae6-3af8a4912f63.jpeg</url>
      <title>Forem: Tony Diaz</title>
      <link>https://forem.com/tonydiaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tonydiaz"/>
    <language>en</language>
    <item>
      <title>Github actions triggering Alexa notifications</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Tue, 01 Sep 2020 01:06:19 +0000</pubDate>
      <link>https://forem.com/tonydiaz/github-actions-triggering-alexa-notifications-4p1</link>
      <guid>https://forem.com/tonydiaz/github-actions-triggering-alexa-notifications-4p1</guid>
      <description>&lt;p&gt;I've been interested in leveraging virtual assistant devices such as Alexa in my everyday routine. I've even documented &lt;a href="https://dev.to/tonydiaz/working-from-home-with-amazon-alexa-4hko"&gt;working from home with Alexa&lt;/a&gt; during the pandemic. What a great way to stay up to date on your repo(s) than getting notified on Alexa when an event happens. &lt;/p&gt;

&lt;p&gt;For anyone working out of GitHub, you could get informed of new pull requests or issues. Any of the &lt;a href="https://docs.github.com/en/actions/reference/events-that-trigger-workflows"&gt;Github action triggers&lt;/a&gt; could be used to activate a notification&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;The GitHub action is called Alexa Notification Github Action.&lt;/p&gt;

&lt;p&gt;To make the connection to Alexa happen I'm using an existing Alexa skill called &lt;a href="https://www.amazon.com/Thomptronics-Notify-Me/dp/B07BB2FYFS"&gt;Notify me&lt;/a&gt;. This skill allows you to easily set up a REST API to send notifications with your Alexa device.&lt;/p&gt;

&lt;h4&gt;
  
  
  Setup NotifyMe
&lt;/h4&gt;

&lt;p&gt;First, ask your Alexa device to Open Notify Me :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa, open notify me"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;It will add the skill to your device. You will then need to link your Alexa account to the skill by using the Alexa app on your mobile device. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UW7rJeVx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pr8q198n15uf84xwwzh6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UW7rJeVx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pr8q198n15uf84xwwzh6.jpg" alt="Alexa app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once in the app, you will just need to sign-in to your Amazon account. Amazon will ask if you allow the skill access to your profile. It will just use your email to allow you to get an API key and secret later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FA68hn1Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tadp4fxte6iyyyfhr527.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FA68hn1Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tadp4fxte6iyyyfhr527.PNG" alt="Notify me account is linked"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optionally&lt;/strong&gt; you can edit the skill settings to turn on the green light notification on your device when the skill receives a message.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tB3oGo43--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w723a40fpw1jwxd51r4s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tB3oGo43--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w723a40fpw1jwxd51r4s.PNG" alt="Notify me permissions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Login to &lt;a href="https://www.getnotify.me/"&gt;https://www.getnotify.me/&lt;/a&gt; to test a message on your Alexa device and get your API credentials. Once you have your key and secret go ahead and add those secrets to the repository you have set for your GitHub action. &lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Interesting IoT&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File or 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://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tonydiaz"&gt;
        tonydiaz
      &lt;/a&gt; / &lt;a href="https://github.com/tonydiaz/amazon-alexa-notification-github-action"&gt;
        amazon-alexa-notification-github-action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Get notifications on your Amazon Alexa device through GitHub actions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
amazon-alexa-notification-github-action&lt;/h1&gt;
&lt;p&gt;Get notifications on your Amazon Alexa device through GitHub actions&lt;/p&gt;
&lt;h2&gt;
Steps&lt;/h2&gt;
&lt;h3&gt;
1. Enable the NotifyMe skill on your Alexa App&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Alexa, enable NotifyMe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Go to your Alexa app on your mobile device to link the skill with your account. This will allow the skill to tie the API credentials to your email account.&lt;/p&gt;
&lt;h3&gt;
Optional: Turn on the notification indicator for this skill:&lt;/h3&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;h3&gt;
2. Login to &lt;a href="https://www.getnotify.me/" rel="nofollow"&gt;https://www.getnotify.me/&lt;/a&gt; for credentials&lt;/h3&gt;
&lt;p&gt;Here you can send a test message to you Alexa  device and generate credentials for to use with the API.&lt;/p&gt;
&lt;h3&gt;
3. Setup you action on your repository&lt;/h3&gt;
&lt;p&gt;This action cab be triggered from any of the available &lt;a href="https://docs.github.com/en/actions/reference/events-that-trigger-workflows"&gt;events&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is an example for an issue being opened:&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;on&lt;/span&gt;
  &lt;span class="pl-ent"&gt;issues&lt;/span&gt;
    &lt;span class="pl-ent"&gt;types&lt;/span&gt;: &lt;span class="pl-s"&gt;[opened]&lt;/span&gt;
&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;
  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; This workflow contains a single job called "alexa-notify"&lt;/span&gt;
  &lt;span class="pl-ent"&gt;alexa-notify&lt;/span&gt;:
    &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; The type of runner that the job will run on&lt;/span&gt;
    &lt;span class="pl-ent"&gt;runs-on&lt;/span&gt;: &lt;/pre&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/tonydiaz/amazon-alexa-notification-github-action"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub action in action
&lt;/h3&gt;

&lt;p&gt;I posted a video to show how the Github Action will work when a new issue is created. After the action executes Amazon Alexa will chime with the notification light. I can then ask Alexa to tell me the notification. The notification is set to tell me a new is was created with the issue number and title. &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/EXI0h2txzGY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Using &lt;a href="https://www.amazon.com/Thomptronics-Notify-Me/dp/B07BB2FYFS"&gt;Notify me&lt;/a&gt; skill. &lt;/p&gt;

</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>"Bye 👋 Felicia" GitHub action</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Sun, 23 Aug 2020 01:30:34 +0000</pubDate>
      <link>https://forem.com/tonydiaz/bye-felicia-github-action-2mdd</link>
      <guid>https://forem.com/tonydiaz/bye-felicia-github-action-2mdd</guid>
      <description>&lt;p&gt;We all have them, repositories that gather digital dust. They haven't been updated in years, with no plans to ever touch them again. Repos that we no longer look at, and get no love. GitHub doesn't limit the number of repositories so there is no incentive to tidy them up. &lt;/p&gt;

&lt;p&gt;You have probably always wanted a way to say "Bye Felicia" to your repo and it would automatically be deleted. Well, you are in luck because that is what I built. Say hello to the Bye Felicia GitHub Action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For those unfamiliar with the term here is a &lt;a href="https://www.dictionary.com/e/slang/bye-felicia/" rel="noopener noreferrer"&gt;link&lt;/a&gt; to learn more.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/SZioIIBxB7QRy/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/SZioIIBxB7QRy/giphy.gif" alt="Bye Felicia"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;"Bye Felicia" is the newest GitHub Action sure to be integrated into the &lt;a href="https://github.com/actions/toolkit" rel="noopener noreferrer"&gt;actions toolkit&lt;/a&gt; package to make it easier to delete your repositories. &lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Wacky Wildcards&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Yaml File
&lt;/h3&gt;

&lt;p&gt;Just add this action to your repos and whenever you don't want them anymore just say "Bye Felicia" in an issue comment and it will be deleted and 404.&lt;/p&gt;

&lt;p&gt;Here is an example being triggered by an issue comment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;👋 Felicia&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;issue_comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;created&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run bye-felicia action&lt;/span&gt;
      &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tonydiaz/bye-felicia-github-action@main&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;github-secret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.REPO_ACCESS_TOKEN }}&lt;/span&gt;
        &lt;span class="na"&gt;github-repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ github.repository }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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/tonydiaz" rel="noopener noreferrer"&gt;
        tonydiaz
      &lt;/a&gt; / &lt;a href="https://github.com/tonydiaz/bye-felicia-github-action" rel="noopener noreferrer"&gt;
        bye-felicia-github-action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;👋 Felicia GitHub Action&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;GitHub action that will delete your repository.&lt;/p&gt;

&lt;p&gt;We all have them, repositories that gather dust. They been updated in years, with no plans to ever touch them again. Repos that no one looks at, potentially using versions of software that are now depricated. Let's face it we don't do a good job cleaning up our old repositories. Cleanup of repos is where this Github Action shines.&lt;/p&gt;

&lt;p&gt;By adding this action all you will ever need to do is say &lt;code&gt;Bye Felicia!&lt;/code&gt; in a issue comment and your repo is no more.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0478f8ea061111aa21b970ea356fd15abb123c23e634e149ade7d9356b9ad748/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f535a696f4949427842375152792f67697068792e676966"&gt;&lt;img src="https://camo.githubusercontent.com/0478f8ea061111aa21b970ea356fd15abb123c23e634e149ade7d9356b9ad748/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f535a696f4949427842375152792f67697068792e676966" alt="Bye Felicia"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;REPO_ACCESS_TOKEN&lt;/strong&gt; - You will need to create a &lt;a href="https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token" rel="noopener noreferrer"&gt;personal access token&lt;/a&gt; to access have the ability to delete a repository. Add that token as a secret in your repo.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example usage&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;tonydiaz/bye-felicia-github-action@main&lt;/span&gt;
&lt;span class="pl-ent"&gt;with&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;github-secret&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ secrets.REPO_ACCESS_TOKEN }}&lt;/span&gt;&lt;/pre&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/tonydiaz/bye-felicia-github-action" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub action in action
&lt;/h3&gt;

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

</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Azure spell checker GitHub action</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Mon, 17 Aug 2020 15:28:59 +0000</pubDate>
      <link>https://forem.com/tonydiaz/azure-spell-checker-github-action-26pc</link>
      <guid>https://forem.com/tonydiaz/azure-spell-checker-github-action-26pc</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spelling errors cause frustration for maintainers, it can delay a response or cause confusion in what is being discussed.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'll admit, I'm not a great typist. I fat-finger keys and misspell words a lot. I try to be careful, write slowly, and proofread anything before sending a message. I also leverage tools that will flag spelling and grammar errors. When I write quickly it typically results in some misspellings.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;The opensource community uses issues as a way of communicating problems feature requests questions, etc. Maintainers need to read each issue and all the comments. Spelling errors cause frustration for maintainers, it can delay a response or cause confusion in what is being discussed. To help a maintainer I have created a spell check using the &lt;a href="https://azure.microsoft.com/en-us/services/cognitive-services/spell-check/"&gt;Bing spell check API&lt;/a&gt; azure service. &lt;/p&gt;

&lt;p&gt;Once a person leaves a comment on an issue an action will trigger to grab the text and spell-check it using the Azure API. If any corrections come back in the response the action will check how confident the suggestion is against what the configuration is set to. If the confidence is higher than the configured confidence, the action will update the word(s) automatically. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;This can save a maintainer so much time that I wanted to submit it to this Hackathon.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Requirements
&lt;/h4&gt;

&lt;p&gt;You will need to signup for &lt;a href="https://azure.microsoft.com/en-us/account/"&gt;Azure&lt;/a&gt; and create a Bing spell check service. This can all be done for free. Once created, you will get a Key and Endpoint that you can add to your &lt;a href="https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets"&gt;Secrets&lt;/a&gt; in the repository.&lt;/p&gt;

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

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tonydiaz/bing-spellcheck-github-action@main&lt;/span&gt;
&lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;spellchecker-key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.SPELLCHECKER_KEY }}&lt;/span&gt;
  &lt;span class="na"&gt;spellchecker-endpoint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.SPELLCHECKER_ENDPOINT }}&lt;/span&gt;
  &lt;span class="na"&gt;spellcheck-confidence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.90&lt;/span&gt;
  &lt;span class="na"&gt;github-secret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&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://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tonydiaz"&gt;
        tonydiaz
      &lt;/a&gt; / &lt;a href="https://github.com/tonydiaz/bing-spellcheck-github-action"&gt;
        bing-spellcheck-github-action
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Bing spell check github action&lt;/h1&gt;
&lt;p&gt;This action uses the Bing spell checker API to correct spelling errors in issue comments. You will need to register for an Microsoft Azure account to get the Bing spell check key and endpoint to use for this action.&lt;/p&gt;
&lt;h2&gt;
Inputs&lt;/h2&gt;
&lt;h3&gt;
Required&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;SPELLCHECKER_KEY&lt;/strong&gt; - The Bing spell check API key. Given when registering the service in Azure.
&lt;strong&gt;SPELLCHECKER_ENDPOINT&lt;/strong&gt; - The Bing spell check endpoint. Given when registering the service in Azure.
&lt;strong&gt;GITHUB_TOKEN&lt;/strong&gt; - Auto-created token from github for actions
Provide a spell check confidence value. How confident should the suggested correction be to update the word? The default is 80%&lt;/p&gt;
&lt;h2&gt;
Example usage&lt;/h2&gt;
&lt;p&gt;The key and endpoint should be be added as envrionment variables&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml"&gt;&lt;pre&gt;&lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;actions/bing-spellcheck-github-action@main&lt;/span&gt;
&lt;span class="pl-ent"&gt;with&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;spellchecker-key&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ secrets.SPELLCHECKER_KEY }}&lt;/span&gt;
  &lt;span class="pl-ent"&gt;spellchecker-endpoint&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ secrets.SPELLCHECKER_ENDPOINT }}&lt;/span&gt;
  &lt;span class="pl-ent"&gt;spellcheck-confidence&lt;/span&gt;: &lt;span class="pl-c1"&gt;0.90&lt;/span&gt;
  &lt;span class="pl-ent"&gt;github-secret&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;&lt;/pre&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/tonydiaz/bing-spellcheck-github-action"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub Action in action:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---eTMOqle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/37mktds0s31ix2ynzlo7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---eTMOqle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/37mktds0s31ix2ynzlo7.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Dev username: tonydiaz&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Planning poker chatbot</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Mon, 27 Jul 2020 16:06:15 +0000</pubDate>
      <link>https://forem.com/tonydiaz/planning-poker-chatbot-59n1</link>
      <guid>https://forem.com/tonydiaz/planning-poker-chatbot-59n1</guid>
      <description>&lt;p&gt;&lt;em&gt;Cover image photo by&lt;/em&gt; &lt;a href="https://unsplash.com/@adityachinchure?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Aditya Chinchure&lt;/a&gt; &lt;em&gt;on Unsplash&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is planning poker?
&lt;/h2&gt;

&lt;p&gt;Planning poker is a technique to size work that is consensus-based. Used mostly in agile software development planning poker has been determined to provide a more accurate estimate of the effort.  &lt;a href="https://en.wikipedia.org/wiki/Planning_poker" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The typical sizing values are Fibonacci numbers, including a zero. Although the values can be determined by the team doing the sizing. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to run planning poker
&lt;/h2&gt;

&lt;p&gt;Typically a product owner runs the session although any team member familiar with the user stories can moderate. This moderator would take a user story to be sized and walks through an overview. The team asks questions and provides relevant details that may affect the sizing. Once all questions have been answered and comments made the moderator will ask the team to size the story. After the participants have made their estimates, team members have the opportunity to justify their estimate. Justification can be limited to the outlier estimates that are high or low. After the justifications have been made the moderator will ask the team to size the story again or ask for a consensus across the team on an estimate. Once the consensus has been made the moderator will log the size and move to the next one. This process can repeat for however many stories there are to size or it can be time-boxed to size only the stories the team can within the meeting duration. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made a planning poker chatbot
&lt;/h2&gt;

&lt;p&gt;I've been interested in identifying use cases where chatbots using AI technology can handle tasks outright and serve as an alternative to other tools. Many people are already using virtual assistant AI technology. Siri, Alexa, Google Home, and many of the chat widgets on webpages are using by AI technology. I wrote about how I use &lt;a href="https://dev.to/tonydiaz/working-from-home-with-amazon-alexa-4hko"&gt;Amazon Alexa while working from home&lt;/a&gt;. As more advance meant of AI technology is made these virtual assistants will be able to handle more complex tasks. With the examples showing GPT-3 capability the use cases for virtual assistants will significantly increase.  &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1282676454690451457-728" src="https://platform.twitter.com/embed/Tweet.html?id=1282676454690451457"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1282676454690451457-728');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1282676454690451457&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;While the planning poker chatbot doesn't leverage much AI capability it was an interesting use case for me to experiment with.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I made the planning poker chatbot
&lt;/h2&gt;

&lt;p&gt;I used a product called Watson Assistant to construct the entire chatbot. Watson Assistant is a conversational AI platform. Using the tools within the application I was able to build this chatbot in about 30 minutes. For this use case, I started with a new skill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full disclosure: I work on Watson Assistant&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the dialog flow I came up with. I exported the skill and uploaded it to a &lt;a href="https://github.com/tonydiaz/watson-assistant-planning-poker-skill" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt;. If you would like to use it just import it into a new skill.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk5n6m2ow5vzk878z2jsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk5n6m2ow5vzk878z2jsg.png" alt="Dialog Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The moderator controls the user story numbers within Watson assistant and the team has access to the chatbot. When the chatbot loads this is how the conversation operates for a planning poker session&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvoqpw66s13qky14wgnzz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvoqpw66s13qky14wgnzz.gif" alt="Chatbot preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the team sizes a story the moderator can use the User conversations page to see what estimates were made and continue the discussion.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flc14v280lr4se0sjy0re.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flc14v280lr4se0sjy0re.png" alt="User conversation page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This implementation was meant to show a different use case from the typical chatbot using Watson Assistant. If you need a tool for planning poker I would suggest using websites specifically made for it, not the chatbot. Those websites have a lot more features you may need. &lt;/p&gt;

&lt;p&gt;Again, here is a link to &lt;a href="https://github.com/tonydiaz/watson-assistant-planning-poker-skill" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt; with additional instructions on setting it up. Happy sprint planning!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatbot</category>
      <category>planning</category>
      <category>ibmwatson</category>
    </item>
    <item>
      <title>Working from home using Amazon Alexa</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Fri, 17 Jul 2020 17:44:52 +0000</pubDate>
      <link>https://forem.com/tonydiaz/working-from-home-with-amazon-alexa-4hko</link>
      <guid>https://forem.com/tonydiaz/working-from-home-with-amazon-alexa-4hko</guid>
      <description>&lt;p&gt;Smart speakers are now common in many households. More and more devices are getting built-in virtual assistants like Alexa, Google Home, or Siri.&lt;/p&gt;

&lt;p&gt;I currently have three Amazon Echo devices in the house. One is on the desk I use while working from home.  I enjoy the convenience of sitting at my desk and asking Alexa to do numerous things without the need to get up.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4bkUZitd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ydjg0yw0nkmqldjb3se3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4bkUZitd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ydjg0yw0nkmqldjb3se3.jpeg" alt="Amazon echo dot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the ways I use Alexa during the day:&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Music:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa play SiriusXM"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Probably the most popular feature of any smart speaker. Alexa has the ability to play music from all the major streaming apps (Spotify, Amazon Music, Apple Music, Pandora). I can pick the specific SiriusXM channel to listen to music throughout the day.&lt;/p&gt;

&lt;h2&gt;
  
  
  News:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alex, tell me what's new"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I get the morning news from NPR. Typically it is the highlights of what is happening in the country and world. You can configure it to get more local news.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smart devices:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa set the thermostat to &amp;lt;desired temperature&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I have an Ecobee smart thermostat at home that allows me to change the temperature without moving away from my desk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reminders and Alarms:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa remind me to call Jen at 3 pm"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Alexa serves as a great assistant notifying me of reminders or alarms to get on a call before a meeting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package delivery:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa, notifications"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;When the echo dot has a green light shining on it means there is a notification for me. When packages are delivered Alexa will let me know and I can grab them. This is a really nice feature if you live in an area that may steal a package if it is left out for a while.&lt;/p&gt;

&lt;h2&gt;
  
  
  Routines
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa, start my day"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;I set up a routine on the Alexa app for mornings. I have it programmed to tell me the temperature and weather forecast for the day. It will then tell me an ETA for driving into work (I'm not currently driving due to the pandemic). It will give me the top news stories for the day, provided by NPR. I added some manual actions that will have Alexa tell me to do 100 jumping jacks wait one minute then tell me to do push-ups and squats. After the basic exercise is done it will begin playing SirusXM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find misplaced phone:
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Alexa call my phone"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Alexa can call my phone if I have misplaced it. Although I don't use it very often it is helpful when I need to find my phone in the house.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other possibilities?
&lt;/h2&gt;

&lt;p&gt;I feel like I'm just scratching the surface on the possibilities. I'd like to leverage even more ways to integrate an AI virtual assistant throughout my day to make things even more convenient. &lt;/p&gt;

&lt;p&gt;Do you use a virtual assistant while you work? If so what do you use it for?&lt;/p&gt;

</description>
      <category>alexa</category>
      <category>ai</category>
      <category>assistant</category>
    </item>
    <item>
      <title>Make your own Gatsby starter (template)</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Fri, 03 Jan 2020 20:54:24 +0000</pubDate>
      <link>https://forem.com/tonydiaz/make-your-own-gatsby-starter-template-349o</link>
      <guid>https://forem.com/tonydiaz/make-your-own-gatsby-starter-template-349o</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpafx0vehf6rujk9ibz4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fpafx0vehf6rujk9ibz4h.png" alt="Gatsby"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was recently looking to create a landing page. I have been investigating a couple of JAMstack (Javascript, APIs, Markup) static site generators (Hugo, Gatsby). There are a few others I just didn't dive into (Next.js, Nuxt, etc). Gatsby seemed interesting to me because it is based on React and I'm familiar with that.  &lt;/p&gt;

&lt;p&gt;Gatsby provides many &lt;code&gt;Starters&lt;/code&gt; which are templates for websites. I was looking for a template since my design skills leave much to be desired. I wasn't able to find one that was specifically a landing page for a product. I decided to try to make one and share my experiences. &lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Install the new Gatsby project:&lt;/em&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All you need is the quickstart guide to generate a project: &lt;a href="https://www.gatsbyjs.org/docs/quick-start/" rel="noopener noreferrer"&gt;https://www.gatsbyjs.org/docs/quick-start/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Customize your site:&lt;/em&gt; Here you can integrate any plugins. Change the design. Use a component library etc. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plugins I added: 

&lt;ul&gt;
&lt;li&gt;Mailchimp - as a way to track interest in the product (signups). &lt;/li&gt;
&lt;li&gt;Material UI - I'm not great at design so I can use all the help I can get. &lt;/li&gt;
&lt;li&gt;Google analytics - track the traffic the website is getting. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;I updated the layout to have a typical product landing page look. With the Product, Benefits, Features and Plans. I also included a few Call-to-action buttons for the Mailchimp signup.
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Once you have your template at a point you like it post it to Github.&lt;/p&gt;

&lt;p&gt;You will need to have the template hosted somewhere. It can be anywhere, Github pages, AWS, etc. I posted mine on &lt;a href="https://netlify.com" rel="noopener noreferrer"&gt;netlify.com&lt;/a&gt; since they have a great free tier and integrates with Github making it super easy to deploy the application. &lt;/p&gt;

&lt;p&gt;Here is my landing page on netlify: &lt;a href="https://hopeful-ptolemy-cd840b.netlify.com/" rel="noopener noreferrer"&gt;https://hopeful-ptolemy-cd840b.netlify.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Publish your template to Gatsby&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This will require you to make a PR to Gatsby's repository. You can see their instruction on how to do that here: &lt;a href="https://www.gatsbyjs.org/contributing/submit-to-starter-library/" rel="noopener noreferrer"&gt;https://www.gatsbyjs.org/contributing/submit-to-starter-library/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;TL;DR:&lt;/em&gt;&lt;br&gt;
You just need to add an entry in their YAML file. Follow the structure of other "starters" listed in the file. You don't need to fork the repository, you can just edit the file from Github: &lt;a href="https://github.com/gatsbyjs/gatsby/blob/master/docs/starters.yml" rel="noopener noreferrer"&gt;https://github.com/gatsbyjs/gatsby/blob/master/docs/starters.yml&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They prefer commits to have this title:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chore(starters): add my-starter-name-here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once your PR is approved your template will be live on their website. That's it! I hope some folks will add some more "starters" from this post.&lt;/p&gt;

&lt;p&gt;Kind of cool to see my templates on gatsbyjs.org. You can find my template here: &lt;a href="https://www.gatsbyjs.org/starters/tonydiaz/gatsby-landing-page-starter/" rel="noopener noreferrer"&gt;https://www.gatsbyjs.org/starters/tonydiaz/gatsby-landing-page-starter/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm happy to see people who are enjoying it:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1qo0phcw53udw4lj3vbo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1qo0phcw53udw4lj3vbo.png" alt="Twitter post"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>react</category>
      <category>template</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Building a chatbot using React Native and Watson Assistant</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Thu, 20 Dec 2018 15:58:41 +0000</pubDate>
      <link>https://forem.com/tonydiaz/building-a-chatbot-using-react-native-and-watson-assistant-3adj</link>
      <guid>https://forem.com/tonydiaz/building-a-chatbot-using-react-native-and-watson-assistant-3adj</guid>
      <description>&lt;p&gt;I recently sat in a talk about React Native while at the All things open conference (allthingsopen.org) in Raleigh, NC. I wanted to try out this new framework on a simple project. Since I work on a project that provides conversational AI assistants I decided to combine them both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I work on Watson Assistant at IBM...&lt;/p&gt;

&lt;p&gt;I needed a simple conversational flow to use for this project so I decided to use the "Are you rob base?" flow chart&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuq2eryer8gq28ok8ak3s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuq2eryer8gq28ok8ak3s.jpg" title="Are you Rob Base" alt="Flow chart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Training the Assistant
&lt;/h1&gt;

&lt;p&gt;I won't dive into much of Watson Assistant. There is plenty of documentation on that if you are interested. (&lt;a href="https://console.bluemix.net/docs/services/conversation/" rel="noopener noreferrer"&gt;https://console.bluemix.net/docs/services/conversation/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; All the information for this skill is provided in a JSON file in the source code that can be imported when creating a dialog skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intents
&lt;/h2&gt;

&lt;p&gt;Since this is a flowchart our bot needs to understand just two responses Yes and No.&lt;/p&gt;

&lt;p&gt;I defined the #Yes and #No intents in the tool. You can provide more examples of what that might look like as shown in the screenshot, this will help better train the assistant to recognize other ways your users might answer the question.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faqf4df7t0tavwq1rbmsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faqf4df7t0tavwq1rbmsq.png" title="Intents" alt="Intents"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Entities:
&lt;/h2&gt;

&lt;p&gt;They aren't needed in this use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dialog:
&lt;/h2&gt;

&lt;p&gt;Here is where you build the conversation flow. Since it is a flowchart it is fairly straightforward on how to structure it. I nested the flow within each node so one response will lead to the next. Any incorrect response will send you a "catch-all" response informing you that you are not Rob Base.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fm80q5do4sv6dqofrr5r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fm80q5do4sv6dqofrr5r2.png" title="Dialog" alt="Dialog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that I have a bot that is responding according to the flowchart. I need to have a way users can interface with it. This is where the React Native code comes in.&lt;/p&gt;

&lt;h1&gt;
  
  
  React Native:
&lt;/h1&gt;

&lt;p&gt;As a noob to react native I noticed the documentation for &lt;a href="https://facebook.github.io/react-native/docs/getting-started" rel="noopener noreferrer"&gt;getting started&lt;/a&gt; now points to using expo.io. I followed those instructions and set up a boilerplate app. Expo provides some nice ways to run your app both locally during development, on an iOS/Andriod simulator or through their app that you can view on your phone.&lt;/p&gt;

&lt;p&gt;I checked to see if there is any package that would provide a chat UI in React Native. I was pleasantly surprised to see there is one. This is a huge timesaver to not have to develop a UI chat panel from scratch. The package is called &lt;code&gt;react-native-gifted-chat&lt;/code&gt;. I installed that as well as the package for Watson &lt;code&gt;watson-developer-cloud&lt;/code&gt; to interface with Watson Assistant APIs easier. After some integration of the chatbot and Watson APIs, I have a working chatbot. That's it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fasdfsowfu6jilkizuudc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fasdfsowfu6jilkizuudc.gif" alt="Rob Base Chat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a short amount of time, anyone can have a powerful bot deployed to both Andriod and iOS using Expo.io and Watson Assistant. It really allows for a lot of possible applications without having to know much about Objective-C, Java, or Swift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check out the source code:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/tonydiaz/wa-react-native-minimal" rel="noopener noreferrer"&gt;https://github.com/tonydiaz/wa-react-native-minimal&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Of course, this article wouldn't be complete without a link to listen to some Rob Base!
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=phOW-CZJWT0" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ytimg.com%2Fvi%2FphOW-CZJWT0%2Fmaxresdefault.jpg" alt="It takes two"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watsonassistant</category>
      <category>ibmwatson</category>
      <category>chatbot</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>How many pull requests is too many? Exploring a 2 PR rule</title>
      <dc:creator>Tony Diaz</dc:creator>
      <pubDate>Tue, 24 Apr 2018 00:27:10 +0000</pubDate>
      <link>https://forem.com/tonydiaz/how-many-pull-requests-is-too-many-exploring-a-2-pr-rule-3nn3</link>
      <guid>https://forem.com/tonydiaz/how-many-pull-requests-is-too-many-exploring-a-2-pr-rule-3nn3</guid>
      <description>&lt;p&gt;Pull requests (PR) are part of the developer workflow within Github. You may hear this term as &lt;em&gt;merge requests&lt;/em&gt; in Gitlab or other tools. The workflow for developers on my project is managed within Github. This is where user stories are listed for the sprint as &lt;em&gt;issues&lt;/em&gt; and developers assign themselves the issues during the sprint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;work·flow
noun
the sequence of industrial, administrative, or other processes through
which a piece of work passes from initiation to completion.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Developers work based off the requirements within the issue and then make a &lt;em&gt;PR&lt;/em&gt;  when the work is completed. While the developer waits for a code review on that PR they will typically assign themselves another issue to go work. Now the developer has two issues - one in code review and another in-progress. Let's say the developer finishes the 2nd issue and makes another PR, they now have 2 PRs in code review.&lt;/p&gt;

&lt;p&gt;This is where the 2 PR rule comes in to play. Once the developer reaches this point, they should not pick another task until one of their current PRs is merged into the baseline. This rule is mainly to encourage the developers and the team to review code, provide feedback and get the code merged. While the developer isn't supposed to pick up another task that doesn't mean they shouldn't be working. During this time the developer should ask other developers for a code review. The code review will typically result in comments and requested changes or get approval to merge the code. If there are requested changes the developer is able to immediately begin addressing those comments and update their PR using this rule. If their code is merged then the developer is free to assign themselves another task to work on. &lt;/p&gt;

&lt;p&gt;There will be times where no other developers are available to do a code review because they are focused on their own task, bug, or fire. In those cases the developer waiting for code reviews on their 2 PRs should seek out another developer who may need help and pair-program. They say two minds are better than one and pair-programming can help a struggling develop get over a technical hump with another set of eyes. By &lt;a href="https://en.wikipedia.org/wiki/Pair_programming"&gt;pair-programming&lt;/a&gt; the idea is that the work will result in better quality code and merged in to the baseline faster.&lt;/p&gt;

&lt;p&gt;I have seen problems arise when a rule like this wasn't in place. Mainly less code is delivered by the developer because their is no focus to get code merged or address comments in a timely fashion. To illustrate, take for example a developer who has 4 PRs and assigned themselves another task to work. They now have 5 tasks in a state of code review or work-in-progress. As code reviews for the 4 PRs happen and comments are provided, the developer is focused on their 5th task  and works to get a PR up for that one. When they eventually get around to addressing comments they may now also have file conflicts they need to resolve that resulted from the time it took to address those comments. Once they address those comments it may take some time to get another code review on those PRs. So this developer now has 5 PRs and &lt;strong&gt;nothing has been delivered&lt;/strong&gt; to the baseline. If this process continues, then the developer begins work on a new task which escalates the problem. Eventually the developer is the bottleneck to get many tasks completed.&lt;/p&gt;

&lt;p&gt;I summarized the pro and cons from my experience of using this approach. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focus on delivering code&lt;/li&gt;
&lt;li&gt;Encourage developers to do code reviews (everybody participates) &lt;/li&gt;
&lt;li&gt;Help other developers who may be struggling through pair-programming&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Potentially delay other work from starting&lt;/li&gt;
&lt;li&gt;Can be frustrating for developers waiting on code reviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm interested in hearing your thoughts!&lt;/p&gt;

</description>
      <category>workflow</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
