<?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: Super Diana</title>
    <description>The latest articles on DEV Community by Super Diana (@superdiana).</description>
    <link>https://dev.to/superdiana</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%2F84338%2Fde5446e3-a96c-4852-b0d8-4285b0b43936.jpg</url>
      <title>DEV Community: Super Diana</title>
      <link>https://dev.to/superdiana</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/superdiana"/>
    <language>en</language>
    <item>
      <title>Build an Angular &amp; Amazon IVS player app in less than 15 minutes!! - Part 2: Create and stream to a channel!</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Fri, 30 Jul 2021 14:26:53 +0000</pubDate>
      <link>https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-part-2-create-and-stream-to-a-channel-3ec</link>
      <guid>https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-part-2-create-and-stream-to-a-channel-3ec</guid>
      <description>&lt;h2&gt;
  
  
  Intro ⭐️
&lt;/h2&gt;

&lt;p&gt;Video &amp;amp; Streaming don't have to be complicated for the web anymore! In part 1 of this tutorial, we built an &lt;strong&gt;Angular&lt;/strong&gt; app using &lt;strong&gt;Amazon IVS&lt;/strong&gt; &amp;amp; &lt;strong&gt;Video.js&lt;/strong&gt; in less than 15 minutes. Now it's time to create a channel, point our stream to that channel, test it live, and continue creating!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon IVS&lt;/strong&gt; (Amazon Interactive Video Service) is a fully managed live streaming solution: simply stream to Amazon IVS, and the service does everything you need to make low-latency live video available to any viewer around the globe. Amazon IVS handles the ingestion, transcoding, packaging, and delivery of your live content, using the same battle-tested technology that powers Twitch.&lt;/p&gt;

