<?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: Jonathan Brizio</title>
    <description>The latest articles on DEV Community by Jonathan Brizio (@jonathanbrizio).</description>
    <link>https://dev.to/jonathanbrizio</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%2F3488%2F33ada971f4ffe6ec3a1b5f032a6ecb9f.jpeg</url>
      <title>DEV Community: Jonathan Brizio</title>
      <link>https://dev.to/jonathanbrizio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathanbrizio"/>
    <language>en</language>
    <item>
      <title>Enforce Consistent Resource Naming in AWS SAM Templates</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Fri, 02 May 2025 02:36:22 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/enforce-consistent-resource-naming-in-aws-sam-templates-381g</link>
      <guid>https://dev.to/jonathanbrizio/enforce-consistent-resource-naming-in-aws-sam-templates-381g</guid>
      <description>&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;If you've worked with AWS SAM templates long enough, you've probably run into messy or inconsistent resource names. These inconsistencies aren’t just an eyesore — they can cause confusion in large teams and complex deployments.&lt;/p&gt;

&lt;h3&gt;
  
  
  The solution
&lt;/h3&gt;

&lt;p&gt;That’s why I created &lt;strong&gt;sam-resource-name-linter&lt;/strong&gt; — a simple CLI tool to enforce consistent, configurable naming conventions for your AWS SAM resources.&lt;/p&gt;

&lt;p&gt;It's a tool written in Javascript that scans your &lt;code&gt;template.yaml&lt;/code&gt; files and checks the logical resource names against a naming convention that you define.&lt;/p&gt;

&lt;p&gt;It was built to help teams maintain readable, standardized CloudFormation templates — especially in larger serverless projects where consistency can quickly fall apart.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;p&gt;✅ Works out of the box with sensible defaults&lt;br&gt;
⚙️ Fully configurable naming conventions (regex-based)&lt;br&gt;
🧪 Simple integration into CI/CD pipelines&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install the package globally or as a dev dependency:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npm install --save-dev sam-resource-name-linter
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a new file called named &lt;code&gt;.sam-resource-name-rules.json&lt;/code&gt; in the root directory of your SAM project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the linter: Before running the linter, personalize your configuration file (&lt;code&gt;.sam-resource-name-rules.json&lt;/code&gt;) by defining the resource naming rules that suit your project's needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execute the linter using the following command:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;sam-resource-name-linter
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Team Enforcement: Codify naming rules in CI to enforce consistency across PRs.&lt;/li&gt;
&lt;li&gt;Legacy Cleanup: Identify resources that don’t follow your current naming patterns.&lt;/li&gt;
&lt;li&gt;Education: Teach new developers your team's conventions automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try It Out
&lt;/h3&gt;

&lt;p&gt;👉 NPM: &lt;a href="https://www.npmjs.com/package/sam-resource-name-linter" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/sam-resource-name-linter&lt;/a&gt;&lt;br&gt;
📖 GitHub: &lt;a href="https://github.com/jbrizio/sam-resource-name-linter#readme" rel="noopener noreferrer"&gt;https://github.com/jbrizio/sam-resource-name-linter#readme&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How to Test AWS Services in Node.js with LocalStack, Testcontainers, and Jest</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Sun, 09 Mar 2025 03:00:00 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/how-to-test-aws-services-in-nodejs-with-localstack-testcontainers-and-jest-45o7</link>
      <guid>https://dev.to/jonathanbrizio/how-to-test-aws-services-in-nodejs-with-localstack-testcontainers-and-jest-45o7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Testing AWS-integrated applications presents significant challenges, including slow feedback loops and the cost associated with using cloud resources. In our development workflow, we encountered a critical issue: &lt;u&gt;how to efficiently test AWS services in a local environment without deploying them to the cloud&lt;/u&gt;. To address this, we explored a combination of tools that would allow for a local, isolated, and reproducible testing setup.&lt;/p&gt;

&lt;p&gt;After thorough research, one of our senior developers identified an optimal solution leveraging &lt;strong&gt;LocalStack&lt;/strong&gt;, &lt;strong&gt;Testcontainers&lt;/strong&gt;, and &lt;strong&gt;Jest&lt;/strong&gt;. This combination enables us to simulate AWS services, manage ephemeral test environments, and execute reliable test cases efficiently. In this article, I will show you how these tools work together and how they can be integrated into a Node.js development workflow for testing AWS-dependent applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.localstack.cloud" rel="noopener noreferrer"&gt;LocalStack&lt;/a&gt;&lt;/strong&gt; is an open-source tool that provides a fully functional mock environment for AWS services. It allows developers to run their applications locally while simulating AWS services, eliminating the need to connect to a live AWS instance. This significantly reduces cloud costs and improves the speed of development and testing cycles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://testcontainers.com" rel="noopener noreferrer"&gt;Testcontainers&lt;/a&gt;&lt;/strong&gt; is a library designed to simplify the management of containerized environments for testing. It enables developers to spin up LocalStack instances within isolated containers, ensuring that each test runs in a clean, consistent, and reproducible environment.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Before proceeding, ensure the following prerequisites are met:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js and npm are installed on your machine&lt;/li&gt;
&lt;li&gt;Docker is installed and running&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Testing Framework&lt;/strong&gt;: This solution is demonstrated using Jest, which will be installed automatically when dependencies are installed via npm. However, other testing frameworks can be substituted based on project requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Compatibility&lt;/strong&gt;: Verify that LocalStack supports the AWS services required for your tests before integrating it into your testing strategy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;To illustrate this approach, I prepared a &lt;a href="https://github.com/jbrizio/aws-service-testing/blob/main/lambda.js" rel="noopener noreferrer"&gt;simple AWS Lambda function&lt;/a&gt; that returns a greeting message. The repository also includes a test file (&lt;a href="https://github.com/jbrizio/aws-service-testing/blob/main/lambda.test.js" rel="noopener noreferrer"&gt;lambda.test.js&lt;/a&gt;) to validate the Lambda function’s behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing Process
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Running the test command via npm initializes a local container.&lt;/li&gt;
&lt;li&gt;The Lambda function’s source code is zipped and deployed inside the container.&lt;/li&gt;
&lt;li&gt;The test executes the Lambda function and validates the returned response as a standard unit test.&lt;/li&gt;
&lt;li&gt;All resources are automatically cleaned up upon test completion, ensuring a fast and efficient execution cycle.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;By incorporating these tools into our workflow, we have significantly improved test efficiency and resource management. Have you tried using LocalStack or similar tools for AWS testing? We’d love to hear your thoughts and experiences with this approach!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>testing</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Avoiding Code Chaos: The Broken Windows Principle in Software Development</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Sun, 14 Apr 2024 18:39:01 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/avoiding-code-chaos-the-broken-windows-principle-in-software-development-2jk3</link>
      <guid>https://dev.to/jonathanbrizio/avoiding-code-chaos-the-broken-windows-principle-in-software-development-2jk3</guid>
      <description>&lt;p&gt;In the world of software development, one principle that resonates deeply with programmers is the Broken Windows Theory. This theory was originally proposed by James Q. Wilson and George L. Kelling in the realm of urban sociology and suggests that visible signs of disorder in a community can lead to anti-social behavior. But how does this theory apply to software engineering?&lt;/p&gt;

&lt;p&gt;The Broken Windows Theory has a compelling parallel in the world of code. Neglected code elements within a software project such as outdated comments, unused variables, or inconsistent formatting can be considered as "broken windows" of code. If left unaddressed, they can lead to larger issues down the line.&lt;/p&gt;

&lt;p&gt;Just as a single broken window in a building can signal to vandals that no one cares about the property, a neglected codebase can communicate to developers that maintenance and cleanliness are not priorities. This can result in decreased developer morale, increased technical debt, and reduced overall productivity, which is a scenario all too familiar to software teams.&lt;/p&gt;

&lt;p&gt;To avoid the Broken Windows Theory in their codebase, software engineers need to be proactive in maintaining a culture of cleanliness. Regular code reviews, refactoring sessions, and the use of automated tools for code quality assurance are essential strategies for keeping "digital streets" clean and orderly. Moreover, fostering a team culture that values accountability and takes pride in the quality of its code can go a long way in preventing the accumulation of "broken windows."&lt;/p&gt;

&lt;p&gt;By recognizing the importance of maintaining order and cleanliness in code, developers can mitigate the risk of larger issues arising and ensure the long-term health and sustainability of their projects.&lt;/p&gt;