&lt;p&gt;For more information on Amazon IVS, check &lt;a href="https://ivs.rocks" rel="noopener noreferrer"&gt;https://ivs.rocks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part 1 of this tutorial: &lt;a href="https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-2668"&gt;https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-2668&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Hands on! 👊🏼
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡️ Pre-requisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Build your player app in 15 minutes with &lt;a href="https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-2668"&gt;Part 1&lt;/a&gt; of this tutorial&lt;/li&gt;
&lt;li&gt;AWS Account:(&lt;a href="https://aws.amazon.com/getting-started" rel="noopener noreferrer"&gt;Click to create your account!&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OBS (Open Broadcaster Software):(download &lt;a href="https://obsproject.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Create Live Streaming Channel 📽
&lt;/h2&gt;

&lt;p&gt;In this step, you will create a live streaming channel using Amazon Interactive Video Service.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the AWS console, navigate to Interactive Video Service via this &lt;a href="https://us-west-2.console.aws.amazon.com/ivs/home" rel="noopener noreferrer"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmltpkdno3cm41uzqfqx.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%2Fuploads%2Farticles%2Fdmltpkdno3cm41uzqfqx.png" alt="AWS Console"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Click on "Create Channel"&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%2Fuploads%2Farticles%2Fc17uokf0m2e684yh8gqt.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%2Fuploads%2Farticles%2Fc17uokf0m2e684yh8gqt.png" alt="Create Channel"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the create channel &amp;gt; set up section, type your channel name (i.e 'ngivs-channel'). Under Channel configuration, choose "Default". You can customise options as you find appropriate but default options are set for HD video and ultra-low latency!. You can also auto-record your stream to an S3 bucket and serve those assets as VOD, but for now we won't enable this option.&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%2Fuploads%2Farticles%2Fhxttn5n98hli9823q3mf.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%2Fuploads%2Farticles%2Fhxttn5n98hli9823q3mf.png" alt="Create Channel Options"&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is the result after creating a channel!, note that once a channel is created it has a unique ARN in case you need API Access for other features we will cover in future issues of this tutorial.&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%2Fuploads%2Farticles%2Fr9io3hoyrnz3qgko4i0x.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%2Fuploads%2Farticles%2Fr9io3hoyrnz3qgko4i0x.png" alt="Created Channel"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the same page you can see under &lt;strong&gt;Stream Configuration&lt;/strong&gt; and &lt;strong&gt;Playback Configuration&lt;/strong&gt; important information we will use to point our stream to and include our video source in our player app.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d7s1cc2vcivklmsk1wy.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%2Fuploads%2Farticles%2F9d7s1cc2vcivklmsk1wy.png" alt="Config"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎉 &lt;strong&gt;HOORAY! A channel has been created... let the streaming begin!&lt;/strong&gt; 🎉&lt;/p&gt;




&lt;h2&gt;
  
  
  Stream Using OBS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open OBS, click on "Settings" and select Stream. Set Service as Custom. Copy/paste the Ingest server to the "Server", and copy/paste the Stream key to "Stream Key".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr57ih7ftbzbfcea9rki.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%2Fuploads%2Farticles%2Fxr57ih7ftbzbfcea9rki.png" alt="OBS Streaming Config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on "Video", and configure the output video bitstream’s resolution and frame rate. In this example, they are set to 480p30 (852x480). For testing purposes, this is the recommended setting for a smooth stream with minimal bandwidth and processing power consumption on your computer).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcflu65z8enp7rb0ez51a.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%2Fuploads%2Farticles%2Fcflu65z8enp7rb0ez51a.png" alt="Video Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;And last, click on "Output". On "Ouput Mode" select "Advanced", then set the following parameters: (don't forget to click "OK" to save your settings!) - These settings are exclusively for testing purposes and to make sure we use bare minimum resources.- For more information on streaming configurations check the official &lt;a href="https://docs.aws.amazon.com/ivs/latest/userguide/streaming-config.html" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encoder&lt;/strong&gt;: x264&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Control&lt;/strong&gt;: CBR&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitrate&lt;/strong&gt;: 2000 (or lower)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyframe Interval&lt;/strong&gt;: 2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU Usage Preset&lt;/strong&gt;: veryfast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tune&lt;/strong&gt;: zerolatency&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3lqhlh47p8gb5wytkaq.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%2Fuploads%2Farticles%2Fb3lqhlh47p8gb5wytkaq.png" alt="Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost there!!. Our last step is to add our camera as a source for this test!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On your OBS main window, in "Sources", click "&lt;strong&gt;+&lt;/strong&gt;" to add the following sources:

&lt;ul&gt;
&lt;li&gt;Video Capture Device: your web cam.&lt;/li&gt;
&lt;li&gt;Browser: Add &lt;a href="https://www.clocktab.com/" rel="noopener noreferrer"&gt;https://www.clocktab.com/&lt;/a&gt;, which will be used to measure the end-to-end latency. Drag and resize to place it where you find appropriate.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqu9bor0ny2fjgyhndi6k.png" alt="Sources"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;It's time to click on "Start Streaming"!!!&lt;/p&gt;




&lt;p&gt;Let's open the angular app project created with the previous tutorial and modify the player source in our application default component to add our own streaming channel. &lt;/p&gt;

&lt;p&gt;In order to do that let's edit &lt;code&gt;app.component.html&lt;/code&gt;,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;vjs-ivs-player&lt;/span&gt;
  &lt;span class="na"&gt;[options]=&lt;/span&gt;&lt;span class="s"&gt;"options"&lt;/span&gt;
  &lt;span class="na"&gt;[appChanEndpoint]=&lt;/span&gt;&lt;span class="s"&gt;"'[INSERT YOUR PLAYBACK URL HERE]"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&amp;lt;/vjs-ivs-player&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And Voila!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka4nmqnivrd88wlfcddv.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%2Fuploads%2Farticles%2Fka4nmqnivrd88wlfcddv.png" alt="Result"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌟 For the next part of this tutorial we will enable playback authorisation on our IVS channel. This allows us to create private channels, and only viewers with a valid playback token can watch our channel.&lt;/p&gt;

</description>
      <category>amazonivs</category>
      <category>angular</category>
      <category>aws</category>
    </item>
    <item>
      <title>Announcement: Amazon IVS is on Discord!</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Tue, 27 Jul 2021 03:18:02 +0000</pubDate>
      <link>https://dev.to/amazonivs/announcement-amazon-ivs-is-on-discord-3822</link>
      <guid>https://dev.to/amazonivs/announcement-amazon-ivs-is-on-discord-3822</guid>
      <description>&lt;p&gt;Dear community,  🎊&lt;/p&gt;

&lt;p&gt;We are happy to announce our Discord server, and we welcome all of you! This is a place to share your experience, ideas, solutions and interact with fellow developers and us too!. &lt;/p&gt;

&lt;p&gt;There are SO MANY exciting things coming up for our community!. We want you to be part of all the great features and special announcements we have coming up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/ivs-discord"&gt;Join us&lt;/a&gt; in this new adventure! Let's have a chat!&lt;/p&gt;

&lt;p&gt;See you there! &lt;/p&gt;

&lt;p&gt;The Amazon IVS Developer Relations Team ⭐️&lt;/p&gt;

</description>
      <category>aws</category>
      <category>amazon</category>
      <category>amazonivs</category>
      <category>community</category>
    </item>
    <item>
      <title>Announcing ScoutX Mobile: An emergency notification app for Diabetics </title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Thu, 08 Jul 2021 04:15:32 +0000</pubDate>
      <link>https://dev.to/superdiana/announcing-scoutx-mobile-an-emergency-notification-app-for-diabetics-3cfe</link>
      <guid>https://dev.to/superdiana/announcing-scoutx-mobile-an-emergency-notification-app-for-diabetics-3cfe</guid>
      <description>&lt;p&gt;This is a milestone for me. It's huge. Today I won't write from the technical perspective. Today I am writing as a type 1 diabetic feeling proud of a tool that can save lives as it has saved mine.&lt;/p&gt;

&lt;p&gt;Over a year ago i released the &lt;a href="https://scoutx.dev"&gt;ScoutX&lt;/a&gt; project. It is comprised of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A &lt;a href="https://flask.palletsprojects.com/en/2.0.x/"&gt;Flask&lt;/a&gt; application where users can input their &lt;a href="https://www.nightscoutfoundation.org/"&gt;Nightscout&lt;/a&gt; entries endpoint. This app is constantly listening for values and when these are above or below range it fires and alert and calls the diabetic patient first, to alert them of irregular values. Should the patient not answer the call, an alert is sent to their trusted contacts to notify of irregular values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;a href="https://store.rakwireless.com/pages/wisblock"&gt;WisBlock&lt;/a&gt; + &lt;a href="https://helium.com"&gt;Helium&lt;/a&gt; (IoT + LoRaWan) tracker to send data to nightscout and provide GPS precise location, so emergency contacts can receive notifications with location in case of values being above or beyond the urgent high/low blood glucose levels without depending on a mobile connection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, I am proudly releasing a mobile app built on &lt;a href="https://ionicframework.com"&gt;Ionic&lt;/a&gt; &amp;amp; &lt;a href="https://angular.io"&gt;Angular&lt;/a&gt; that gets blood sugar data from Nightscout and adds geolocation so if values go into urgent low/high levels, alerts can be sent to emergency contacts.&lt;/p&gt;

&lt;p&gt;You can check the repository here: &lt;a href="https://github.com/alphacentauri82/scoutx-mobile"&gt;https://github.com/alphacentauri82/scoutx-mobile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know many, like me will feel safer. I can imagine parents feeling more relieved and I as a type 1 diabetic know that if anything happens, my relatives and friends who i trust will be notified and know to reach out to emergency services if necessary.&lt;/p&gt;

&lt;p&gt;There are MANY more features to add. More ways to expand connectivity even with the IoT component of this project. This is only the beginning and I know many of you will be able to contribute with your expertise, your ideas and everything you can bring to the table to use your and our superpowers in tech for good.&lt;/p&gt;

&lt;p&gt;I want to thank &lt;a href="https://twitter.com/eusoj"&gt;Josue Gutierrez&lt;/a&gt;, &lt;a href="https://twitter.com/jorgeucano"&gt;Jorge Cano&lt;/a&gt;, &lt;a href="https://twitter.com/whitep4nth3r"&gt;Salma Alam-Naylor&lt;/a&gt; and &lt;a href="https://twitter.com/anfibiacreativa"&gt;Natalia Venditto&lt;/a&gt; for all your support and help. Thank you for helping me make this project possible!&lt;/p&gt;

&lt;p&gt;Also those who were with me from the very beginning of the ScoutX project: &lt;a href="https://twitter.com/makahernandez"&gt;Maria Hernandez&lt;/a&gt;, &lt;a href="https://twitter.com/RAKwireless"&gt;Rak Wireless&lt;/a&gt;, &lt;a href="https://twitter.com/helium"&gt;Helium&lt;/a&gt;, &lt;a href="https://twitter.com/vegax2"&gt;Melvin Vega&lt;/a&gt;, &lt;a href="https://github.com/vmalepati1"&gt;Vikas Malepati&lt;/a&gt; and &lt;a href="https://nightscoutfoundation.org"&gt;The Nightscout Foundation&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I know this is a step forward and that with more visibility and contributions from fellow developers we will make a huge difference for Diabetics around the world.&lt;/p&gt;

&lt;p&gt;Tutorials are coming soon! ⭐️ &lt;/p&gt;

</description>
      <category>ionic</category>
      <category>angular</category>
      <category>mobile</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Build an Angular &amp; Amazon IVS player app in less than 15 minutes!!</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Tue, 06 Jul 2021 13:26:58 +0000</pubDate>
      <link>https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-2668</link>
      <guid>https://dev.to/amazonivs/build-an-angular-amazon-ivs-player-app-in-less-than-15-minutes-2668</guid>
      <description>&lt;h2&gt;
  
  
  Intro ⭐️
&lt;/h2&gt;

&lt;p&gt;Video &amp;amp; Streaming don't have to be complicated for the web anymore! in this tutorial we will build an Angular app using &lt;strong&gt;Amazon IVS&lt;/strong&gt; &amp;amp; &lt;strong&gt;Video.js&lt;/strong&gt; in less than 15 minutes!!&lt;/p&gt;

&lt;p&gt;Amazon IVS (Amazon Interactive Video Service) is a fully managed live streaming solution: simply stream to Amazon IVS, and the service does everything you need to make low-latency live video available to any viewer around the globe. Amazon IVS handles the ingestion, transcoding, packaging, and delivery of your live content, using the same battle-tested technology that powers Twitch.&lt;/p&gt;

&lt;p&gt;For more information on Amazon IVS check &lt;a href="https://ivs.rocks" rel="noopener noreferrer"&gt;https://ivs.rocks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the twitch stream of this tutorial: &lt;a href="https://www.youtube.com/watch?v=xCsh88xNkKE" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=xCsh88xNkKE&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  15 minutes... for real?! ⏰
&lt;/h3&gt;

&lt;p&gt;I have a personal quest of making infrastructure and development approachable, accessible and friendly regardless of your level of expertise. For that reason, I am happy to present you with a library that will simplify the process of building a player with Angular and Amazon IVS in less than 15 minutes!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Hands on! 👊🏼
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡️ Pre-requisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;NodeJS + NPM: instructions to &lt;a href="https://nodejs.dev/learn/how-to-install-nodejs" rel="noopener noreferrer"&gt;set up/install&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Angular CLI &lt;/li&gt;
&lt;li&gt;Amazon IVS&lt;/li&gt;
&lt;li&gt;VideoJS&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  Installing The Angular CLI
&lt;/h4&gt;

&lt;p&gt;If you’re wondering how it’s possible to create an Angular project or app in less than 10 mins, it’s partially thanks to its very sophisticated and developer-centric CLI. If you haven’t already, please install the CLI globally. That ensures you have all necessary dependencies to quickly generate a new app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the Angular CLI with npm:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we are ready to generate a fully functional base Angular application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creating our Angular Application
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Create a new project. I will name it "angular-ivs", but you feel free to name it whatever you want!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We create a new app by typing and executing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng new &amp;lt;APP-NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my case,&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  Working our magic ⭐️
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Once our app is created, let's head to our project folder:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd angular-ivs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt; Now we will install &lt;a href="https://www.npmjs.com/package/@cotufa82/ng-ivs" rel="noopener noreferrer"&gt;ng-ivs&lt;/a&gt;. This library makes your development process much easier by installing Amazon IVS, Video.js and generating a player component you can customise to meet your project requirements. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To install it, move into the root directory of the angular app you just created, and execute&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @cotufa82/ng-ivs --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;Amazon IVS SDK supports Javascript only. This means that there are no type declarations. Since Angular projects are written in Typescript, and the typescript compiler is strict, we need to disable the mechanisms that will validate imported types, upon compilation:&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="p"&gt;...&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;compilerOptions&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;skipLibCheck&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;
  &lt;span class="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;Now we will add the player to our application default component. In order to do that let's edit &lt;code&gt;app.component.html&lt;/code&gt;,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;vjs-ivs-player&lt;/span&gt;
  &lt;span class="na"&gt;[options]=&lt;/span&gt;&lt;span class="s"&gt;"options"&lt;/span&gt;
  &lt;span class="na"&gt;[appChanEndpoint]=&lt;/span&gt;&lt;span class="s"&gt;"'https://fcc3ddae59ed.us-west-2.playback.live-video.net/api/video/v1/us-west-2.893648527354.channel.DmumNckWFTqz.m3u8'"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&amp;lt;/vjs-ivs-player&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this tutorial I am using a test stream url from the &lt;a href="https://github.com/aws-samples/amazon-ivs-player-web-sample" rel="noopener noreferrer"&gt;Amazon IVS Samples&lt;/a&gt; repository. The awesome thing about this is that you can pass this URL directly in the component or trough &lt;code&gt;options.source&lt;/code&gt; or using the environments from Angular.&lt;/p&gt;

&lt;p&gt;Now, let's import our &lt;code&gt;NgIvsModule&lt;/code&gt; module in &lt;code&gt;app.module.ts&lt;/code&gt;. Your code should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/platform-browser&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgIvsModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@cotufa82/ng-ivs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;declarations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;AppComponent&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;BrowserModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;NgIvsModule&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
  &lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;AppComponent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppModule&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;Then, create an interface to set configurations and options for the player in &lt;code&gt;app.component.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Angular-IVS&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
      &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://fcc3ddae59ed.us-west-2.playback.live-video.net/api/video/v1/us-west-2.893648527354.channel.DmumNckWFTqz.m3u8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/x-mpegURL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="na"&gt;fluid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;aspectRatio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;16:9&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;autoplay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These options are standard options for Video.js and you can find more information in the &lt;a href="https://docs.videojs.com/" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At this point we have a functional player app, you can customise the CSS for your player or just use the default options by adding this to the head tag of &lt;code&gt;index.html&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://vjs.zencdn.net/7.11.4/video-js.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ready to celebrate? Let's startup a server and see our app live in the browser! The angular CLI allows us to both build and serve our app on a default port, by executing&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng serve --open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see something like this: &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%2Fuploads%2Farticles%2Fjxjy9w1rzxjdgvv9txam.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%2Fuploads%2Farticles%2Fjxjy9w1rzxjdgvv9txam.png" alt="Final Result!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎊🎉
&lt;/h2&gt;

&lt;p&gt;And that's all folks!! A fully functional player app implementing Angular and Amazon IVS!&lt;/p&gt;

&lt;p&gt;Can't wait to read your comments and see what you can create!!!&lt;/p&gt;

</description>
      <category>amazonivs</category>
      <category>angular</category>
    </item>
    <item>
      <title>Build an Amazon IVS Player App with Ionic-Vue</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Tue, 08 Jun 2021 21:40:03 +0000</pubDate>
      <link>https://dev.to/amazonivs/build-an-amazon-ivs-player-app-with-ionic-vue-1d20</link>
      <guid>https://dev.to/amazonivs/build-an-amazon-ivs-player-app-with-ionic-vue-1d20</guid>
      <description>&lt;h2&gt;
  
  
  Intro ⭐️
&lt;/h2&gt;

&lt;p&gt;I wanted to build a quick and easy &lt;a href="https://ivs.rocks" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon IVS&lt;/strong&gt;&lt;/a&gt; video player mobile app for future streams and other interesting experiments. This is the first part of a series of tutorials where I will be expanding on features of this app!.&lt;/p&gt;

&lt;p&gt;Building native mobile apps can be beginner friendly and an enjoyable experience!. For that reason I've chosen &lt;a href="https://ionic.io" rel="noopener noreferrer"&gt;&lt;strong&gt;Ionic&lt;/strong&gt;&lt;/a&gt; as my framework of choice because of its simplicity combined with &lt;a href="https://vuejs.org" rel="noopener noreferrer"&gt;&lt;strong&gt;Vue JS&lt;/strong&gt;&lt;/a&gt;, a friendly javascript framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wait, but what about the video part? 🤔
&lt;/h3&gt;

&lt;p&gt;To continue with keeping things simple, developer friendly and approachable, let's look at a new service offered by &lt;strong&gt;AWS&lt;/strong&gt;: &lt;a href="https://ivs.rocks" rel="noopener noreferrer"&gt;&lt;strong&gt;Amazon Interactive Video Service&lt;/strong&gt;&lt;/a&gt; or &lt;strong&gt;IVS&lt;/strong&gt;. It's a managed live video streaming service that allows us to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create channels and start streaming in minutes.&lt;/li&gt;
&lt;li&gt;Create engaging and interactive experiences along with ultra-low latency live video.&lt;/li&gt;
&lt;li&gt;Distribute video at scale to a variety of devices and platforms.&lt;/li&gt;
&lt;li&gt;Easily integrate into websites and applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Amazon IVS&lt;/strong&gt; allows us to focus on creating our own interactive application and audience experience and we don't need to manage infrastructure or develop and configure components, making it reliable and cost-effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon IVS&lt;/strong&gt; supports &lt;strong&gt;RTMPS&lt;/strong&gt; streaming. RTMPS is the secure version of RTMP (Real Time Messaging Protocol), which runs over TLS. RTMP is an industry standard for transmitting video over a network.&lt;/p&gt;

&lt;p&gt;So we are using &lt;strong&gt;Ionic-Vue&lt;/strong&gt; + &lt;strong&gt;Amazon&lt;/strong&gt; IVS to create a mobile player app!&lt;/p&gt;

&lt;p&gt;Tutorial repo: &lt;a href="https://github.com/alphacentauri82/ivs-ionic-vue" rel="noopener noreferrer"&gt;https://github.com/alphacentauri82/ivs-ionic-vue&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitch stream: &lt;a href="https://www.youtube.com/watch?v=CeKTr83LmiY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=CeKTr83LmiY&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's get it started 🎵
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡️ Pre-requisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;NodeJS + NPM: Ionic has amazing instructions to &lt;a href="https://ionicframework.com/docs/intro/environment" rel="noopener noreferrer"&gt;set up/install&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ionic CLI &lt;/li&gt;
&lt;li&gt;Amazon IVS&lt;/li&gt;
&lt;li&gt;VideoJS&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Installing Ionic CLI
&lt;/h3&gt;

&lt;p&gt;Install the Ionic CLI with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g @ionic/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If there was a previous installation of the Ionic CLI, it will need to be uninstalled due to a change in package name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm uninstall -g ionic
npm install -g @ionic/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating our App
&lt;/h3&gt;

&lt;p&gt;Make sure you're in your desired folder for this project and then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ionic start hello-ivs tabs --type vue --capacitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An Ionic-Vue application will be created. Note we used the flag &lt;code&gt;tabs&lt;/code&gt; to use a starter template with "Tabs". We also added Capacitor to give native functionality.&lt;/p&gt;

&lt;p&gt;This starter project comes with three pre-designed pages and best practices for Ionic development - with the common building blocks already implemented, we can easily add more features!.&lt;/p&gt;

&lt;p&gt;As this process continues, you will be asked if you want to create an Ionic account, if you type "Y + Enter" it will take you to &lt;a href="https://ionicframework.com/signup" rel="noopener noreferrer"&gt;https://ionicframework.com/signup&lt;/a&gt; and if you type "No + Enter" it will continue its process smoothly. &lt;/p&gt;

&lt;p&gt;Now that the project is created, let's get in our project folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd hello-ivs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎊 ...And it's time to celebrate our first achievement!, we have a full starter app to add our player to! 🎊 &lt;/p&gt;

&lt;h3&gt;
  
  
  Hands On! 🛠
&lt;/h3&gt;

&lt;p&gt;Open your IDE/editor of choice and you should see the following structure:&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%2Fuploads%2Farticles%2F5hpwkn38432g2uiugdd1.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%2Fuploads%2Farticles%2F5hpwkn38432g2uiugdd1.png" alt="App Structure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's go to the &lt;code&gt;/src&lt;/code&gt; folder:&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%2Fuploads%2Farticles%2F7rh1uqzy7eqwiwg2ff2f.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%2Fuploads%2Farticles%2F7rh1uqzy7eqwiwg2ff2f.png" alt="SRC Folder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are 4 folders and 3 files. Let's go through what we see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Components:&lt;/strong&gt; This is where our components are stored, it will serve us to create our child component where we will have our video player. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Router:&lt;/strong&gt; Defines the specific routes of our application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme:&lt;/strong&gt; This is where we define all styles and the look of our app. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Views:&lt;/strong&gt; This is where we structure our app views. &lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Let's cd to the default component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd src/components/ExploreContainer.vue 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And delete line #4 - Let's replace it with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello IVS!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's time to see our "Hello IVS" App and make sure everything works so let's run"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ionic serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will take a few seconds to build and then we can see a web preview. We can resize it to simulate different mobile devices in the browser:&lt;/p&gt;

&lt;h4&gt;
  
  
  Web Preview
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsejl2b1wvij4uobe1x9n.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%2Fuploads%2Farticles%2Fsejl2b1wvij4uobe1x9n.png" alt="Web Preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Mobile
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67bh8gbyj4qxrgz0h7n2.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%2Fuploads%2Farticles%2F67bh8gbyj4qxrgz0h7n2.png" alt="Mobile Preview"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Since we don't need Tabs in this first version of the application we will delete the other two and leave a single tab for now.&lt;/p&gt;

&lt;p&gt;To do that, we need to edit &lt;code&gt;Tabs.vue&lt;/code&gt; in the &lt;code&gt;/views&lt;/code&gt; folder, and in the &lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt; block, delete from line #10 to #18 leaving just a single tab like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ion-page&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ion-tabs&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ion-tab-bar&lt;/span&gt; &lt;span class="na"&gt;slot=&lt;/span&gt;&lt;span class="s"&gt;"bottom"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;ion-tab-button&lt;/span&gt; &lt;span class="na"&gt;tab=&lt;/span&gt;&lt;span class="s"&gt;"tab1"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/tabs/tab1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;ion-icon&lt;/span&gt; &lt;span class="na"&gt;:icon=&lt;/span&gt;&lt;span class="s"&gt;"triangle"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;ion-label&amp;gt;&lt;/span&gt;Tab 1&lt;span class="nt"&gt;&amp;lt;/ion-label&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/ion-tab-button&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/ion-tab-bar&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ion-tabs&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ion-page&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's save our file and our app will reload displaying this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzepeo3mcljd3k6euxzxe.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%2Fuploads%2Farticles%2Fzepeo3mcljd3k6euxzxe.png" alt="Single Tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding Video to our App 🎥
&lt;/h3&gt;

&lt;p&gt;Stop the presses! Let's hit &lt;code&gt;ctrl + c&lt;/code&gt; In our terminal. We have to install a few dependencies to continue developing our project.&lt;/p&gt;

&lt;p&gt;First of all, let's install VideoJS. At the time of making this tutorial, to make sure it works with Amazon IVS we need to install version 7.6.6:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i video.js@7.6.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then proceed to install Amazon IVS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i amazon-ivs-player
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating the video player 🔥
&lt;/h3&gt;

&lt;p&gt;Let's edit our &lt;code&gt;ExploreContainer&lt;/code&gt; component located in the &lt;code&gt;src/components&lt;/code&gt; folder.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let's import our dependencies. We do this in the &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; block, but first delete &lt;code&gt;lang="ts"&lt;/code&gt; since we won't be using Typescript. From line #8 it should look like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;videojs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;video.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;registerIVSTech&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;amazon-ivs-player&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;video.js/dist/video-js.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to make things more consistent, let's rename our default &lt;code&gt;ExploreContainer&lt;/code&gt; component to &lt;code&gt;VideoPlayer&lt;/code&gt;, edit line #13 and the script tag should look like this:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;videojs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;video.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;registerIVSTech&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;amazon-ivs-player&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;video.js/dist/video-js.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;VideoPlayer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before anything else, we also have to rename the file to &lt;code&gt;VidePlayer.vue&lt;/code&gt; and then proceed to modify our parent component &lt;code&gt;Tab1.vue&lt;/code&gt; and add the correct name. For this we edit &lt;code&gt;src/views/Tab1.vue&lt;/code&gt;. Our file should look like this:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;template&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;toolbar&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Live&lt;/span&gt; &lt;span class="nx"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-title&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-toolbar&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-header&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;fullscreen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;true&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="nx"&gt;collapse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;condense&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;toolbar&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ion&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;large&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Live&lt;/span&gt; &lt;span class="nx"&gt;Stream&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-title&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-toolbar&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-header&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;VideoPlayer&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-content&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ion-page&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/template&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;IonPage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonHeader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonToolbar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonTitle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonContent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ionic/vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;VideoPlayer&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/components/VideoPlayer.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;LiveStream&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;autoplay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Boolean&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;VideoPlayer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonHeader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonToolbar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonTitle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;IonPage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's head to the &lt;code&gt;router&lt;/code&gt; folder and in &lt;code&gt;index.ts&lt;/code&gt; delete the lines that define the routes of the tabs that we no longer need. so the file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;createWebHistory&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ionic/vue-router&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;RouteRecordRaw&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue-router&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Tabs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../views/Tabs.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;RouteRecordRaw&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/tabs/tab1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/tabs/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Tabs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/tabs/tab1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/views/Tab1.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createRouter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;history&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;createWebHistory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;BASE_URL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nx"&gt;routes&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can add our data to be able to effectively use Amazon IVS in &lt;code&gt;src/components/VideoPlayer.vue&lt;/code&gt;, the file from line #13 should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;VideoPlayer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;player&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;videoSource&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VUE_APP_PLAYER_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;videoOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;autoplay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;techOrder&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AmazonIVS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;800&lt;/span&gt;&lt;span class="dl"&gt;"&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;Let's stop to explain a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;player&lt;/strong&gt;: Variable that will store the properties of video.js to use Amazon IVS objects. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;videoSource&lt;/strong&gt;: This is the environment variable that will allow us to connect to a test stream. In this case we will pass a player URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;videoOptions&lt;/strong&gt;: This is the object that we will use to have control over the Amazon IVS technology layer. &lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;After defining our data we are going to follow the life cycle of a component in Vue, we are going to use the &lt;code&gt;mounted()&lt;/code&gt; hook to start it after all the elements have loaded.&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="nf"&gt;mounted&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// register the tech with videojs&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`wasmWorker: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createAbsolutePath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/assets/amazon-ivs-wasmworker.min.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;registerIVSTech&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;videojs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;wasmWorker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createAbsolutePath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/assets/amazon-ivs-wasmworker.min.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;wasmBinary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createAbsolutePath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/assets/amazon-ivs-wasmworker.min.wasm&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Init the player&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;player&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;videojs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$refs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;videoPlayer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;videoOptions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Player is ready to use!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="c1"&gt;// play the stream&lt;/span&gt;
      &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;src&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;videoSource&lt;/span&gt;&lt;span class="p"&gt;);&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;ul&gt;
&lt;li&gt;
&lt;strong&gt;registerIVSTech&lt;/strong&gt;: Is the object we declare to consume the Amazon IVS service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Videojs&lt;/strong&gt;: Is the object provided by Video.js. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;options&lt;/strong&gt;: Options for the Amazon IVS technology layer. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The supported options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;wasmWorker&lt;/strong&gt;: URL where amazon-ivs-wasmworker.min.js is located.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wasmBinary&lt;/strong&gt;: URL where amazon-ivs-wasmworker.min.wasms is located.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These files are located in &lt;code&gt;node_modules/amazon-ivs-player/dist/&lt;/code&gt;. We need to copy and paste them into the &lt;code&gt;public/assets&lt;/code&gt; folder to use the IVS player.&lt;/p&gt;




&lt;p&gt;Then we use the &lt;code&gt;beforeUnmount&lt;/code&gt; hook  in order to have a conditional that allows us to show if the player instance is being consumed or if not the instance is destroyed.&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="nf"&gt;beforeUnmount&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Destroy the player instance&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;player&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;player&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispose&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;

  &lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;createAbsolutePath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;assetPath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;assetPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&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;The &lt;code&gt;createAbsolutePath&lt;/code&gt; method allows us to create a specific path, with this method we can consume the files stored in &lt;code&gt;public/assets&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Let's create our container and reference &lt;code&gt;VideoPlayer&lt;/code&gt; to be able to receive the video with video.js like this. Let's go back to the beginning of the file, in the &lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt; block and replace the contents of everything contained in &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;video&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;"videoPlayer"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"video-js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/video&amp;gt;&lt;/span&gt;   
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then style it! - Let's edit the style block in line #61:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt; &lt;span class="nt"&gt;scoped&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;#container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And finally let's create a &lt;code&gt;.env&lt;/code&gt; (dot env) file and save it in the root folder of the project with the following information.(For now, we are going to pass a player URL from one of the sample players in the &lt;a href="https://github.com/aws-samples/amazon-ivs-player-web-sample" rel="noopener noreferrer"&gt;Amazon IVS Demos Repository&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VUE_APP_PLAYER_URL='https://fcc3ddae59ed.us-west-2.playback.live-video.net/api/video/v1/us-west-2.893648527354.channel.DmumNckWFTqz.m3u8'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🎉 Celebration 🎉
&lt;/h3&gt;

&lt;p&gt;Let's save our work and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ionic serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you should see a result similar to this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnk8biu30tchilepkwi5y.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%2Fuploads%2Farticles%2Fnk8biu30tchilepkwi5y.png" alt="Preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will continue to develop more features in this same application so stay tuned for more!!!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>amazonivs</category>
      <category>ionic</category>
      <category>vue</category>
    </item>
    <item>
      <title>Nevertheless, Diana Coded in 2021!</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Tue, 09 Mar 2021 01:52:39 +0000</pubDate>
      <link>https://dev.to/superdiana/nevertheless-diana-coded-in-2021-1cnf</link>
      <guid>https://dev.to/superdiana/nevertheless-diana-coded-in-2021-1cnf</guid>
      <description>&lt;h3&gt;
  
  
  New beginings
&lt;/h3&gt;

&lt;p&gt;2020 was quite an intense year. I have no words to express what it meant to me, in terms of challenges and successes, of learning, of many losses including the passing of my grandmother, the woman who raised me. &lt;/p&gt;

&lt;p&gt;Yet, 2021 brings hope, regardless of the pandemic... my eyes have opened, my horizons have broadened and I have gained SO much from last year's experience. I learned to connect with people and communities in a way I never thought I would.&lt;/p&gt;

&lt;h3&gt;
  
  
  My most recent achievement was…
&lt;/h3&gt;

&lt;p&gt;Completing &lt;a href="https://github.com/alphacentauri82/scoutx"&gt;ScoutX&lt;/a&gt;. A Diabetes monitoring tool to notify emergency contacts in case of irregular situations. This saved my life, many times. I'm finishing work to build a GPS LoRaWan tracker powered by &lt;a href="https://www.rakwireless.com/en-us/company/wisblock-series"&gt;WisBlock&lt;/a&gt; and &lt;a href="https://helium.com"&gt;Helium&lt;/a&gt;. These companies have been super supportive as well as &lt;a href="https://www.nightscoutfoundation.org/"&gt;The Nightscout Foundation&lt;/a&gt;. I feel like this year I found a purpose, I can help others, I can use technology for good. I can help fellow diabetics like me improve their lives with the use of technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advocating for myself looks like…
&lt;/h3&gt;

&lt;p&gt;Standing up for my principles even if it means standing alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  My biggest goal is…
&lt;/h3&gt;

&lt;p&gt;Leave a legacy, it suffices me to know that in the last 20 years I may have done something that has paved the way for this and future generations in technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  My advice for allies to support underrepresented folks who code is...
&lt;/h3&gt;

&lt;p&gt;DO THE WORK!, actions rather than words!, educate yourself!.&lt;/p&gt;

&lt;h3&gt;
  
  
  Special thanks to...
&lt;/h3&gt;

&lt;p&gt;Lauren Lee, Avital Tzubeli, Heather Baden, Natalia Venditto, Nina Zakharenko, Jen Looper, Erica Stanley, Angel Banks, Beth Laing, Ana Chin A Loy, Chloe Condon, Gaby Trueba ... you have had such a deep impact in my life, I have no words to express my gratitude for everything you've done for me. From the bottom of my heart, thank you!&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>career</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>Love is Love. Celebrate it! 🏳️‍🌈</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Thu, 11 Jun 2020 18:38:00 +0000</pubDate>
      <link>https://dev.to/superdiana/love-is-love-celebrate-it-31c1</link>
      <guid>https://dev.to/superdiana/love-is-love-celebrate-it-31c1</guid>
      <description>&lt;p&gt;&lt;em&gt;Photo: Celebrating Love&lt;/em&gt;✨&lt;/p&gt;

&lt;p&gt;So yeah, It's the month to be proud and celebrate who you are. Celebrate love regardless. I am Diana, Pansexual and proud.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm proud of...
&lt;/h2&gt;

&lt;p&gt;Being who I am. Never have i felt so free before until i started worrying about what society expected and thought about me. I am a person with talents, shortcomings and dreams like everyone else. I learned to embrace myself as I am and continuously work towards improving everyday.&lt;/p&gt;

&lt;h2&gt;
  
  
  I’m an expert at...
&lt;/h2&gt;

&lt;p&gt;I don't consider myself an expert, but I have some talents in programming, infrastructure and my passion is music.&lt;/p&gt;

&lt;h2&gt;
  
  
  Equality in tech looks like...
&lt;/h2&gt;

&lt;p&gt;More like equity. I have been working non-stop for the last 10 years of my life with communities to make sure everyone can sit at the table!!&lt;/p&gt;

&lt;h2&gt;
  
  
  I find support in...
&lt;/h2&gt;

&lt;p&gt;My friends, my team, myself.&lt;/p&gt;

&lt;p&gt;Embrace yourself. Take care of the person you love the most!. Here's a shameless plug to a talk I gave a while ago: Make room, not war: Inclusion means all y'all!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/jINg1PuaRs8"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GhDTYsh_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://img.youtube.com/vi/jINg1PuaRs8/0.jpg" alt="Inclusion Means All Y'All"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devpride</category>
    </item>
    <item>
      <title>Nevertheless, Diana Coded</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Tue, 03 Mar 2020 20:36:21 +0000</pubDate>
      <link>https://dev.to/superdiana/nevertheless-diana-coded-2oh0</link>
      <guid>https://dev.to/superdiana/nevertheless-diana-coded-2oh0</guid>
      <description>&lt;h2&gt;
  
  
  Where do I begin?…
&lt;/h2&gt;

&lt;p&gt;My background isn’t conventional. I grew up with an amazing family of nerds who bought programming, computer, and gaming magazines. Those were the magazines I scribbled and drew on whenever I got hold of marker pens. &lt;/p&gt;

&lt;p&gt;My mother worked in a corporate computer supplier and she often brought “samplers” back home. The day she brought a new Commodore-64, my life changed forever. Copying game codes from magazines wasn’t a hassle for me, I found it fascinating and cathartic at the same time. I was 6 years old. With time, she saw my interest and taught me the basic things that made a difference: basic, assembler, and then Python. With time it became a normal thing and part of my conversations. I was lucky to find supportive classmates in school. I will always be grateful for the support I got from my parents. &lt;/p&gt;

&lt;p&gt;I started “formally” coding at the age of 14 and grew up with much interest and work on infrastructure and backend. Throughout my entire career, I saw the good and the ugly in terms of diversity and inclusion, so I decided to take action and work with my environment, later with communities and worked(still working!) hard to get as far as I could, and help others. I wanted to be part of the solution. I wanted to help open programming gates to women and underrepresented communities. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Challenge I Faced Was…
&lt;/h2&gt;

&lt;p&gt;… At 18 years old. My first data centre job. Walked in ready to assemble racks and do the networking side of the operation. I was mocked and mistaken for a lost marketing intern. Then the men present assumed I was there to bring them refreshments and their tools. I had to prove not only that I was perfectly fit for the job but also prove my knowledge and I was often ridiculed or ignored for being too young… and a woman. This fueled my desire to overcome those barriers and help pave the way for others, at least wherever I went.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Most Rewarding Thing This Year…
&lt;/h2&gt;

&lt;p&gt;Getting my dream job. I am super happy to be in charge of the Nexmo Python SDK. This job combines my passions: Python and public speaking/writing content. Never have I felt so welcomed and so supported. I am definitely looking forward to what’s coming this year!!&lt;/p&gt;

&lt;h2&gt;
  
  
  My Message for Others…
&lt;/h2&gt;

&lt;p&gt;You are awesome. We are all different and diversity is what keeps the world rocking! , Bbe yourself, celebrate, praise yourself and help others as you grow!&lt;/p&gt;

&lt;p&gt;And like Brian May sings in “Good Company” :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Take care of those you call your own and keep good company.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>wecoded</category>
      <category>gratitude</category>
      <category>career</category>
    </item>
    <item>
      <title>Integrating Vue CLI 3 with Kendo UI</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Fri, 27 Sep 2019 01:51:51 +0000</pubDate>
      <link>https://dev.to/frontendfoxes/integrating-vue-cli-3-with-kendo-ui-3pd2</link>
      <guid>https://dev.to/frontendfoxes/integrating-vue-cli-3-with-kendo-ui-3pd2</guid>
      <description>&lt;h2&gt;
  
  
  Walk through the integration process of the new Vue CLI 3 with Kendo UI, and start developing eye-catching Vue.js applications with zero hassle!
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.telerik.com/blogs/integrating-vue-cli-3-with-kendo-ui"&gt;Original Post&lt;/a&gt; on The Telerik Blog. October 2018&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://www.telerik.com/kendo-ui"&gt;Kendo UI&lt;/a&gt; is an awesome UI component library made by &lt;a href="https://www.progress.com/"&gt;Progress&lt;/a&gt;. It can be used with multiple frameworks/tools (jQuery, React, Angular), but let's talk about using it with &lt;a href="https://www.telerik.com/kendo-vue-ui"&gt;Vue.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We will go through the integration process explaining it step by step and solving a few issues that may occur while integrating Kendo UI with Vue CLI 3. For this, we're going to use our &lt;em&gt;"Vuetiful"&lt;/em&gt; &lt;a href="https://ricknmortyvue.surge.sh"&gt;Rick &amp;amp; Morty app&lt;/a&gt; as an example.&lt;/p&gt;

&lt;p&gt;For those who haven't updated to Vue CLI 3 yet, you can check out this &lt;a href="https://www.telerik.com/blogs/what-you-need-to-know-about-vue-cli-3"&gt;blog post&lt;/a&gt; on what you need to know, and I recommend reading the &lt;a href="https://cli.vuejs.org/"&gt;official documentation&lt;/a&gt; to learn the proper usage of this awesome tool.&lt;/p&gt;

&lt;p&gt;Assuming we have previously installed Vue CLI 3 let's create our project and enter its root folder:&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="nx"&gt;vue&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;ricknmorty&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;vue&lt;/span&gt;
&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ricknmorty&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;vue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Kendo UI Using npm
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Installing:&lt;/strong&gt;&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;progress&lt;/span&gt;&lt;span class="sr"&gt;/kendo-u&lt;/span&gt;&lt;span class="err"&gt;i
&lt;/span&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;progress&lt;/span&gt;&lt;span class="sr"&gt;/kendo-theme-defaul&lt;/span&gt;&lt;span class="err"&gt;t
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For our app, we used the default theme, but among the many possibilities to get your apps rocking and looking like a million bucks, you can build your own theme, or use the default, bootstrap or material theme. &lt;a href="https://www.telerik.com/kendo-vue-ui/components/styling/theme-builder/"&gt;Check out the Theme Builder!.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, for our Vuetiful Rick &amp;amp; Morty we used buttons:&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="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;progress&lt;/span&gt;&lt;span class="sr"&gt;/kendo-buttons-vue-wrappe&lt;/span&gt;&lt;span class="err"&gt;r
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can head over to the Kendo UI for Vue site for &lt;a href="https://www.telerik.com/kendo-vue-ui"&gt;more details on themes and components.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once we have installed all necessary packages, we shall proceed with the integration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open main.js&lt;/li&gt;
&lt;li&gt;Let's import our magic adding the following to our code:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@progress/kendo-ui&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@progress/kendo-theme-default/dist/all.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add the minimum base pack to our project and, for this particular case, adding buttons:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ButtonsInstaller&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@progress/kendo-buttons-vue-wrapper&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ButtonsInstaller&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So now we can create our component using Kendo UI's buttons!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In our component:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@progress/kendo-buttons-vue-wrapper&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Let's add it to our component list:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;components&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Button&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And we can now use: &lt;code&gt;&amp;lt;kendo-button&amp;gt;&amp;lt;/kendo-button&amp;gt;&lt;/code&gt;. For example:&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;kendo&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arrow-right&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;click&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;position++&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/kendo-button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can get more information about buttons &lt;a href="https://www.telerik.com/kendo-vue-ui/components/buttons/button/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once we have finished our development, let's go to our terminal and use npm to run our project, just as shown in the Vue CLI 3 documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To run our project type:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;serve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;And this will trigger the following warning:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What just happened?!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't sweat it! This can happen often with some Vue.js components and it can be fixed by adding a simple line of code inside of: webpack.config.js&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;But wait a minute!... Where is &lt;code&gt;webpack.config.js&lt;/code&gt; in the new CLI?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now it's inside of &lt;code&gt;node_modules&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;But thou shall not ever modify &lt;code&gt;node_modules&lt;/code&gt;!!!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;That's actually true, because if you update your project, all the changes you make in &lt;code&gt;node_modules&lt;/code&gt; will be lost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sooo??? I am lost!. How do I sort this out?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the new Vue CLI 3, any new configs for &lt;code&gt;webpack.config.js&lt;/code&gt; are applied in a single file we can create in our project root and it should be called &lt;code&gt;vue.config.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Once we create the file, just add the following code:&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;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;resolve&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;lintOnSave&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chainWebpack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;alias&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue$&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue/dist/vue.esm.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&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;And voila!!!! It's all running smoothly!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--b5mPquqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d585tldpucybw.cloudfront.net/sfimages/default-source/default-album/vue01.jpg%3Fsfvrsn%3D2faea7b8_1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b5mPquqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d585tldpucybw.cloudfront.net/sfimages/default-source/default-album/vue01.jpg%3Fsfvrsn%3D2faea7b8_1" alt="vuetiful"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h6&gt;
  
  
  &lt;em&gt;Special thanks to Gonzalo Nandez and Giselle Perez for their magic&lt;/em&gt;
&lt;/h6&gt;

</description>
      <category>vue</category>
      <category>kendoui</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to boot &amp; use an external hard drive on new mac minis</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Mon, 26 Aug 2019 14:54:15 +0000</pubDate>
      <link>https://dev.to/superdiana/how-to-boot-use-an-external-hard-drive-on-new-mac-minis-18d8</link>
      <guid>https://dev.to/superdiana/how-to-boot-use-an-external-hard-drive-on-new-mac-minis-18d8</guid>
      <description>&lt;h2&gt;
  
  
  Intro 💅
&lt;/h2&gt;

&lt;p&gt;I "rescued" a 2018 mac mini(8th Gen i3, 8Gb Ram, 128SSD). My idea was to use it for my personal home recording studio. I read the ram was upgradeable but the storage is sadly soldered into the unit. iFixit awarded the new Mac mini a repairability score of 6/10, with 10 being the easiest to repair, topping the latest MacBook Air, MacBook, MacBook Pro, iMac, and iMac Pro, and trailing only the 2013 Mac Pro. Read the original article &lt;a href="https://www.macrumors.com/2018/11/09/ifixit-mac-mini-2018-teardown/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The new Mac mini earned its higher repairability score thanks to its straightforward disassembly with no tough adhesive or proprietary pentalobe screws and user-upgradeable RAM. However, it didn't earn a perfect score due to the soldered-down CPU, storage, and ports, impacting repairs and upgrades."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;So, it made sense to find an external SSD and run operations from there. Just logic pro x takes 70 Gb with all the samples etc. By the time i got everything running at minimum, i only had like 15 Gb left. So here's what i did:&lt;/p&gt;

&lt;h2&gt;
  
  
  Working it out 🤹‍♀️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What you will need 🧐
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;External SSD Hard drive. (I won't suggest brands or capacity leaving that to what you find fit for yourself)&lt;/li&gt;
&lt;li&gt;A Mac!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Getting the job done 🤓
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First of all, go to disk utility and format your new hard drive. For this you have to choose either &lt;code&gt;APFS&lt;/code&gt; or &lt;code&gt;MacOs Extended (Journaled)&lt;/code&gt;, encryption is up to you. Just make sure you remember your password. (⚠️ THIS MEANS YOUR ENTIRE EXTERNAL HARD DRIVE CONTENT WILL BE ERASED! proceed with caution and, to be safe, use a new external hard drive)&lt;/li&gt;
&lt;li&gt;Once you have formatted your hard drive, restart your Mac, then press and hold &lt;code&gt;Command&lt;/code&gt;(⌘)&lt;code&gt;+R&lt;/code&gt; immediately after you see the Apple logo. Your Mac starts up from &lt;code&gt;macOS Recovery&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;When you see the macOS Utilities window, choose &lt;code&gt;Utilities &amp;gt; Startup Security Utility from the menu bar&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;When you're asked to authenticate, click &lt;code&gt;Enter macOS Password&lt;/code&gt;, then choose an administrator account and enter its password.&lt;/li&gt;
&lt;li&gt;You will see something like this: &lt;/li&gt;
&lt;/ul&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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fimac%2Fmacos-high-sierra-startup-security-utility.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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fimac%2Fmacos-high-sierra-startup-security-utility.png" alt="Startup Security Utility"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;code&gt;Allow booting from external media&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are almost done. Don't restart anything yet. Go back to the first screen and click on &lt;code&gt;reinstall macOS&lt;/code&gt;:&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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fmacos%2Fhighsierra%2Fmacos-high-sierra-recovery-mode-reinstall.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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fmacos%2Fhighsierra%2Fmacos-high-sierra-recovery-mode-reinstall.jpg" alt="macOS Utilities"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accept all terms and conditions, and you will be prompted to choose the hard drive where you want to install the operating system on. Click on it and install. The machine will restart a few times.&lt;/li&gt;
&lt;li&gt;You will eventually end up at your regular login screen. If you are in the machine where you will be booting your external hard drive from, you have two options to boot. You can press the &lt;code&gt;option&lt;/code&gt; key every time you turn on your computer, and select what hard drive to boot from, or you can switch permanently to your external hard drive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want your machine to always boot from the external hard drive:&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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fmacos%2Fmacos-sierra-system-startup-select.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%2Fsupport.apple.com%2Flibrary%2Fcontent%2Fdam%2Fedam%2Fapplecare%2Fimages%2Fen_US%2Fmacos%2Fmacos-sierra-system-startup-select.png" alt="startup disk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;code&gt;Apple&lt;/code&gt; () &lt;code&gt;menu&lt;/code&gt; &amp;gt; &lt;code&gt;System Preferences&lt;/code&gt;, then click &lt;code&gt;Startup Disk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the lock icon and enter your administrator password.&lt;/li&gt;
&lt;li&gt;Select your startup disk, then restart your Mac.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That's all folks! 🐷
&lt;/h2&gt;

&lt;p&gt;Enjoy all your extra storage space!. Remember that you can always switch back to your original startup disk!&lt;/p&gt;

&lt;p&gt;Cheerio!&lt;/p&gt;

&lt;h3&gt;
  
  
  20th Nov, 2020:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://twitter.com/darkcisum" rel="noopener noreferrer"&gt;@DarkCisum&lt;/a&gt; on twitter added the following information:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Hi. I've been following your guide on booting a Mac Mini from an external SSD. &lt;br&gt;
Just thought, maybe it could be helpful for others, in the Disk Utility one needs to "View &amp;gt; Show All Devices" in order to be able to select the disk itself&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Thank you very much!!&lt;/p&gt;

</description>
      <category>mac</category>
      <category>diy</category>
    </item>
    <item>
      <title>The touch of the "master's" hand.. in a tough tech world!</title>
      <dc:creator>Super Diana</dc:creator>
      <pubDate>Sat, 04 Aug 2018 20:44:51 +0000</pubDate>
      <link>https://dev.to/superdiana/the-touch-of-the-masters-hand-in-a-tough-tech-world-3gk1</link>
      <guid>https://dev.to/superdiana/the-touch-of-the-masters-hand-in-a-tough-tech-world-3gk1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Have you ever thought how much of an impact you may have on someone else's life?. If we were more aware of the positive influence we can have on others, perhaps things could be a bit different... what if we started paying more attention to those little things that matter in the end?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Recently, I gave a couple of talks on the &lt;strong&gt;&lt;em&gt;OH SO REAL&lt;/em&gt;&lt;/strong&gt; imposter syndrome. Oh did I share some tips based on my own personal experience and how I’ve managed to overcome to a certain extent such a struggle… but, thinking about it, there is something I always forget to mention. &lt;/p&gt;

&lt;p&gt;Yes, I am sure we can all be victorious and overcome hurdles, I am sure there are plenty of ways for each and everyone of us to seriously improve personally and in our work… we can certainly improve our code but, what role are we playing as part of the ecosystem?. What is our role in our team?, how about our local community?.&lt;/p&gt;

&lt;p&gt;Before I became part of the &lt;a href="https://vuevixens.org"&gt;Vue Vixens&lt;/a&gt; awesome team, I had met people who had a strong and unforgettable impact in my life. May I mention one person in particular: &lt;a href="https://twitter.com/M_Blayer"&gt;Matias Blayer&lt;/a&gt;, my mentor and the person who got me interested on Vue. &lt;strong&gt;"Mati"&lt;/strong&gt; (this is how we call him!) always encouraged me to engage in more activities, to take an active role in our community. He even made part of &lt;a href="https://github.com/javascript-101/javascript-101/"&gt;JavaScript 101&lt;/a&gt; as a mentor and always stressed the importance of sharing the little or much we know and understand with others. He always stressed how important is to help others and the same way we help others do we receive from those who know different things, at different levels and bring a different perspective to what we do as developers. &lt;strong&gt;True support. True empathy.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I have to say that this was totally new to me and I found it admirable. It struck me like a zillion lightning bolts and pierced my heart deeply. All of a sudden, after being given so much, I wanted to give back too.&lt;/p&gt;

&lt;p&gt;I am 35 years old. I am a woman. I am first of all a DevOps/SRE and then a full stack developer but i had no formal studies whatsoever. I started back in 1994 when &lt;em&gt;geocities&lt;/em&gt; was the sh!t. So throughout my life as a developer i always felt less than those who had dedicated time of their lives to pursue formal education in computer science, programming, engineering… you name it. I did a few online courses and even a bootcamp but more than that… there was my experience &lt;em&gt;“from the streets”&lt;/em&gt;. I never really thought i could give anything back to the community. &lt;/p&gt;

&lt;p&gt;Then, after &lt;strong&gt;Mati&lt;/strong&gt;, came many others who kept on adding to that seed.. I had the desire to do something but I didn’t know how to until I met &lt;a href="https://dev.to/jenlooper"&gt;Jen Looper&lt;/a&gt;. Then, &lt;a href="https://vuevixens.org"&gt;Vue Vixens&lt;/a&gt;, its magic and our amazing community...you have no idea how much my life changed after all this.&lt;/p&gt;




&lt;p&gt;Does any of you know “The Old Violin” Poem? (i will quote it at the end). I got in touch with Jen Looper after a &lt;a href="https://vuenosair.es"&gt;Vuenos Aires&lt;/a&gt; meetup. I was in love with the meetup but we were luckily 3 women present. It worried me and I reached &lt;a href="https://twitter.com/ianaya89"&gt;Nacho Anaya&lt;/a&gt;, one of the organisers who told me he’d heard about &lt;strong&gt;Vue Vixens&lt;/strong&gt; and that I should get in touch, which I did. The rest is history and I certainly feel like things have happened in the blink of an eye. &lt;/p&gt;

&lt;p&gt;One day I contacted &lt;strong&gt;Jen&lt;/strong&gt;. Today I write these lines after enjoying an awesome event: our very own &lt;a href="https://vuevixensday.surge.sh"&gt;Vue Vixens day&lt;/a&gt; in Buenos Aires. It’s not even about me, or my efforts. It’s how simple yet miraculous the touch of &lt;em&gt;“the master’s hand”&lt;/em&gt; makes a difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I love being a Vue Vixen&lt;/strong&gt;. I love what we have. I love that we managed to do so much in such a short period of time and the reason why this keeps on expanding is because one thing &lt;strong&gt;Jen&lt;/strong&gt; does very well: she &lt;strong&gt;always&lt;/strong&gt; has a &lt;strong&gt;kind&lt;/strong&gt; and &lt;strong&gt;encouraging&lt;/strong&gt; word. Never have i met someone so patient and so kind yet with enough character to iron kinks with whomever she has to, politely and firmly.&lt;/p&gt;

&lt;p&gt;Imagine if we applied the same principle to our entourage. Every person we meet has special qualities that make them unique. A kind word, some encouragement… some praise and positive reinforcement &lt;strong&gt;DO MAKE A HUGE DIFFERENCE&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;An honest compliment, a &lt;em&gt;thank you&lt;/em&gt;, a &lt;em&gt;“keep up the good work”&lt;/em&gt;. You have no idea how much of a big impact this can have in other people’s lives. The touch of the master is not being a &lt;em&gt;“leader”&lt;/em&gt; and commanding others from a comfy seat behind a desk. A true leader is there with the team, shoulder to shoulder, overseeing, encouraging, participating. &lt;/p&gt;

&lt;p&gt;We pulled a whole day mini conference with much help from many awesome people. My fellow vixens were there supporting us… but &lt;strong&gt;Jen&lt;/strong&gt;, she was there in every step. I felt confident and safe, and somehow had that peaceful feeling that it was all going to go well. Even if it didn’t! (it went awesome). &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let us all make a difference. Let us all encourage if ONE person to give their best. Let us all try the benefit of the doubt and give a chance to those who were never taken into consideration for any “important” task. Let us share what we know, let us be the one with the master touch…&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;'Twas battered and scarred,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;And the auctioneer thought it&lt;/em&gt;&lt;br&gt;
&lt;em&gt;hardly worth his while&lt;/em&gt;&lt;br&gt;
&lt;em&gt;To waste his time on the old violin,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;but he held it up with a smile.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"What am I bid, good people", he cried,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Who starts the bidding for me?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"One dollar, one dollar, Do I hear two?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Two dollars, who makes it three?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Three dollars once, three dollars twice, going for three,"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;But, No,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;From the room far back a gray bearded man&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Came forward and picked up the bow,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Then wiping the dust from the old violin&lt;/em&gt;&lt;br&gt;
&lt;em&gt;And tightening up the strings,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;He played a melody, pure and sweet&lt;/em&gt;&lt;br&gt;
&lt;em&gt;As sweet as the angel sings.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The music ceased and the auctioneer&lt;/em&gt;&lt;br&gt;
&lt;em&gt;With a voice that was quiet and low,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Said "What now am I bid for this old violin?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;As he held it aloft with its' bow.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"One thousand, one thousand, Do I hear two?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Two thousand, Who makes it three?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Three thousand once, three thousand twice,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Going and gone", said he.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The audience cheered,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;But some of them cried,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"We just don't understand."&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"What changed its' worth?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Swift came the reply.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The Touch of the Masters Hand."&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"And many a man with life out of tune&lt;/em&gt;&lt;br&gt;
&lt;em&gt;All battered and bruised with hardship&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Is auctioned cheap to a thoughtless crowd&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Much like that old violin&lt;/em&gt;&lt;br&gt;
&lt;em&gt;A mess of pottage, a glass of wine,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;A game and he travels on.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;He is going once, he is going twice,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;He is going and almost gone.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;But the Master comes,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;And the foolish crowd never can quite understand,&lt;/em&gt;&lt;br&gt;
&lt;em&gt;The worth of a soul and the change that is wrought&lt;/em&gt;&lt;br&gt;
&lt;em&gt;By the Touch of the Masters' Hand.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;-Myra Brooks Welch&lt;/em&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Thanks to all of you who have made a huge difference in my life, directly and indirectly. I might not be able to list all of you but i'd like to shout out some kudos and appreciation for what you've done: - Jen Looper, Natalia Tepluhina, Sara Vieira, Sarah Drasner, Matias Blayer, Ignacio Anaya, Nico Quiroz, Eva Ferreira, Jorge Cano, Karen Serfaty, Leo Galante, Hugo Farji, Lupe Lazzo, Goncy Pozo, Sofia Kühne, my family and all those who have been present: Thank you. You have made a huge impact in my life.🌈&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Follow &lt;a href="https://dev.to/vuevixens"&gt;Vue Vixens&lt;/a&gt; on &lt;em&gt;Dev.to&lt;/em&gt; - 🦊&lt;/li&gt;
&lt;li&gt;Check our Twitter: &lt;a href="https://twitter.com/vuevixens"&gt;@vuevixens&lt;/a&gt; / &lt;a href="https://twitter.com/vuevixensar"&gt;@vuevixensAR&lt;/a&gt; / &lt;a href="https://twitter.com/vuevixensmx"&gt;@vuevixensMX&lt;/a&gt; / &lt;a href="https://twitter.com/vuevixensbr"&gt;@vuevixensBR&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vuevixens</category>
      <category>community</category>
      <category>tech</category>
      <category>foodforthought</category>
    </item>
  </channel>
</rss>