&lt;p&gt;Do you have any tips or best practices to share on how to maintain a clean software environment in your projects? I'd love to hear your thoughts and experiences!&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Broken_windows_theory" rel="noopener noreferrer"&gt;Broken Windows Theory, &lt;em&gt;Wikipedia&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unsplash.com/es/@brett_jordan" rel="noopener noreferrer"&gt;Cover Photo from Brett Jordan, &lt;em&gt;Unsplash&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>software</category>
      <category>programming</category>
      <category>development</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Building a Serverless Photomontage WebApp with Node.js</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Mon, 23 Mar 2020 22:21:15 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/building-a-serverless-photomontage-webapp-with-node-js-2nf0</link>
      <guid>https://dev.to/jonathanbrizio/building-a-serverless-photomontage-webapp-with-node-js-2nf0</guid>
      <description>&lt;p&gt;The benefits of the lambda functions are endless. The good thing is that you can create anything in a few clicks. I'm a big fan of the services that offer AWS. You can start with something really simple and apply more complexity adding more services.&lt;/p&gt;

&lt;p&gt;On this opportunity, I will show you how was integrate some components that AWS offers to us to make the final product.&lt;/p&gt;

&lt;p&gt;Before putting hands to works, was read some docs and view some implementations to understand if the idea can be viable. The focus was always trying to implement that solution using JavaScript because I have more knowledge of that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial idea
&lt;/h2&gt;

&lt;p&gt;In this case, it was an online photomontage that merges our wanted message into a template that I choose:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The next step was to find a module on npm that resolve our requirement to manipulate images easily. &lt;a href="https://www.npmjs.com/package/jimp" rel="noopener noreferrer"&gt;Jimp&lt;/a&gt; looks good to me because not have third dependencies and your documentation is complete enough.&lt;/p&gt;

&lt;p&gt;With the help of &lt;a href="https://claudiajs.com" rel="noopener noreferrer"&gt;Claudia.js&lt;/a&gt;, it was really easy to automate deployments of the lambda functions just with a few commands from the console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;The user interacts with an interface, this is located in a bucket (Amazon S3). The form located there, dispatch a POST to an API Rest. Here our AWS API Gateway takes the petition and executes a lambda function to generate the wanted photo in a few seconds.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Services used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Amazon API Gateway&lt;/li&gt;
&lt;li&gt;Amazon Lambda&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Online Demo
&lt;/h2&gt;

&lt;p&gt;If you want to see all the components working, can you visit the online demo &lt;a href="https://image-processor-serverless.s3.amazonaws.com/frontend/index.html" rel="noopener noreferrer"&gt;clicking here&lt;/a&gt;. This same concept could be used for multiple scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main feature
&lt;/h2&gt;

&lt;p&gt;The part most important of this development is the lambda function. Here you can see the code used to generate the photomontage.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;What other scenario do you imagine using this?.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Using Postman like a PRO with these tricks 😎</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Fri, 15 Nov 2019 02:25:14 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/using-postman-like-a-pro-with-these-tricks-2803</link>
      <guid>https://dev.to/jonathanbrizio/using-postman-like-a-pro-with-these-tricks-2803</guid>
      <description>&lt;p&gt;In these last months, I learn a lot about this great tool that allows me to speed up and optimize my workflow reducing time on repetitive tasks. &lt;/p&gt;

&lt;p&gt;If you're new with this tool, I recommend it before to read the &lt;a href="https://learning.getpostman.com/" rel="noopener noreferrer"&gt;entire documentation&lt;/a&gt; to look at the features and practice with some real cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Setting environment variables automatically
&lt;/h2&gt;

&lt;p&gt;So, let's start with my favorite trick. This is a script to be executed each time that copies the result of the petition and saves it into environment variables. This is great when you need to specify an authentication token that expires at a certain time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With that code, you're copying to your environment variable "Access-Token" the value obtained after executing the request. This script avoids copy and pastes values manually in your environment variables. In this way, you only need to invoke that variable to get the value in the authentication input or somewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Replicating an entire request
&lt;/h2&gt;

&lt;p&gt;Another common trick is that it allows reproducing a request. Let's say we want to reproduce the same request when access to Coindesk to obtain the price of the bitcoin.&lt;/p&gt;

&lt;p&gt;Open the browser development tools on Chrome. Then, go to the "Network Tab" and filter the requests desired. Right-click the one you are interested in, and select "Copy as cURL". Now we have the cURL, go back to Postman and click on the top-left of the screen the button "Import", and choose "Paste Raw Text" tab. Paste what you copied, and press Import. Now press "Send" and the request would be executed directly from your client.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  💬 Sharing your knowledge
&lt;/h2&gt;

&lt;p&gt;And you, what other trick knows with Postman? Post a comment below.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>postman</category>
      <category>dev</category>
      <category>tools</category>
    </item>
    <item>
      <title>Real World Developer's Problems: API Versioning</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Fri, 12 Apr 2019 19:13:23 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/real-world-developer-s-problems-api-versioning-14ig</link>
      <guid>https://dev.to/jonathanbrizio/real-world-developer-s-problems-api-versioning-14ig</guid>
      <description>&lt;p&gt;The backend world is fascinating and full of new things to discover.&lt;br&gt;
In the beginning, you can feel domed with all the information, so the best way to understand is used commons examples that apply these concepts.&lt;/p&gt;

&lt;p&gt;When you're designing your backend, it is essential to have on mind some considerations. Think that your contract on the future would change and you need to maintain backward compatibility.&lt;/p&gt;

&lt;p&gt;In some moment you API would be evolving, and you need to support the features they provide. Managing the impact of this can be quite a challenge when it threatens to break existing client integrations.&lt;/p&gt;

&lt;p&gt;REST doesn’t specify any method of versioning, but the more common approaches are: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Specify the version putting it on the URI:&lt;br&gt;
&lt;code&gt;https://api.example.com/v1/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using a custom request header:&lt;br&gt;
&lt;code&gt;Accept-version: v1&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alternatively, adding to the HTTP Accept header&lt;br&gt;
&lt;code&gt;Accept: application/json; version=1&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these approaches, your challenge would be managing the entire code base with multiple versions of your resources. Content negotiation may let you prevent modify your entire collection of URLs, but you still have to deal with the all complexity of serving different versions of content.&lt;/p&gt;

&lt;p&gt;Another approach can be to develop a consumer-driven contract that allows to consumer declare the data they are interested in consuming as part of a request. On this last case, you're delegating the responsibility to the client.&lt;/p&gt;

&lt;p&gt;Whatever approach you take, need to be consistent and active governance over the evolving contract.&lt;/p&gt;

&lt;p&gt;Comment here what another approach you recommend or know it to recommend us.&lt;/p&gt;

</description>
      <category>api</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building My First Alexa Skill with Node.js</title>
      <dc:creator>Jonathan Brizio</dc:creator>
      <pubDate>Sun, 07 Apr 2019 18:35:29 +0000</pubDate>
      <link>https://dev.to/jonathanbrizio/building-my-first-alexa-skill-with-node-js-4cpg</link>
      <guid>https://dev.to/jonathanbrizio/building-my-first-alexa-skill-with-node-js-4cpg</guid>
      <description>&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Developer Account&lt;/li&gt;
&lt;li&gt;Experience with Node.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Alexa?
&lt;/h2&gt;

&lt;p&gt;This is Amazon’s voice-control system. With that, you can control music, create shopping lists or reminders, get instant weather reports, and control popular smart-home products using nothing else that the sound of your voice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's an Alexa skill?
&lt;/h2&gt;

&lt;p&gt;These are apps that give to Alexa devices more abilities that the mentioned before. Absolutely of all kinds. Through the Alexa application, you can incorporate or disable these skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's AWS Lambda?
&lt;/h2&gt;

&lt;p&gt;AWS Lambda is a compute service that lets you run code without provisioning or managing servers. You pay only for the compute time you consume - there is no charge when your code is not running. This would be our backend that processes the request and returns the data back as a JSON.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entities involved in the flow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The user who speaks a command&lt;/li&gt;
&lt;li&gt;The Echo device, which receives the initial voice input&lt;/li&gt;
&lt;li&gt;The Amazon Alexa service, which receives the data from the devices&lt;/li&gt;
&lt;li&gt;The backend service which contains the business logic for the skill itself&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Well, now that you have all the material needed to start with the development, I invite you to &lt;a href="https://www.amazon.com/dp/B07PSBHYJ8/" rel="noopener noreferrer"&gt;install my latest skill&lt;/a&gt; called "Dollar Price". That was an experiment with a public API to obtain the official price of exchange between the dollar and Argentine peso.&lt;/p&gt;

</description>
      <category>alexa</category>
      <category>node</category>
      <category>javascript</category>
      <category>iot</category>
    </item>
  </channel>
</rss>
